WeMos D1 WIFI WebServer

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: WeMos D1 WIFI WebServer

Příspěvek od rottenkiwi »

Skúšal som uspať Wemos, ale keďže to komunikuje cez AJAX s browserom, tak po 2 - 3 cykloch
to stratí spojenie a pomože len manuálny refrešh stránky.

Ako pred uspaním Wemos-u oznámiť browseru, že nech počká 8 resp. 19 sekúnd ?

https://www.youtube.com/watch?v=5ta4WBhqwkQ

Tiež po ESP.deepSleep sa nezníži spotreba na 15 uA, ale je cca. 5.1 mA.
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
svango
Příspěvky: 169
Registrován: čtv dub 12, 2018 2:44 pm
Reputace: 9
Bydliště: Trencin

Re: WeMos D1 WIFI WebServer

Příspěvek od svango »

FVE1 - 3kW do 48V 7.2kWh LiFe cez 5kW Axpert, FVE2 domcek pre maleho - 0.26kW do 12V 0.5kWh LiFe cez Victron375, termicky ohrev vody 200 l
Uživatelský avatar
petrzobran
Příspěvky: 145
Registrován: sob pro 07, 2013 5:41 pm
Reputace: 10
Bydliště: 8 KM východně od Brna

Re: WeMos D1 WIFI WebServer

Příspěvek od petrzobran »

Skouším už přes rok jsem udělat webserver s takovýma pěknýma budíkama jako má rottenkiwi zde http://rottenkiwi.no-ip.biz/.
Pro FVE mam ž vše hotovo na Arduinu mega s ethernet shíeld to mi funguje ;)
Ted mam v plánu udělat budíky na rekuperaci kde mam Wemos D1 R2 a tam mě nastává velkej problem.
Všechno už mam hotovy, z ethernet mam předělany na WiF, ale mam problem s SD kartou, ta mě přádně nefunguje než načte index.htm tak to trvá 10 minut. Pravděpodobně na SD karta nějadej konflikt s Wemos.

Kód: Vybrat vše

//#include <Ethernet.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <SPI.h>
#include <SD.h>

float NapetiBB1 = 22;
float NapetiBB2 = 11;
float IvstupAX = 3;
int Bojler = 0;

//IPAddress ip(192, 168, 1, 202); // where xx is the desired IP Address
//IPAddress gateway(192, 168, 1, 1); // set gateway to match your network
//IPAddress subnet(255, 255, 255, 0); // set subnet mask to match your network

char ssid[] = "Petrzobran";    //  your network SSID (name)
char pass[] = "50067123";   // your network password

#define REQ_BUF_SZ 50   // velikost vyrovnávací paměti používaná k zachycení požadavků HTTP

int status = WL_IDLE_STATUS;

WiFiClient client;
//EthernetServer server(80);  // create a server at port 80
WiFiServer server(80);  // create a server at port 80
File webFile;               // soubor webové stránky na SD kartě
char HTTP_req[REQ_BUF_SZ] = {0}; // požadovaný protokol HTTP uložený jako null ukončený řetězec
char req_index = 0;              // index do vyrovnávací paměti HTTP_req

void setup() {

  Serial.begin(115200);      // inicializujte sériovou komunikaci na 9600 bitech za sekundu:
  // disable Ethernet chip
  //  pinMode(10, OUTPUT);
  //  digitalWrite(10, HIGH);
  // WiFi.config(ip, gateway, subnet);
  WiFi.begin(ssid, pass);

  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();// začne poslouchat klienty

  // initialize SD card
  Serial.println();
  Serial.println("Inicializace SD karty ...");
  if (!SD.begin(4)) {
    Serial.println("ERROR - inicializace karty SD se nezdarila!");
    return;    // init se nezdařilo
  }
  Serial.println("USPECH - inicializace SD karty.");
  // zkontroluje soubor index.htm
  if (!SD.exists("index.htm")) {
    Serial.println("ERROR - Nelze najit soubor index.htm!");
    return;  // Nelze najít indexový soubor
  }
  Serial.println("SUCCESS - Nalezeny soubor index.htm.");
}

void loop() {

  //   EthernetClient client = server.available();  // try to get client
  WiFiClient client = server.available();  // pokus o získání klienta

  if (client) {  // má klienta?
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {   // data klienta ke čtení k dispozici
        char c = client.read(); // číst 1 bajt (znak) od klienta
        // vyrovnávací paměť první části HTTP požadavku v poli HTTP_req (řetězec)
        // ponechat poslední prvek v poli jako 0 až null ukončení řetězce (REQ_BUF_SZ - 1)
        if (req_index < (REQ_BUF_SZ - 1)) {
          HTTP_req[req_index] = c;          //uložit znak HTTP požadavku
          req_index++;
        }
        // poslední řádek požadavku klienta je prázdný a končí \ n
        // odpovědět klientovi pouze po přijetí posledního řádku
        if (c == '\n' && currentLineIsBlank) {
          // odeslat standardní záhlaví odpovědi http
          client.println("HTTP/1.1 200 OK");
          // zbytek záhlaví je uveden níže, v závislosti na tom, zda
          // webová stránka nebo stránka XML
          // Požadavek Ajax - odeslání souboru XML
          if (StrContains(HTTP_req, "ajax_inputs")) {
            // odeslat zbytek záhlaví HTTP protokolu
            client.println("Content-Type: text/xml");
            client.println("Connection: keep-alive");
            client.println();
            // odeslat XML soubor obsahující vstupní stavy
            XML_response(client);
          }
          else {  // požadavek webové stránky
            // odeslat zbytek záhlaví HTTP protokolu
            client.println("Content-Type: text/html");
            client.println("Connection: keep-alive");
            client.println();
            // odeslat webovou stránku
            webFile = SD.open("index.htm");        // otevřete soubor webové stránky
            if (webFile) {
              while (webFile.available()) {
                client.write(webFile.read()); // odeslat webovou stránku klientovi
              }
              webFile.close();
            }
          }
          // zobrazení přijaté HTTP žádosti na sériovém portu
          Serial.print(HTTP_req);
          // obnovit index vyrovnávací paměti a všechny prvky vyrovnávací paměti na hodnotu 0
          req_index = 0;
          StrClear(HTTP_req, REQ_BUF_SZ);
          break;
        }
        // každý řádek textu přijatý od klienta končí \ r \ n
        if (c == '\n') {
          // poslední znak na řádku přijatého textu
          //  číst začátek nového řádku s dalším znakem
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // textový znak byl přijat od klienta
          currentLineIsBlank = false;
        }
      } // end if (client.available())
    } // end while (client.connected())
    delay(1);      // poskytnout čas webový prohlížeči pro příjem dat
    client.stop(); // zavřete připojení
  } // end if (client)
}

// odeslat soubor XML obsahující analogoé hodnoty
//void XML_response(EthernetClient cl)
void XML_response(WiFiClient cl)//---------------------------------------------
{

  Serial.print("ddddd ");
  cl.print("<?xml version = \"1.0\" ?>");
  cl.print("<inputs>");

  cl.print("<analog>");
  cl.print(NapetiBB1);
  cl.print("</analog>");
  cl.print("<analog>");
  cl.print(NapetiBB2);
  cl.print("</analog>");
  cl.print("<analog>");
  cl.print(IvstupAX);
  cl.print("</analog>");
  cl.print("<analog>");
  cl.print(Bojler);
  cl.print("</analog>");

  cl.print("</inputs>");
}

// nastaví každý prvek str na hodnotu 0 (vymaže pole)
void StrClear(char *str, char length)//--------------------------------------------
{
  for (int i = 0; i < length; i++) {
    str[i] = 0;
  }
}

// vyhledá řetězec sfind v řetězci str
// vrátí 1, pokud je nalezen řetězec
// vrátí 0, pokud řetězec nebyl nalezen
char StrContains(char *str, char *sfind)
{
  char found = 0;
  char index = 0;
  char len;

  len = strlen(str);

  if (strlen(sfind) > len) {
    return 0;
  }
  while (index < len) {
    if (str[index] == sfind[found]) {
      found++;
      if (strlen(sfind) == found) {
        return 1;
      }
    }
    else {
      found = 0;
    }
    index++;
  }
  return 0;
}
Původ pochází ocať https://startingelectronics.org/tutoria ... eb-server/

Zapojení SD:
MOSI-----D7
MISO-----D6
SCK------D5
CS--------D8

V programu mam nastaveno SD.begin(4) :?:
To je jediná varianta, ktera na příkladu/SD/Cardinfo funguje ale s WiFi připojením nefunguje.
Jsem bezradný :(
Původně jsem chtěl index.htm uložit do SPIFFS ale nedařilo se mě odesílat hodnoty v XML. :(

Poradí mě někdo?
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: WeMos D1 WIFI WebServer

Příspěvek od rottenkiwi »

Tak to daj na SPIFFS. Ja to mám inak.

Kód: Vybrat vše

void generateHTML(){
myHTML="<!DOCTYPE HTML>\n";
myHTML +="<html>\n";
myHTML +="<meta http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\">\n";
myHTML += "  <head>\n";
myHTML += "<script type=\"text/javascript\" src=\"https://www.gstatic.com/charts/loader.js\"></script>\n";
myHTML += "   <script type=\"text/javascript\">\n";
myHTML += "   var IP = \"192.168.1.12\";\n";
myHTML += "   var temp_1 = 10;\n";
myHTML += "   var temp_2 = 20;\n";
myHTML += "   var temp_3 = 30;\n";
myHTML += "      google.charts.load('current', {'packages':['gauge']});\n";
myHTML += "      google.charts.setOnLoadCallback(drawChart_1);\n";
myHTML += "      function drawChart_1() {\n";
myHTML += "        nocache = \"&nocache=\" + Math.random() * 1000000;\n";
myHTML += "        var data1 = google.visualization.arrayToDataTable([\n";
myHTML += "          ['Label', 'Value'],\n";
myHTML += "          ['LiFeTemp', temp_1]\n";
myHTML += "        ]);\n";
myHTML += "        var data2 = google.visualization.arrayToDataTable([\n";
myHTML += "          ['Label', 'Value'],\n";
myHTML += "          ['T_Axpert', temp_2]\n";
myHTML += "        ]);\n";
myHTML += "        var data3 = google.visualization.arrayToDataTable([\n";
myHTML += "          ['Label', 'Value'],\n";
myHTML += "          ['Batt.Volt', temp_3]\n";
myHTML += "        ]);\n";
myHTML += "        var options1 = {\n";
myHTML += "          width: 400, height: 400,\n";
myHTML += "          blueFrom: 30, blueTo: 40,\n";
myHTML += "          redFrom: 90, redTo: 100,\n";
myHTML += "          yellowFrom:70, yellowTo: 90,\n";
myHTML += "          greenFrom: 10, greenTo: 25,\n";
myHTML += "          minorTicks: 10\n";
myHTML += "        };\n";
myHTML += "        var options2 = {\n";
myHTML += "          width: 400, height: 400,\n";
myHTML += "          blueFrom: 10, blueTo: 20,\n";
myHTML += "          redFrom: 90, redTo: 100,\n";
myHTML += "          greenFrom: 20, greenTo: 25,\n";
myHTML += "          yellowFrom:75, yellowTo: 90,\n";
myHTML += "          minorTicks: 10\n";
myHTML += "        };\n";
myHTML += "        var options3 = {\n";
myHTML += "          width: 400, height: 400,\n";
myHTML += "          min: 10.0, max: 35.0,\n";
myHTML += "          greenFrom: 22.8, greenTo: 26.8,\n";
myHTML += "          redFrom: 27.6, redTo: 30.0,\n";
myHTML += "          yellowFrom: 26.8, yellowTo: 27.6,\n";
myHTML += "          majorTicks:5, minorTicks: 10\n";
myHTML += "        };\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_1'));\n";
myHTML += "         chart.draw ( data1, options1 );\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_2'));\n";
myHTML += "         chart.draw ( data2, options2 );\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_3'));\n";
myHTML += "         chart.draw ( data3, options3 );\n";
myHTML += "        setInterval ( function () {\n";
myHTML += "         Act_1 ();\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_1'));\n";
myHTML += "        data1.setValue ( 0, 1, temp_1 );\n";
myHTML += "         chart.draw ( data1, options1 );\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_2'));\n";
myHTML += "        data2.setValue ( 0, 1, temp_2 );\n";
myHTML += "         chart.draw ( data2, options2 );\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_3'));\n";
myHTML += "        data3.setValue ( 0, 1, temp_3 );\n";
myHTML += "         chart.draw ( data3, options3 );\n";
myHTML += "         } ,15000 );\n";
myHTML += "      }\n";
myHTML += "       function Act_1() {\n";
myHTML += "       var xmlhttp = new XMLHttpRequest();\n";
myHTML += "           xmlhttp.onreadystatechange = function() {\n";
myHTML += "             if (this.readyState == 4 && this.status == 200) {\n";
myHTML += "               if (this.responseXML != null ) {\n";
myHTML += "                 temp_1 = this.responseXML.getElementsByTagName('analog')[0].childNodes[0].nodeValue;\n";
myHTML += "                 temp_2 = this.responseXML.getElementsByTagName('analog1')[0].childNodes[0].nodeValue;\n";
myHTML += "                 temp_3 = this.responseXML.getElementsByTagName('analog2')[0].childNodes[0].nodeValue;\n";
myHTML += "               }\n";
myHTML += "             }\n";
myHTML += "           }\n";
myHTML += "           xmlhttp.open(\"GET\", \"/act1\", true);\n";
myHTML += "           xmlhttp.send(null);\n";
myHTML += "       }\n";
myHTML += "   </script>\n";
myHTML += "  </head>\n";
myHTML += "  <body onload=\"drawChart_1()\">\n";
myHTML += "    <div id=\"chart_div_1\" style=\"width: 400px; height: 400px; float: left;\"></div>\n";
myHTML += "    <div id=\"chart_div_2\" style=\"width: 400px; height: 400px; float: left;\"></div>\n";
myHTML += "    <div id=\"chart_div_3\" style=\"width: 400px; height: 400px; float: left;\"></div>\n";
myHTML += "  </body>\n";
myHTML += "</html>\n";
//myHTML += "               document.getElementById('chart_div_2').innerHTML=xmlhttp.responseXML.getElementsByTagName('response')[0].childNodes[0].nodeValue;\n";
//myHTML += "               document.getElementById('chart_div_1').innerHTML=xmlhttp.responseXML.getElementsByTagName('response')[0].childNodes[0].nodeValue;\n"
}
void buildXML_1(){
  //float t = Get_temp_1  ();
  digitalWrite(led, 1);
  
  XML="<?xml version=\"1.0\"?>\n";
  XML+="<input>\n";
  XML+="<analog>";
  XML+= String( teplota,1);
  XML+="</analog>\n";
  XML+="<analog1>";
  XML+= String( teplota_2,1);
  XML+="</analog1>\n";
  XML+="<analog2>";
  XML+= String(volts,2);
  XML+="</analog2>\n";
  XML+="</input>\n";
  
  digitalWrite(led, 0);
}


void buildXML_2(){
  //float t = Get_temp_2  ();
  digitalWrite(led, 1);
  XML="<?xml version=\"1.0\"?>\n";
  XML+="<response>";
  XML+= String(Get_temp_2 (),1);
  XML+="</response>\n";
  digitalWrite(led, 0);
}



void buildXML_3(){
  //float t = Get_temp_0  ();
  digitalWrite(led, 1);
  XML="<?xml version=\"1.0\"?>\n";
  XML+="<response>";
  XML+= String(Get_A0 (),2);
  XML+="</response>\n";
  digitalWrite(led, 0);
}



void handleAct1 (){
   buildXML_1();
  server.send(200,"text/xml",XML);
  digitalWrite(led, 0);
  delay(100);
  main_cycle++;
  server.send(200,"text/xml",XML);
  digitalWrite(led, 0);
  if (main_cycle > 3 ){ 
    Serial.println("Sleep_act1");
    ESP.deepSleep (3e6);
    Serial.println("Wake");
   }
  //Serial.print("Sleep");
  //ESP.deepSleep (8e6);
  delay(100);
  //ESP.restart ();
  Serial.print("Wake");
  //server.send(200, "text/plain", String(Get_temp_1 (),1) );
  //DBG_OUTPUT_PORT.print(message);
}

void handleAct2 (){
   buildXML_2();
  server.send(200,"text/xml",XML);
  
  digitalWrite(led, 0);
  //delay(9500);
  //Serial.print("Sleep");
  //ESP.deepSleep (8000, WAKE_RF_DEFAULT);
  //ESP.deepSleep (19e6);
  //delay(100);
  //ESP.restart ();
 // Serial.print("Wake");
    //server.send(200, "text/plain", String(Get_temp_2 (),1) );
  //DBG_OUTPUT_PORT.print(message);
}

void handleAct3 (){
   buildXML_3();
   main_cycle++;
  server.send(200,"text/xml",XML);
  digitalWrite(led, 0);
  //if (main_cycle > 1 ){ 
  //  Serial.println("Sleep");
  //  ESP.deepSleep (7e6);
  //  Serial.println("Wake");
  // }
  //pinMode(D2, INPUT); 
  //digitalWrite(D2, 0);   //delay(9500);
  
  //server.send(200, "text/plain", String(Get_temp_0 (),1) );
  //DBG_OUTPUT_PORT.print(message);
}


void handleRoot() {  
    //sensor.requestTemperatures(); 
    server.send(200, "text/plain", String(Get_temp_1 (),1) );
}

void handleWebsite(){
   generateHTML();
  server.send(200,"text/html",myHTML);
}

Přílohy
budiky.png
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
petrzobran
Příspěvky: 145
Registrován: sob pro 07, 2013 5:41 pm
Reputace: 10
Bydliště: 8 KM východně od Brna

Re: WeMos D1 WIFI WebServer

Příspěvek od petrzobran »

rottenkiwi píše:Tak to daj na SPIFFS.
Tak to bych fakt rád ale nevím jak nato.
Když splácávám tyto dva návody dohromady tak mi ti nejede
http://www.arduino8.cz/hrajeme-si-wemos ... em-spiffs/
https://startingelectronics.org/tutoria ... eb-server/

Vypadá to takto

Kód: Vybrat vše


#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <FS.h>                 // knihovna pro souborový systém
#define REQ_BUF_SZ 50   // velikost vyrovnávací paměti používaná k zachycení požadavků HTTP

char HTTP_req[REQ_BUF_SZ] = {0}; // požadovaný protokol HTTP uložený jako null ukončený řetězec
char req_index = 0;              // index do vyrovnávací paměti HTTP_req

float NapetiBB1 = 0;
float NapetiBB2 = 22;
float IvstupAX = 15;
int Bojler = -8;

//String HTTP_req;
const char* ssid = "Petrzobran";        // upravte nastavení WIFI podle sebe
const char* password = "50067123";// upravte nastavení WIFI podle sebe
ESP8266WebServer server(80);
//WiFiServer server(80);
WiFiClient client;
void setup(void){
  
    SPIFFS.begin();
    Serial.begin(115200);
    Serial.printf("Connecting to %s\n", ssid);
  if (String(WiFi.SSID()) != String(ssid)) {
    WiFi.begin(ssid, password);
  }
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected! IP address: ");
  Serial.println(WiFi.localIP());
  
 
  
  server.begin();  //start serveru
}
 
void loop(void){


  server.handleClient(); // ošetřuj požadavky klienta
WiFiClient client = server.available();
  if (client) {  // má klienta?
     Serial.print(" a ");
    boolean currentLineIsBlank = true;
    while (client.connected()) {
       Serial.print(" b ");
      if (client.available()) {   // data klienta ke čtení k dispozici
         Serial.print(" c ");
        char c = client.read(); // číst 1 bajt (znak) od klienta
        // vyrovnávací paměť první části HTTP požadavku v poli HTTP_req (řetězec)
        // ponechat poslední prvek v poli jako 0 až null ukončení řetězce (REQ_BUF_SZ - 1)
        if (req_index < (REQ_BUF_SZ - 1)) {
          HTTP_req[req_index] = c;          //uložit znak HTTP požadavku
          req_index++;
        }
        // poslední řádek požadavku klienta je prázdný a končí \ n
        // odpovědět klientovi pouze po přijetí posledního řádku
        if (c == '\n' && currentLineIsBlank) {
          // odeslat standardní záhlaví odpovědi http
          client.println("HTTP/1.1 200 OK");
          // zbytek záhlaví je uveden níže, v závislosti na tom, zda
          // webová stránka nebo stránka XML
          // Požadavek Ajax - odeslání souboru XML
          if (StrContains(HTTP_req, "ajax_inputs")) {
            // odeslat zbytek záhlaví HTTP protokolu
            client.println("Content-Type: text/xml");
            client.println("Connection: keep-alive");
            client.println();
            // odeslat XML soubor obsahující vstupní stavy
            XML_response(client);
          }
          else {  // požadavek webové stránky
            // odeslat zbytek záhlaví HTTP protokolu
            client.println("Content-Type: text/html");
            client.println("Connection: keep-alive");
            client.println();
            // odeslat webovou stránku
           // pokud je zadán pouze název serveru proveď funkci "Zpracuj požadavek"  
server.on("/", ZpracujPozadavek);          }
          // zobrazení přijaté HTTP žádosti na sériovém portu
          Serial.print(HTTP_req);
          // obnovit index vyrovnávací paměti a všechny prvky vyrovnávací paměti na hodnotu 0
          req_index = 0;
          StrClear(HTTP_req, REQ_BUF_SZ);
          break;
        }
        // každý řádek textu přijatý od klienta končí \ r \ n
        if (c == '\n') {
          // poslední znak na řádku přijatého textu
          //  číst začátek nového řádku s dalším znakem
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // textový znak byl přijat od klienta
          currentLineIsBlank = false;
        }
      } // end if (client.available())
    } // end while (client.connected())
    delay(1);      // poskytnout čas webový prohlížeči pro příjem dat
    client.stop(); // zavřete připojení
  } // end if (client)
}
// deklarace funkce Zpracuj požadavek
void ZpracujPozadavek()
{  
   Serial.print(" d ");
// vytvoří proměnou soubor s názvem "file" a otevře ho pro čtení  
   File file = SPIFFS.open("/index.htm", "r");
// odešle data ze souboru file jako prostý text 
   size_t sent = server.streamFile(file, "text/html");
// zavře soubor file  
   file.close();
}


//***********************************************************
// odeslat soubor XML obsahující analogoé hodnoty
void XML_response(WiFiClient cl)//---------------------------------------------
{

 Serial.print(" e ");
  cl.print("<?xml version = \"1.0\" ?>");
  cl.print("<inputs>");

  cl.print("<analog>");
  cl.print(NapetiBB1);
  cl.print("</analog>");
  cl.print("<analog>");
  cl.print(NapetiBB2);
  cl.print("</analog>");
  cl.print("<analog>");
  cl.print(IvstupAX);
  cl.print("</analog>");
  cl.print("<analog>");
  cl.print(dxxxx);
  cl.print("</analog>");
  
  cl.print("</inputs>");
}

// nastaví každý prvek str na hodnotu 0 (vymaže pole)
void StrClear(char *str, char length)//--------------------------------------------
{
  for (int i = 0; i < length; i++) {
    str[i] = 0;
  }
}

// vyhledá řetězec sfind v řetězci str
// vrátí 1, pokud je nalezen řetězec
// vrátí 0, pokud řetězec nebyl nalezen
char StrContains(char *str, char *sfind)
{
  char found = 0;
  char index = 0;
  char len;

  len = strlen(str);

  if (strlen(sfind) > len) {
    return 0;
  }
  while (index < len) {
    if (str[index] == sfind[found]) {
      found++;
      if (strlen(sfind) == found) {
        return 1;
      }
    }
    else {
      found = 0;
    }
    index++;
  }
  return 0;
}
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: WeMos D1 WIFI WebServer

Příspěvek od rottenkiwi »

POšli mi do PM celý kód, aký máš a ja to skúsim urobiť o 2 - 3 hod, keď už nebudú vo mne lieky,
lebo teraz mi nefuguje pamať.

Tak vzskúšaj toto, či sa zjavia budíky:

Kód: Vybrat vše

#include <ESP8266WiFi.h>
//#include <DallasTemperature.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>



float NapetiBB1 = 0;
float NapetiBB2 = 22;
float IvstupAX = 15;
int Bojler = -8;
 
const char* ssid = "Petrzobran";        // upravte nastavení WIFI podle sebe
const char* password = "50067123";    // upravte nastavení WIFI podle sebe
ESP8266WebServer server(80);
//WiFiServer server(80);
WiFiClient client;

String myHTML = "";
String XML;

 const int led = BUILTIN_LED;


void handleNotFound(){
  digitalWrite(led, 1);
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET)?"GET":"POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i=0; i<server.args(); i++){
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
  digitalWrite(led, 0);
}



void generateHTML(){
myHTML="<!DOCTYPE HTML>\n";
myHTML +="<html>\n";
myHTML +="<meta http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\">\n";
myHTML += "  <head>\n";
myHTML += "<script type=\"text/javascript\" src=\"https://www.gstatic.com/charts/loader.js\"></script>\n";
myHTML += "   <script type=\"text/javascript\">\n";
myHTML += "   var IP = \"192.168.1.12\";\n";
myHTML += "   var temp_1 = 10;\n";
myHTML += "   var temp_2 = 20;\n";
myHTML += "   var temp_3 = 30;\n";
myHTML += "      google.charts.load('current', {'packages':['gauge']});\n";
myHTML += "      google.charts.setOnLoadCallback(drawChart_1);\n";
myHTML += "      function drawChart_1() {\n";
myHTML += "        nocache = \"&nocache=\" + Math.random() * 1000000;\n";
myHTML += "        var data1 = google.visualization.arrayToDataTable([\n";
myHTML += "          ['Label', 'Value'],\n";
myHTML += "          ['LiFeTemp', temp_1]\n";
myHTML += "        ]);\n";
myHTML += "        var data2 = google.visualization.arrayToDataTable([\n";
myHTML += "          ['Label', 'Value'],\n";
myHTML += "          ['T_Axpert', temp_2]\n";
myHTML += "        ]);\n";
myHTML += "        var data3 = google.visualization.arrayToDataTable([\n";
myHTML += "          ['Label', 'Value'],\n";
myHTML += "          ['Batt.Volt', temp_3]\n";
myHTML += "        ]);\n";
myHTML += "        var options1 = {\n";
myHTML += "          width: 400, height: 400,\n";
myHTML += "          blueFrom: 30, blueTo: 40,\n";
myHTML += "          redFrom: 90, redTo: 100,\n";
myHTML += "          yellowFrom:70, yellowTo: 90,\n";
myHTML += "          greenFrom: 10, greenTo: 25,\n";
myHTML += "          minorTicks: 10\n";
myHTML += "        };\n";
myHTML += "        var options2 = {\n";
myHTML += "          width: 400, height: 400,\n";
myHTML += "          blueFrom: 10, blueTo: 20,\n";
myHTML += "          redFrom: 90, redTo: 100,\n";
myHTML += "          greenFrom: 20, greenTo: 25,\n";
myHTML += "          yellowFrom:75, yellowTo: 90,\n";
myHTML += "          minorTicks: 10\n";
myHTML += "        };\n";
myHTML += "        var options3 = {\n";
myHTML += "          width: 400, height: 400,\n";
myHTML += "          min: 10.0, max: 35.0,\n";
myHTML += "          greenFrom: 22.8, greenTo: 26.8,\n";
myHTML += "          redFrom: 27.6, redTo: 30.0,\n";
myHTML += "          yellowFrom: 26.8, yellowTo: 27.6,\n";
myHTML += "          majorTicks:5, minorTicks: 10\n";
myHTML += "        };\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_1'));\n";
myHTML += "         chart.draw ( data1, options1 );\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_2'));\n";
myHTML += "         chart.draw ( data2, options2 );\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_3'));\n";
myHTML += "         chart.draw ( data3, options3 );\n";
myHTML += "        setInterval ( function () {\n";
myHTML += "         Act_1 ();\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_1'));\n";
myHTML += "        data1.setValue ( 0, 1, temp_1 );\n";
myHTML += "         chart.draw ( data1, options1 );\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_2'));\n";
myHTML += "        data2.setValue ( 0, 1, temp_2 );\n";
myHTML += "         chart.draw ( data2, options2 );\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_3'));\n";
myHTML += "        data3.setValue ( 0, 1, temp_3 );\n";
myHTML += "         chart.draw ( data3, options3 );\n";
myHTML += "         } ,15000 );\n";
myHTML += "      }\n";
myHTML += "       function Act_1() {\n";
myHTML += "       var xmlhttp = new XMLHttpRequest();\n";
myHTML += "           xmlhttp.onreadystatechange = function() {\n";
myHTML += "             if (this.readyState == 4 && this.status == 200) {\n";
myHTML += "               if (this.responseXML != null ) {\n";
myHTML += "                 temp_1 = this.responseXML.getElementsByTagName('analog')[0].childNodes[0].nodeValue;\n";
myHTML += "                 temp_2 = this.responseXML.getElementsByTagName('analog1')[0].childNodes[0].nodeValue;\n";
myHTML += "                 temp_3 = this.responseXML.getElementsByTagName('analog2')[0].childNodes[0].nodeValue;\n";
myHTML += "               }\n";
myHTML += "             }\n";
myHTML += "           }\n";
myHTML += "           xmlhttp.open(\"GET\", \"/act1\", true);\n";
myHTML += "           xmlhttp.send(null);\n";
myHTML += "       }\n";
myHTML += "   </script>\n";
myHTML += "  </head>\n";
myHTML += "  <body onload=\"drawChart_1()\">\n";
myHTML += "    <div id=\"chart_div_1\" style=\"width: 400px; height: 400px; float: left;\"></div>\n";
myHTML += "    <div id=\"chart_div_2\" style=\"width: 400px; height: 400px; float: left;\"></div>\n";
myHTML += "    <div id=\"chart_div_3\" style=\"width: 400px; height: 400px; float: left;\"></div>\n";
myHTML += "  </body>\n";
myHTML += "</html>\n";
//myHTML += "               document.getElementById('chart_div_2').innerHTML=xmlhttp.responseXML.getElementsByTagName('response')[0].childNodes[0].nodeValue;\n";
//myHTML += "               document.getElementById('chart_div_1').innerHTML=xmlhttp.responseXML.getElementsByTagName('response')[0].childNodes[0].nodeValue;\n"
}



void buildXML_1(){
  //float t = Get_temp_1  ();
  digitalWrite(led, 1);
  
  XML="<?xml version=\"1.0\"?>\n";
  XML+="<input>\n";
  XML+="<analog>";
  XML+= String(NapetiBB1 ,1);
  XML+="</analog>\n";
  XML+="<analog1>";
  XML+= String(NapetiBB2 ,1);
  XML+="</analog1>\n";
  XML+="<analog2>";
  XML+= String( IvstupAX,2);
  XML+="</analog2>\n";
  XML+="</input>\n";
  
  digitalWrite(led, 0);
}









void handleAct1 (){
   buildXML_1();
  server.send(200,"text/xml",XML);
  digitalWrite(led, 0);
 
 
    Serial.println("Sleep_act1");
    ESP.deepSleep (3e6);
    Serial.println("Wake");
  
  Serial.print("Wake");
  //server.send(200, "text/plain", String(Get_temp_1 (),1) );
  //DBG_OUTPUT_PORT.print(message);
}






void handleWebsite(){
   generateHTML();
  server.send(200,"text/html",myHTML);
}

/*
void handleRoot() {  
    sensor.requestTemperatures(); 
    server.send(200, "text/plain", String(sensor.getTempCByIndex(0), 1));
}


void handleRoot() {
  
  digitalWrite(led, 1);  

  Serial.println();
  String message = "";
  message += server.args();
  message += "\n";
  for (uint8_t i=0; i<server.args(); i++){
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  Serial.println(message);
  if (server.args()==0)
  {
    generateHTML();
    server.send(200, "text/html", myHTML);
  }
  else
  {}
  
  
  digitalWrite(led, 0);
}

*/
 
void setup(void){
  //sensor.begin();

  pinMode (A0, INPUT);
  pinMode(led, OUTPUT);
  pinMode(D2, INPUT);
    //digitalWrite(D2, 1); 
  digitalWrite(led, 0);
  Serial.begin(9600);
  WiFi.begin(ssid, password);
  Serial.println("");
 
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
 
  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS responder started");
  }
 
  server.on("/", handleWebsite);
  server.on("/act1", handleAct1);
  //server.on("/act2", handleAct2);
  //server.on("/act3", handleAct3);
  //server.on("/edit", HTTP_PUT, handleCreate);
 // server.on("/inline", [](){server.send(200, "text/plain", "this works as well");});
  server.onNotFound(handleNotFound);
 
  server.begin();
  Serial.println("HTTP server started");
  //
  
}
 
void loop(void){

  server.handleClient();
  
  server.send(200,"text/xml",XML);
  digitalWrite(led, 0);
 
    Serial.println("Sleep_loop");
    delay (900);
    ESP.deepSleep (4e6);
    Serial.println("Wake");

}

void XML_response(WiFiClient cl)//---------------------------------------------
{

 Serial.print(" e ");
  cl.print("<?xml version = \"1.0\" ?>");
  cl.print("<inputs>");

  cl.print("<analog>");
  cl.print(NapetiBB1);
  cl.print("</analog>");
  cl.print("<analog>");
  cl.print(NapetiBB2);
  cl.print("</analog>");
  cl.print("<analog>");
  cl.print(IvstupAX);
  cl.print("</analog>");
  //cl.print("<analog>");
  //cl.print(dxxxx);
  //cl.print("</analog>");
  
  cl.print("</inputs>");
}

// nastaví každý prvek str na hodnotu 0 (vymaže pole)
void StrClear(char *str, char length)//--------------------------------------------
{
  for (int i = 0; i < length; i++) {
    str[i] = 0;
  }
}

// vyhledá řetězec sfind v řetězci str
// vrátí 1, pokud je nalezen řetězec
// vrátí 0, pokud řetězec nebyl nalezen
char StrContains(char *str, char *sfind)
{
  char found = 0;
  char index = 0;
  char len;

  len = strlen(str);

  if (strlen(sfind) > len) {
    return 0;
  }
  while (index < len) {
    if (str[index] == sfind[found]) {
      found++;
      if (strlen(sfind) == found) {
        return 1;
      }
    }
    else {
      found = 0;
    }
    index++;
  }
  return 0;
}

 

DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
petrzobran
Příspěvky: 145
Registrován: sob pro 07, 2013 5:41 pm
Reputace: 10
Bydliště: 8 KM východně od Brna

Re: WeMos D1 WIFI WebServer

Příspěvek od petrzobran »

Už jsem z toho nešťastnej. Tyden se stím otravuju a pořád nic :(
index.htm na SPIFFS nejsem schopen zprovoznit.
webSite += " "; a myHTML +=" "; jsem se chtěl vyhnout.
SD karta s Wemos nevím proč, ale kolabuje.
Tak jsem vypotil toto:

Kód: Vybrat vše

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
//#define CS 15                   //define chip select line for manual control
ESP8266WebServer server(80);
const char* ssid="Petrzobran"; 
const char* password="50067123"; 
String webSite,javaScript,XML;
float data=0;

void buildWebsite(){
  buildJavascript();

webSite += "<!DOCTYPE html>\n";
webSite += "<html>\n";
webSite += "    <head>\n";
webSite += "        <title>Arduino Ajax Two Dial</title>\n";
webSite += javaScript;
webSite += "    </head>\n";
webSite += "    <body onload=\"GetArduinoInputs()\">\n";
webSite += "        <canvas id=\"an_gauge_1\"  data-title=\"Vstup cisty do rek\" data-units=\"V\" width=\"320\" height=\"320\" data-major-ticks=\"0 100 200 300 400 500 600 700 800 900 1000 1100\" data-type=\"canv-gauge\" data-min-value=\"0\" data-max-value=\"1100\"   data-highlights=\"-10 0 #4D89F2, 0 20 #25B8D9, 20 25 #0BB950, 25 35 #ff0000\" data-onready=\"setInterval( function() { Gauge.Collection.get('an_gauge_1').setValue(data_val);}, 200);\"></canvas>\n";
webSite += "    </body>\n";
webSite += "</html>\n";
}

void buildJavascript(){
javaScript += "        <script>\n";
javaScript += "        var data_val=0;\n";
javaScript += "   eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('t W=v(f){W.2t.3T(A);A.B={Z:2u,19:1q,1h:1q,1J:U,1b:D,K:0,V:[\'0\',\'20\',\'40\',\'2A\',\'2B\',\'D\'],2r:10,2C:M,1E:U,2q:{2D:3,2E:2},2H:M,1c:{2j:10,2m:3y,2O:\'3v\'},J:{2P:\'#4h\',V:\'#31\',2r:\'#3k\',1J:\'#37\',1E:\'#37\',3e:\'#31\',1t:{2s:\'1e(3Y, 3d, 3d, 1)\',3c:\'1e(1Y, 5I, 5E, .9)\'}},1o:[{1n:20,1D:2A,1F:\'#3j\'},{1n:2A,1D:2B,1F:\'#36\'},{1n:2B,1D:D,1F:\'#5n\'}]};t g=0,1p=A,N=0,1S=0,1G=U;A.5d=v(a){N=f.1c?g:a;t b=(f.1b-f.K)/D;1S=a>f.1b?1S=f.1b+b:a<f.K?f.K-b:a;g=a;f.1c?3l():A.1g();C A};A.3m=v(a){N=g=a;A.1g();C A};A.4T=v(){g=N=1S=A.B.K;A.1g();C A};A.4R=v(){C g};A.13=v(){};v 2k(a,b){Q(t i 4P b){z(1H b[i]==\"1W\"&&!(4O.4y.2V.4p(b[i])===\'[1W 4n]\')&&i!=\'Z\'){z(1H a[i]!=\"1W\"){a[i]={}}2k(a[i],b[i])}O{a[i]=b[i]}}};2k(A.B,f);A.B.K=1R(A.B.K);A.B.1b=1R(A.B.1b);f=A.B;N=g=f.K;z(!f.Z){4m 4j(\"4g 4d 4b 46 44 41 3Z 3W W 1W!\");}t j=f.Z.5K?f.Z:2R.5v(f.Z),q=j.3u(\'2d\'),1i,1y,1A,14,17,u,1d;v 2M(){j.19=f.19;j.1h=f.1h;1i=j.4s(M);1d=1i.3u(\'2d\');1y=j.19;1A=j.1h;14=1y/2;17=1A/2;u=14<17?14:17;1i.2J=U;1d.3P(14,17);1d.G();q.3P(14,17);q.G()};2M();A.4Z=v(a){2k(A.B,a);2M();A.1g();C A};t k={4q:v(p){C p},4e:v(p){C E.1L(p,2)},4c:v(p){C E.1L(p,5)},3v:v(p){C 1-E.1O(E.5C(p))},5k:v(p){C 1-(v(p){Q(t a=0,b=1;1;a+=b,b/=2){z(p>=(7-4*a)/11){C-E.1L((11-6*a-11*p)/4,2)+E.1L(b,2)}}})(1-p)},4S:v(p){C 1-(v(p){t x=1.5;C E.1L(2,10*(p-1))*E.1T(20*E.1a*x/3*p)})(1-p)}};t l=2u;v 3S(d){t e=2v 3R;l=2x(v(){t a=2v 3R-e,1M=a/d.2m;z(1M>1){1M=1}t b=1H d.2g==\"v\"?d.2g:k[d.2g];t c=b(1M);d.3Q(c);z(1M==1){2b(l)}},d.2j||10)};v 3l(){l&&2b(l);t b=(1S-N),1n=N,29=f.1c;3S({2j:29.2j,2m:29.2m,2g:29.2O,3Q:v(a){N=1R(1n)+b*a;1p.1g()}})};q.5l=\"3O\";A.1g=v(){z(!1i.2J){1d.3M(-14,-17,1y,1A);1d.G();t a=q;q=1d;3L();3K();3I();3H();3F();3D();3z();1i.2J=M;q=a;5G a}q.3M(-14,-17,1y,1A);q.G();q.4a(1i,-14,-17,1y,1A);z(!W.28){t b=2x(v(){z(!W.28){C}2b(b);2K();2L();z(!1G){1p.13&&1p.13();1G=M}},10)}O{2K();2L();z(!1G){1p.13&&1p.13();1G=M}}C A};v S(a){C a*E.1a/4J};v 1l(a,b,c){t d=q.4Y(0,0,0,c);d.1V(0,a);d.1V(1,b);C d};v 3L(){t a=u/D*5g,3x=u-a,2a=u/D*5q,5u=u-2a,1f=u/D*5z,5A=u-1f;3t=u/D*5F;q.G();z(f.2H){q.2o=3x;q.2n=\'1e(0, 0, 0, 0.5)\'}q.P();q.16(0,0,a,0,E.1a*2,M);q.L=1l(\'#42\',\'#43\',a);q.T();q.R();q.P();q.16(0,0,2a,0,E.1a*2,M);q.L=1l(\'#49\',\'#36\',2a);q.T();q.P();q.16(0,0,1f,0,E.1a*2,M);q.L=1l(\'#3j\',\'#3s\',1f);q.T();q.P();q.16(0,0,3t,0,E.1a*2,M);q.L=f.J.2P;q.T();q.G()};v 3H(){t r=u/D*2T;q.2e=2;q.2U=f.J.V;q.G();Q(t i=0;i<f.V.H;++i){t a=45+i*(1U/(f.V.H-1));q.1z(S(a));q.P();q.1K(0,r);q.F(0,r-u/D*15);q.1X();q.R();q.G()}z(f.2C){q.1z(S(2X));q.P();q.16(0,0,r,S(45),S(4N),U);q.1X();q.R();q.G()}};v 3I(){t r=u/D*2T;q.2e=1;q.2U=f.J.2r;q.G();t b=f.2r*(f.V.H-1);Q(t i=0;i<b;++i){t a=45+i*(1U/b);q.1z(S(a));q.P();q.1K(0,r);q.F(0,r-u/D*7.5);q.1X();q.R();q.G()}};v 3F(){t r=u/D*55;Q(t i=0;i<f.V.H;++i){t a=45+i*(1U/(f.V.H-1)),p=1w(r,S(a));q.1x=20*(u/1q)+\"2i 2Y\";q.L=f.J.3e;q.2e=0;q.2h=\"2f\";q.27(f.V[i],p.x,p.y+3)}};v 3D(){z(!f.1J){C}q.G();q.1x=24*(u/1q)+\"2i 2Y\";q.L=f.J.1J;q.2h=\"2f\";q.27(f.1J,0,-u/4.25);q.R()};v 3z(){z(!f.1E){C}q.G();q.1x=22*(u/1q)+\"2i 2Y\";q.L=f.J.1E;q.2h=\"2f\";q.27(f.1E,0,u/3.25);q.R()};v 32(a){t b=f.2q.2E,34=f.2q.2D;a=1R(a);t n=(a<0);a=E.35(a);z(b>0){a=a.5t(b).2V().1j(\'.\');Q(t i=0,s=34-a[0].H;i<s;++i){a[0]=\'0\'+a[0]}a=(n?\'-\':\'\')+a[0]+\'.\'+a[1]}O{a=E.3O(a).2V();Q(t i=0,s=34-a.H;i<s;++i){a=\'0\'+a}a=(n?\'-\':\'\')+a}C a};v 1w(r,a){t x=0,y=r,1O=E.1O(a),1T=E.1T(a),X=x*1T-y*1O,Y=x*1O+y*1T;C{x:X,y:Y}};v 3K(){q.G();t a=u/D*2T;t b=a-u/D*15;Q(t i=0,s=f.1o.H;i<s;i++){t c=f.1o[i],39=(f.1b-f.K)/1U,1P=S(45+(c.1n-f.K)/39),1N=S(45+(c.1D-f.K)/39);q.P();q.1z(S(2X));q.16(0,0,a,1P,1N,U);q.R();q.G();t d=1w(b,1P),3a=1w(a,1P);q.1K(d.x,d.y);q.F(3a.x,3a.y);t e=1w(a,1N),3b=1w(b,1N);q.F(e.x,e.y);q.F(3b.x,3b.y);q.F(d.x,d.y);q.1C();q.L=c.1F;q.T();q.P();q.1z(S(2X));q.16(0,0,b,1P-0.2,1N+0.2,U);q.R();q.1C();q.L=f.J.2P;q.T();q.G()}};v 2L(){t a=u/D*12,1f=u/D*8,1u=u/D*3X,1r=u/D*20,2l=u/D*4,1B=u/D*2,38=v(){q.3f=2;q.3g=2;q.2o=10;q.2n=\'1e(5L, 3h, 3h, 0.45)\'};38();q.G();z(N<0){N=E.35(f.K-N)}O z(f.K>0){N-=f.K}O{N=E.35(f.K)+N}q.1z(S(45+N/((f.1b-f.K)/1U)));q.P();q.1K(-1B,-1r);q.F(-2l,0);q.F(-1,1u);q.F(1,1u);q.F(2l,0);q.F(1B,-1r);q.1C();q.L=1l(f.J.1t.2s,f.J.1t.3c,1u-1r);q.T();q.P();q.F(-0.5,1u);q.F(-1,1u);q.F(-2l,0);q.F(-1B,-1r);q.F(1B/2-2,-1r);q.1C();q.L=\'1e(1Y, 1Y, 1Y, 0.2)\';q.T();q.R();38();q.P();q.16(0,0,a,0,E.1a*2,M);q.L=1l(\'#3s\',\'#36\',a);q.T();q.R();q.P();q.16(0,0,1f,0,E.1a*2,M);q.L=1l(\"#47\",\"#48\",1f);q.T()};v 3i(x,y,w,h,r){q.P();q.1K(x+r,y);q.F(x+w-r,y);q.23(x+w,y,x+w,y+r);q.F(x+w,y+h-r);q.23(x+w,y+h,x+w-r,y+h);q.F(x+r,y+h);q.23(x,y+h,x,y+h-r);q.F(x,y+r);q.23(x,y,x+r,y);q.1C()};v 2K(){q.G();q.1x=40*(u/1q)+\"2i 30\";t a=32(g),2Z=q.4f(\'-\'+32(0)).19,y=u-u/D*33,x=0,2W=0.12*u;q.G();3i(-2Z/2-0.21*u,y-2W-0.4i*u,2Z+0.3n*u,2W+0.4k*u,0.21*u);t b=q.4l(x,y-0.12*u-0.21*u+(0.12*u+0.3o*u)/2,u/10,x,y-0.12*u-0.21*u+(0.12*u+0.3o*u)/2,u/5);b.1V(0,\"#37\");b.1V(1,\"#3k\");q.2U=b;q.2e=0.3n*u;q.1X();q.2o=0.3p*u;q.2n=\'1e(0, 0, 0, 1)\';q.L=\"#4o\";q.T();q.R();q.3f=0.3q*u;q.3g=0.3q*u;q.2o=0.3p*u;q.2n=\'1e(0, 0, 0, 0.3)\';q.L=\"#31\";q.2h=\"2f\";q.27(a,-x,y);q.R()}};W.28=U;(v(){t d=2R,h=d.3r(\'4r\')[0],2S=4t.4u.4v().4w(\'4x\')!=-1,2Q=\'4z://4A-4B.4C/4D/4E/4F-7-4G.\'+(2S?\'4H\':\'4I\'),1I=\"@1x-4K {\"+\"1x-4L: \'30\';\"+\"4M: 2Q(\'\"+2Q+\"\');\"+\"}\",1s,r=d.3w(\'1v\');r.2N=\'1I/4Q\';z(2S){h.2p(r);1s=r.2I;1s.3A=1I}O{4U{r.2p(d.4V(1I))}4W(e){r.3A=1I}h.2p(r);1s=r.2I?r.2I:(r.4X||d.3B[d.3B.H-1])}t b=2x(v(){z(!d.3C){C}2b(b);t a=d.3w(\'50\');a.1v.51=\'30\';a.1v.52=\'53\';a.1v.1h=a.1v.19=0;a.1v.54=\'56\';a.57=\'.\';d.3C.2p(a);58(v(){W.28=M;a.59.5a(a)},3y)},1)})();W.2t=[];W.2t.5b=v(a){z(1H(a)==\'5c\'){Q(t i=0,s=A.H;i<s;i++){z(A[i].B.Z.18(\'5e\')==a){C A[i]}}}O z(1H(a)==\'5f\'){C A[a]}O{C 2u}};v 3E(a){z(2G.3G){2G.3G(\'5h\',a,U)}O{2G.5i(\'5j\',a)}}3E(v(){v 2F(a){t b=a[0];Q(t i=1,s=a.H;i<s;i++){b+=a[i].1Z(0,1).5m()+a[i].1Z(1,a[i].H-1)}C b};v 3J(a){C a.5o(/^\\s+|\\s+$/g,\'\')};t c=2R.3r(\'5p\');Q(t i=0,s=c.H;i<s;i++){z(c[i].18(\'1k-2N\')==\'5r-5s\'){t d=c[i],B={},1m,w=2c(d.18(\'19\')),h=2c(d.18(\'1h\'));B.Z=d;z(w){B.19=w}z(h){B.1h=h}Q(t e=0,1s=d.3N.H;e<1s;e++){1m=d.3N.5w(e).5x;z(1m!=\'1k-2N\'&&1m.1Z(0,5)==\'1k-\'){t f=1m.1Z(5,1m.H-5).5y().1j(\'-\'),I=d.18(1m);z(!I){2z}5B(f[0]){2y\'J\':{z(f[1]){z(!B.J){B.J={}}z(f[1]==\'1t\'){t k=I.1j(/\\s+/);z(k[0]&&k[1]){B.J.1t={2s:k[0],3c:k[1]}}O{B.J.1t=I}}O{f.5D();B.J[2F(f)]=I}}26}2y\'1o\':{z(!B.1o){B.1o=[]}2w=I.1j(\',\');Q(t j=0,l=2w.H;j<l;j++){t m=3J(2w[j]).1j(/\\s+/),1Q={};z(m[0]&&m[0]!=\'\'){1Q.1n=m[0]}z(m[1]&&m[1]!=\'\'){1Q.1D=m[1]}z(m[2]&&m[2]!=\'\'){1Q.1F=m[2]}B.1o.3T(1Q)}26}2y\'1c\':{z(f[1]){z(!B.1c){B.1c={}}z(f[1]==\'2O\'&&/^\\s*v\\s*\\(/.5H(I)){I=3U(\'(\'+I+\')\')}B.1c[f[1]]=I}26}5J:{t n=2F(f);z(n==\'13\'){2z}z(n==\'V\'){I=I.1j(/\\s+/)}O z(n==\'2C\'||n==\'2H\'){I=I==\'M\'?M:U}O z(n==\'2q\'){t o=I.1j(\'.\');z(o.H==2){I={2D:2c(o[0]),2E:2c(o[1])}}O{2z}}B[n]=I;26}}}}t g=2v W(B);z(d.18(\'1k-3V\')){g.3m(1R(d.18(\'1k-3V\')))}z(d.18(\'1k-13\')){g.13=v(){3U(A.B.Z.18(\'1k-13\'))}}g.1g()}}});',62,358,'||||||||||||||||||||||||||ctx|||var|max|function||||if|this|config|return|100|Math|lineTo|save|length|attrValue|colors|minValue|fillStyle|true|fromValue|else|beginPath|for|restore|radians|fill|false|majorTicks|Gauge|||renderTo||||onready|CX||arc|CY|getAttribute|width|PI|maxValue|animation|cctx|rgba|r2|draw|height|cache|split|data|lgrad|prop|from|highlights|self|200|rOut|ss|needle|rIn|style|rpoint|font|CW|rotate|CH|pad2|closePath|to|units|color|imready|typeof|text|title|moveTo|pow|progress|ea|sin|sa|hlCfg|parseFloat|toValue|cos|270|addColorStop|object|stroke|255|substr||025||quadraticCurveTo|||break|fillText|initialized|cfg|r1|clearInterval|parseInt||lineWidth|center|delta|textAlign|px|delay|applyRecursive|pad1|duration|shadowColor|shadowBlur|appendChild|valueFormat|minorTicks|start|Collection|null|new|hls|setInterval|case|continue|60|80|strokeTicks|int|dec|toCamelCase|window|glow|styleSheet|i8d|drawValueBox|drawNeedle|baseInit|type|fn|plate|url|document|ie|81|strokeStyle|toString|th|90|Arial|tw|Led|444|padValue||cint|abs|ccc|888|shad|vd|pe|pe1|end|128|numbers|shadowOffsetX|shadowOffsetY|143|roundRect|eee|666|animate|setRawValue|05|045|012|004|getElementsByTagName|f0f0f0|r3|getContext|cycle|createElement|d0|250|drawUnits|cssText|styleSheets|body|drawTitle|domReady|drawNumbers|addEventListener|drawMajorTicks|drawMinorTicks|trim|drawHighlights|drawPlate|clearRect|attributes|round|translate|step|Date|_animate|push|eval|value|the|77|240|creating||when|ddd|aaa|specified||not|e8e8e8|f5f5f5|fafafa|drawImage|was|quint|element|quad|measureText|Canvas|fff|04|Error|07|createRadialGradient|throw|Array|babab2|call|linear|head|cloneNode|navigator|userAgent|toLocaleLowerCase|indexOf|msie|prototype|http|smart|ip|net|styles|fonts|digital|mono|eot|ttf|180|face|family|src|315|Object|in|css|getValue|elastic|clear|try|createTextNode|catch|sheet|createLinearGradient|updateConfig|div|fontFamily|position|absolute|overflow||hidden|innerHTML|setTimeout|parentNode|removeChild|get|string|setValue|id|number|93|DOMContentLoaded|attachEvent|onload|bounce|lineCap|toUpperCase|999|replace|canvas|91|canv|gauge|toFixed|d1|getElementById|item|nodeName|toLowerCase|88|d2|switch|acos|shift|122|85|delete|test|160|default|tagName|188'.split('|'),0,{}))\n";
javaScript += "        function GetArduinoInputs()\n";
javaScript += "        {\n";
javaScript += "            nocache = \"&nocache=\" + Math.random() * 1000000;\n";
javaScript += "            var request = new XMLHttpRequest();\n";
javaScript += "            request.onreadystatechange = function()\n";
javaScript += "            {\n";
javaScript += "                if (this.readyState == 4) {\n";
javaScript += "                    if (this.status == 200) {\n";
javaScript += "                        if (this.responseXML != null) {\n";
javaScript += "                            document.getElementById(\"input3\").innerHTML =\n";
javaScript += "                                this.responseXML.getElementsByTagName('analog')[0].childNodes[0].nodeValue;\n";
javaScript += "                            data_val  = this.responseXML.getElementsByTagName('analog')[0].childNodes[0].nodeValue;\n";
javaScript += "                        }\n";
javaScript += "                    }\n";
javaScript += "                }\n";
javaScript += "            }\n";
javaScript += "            request.open(\"GET\", \"ajax_inputs\" + nocache, true);\n";
javaScript += "            request.send(null);\n";
javaScript += "            setTimeout('GetArduinoInputs()', 200);\n";
javaScript += "        }\n";
javaScript += "    </script>\n";
}

void buildXML(){
  XML="<?xml version='1.0'?>";
  XML+="<analog>";
  XML+=data;
  XML+="</analog>";
}

void handleWebsite(){
  buildWebsite();
  server.send(200,"text/html",webSite);
}

void handleXML(){
  buildXML();
  server.send(200,"text/xml",XML);
}

void setup() {

  Serial.begin(115200);  
  WiFi.begin(ssid,password);
  while(WiFi.status()!=WL_CONNECTED)delay(500);
  WiFi.mode(WIFI_STA);
  Serial.println("\n\nBOOTING ESP8266 ...");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("Station IP address: ");
  Serial.println(WiFi.localIP());
  server.on("/",handleWebsite);
  server.on("/xml",handleXML);
  
  server.begin();  
}

void loop() {
// vložte zde svůj hlavní kód a spusťte opakovaně:

  data=  analogRead (0);
    Serial.println(data);
  Serial.println(WiFi.localIP());
    server.handleClient();
} 
A taky to nefunguje a nevim proč :cry:
Stránka na IP adrese se nezobrazí jen toto nebo nějaká takováto obdoba
11.png
ale pokud dam zobrazit zdrojový kod stránky zobrazí se toto
12.png
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: WeMos D1 WIFI WebServer

Příspěvek od rottenkiwi »

Takto to nepojde, lebo v tom reťazxi v eval ( ..... je množstvo // a " a ' a tie sa musia do reťazca
zadávať cez dve lomítka, som to síce skúšal v editore, ale nedopadlo to dobre.

Tak som urobil len tie googlacke budíky.

Keď mi príde Wemos, skúsim nad tým podumať, ale to skoro nebude.

Nedajú sa len tak kombinovať rozne knižnice, lebo potom to koliduje.
To sa týka toho prístupu na SD. Včera som o tom čítal, ale nemám to ako vyskúšať.

Keď bude Wemos a nové okuliare na čítanie, až potom.
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
petrzobran
Příspěvky: 145
Registrován: sob pro 07, 2013 5:41 pm
Reputace: 10
Bydliště: 8 KM východně od Brna

Re: WeMos D1 WIFI WebServer

Příspěvek od petrzobran »

Googlacky budíky jsem zavrhl, protože mě naladí s těmito budíky které mam už ve FVE.
Už jsem o tom / a " a ' někde slyšel, ale už si t nepamatuju. Dik že jsi mi to připoměl.
Budu dál pokračovat tímto směrěm.Snad se z toho nezblázním :lol:
Uživatelský avatar
petrzobran
Příspěvky: 145
Registrován: sob pro 07, 2013 5:41 pm
Reputace: 10
Bydliště: 8 KM východně od Brna

Re: WeMos D1 WIFI WebServer

Příspěvek od petrzobran »

V čem ty překládáš HTML do webSite += " "; nebo myHTML +=" "
ja to někde přeložila
Originál je:......................<body onload="GetArduinoInputs()">
Přeloženo je: webSite += " <body onload=\"GetArduinoInputs()\">;
Ty \n na konci řádku jsem musel všude dopsat.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: WeMos D1 WIFI WebServer

Příspěvek od rottenkiwi »

Tu tie štvrté chýbajú, tam musia byť bez lomítka.
Ja to dnes nedám, lebo fakt na to nevidím.
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
petrzobran
Příspěvky: 145
Registrován: sob pro 07, 2013 5:41 pm
Reputace: 10
Bydliště: 8 KM východně od Brna

Re: WeMos D1 WIFI WebServer

Příspěvek od petrzobran »

blbě jsem to zkopiroval
webSite += " <body onload=\"GetArduinoInputs()\">\n";
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: WeMos D1 WIFI WebServer

Příspěvek od rottenkiwi »

MOžno by bolo vhodné upraviť tento projekt.
https://forum.mypower.cz/viewtopic.php?f=61&t=4403

Lebo s tými \\ \" \' bude kopa roboty.
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
petrzobran
Příspěvky: 145
Registrován: sob pro 07, 2013 5:41 pm
Reputace: 10
Bydliště: 8 KM východně od Brna

Re: WeMos D1 WIFI WebServer

Příspěvek od petrzobran »

Všiml jsem si témy WeMos D1 - FSBrowser example
I FSBrowser jsem upravoval budíky baly vidět, ale neukazovaly
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: WeMos D1 WIFI WebServer

Příspěvek od rottenkiwi »

A komunikácia vyzerá ako ? Posiela Wemos odpoved ?
Přílohy
komunikacia.png
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
petrzobran
Příspěvky: 145
Registrován: sob pro 07, 2013 5:41 pm
Reputace: 10
Bydliště: 8 KM východně od Brna

Re: WeMos D1 WIFI WebServer

Příspěvek od petrzobran »

11.png
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: WeMos D1 WIFI WebServer

Příspěvek od rottenkiwi »

Pošli mi ten HTML kód do PM, ja sa pokúsim tam nájsť chyby.
Len ho premenuj na .txt, lebo inak ho nepošleš, alebo ho zipni.
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
petrzobran
Příspěvky: 145
Registrován: sob pro 07, 2013 5:41 pm
Reputace: 10
Bydliště: 8 KM východně od Brna

Re: WeMos D1 WIFI WebServer

Příspěvek od petrzobran »

rottenkiwi píše:Celý deň na troch kompoch s roznymi OS a roznymi verziami Arduino IDE, nemožem
dostať program do Wemos-u D1. Stále tá istá chyba. espcomm_open failed
Mam podobnej problem, kterej mě už dlouho pije krev. Wemos se odpojí, port zmizne. Restartuju MTB a chvíli to zas funguje.
11.png

Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek