249 lines
13 KiB
C++
Executable File
249 lines
13 KiB
C++
Executable File
#include <ESP8266WiFi.h>
|
|
#include <Wire.h>
|
|
#include "/home/souti/Arduino/EEPROM_TEST/eeprom.h"
|
|
|
|
|
|
// IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
// finir toutes les lignes par \n
|
|
// finir la page par \r
|
|
|
|
#define START_ADDRESS 831//memory address of the 1st stored byte
|
|
#define ADDRESS_SSID 32 // ==> 45
|
|
#define ADDRESS_PASS 64 // ==> 91
|
|
#define ADDRESS_DOMO 96 // ==> 109
|
|
#define ADDRESS_PORT 126 // ==> 131
|
|
#define ADDRESS_RADI 132 // ==> 136
|
|
|
|
int sum; //the sum of read values, updated in loop
|
|
|
|
//--------------------------------------------------------------
|
|
|
|
void setup() {
|
|
|
|
Serial.begin(9600);
|
|
Wire.begin();
|
|
Serial.println(writeString(ADDRESS_SSID, "Livebox-37cc\n"));
|
|
|
|
Serial.println(writeString(ADDRESS_PASS, "8A6060920A8A86896F770F2C47\n"));
|
|
|
|
Serial.println(writeString(ADDRESS_DOMO, "192.168.0.10\n"));
|
|
|
|
Serial.println(writeString(ADDRESS_PORT, "8080\n"));
|
|
|
|
Serial.println(writeString(ADDRESS_RADI, "163\n"));
|
|
|
|
|
|
int addr = START_ADDRESS;
|
|
addr = page(addr);
|
|
Serial.print("Page 1 fin ");
|
|
Serial.println(addr);
|
|
// addr = page2(addr);
|
|
// Serial.print("Page 2 fin ");
|
|
// Serial.println(addr);
|
|
|
|
|
|
|
|
}
|
|
//--------------------------------------------------------------
|
|
|
|
void loop() {
|
|
|
|
delay(30000);
|
|
// désactivation plantage traitement trop long
|
|
wdt_disable();
|
|
|
|
int addr = START_ADDRESS; //this will increment after each read
|
|
char readChar;
|
|
String numero2 = "";
|
|
|
|
for (int ii = 0; /*ii < 500*/; ii++) {
|
|
addr += readObjectSimple(0x50, addr, readChar);
|
|
|
|
if (readChar == 10) {
|
|
Serial.println(numero2);
|
|
numero2 = "";
|
|
} else {
|
|
numero2 += readChar; //numero[ii];
|
|
if (readChar == 13 || ii > 5000) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
// Réactivation
|
|
wdt_enable(3000);
|
|
|
|
}
|
|
|
|
int writeString(int addr, String s) {
|
|
for (int ii = 0; ii < s.length(); ii++) {
|
|
addr += writeObjectSimple(0x50, addr, s.charAt(ii)); //caractere[ii]);
|
|
// Serial.print(s.charAt(ii));
|
|
}
|
|
return addr;
|
|
}
|
|
int page(int addr) {
|
|
addr = writeString(addr, "<html>\n");
|
|
addr = style(addr);
|
|
addr = body(addr);
|
|
addr = writeString(addr, "</html>\n\r");
|
|
return addr;
|
|
}
|
|
|
|
int page2(int addr) {
|
|
addr = writeString(addr, "<html>\n");
|
|
// addr = menuStyle(addr);
|
|
addr = menuJS(addr);
|
|
addr = menuBody(addr);
|
|
addr = writeString(addr, "</html>\n\r");
|
|
return addr;
|
|
}
|
|
|
|
int body(int addr) {
|
|
addr = writeString(addr, "<body>\n");
|
|
addr = writeString(addr, "<form action='/ident' method='get'>\n");
|
|
addr = writeString(addr, "<script type='text/javascript'>\nfunction showValue(newValue)\n{\ndocument.getElementById('text').innerHTML=newValue;\n}\n</script>\n");
|
|
addr = writeString(addr, "<div>\n");
|
|
addr = writeString(addr, "<label for='name'>SSID:</label>\n");
|
|
addr = writeString(addr, "<input type='text' id='name' name='name' />\n");
|
|
addr = writeString(addr, "</div>\n");
|
|
addr = writeString(addr, "<div>\n");
|
|
addr = writeString(addr, " <label for='pass'>Password:</label>\n");
|
|
addr = writeString(addr, " <input type='password' id='pass' name='pass' />\n");
|
|
addr = writeString(addr, "</div>\n");
|
|
addr = writeString(addr, "<div>\n");
|
|
addr = writeString(addr, " <label for='domo'>Domoticz:</label>\n");
|
|
addr = writeString(addr, " <input type='text' id='domo' name='domo' />\n");
|
|
addr = writeString(addr, " <label for='port'>Port:</label>\n");
|
|
addr = writeString(addr, " <input type='text' id='port' name='port' />\n");
|
|
addr = writeString(addr, "</div>\n");
|
|
addr = writeString(addr, "<div>\n");
|
|
addr = writeString(addr, " <label for='radi'>Id Radiateur:</label>\n");
|
|
addr = writeString(addr, " <input type='radi' id='radi' name='radi' />\n");
|
|
addr = writeString(addr, "</div>\n");
|
|
addr = writeString(addr, "<div class='button'>\n");
|
|
addr = writeString(addr, " <button name=H type='submit'>Ok</button>\n");
|
|
addr = writeString(addr, "</div>\n");
|
|
addr = writeString(addr, "</form>\n");
|
|
addr = writeString(addr, "</body>\n");
|
|
return addr;
|
|
}
|
|
|
|
int menuBody(int addr) {
|
|
addr = writeString(addr, "<body>\n");
|
|
addr = writeString(addr, "<header role='banner'>\n");
|
|
addr = writeString(addr, " <div class='wrapper'>\n");
|
|
addr = writeString(addr, " <h1>Example</h1>\n");
|
|
|
|
addr = writeString(addr, " <nav id='nav' role='navigation'>\n");
|
|
addr = writeString(addr, " <div class='show_menu_btn' data-target='#nav ul' data-shown-text='Hide menu' data-hidden-text='Show menu'>Show menu</div>\n");
|
|
|
|
addr = writeString(addr, " <ul>\n");
|
|
addr = writeString(addr, " <li><a href='/admin'>Admin</a></li>\n");
|
|
addr = writeString(addr, " <li><a href='/infos'>Infos</a></li>\n");
|
|
addr = writeString(addr, " <li><a href='/status'>Status</a></li>\n");
|
|
addr = writeString(addr, " <li><a href='/aide'>Aide</a></li>\n");
|
|
addr = writeString(addr, " </ul>\n");
|
|
addr = writeString(addr, " </nav>\n");
|
|
addr = writeString(addr, " </div>\n");
|
|
addr = writeString(addr, "</header>\n");
|
|
|
|
addr = writeString(addr, "<main role='main'>\n");
|
|
addr = writeString(addr, " <div class='wrapper'>\n");
|
|
addr = writeString(addr, " <article>\n");
|
|
addr = writeString(addr, " <h2>Show/Hide navigation with pure JavaScript</h2>\n");
|
|
addr = writeString(addr, " <p>A show/hide menu using only pure JavaScript, no jQuery. Because sometimes there is no need to load the whole of jQuery just for a menu like that.</p>\n");
|
|
addr = writeString(addr, " <p>I can't claim all the credit for this, found help here: <a href='http://jsfiddle.net/fyUJc/31/'>jsFiddle</a>.</p>\n");
|
|
addr = writeString(addr, " </article>\n");
|
|
addr = writeString(addr, " </div>\n");
|
|
addr = writeString(addr, "</main>\n");
|
|
|
|
addr = writeString(addr, "<script>\n");
|
|
addr = writeString(addr, "var show_menu=document.querySelector('.show_menu_btn'),viewport_width=document.documentElement.clientWidth,menu=document.querySelector('#nav ul');600>viewport_width&&(menu.style.display='none'),window.addEventListener('resize',function(){var e=document.documentElement.clientWidth;menu.style.display=e>599?'block':'none'}),show_menu.addEventListener('click',function(){var e=document.querySelector(show_menu.getAttribute('data-target'));'none'==e.style.display?(e.style.display='block',show_menu.innerHTML=show_menu.getAttribute('data-shown-text')):(e.style.display='none',show_menu.innerHTML=show_menu.getAttribute('data-hidden-text'))});\n");
|
|
addr = writeString(addr, "</script>\n");
|
|
|
|
addr = writeString(addr, "</body>\n");
|
|
return addr;
|
|
}
|
|
|
|
int style(int addr) {
|
|
|
|
addr = writeString(addr, "<style>\n");
|
|
addr = writeString(addr, "form {\n");
|
|
addr = writeString(addr, " /* Just to center the form on the page */\n");
|
|
addr = writeString(addr, " margin: 0 auto;\n");
|
|
addr = writeString(addr, " width: 400px;\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, " /* To see the limits of the form */\n");
|
|
addr = writeString(addr, " padding: 1em;\n");
|
|
addr = writeString(addr, " border: 1px solid #CCC;\n");
|
|
addr = writeString(addr, " border-radius: 1em;\n");
|
|
addr = writeString(addr, "}\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, "div + div {\n");
|
|
addr = writeString(addr, " margin-top: 1em;\n");
|
|
addr = writeString(addr, "}\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, "label {\n");
|
|
addr = writeString(addr, " /* To make sure that all label have the same size and are properly align */\n");
|
|
addr = writeString(addr, " display: inline-block;\n");
|
|
addr = writeString(addr, " width: 90px;\n");
|
|
addr = writeString(addr, " text-align: right;\n");
|
|
addr = writeString(addr, "}\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, "input, textarea {\n");
|
|
addr = writeString(addr, " /* To make sure that all text field have the same font settings\n");
|
|
addr = writeString(addr, " By default, textarea are set with a monospace font */\n");
|
|
addr = writeString(addr, " font: 1em sans-serif;\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, " /* To give the same size to all text field */\n");
|
|
addr = writeString(addr, " width: 300px;\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, " -moz-box-sizing: border-box;\n");
|
|
addr = writeString(addr, " box-sizing: border-box;\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, " /* To harmonize the look & feel of text field border */\n");
|
|
addr = writeString(addr, " border: 1px solid #999;\n");
|
|
addr = writeString(addr, "}\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, "input:focus, textarea:focus {\n");
|
|
addr = writeString(addr, " /* To give a little highligh on active elements */\n");
|
|
addr = writeString(addr, " border-color: #000;\n");
|
|
addr = writeString(addr, "}\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, "textarea {\n");
|
|
addr = writeString(addr, " /* To properly align multiline text field with their label */\n");
|
|
addr = writeString(addr, " vertical-align: top;\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, " /* To give enough room to type some text */\n");
|
|
addr = writeString(addr, " height: 5em;\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, " /* To allow users to resize any textarea vertically\n");
|
|
addr = writeString(addr, " It works only on Chrome, Firefox and Safari */\n");
|
|
addr = writeString(addr, " resize: vertical;\n");
|
|
addr = writeString(addr, "}\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, ".button {\n");
|
|
addr = writeString(addr, " /* To position the buttons to the same position of the text fields */\n");
|
|
addr = writeString(addr, " padding-left: 90px; /* same size as the label elements */\n");
|
|
addr = writeString(addr, "}\n");
|
|
addr = writeString(addr, "\n");
|
|
addr = writeString(addr, "button {\n");
|
|
addr = writeString(addr, " /* This extra magin represent the same space as the space between\n");
|
|
addr = writeString(addr, " the labels and their text fields */\n");
|
|
addr = writeString(addr, " margin-left: .5em;\n");
|
|
addr = writeString(addr, "}\n");
|
|
addr = writeString(addr, "</style>\n");
|
|
|
|
return addr;
|
|
}
|
|
|
|
int menuJS(int addr) {
|
|
addr = writeString(addr, "var show_menu=document.querySelector('.show_menu_btn'),viewport_width=document.documentElement.clientWidth,menu=document.querySelector('#nav ul');600>viewport_width&&(menu.style.display='none'),window.addEventListener('resize',function(){var e=document.documentElement.clientWidth;menu.style.display=e>599?'block':'none'}),show_menu.addEventListener('click',function(){var e=document.querySelector(show_menu.getAttribute('data-target'));'none'==e.style.display?(e.style.display='block',show_menu.innerHTML=show_menu.getAttribute('data-shown-text')):(e.style.display='none',show_menu.innerHTML=show_menu.getAttribute('data-hidden-text'))}\n");
|
|
}
|
|
int menuStyle(int addr) {
|
|
addr = writeString(addr, "a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}nav ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';\n");
|
|
addr = writeString(addr, "content:none}table{border-collapse:collapse;border-spacing:0}h1{font-size:2.5em;font-weight:700;padding:.5em 0;letter-spacing:1px}@media screen and (max-width:599px){h1{text-align:center}}h2{font-size:1.25em;font-weight:700;line-height:1.2;padding:.5em 0}p{font-size:1em;padding:0 0 1em}a{color:#555;text-decoration:none;border-bottom:1px solid #555}a:hover{color:#88b47f;border-bottom:1px solid #88b47f}*{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-text-size-adjust:auto}body{font-family:sans-serif;font-size:100%;text-align:center;line-height:1.5;background:#f8f7f0;color:#555}.wrapper{width:90%;max-width:50em;margin:0 auto;text-align:left;overflow:hidden}\n");
|
|
addr = writeString(addr, "header{margin-bottom:1em;padding-bottom:1em;background:#57575f;color:#fff}@media screen and (max-width:599px){.no-js .show_menu_btn{display:none}.js .show_menu_btn,.no-js #nav ul{display:block}.js #nav ul{display:none}}@media screen and (min-width:600px){.show_menu_btn{display:none}#nav ul{display:block}}.show_menu_btn{width:35%;margin:0 auto;padding:.3em;cursor:pointer;text-align:center;background:#88b47f}#nav ul{margin:1em 0}#nav ul li{padding:.5em}#nav ul li:hover{background:#88b47f}#nav ul a{display:block;font-size:1em;color:#eee;border-bottom:none}@media screen and (max-width:599px){#nav ul{display:block}#nav ul li{display:block;text-align:center;border-bottom:1px solid #6f6f7a}}@media screen and (min-width:600px){#nav{overflow:hidden}#nav ul li{width:7em;float:left;margin-right:1em}}\n");
|
|
}
|
|
|