Fórum | MyPower.CZ | Obnovitelné zdroje energie - energetická soběstačnost | Právě je ned zář 23, 2018 1:20 am


WeMos D1 WIFI WebServer

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Další

WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » ned črc 08, 2018 11:54 am

Zaujímavá vecička ten WeMos. Dá sa to napr. využiť na WiFi meranie teploty pomocou
Dallas senzoru.
Kód: Vybrat vše
#include <OneWire.h>
#include <DallasTemperature.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
 
const char* ssid = "guest";
const char* password = "0000";
 
OneWire oneWire(D8);
DallasTemperature sensor(&oneWire);
String myHTML = "";
ESP8266WebServer server(80);
 
 
const int led = BUILTIN_LED;
float teplota;
 

 
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="";
myHTML+="<html>";
myHTML += "  <head> ";
myHTML += "<script type=\"text/javascript\" src=\"https://www.gstatic.com/charts/loader.js\"></script>";
myHTML += "   <script type=\"text/javascript\">";
myHTML += "      google.charts.load('current', {'packages':['gauge']});";
myHTML += "      google.charts.setOnLoadCallback(drawChart);";
myHTML += "      function drawChart() {";
myHTML += "";
myHTML += "        var data = google.visualization.arrayToDataTable([";
myHTML += "          ['Label', 'Value'],";
myHTML += "          ['Teplota', @id_1@]";
myHTML += "        ";
myHTML += "        ]);";
myHTML += "";
myHTML += "        var options = {";
myHTML += "          width: 120, height: 120,";
myHTML += "          redFrom: 90, redTo: 100,";
myHTML += "          yellowFrom:75, yellowTo: 90,";
myHTML += "          minorTicks: 5";
myHTML += "        };";
myHTML += "";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div'));";
myHTML += "";
myHTML += "        chart.draw(data, options);      ";
myHTML += "        ";
myHTML += "      }";
myHTML += "    </script>";
myHTML += "  </head>";
myHTML += "  <body>";
myHTML += "    <div id=\"chart_div\" style=\"width: 120px; height: 120px;\"></div>";
myHTML += "  </body>";
myHTML += "</html>";
int sensor_value = analogRead(0);
sensor.requestTemperatures();
myHTML.replace("@id_1@", 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(led, OUTPUT);
  digitalWrite(led, 0);
  Serial.begin(115200);
  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("/", handleRoot);
  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();
}

Přílohy
WeMos_D1_Temp_Gauge.jpg
WeMos_D1.jpg
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod kodl69 » ned črc 08, 2018 1:03 pm

jo, je to esp8266 na desce imitující arduino.
tady mám třeba "bazéntermostat" což je použitelný i pro fototermiku:
bazentermostat.png
bazentermostat.png (7.08 KiB) Zobrazeno 850 krát

bazetermsch.png

a rozhraní vypadá nějak takhle,
http://www.internetove-sluzby.cz/bazen/?w=0 - to jsou samozřejmě "fake data" , ty okýnka mění barvu podle teploty, a po kliknutá na střed vrtule, co signalizuje funkci čerpadla, je možný nastavit dobu běhu čerpadla. jako bonus mám i odesílání dat na thingspeak, inspirace zde:
http://www.xpablo.cz/?p=941#comment-2413
ten wificonfig je "k nezaplacení" - po nějaké upravě v domácí síti není potřeba nic přeprogramovávat, nastaví se to přes web rozhraní.
ostrov 3000Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2651
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 180

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » úte črc 10, 2018 4:35 pm

Už sa mi to rozbehlo. Len ma zaujíma ako pripevniť Dallas DS1820 na panely
a ako ju presne nakalibrovať.
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod youda » úte črc 10, 2018 4:40 pm

rottenkiwi píše:Už sa mi to rozbehlo. Len ma zaujíma ako pripevniť Dallas DS1820 na panely
a ako ju presne nakalibrovať.


Co třeba přilepit to tavným lepidlem?
Měl jsem 3xDS1820 k jednomu arduinu současně a rozcházely se mi jen +- 1°C
Youdova ostrovní laboratoř 20kWp: http://youda.mypower.cz
Uživatelský avatar
youda
 
Příspěvky: 589
Registrován: úte dub 26, 2016 11:12 pm
Reputation: 106

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » úte črc 10, 2018 6:48 pm

Od 20 do 44 *C mi to ukazuje OK,
ale ak je teplota nad 44 *C, tak mi to vypíše 127.7 .
Tak kde je chyba ?
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod youda » úte črc 10, 2018 8:17 pm

A není možný, že došlo jen k pomíchání datových typů?
127.7 vypadá jako by se špatně přenášela hodnota mezi signed a unsigned.
Youdova ostrovní laboratoř 20kWp: http://youda.mypower.cz
Uživatelský avatar
youda
 
Příspěvky: 589
Registrován: úte dub 26, 2016 11:12 pm
Reputation: 106

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » úte črc 10, 2018 9:19 pm

Problém bol odpor, mal som tam 5k a má byť 4k7. Teraz to už merá OK.
Idem skúsiť kalibráciu podľa tohto:
https://thecavepearlproject.org/2015/03 ... libration/
Zatiaľ to funguje ako vonkajší WiFi teplomer napájaný z DIY banku z vyradených 18650.

Zajtra to skúsim dať na panely, nejakou teplovodivou pastou a integrovať to do mojho online monit.
Přílohy
gauge_1_2_II.jpg
gauge_1_2_I.jpg
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod kodl69 » stř črc 11, 2018 12:05 am

S DS18B20 jsem něco užil, co vím jistě, tak hodnota odporu nehraje moc velkou roli. -85°C a 127 jsou ve farnheitech v hex nějaký chybový stavy, jeden tuším přerušení napájení během konverze a druhej si hned nevzpomenu, ale řeší to kde kdo: https://forum.arduino.cc/index.php?topic=271388.0
Určitě vím, že na 3.3V funguje spolehlivě třídrát zapojení a odpor jsem dával 3k3 v některejch kusech snad i 2k7.
Jedna z chyb vzniktne tím, že se zadá požadavek na teplotu a nepočká se těch 0.6s , než je hodnota připravená k načtení, čas se mění podle tozlišení měření.
Chyba 85°C je tuším při dvoudrát zapojení, když nejsou spojený piny GND a VCC - podle datasheetu první naměřená hodnota po resetu napájení.
Kdysi jsem to lamersky řešil tak, že když přijde jedna z těchhle hodnot, tak to ignoruju a změřím znovu, a furt dokola, dokud se neprobudí k životu.

Jinak DS18B20 se nekalibruje, pokud se nastaví nejvyšší rozlišení, a čidla jsou zaručeně na stejné teplotě (třeba v promíchávané sklenici s vodou) tak rozdíl mezi čidly 0.1°C je fakt hodně. A absolutní přesnost se snadno porovná třeba proti teploměru na člověka, kterej by měl chodit +- 0.2°C, jinak je k ničemu.
ostrov 3000Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2651
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 180

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » stř črc 11, 2018 7:37 am

Keď tam nie je 4k7, tak to dojde k 44 *C a potom koniec merania, už len ukazuje 127.7,
ak je teplota vyššia ako 44 *C.

Teraz so správnym odporom som to otestoval od +2 do +50 a vždy načítalo teplotu OK.
Používam podľa datasheetu 130 a 800 ms.

Ja to skor plánujem na ten BMS, už mi došli ATtiny85, čakám na optočleny
a referencie, lebo referencia u nás v obchode stojí 2.5 € a dallas som kupoval za 4.9 €.

Lenže vobec to nechytalo signál, hoci to je 5 m od routera, tak som tam dal parabolu
a už je to OK. Panely majú cca. 40 *C, uvidíme kde sa to dostane na poludnie.
Přílohy
gauge_temp.jpg
gauge_1_2_parabola.jpg
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod kodl69 » stř črc 11, 2018 8:45 am

kolik bitů máš nastavený rozlišení? Na tohle stačí to nejnižší, pak i ta konverze proběhne rychlej. Zapojení dvoudrát nebo třídrát?
ostrov 3000Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2651
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 180

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » stř črc 11, 2018 9:07 am

Kód: Vybrat vše
   int16_t raw = (data[1] << 8) | data[0];
      if (type_s) {
        raw = raw << 3; // 9 bit resolution default
        if (data[7] == 0x10) {
        // "count remain" gives full 12 bit resolution
          raw = (raw & 0xFFF0) + 12 - data[6];
        }
      } else {
        byte cfg = (data[4] & 0x60);
        // at lower res, the low bits are undefined, so let's zero them
        if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
        else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
        else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
        //// default is 12 bit resolution, 750 ms conversion time
      }


Vyčítavam to týmto kódom. Pripojené je to cez 3 droty, ale dva sú na Arduine napojené na GND
a dátový je na pin a z pinu pull-up 4k7 na 5 V, lebo na 3.3 V to nešlo vobec.
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod youda » stř črc 11, 2018 9:18 am

Těch +5V potvrzuji. Taky jsem zkoušel DS1820 napájet přes 3.3V a nešlo mi to.

Zapojení mi vždycky chodilo 3 drát, dokonce přesně jak je tady na obrázku: jeden společný pull-up odpor 4k7 a k tomu 3 senzory. Tohle má Dallas krásně vymyšlené, že každý ten senzor má svou vlastní hex adresu a může se jich tak paralelně zapojit celá kopa, aniž by člověk plýtval piny :)

DS1820 bus.jpg
Youdova ostrovní laboratoř 20kWp: http://youda.mypower.cz
Uživatelský avatar
youda
 
Příspěvky: 589
Registrován: úte dub 26, 2016 11:12 pm
Reputation: 106

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » stř črc 11, 2018 9:39 am

To isté zapojenie, ten istý program, a jeden senzor ukazuje OK a druhý nie. :)
Keď teplota panelov=senzoru presiahne 44 *C, prestane ukazovať OK a vypisuje 127.7.
Přílohy
gauge_temp_127.jpg
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod youda » stř črc 11, 2018 10:02 am

Rottenkiwi,
No jak se to při vyšší teplotě chová v 3-drátovém zapojení?
Youdova ostrovní laboratoř 20kWp: http://youda.mypower.cz
Uživatelský avatar
youda
 
Příspěvky: 589
Registrován: úte dub 26, 2016 11:12 pm
Reputation: 106

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » stř črc 11, 2018 10:10 am

Už som na to prišiel :) Buď ja alebo mačky prehrýzli jeden drot :)
Idem ho vymeniť a dúfam, že už to pojde OK :)
Tak už je to ako mám byť. Teším sa, že už vidím aj teplotu dvoch panelov z 12
a mohol by som zaˇčať robiť ich chladenie.

Lenže stále nemožem rozchodiť nahrávanie programu do Wemosu cez WiFI. ???
Přílohy
gauge_all_OK.png
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod petrzobran » stř črc 11, 2018 4:41 pm

Nic si z toho nedělej, ja mam 2x WeMos a ani na jednommi nahravani přes WiFi nejde.
Ale dřív mě to šlo, asi před rokem, dělal řízení a sledování rekuperace, párkrát jsem to po WiFi nahrál.
Uživatelský avatar
petrzobran
 
Příspěvky: 117
Registrován: sob pro 07, 2013 5:41 pm
Bydliště: 8 KM východně od Brna
Reputation: 4

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » čtv črc 26, 2018 1:53 pm

Doteraz som mal |Wemos napájaný z powerbanku. Ale moj powerbank sa nabíja
2 dni, tak som to vyriešil DC-DC step-down meničom 35 na 5 V.

Ako sa to bude správať v zime ? Zrazí to napatie panelov ráno o pár V ?
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » sob srp 18, 2018 8:18 pm

Kód: Vybrat vše
kiwi@kiwi-P55A-UD5:~$ dmesg | grep usb
[    0.129399] usbcore: registered new interface driver usbfs
[    0.129399] usbcore: registered new interface driver hub
[    0.129399] usbcore: registered new device driver usb
[    0.920226] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    0.920227] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.920229] usb usb1: Product: EHCI Host Controller
[    0.920230] usb usb1: Manufacturer: Linux 4.15.0-32-generic ehci_hcd
[    0.920231] usb usb1: SerialNumber: 0000:00:1a.0
[    0.940250] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[    0.940254] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.940257] usb usb2: Product: EHCI Host Controller
[    0.940259] usb usb2: Manufacturer: Linux 4.15.0-32-generic ehci_hcd
[    0.940262] usb usb2: SerialNumber: 0000:00:1d.0
[    0.941094] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
[    0.941095] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.941096] usb usb3: Product: xHCI Host Controller
[    0.941097] usb usb3: Manufacturer: Linux 4.15.0-32-generic xhci-hcd
[    0.941098] usb usb3: SerialNumber: 0000:05:00.0
[    0.944209] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[    0.944220] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003
[    0.944222] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.944223] usb usb4: Product: xHCI Host Controller
[    0.944224] usb usb4: Manufacturer: Linux 4.15.0-32-generic xhci-hcd
[    0.944224] usb usb4: SerialNumber: 0000:05:00.0
[    1.260015] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    1.280190] usb 2-1: new high-speed USB device number 2 using ehci-pci
[    1.416453] usb 1-1: New USB device found, idVendor=8087, idProduct=0020
[    1.416455] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    1.448787] usb 2-1: New USB device found, idVendor=8087, idProduct=0020
[    1.448789] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    1.708045] usb 1-1.4: new low-speed USB device number 3 using ehci-pci
[    1.736075] usb 2-1.1: new low-speed USB device number 3 using ehci-pci
[    1.824580] usb 1-1.4: New USB device found, idVendor=258a, idProduct=0001
[    1.824581] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.824582] usb 1-1.4: Product: USB KEYBOARD
[    1.824583] usb 1-1.4: Manufacturer: SINO WEALTH
[    1.839491] usbcore: registered new interface driver usbhid
[    1.839492] usbhid: USB HID core driver
[    1.840865] input: SINO WEALTH USB KEYBOARD as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/0003:258A:0001.0001/input/input3
[    1.853554] usb 2-1.1: New USB device found, idVendor=1a81, idProduct=1705
[    1.853556] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.853557] usb 2-1.1: Product: Wireless Mouse
[    1.853558] usb 2-1.1: Manufacturer: KYE
[    1.862112] input: KYE Wireless Mouse as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/0003:1A81:1705.0003/input/input4
[    1.900135] hid-generic 0003:258A:0001.0001: input,hidraw0: USB HID v1.10 Keyboard [SINO WEALTH USB KEYBOARD] on usb-0000:00:1a.0-1.4/input0
[    1.900273] input: SINO WEALTH USB KEYBOARD as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.1/0003:258A:0001.0002/input/input5
[    1.960304] hid-generic 0003:1A81:1705.0003: input,hiddev0,hidraw1: USB HID v1.11 Mouse [KYE Wireless Mouse] on usb-0000:00:1d.0-1.1/input0
[    2.020159] hid-generic 0003:258A:0001.0002: input,hiddev1,hidraw2: USB HID v1.10 Device [SINO WEALTH USB KEYBOARD] on usb-0000:00:1a.0-1.4/input1
[    4.610355] audit: type=1400 audit(1534616802.839:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/ippusbxd" pid=788 comm="apparmor_parser"
kiwi@kiwi-P55A-UD5:~$ lsusb
Bus 002 Device 003: ID 1a81:1705 Holtek Semiconductor, Inc.
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 258a:0001 
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
kiwi@kiwi-P55A-UD5:~$ lsusb
Bus 002 Device 004: ID 258a:0001 
Bus 002 Device 003: ID 1a81:1705 Holtek Semiconductor, Inc.
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
kiwi@kiwi-P55A-UD5:~$ dmesg | grep ttyS
[    0.897092] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
kiwi@kiwi-P55A-UD5:~$ dmesg | grep ttyS0
[    0.897092] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
kiwi@kiwi-P55A-UD5:~$ dmesg | grep ttyS1
kiwi@kiwi-P55A-UD5:~$ dmesg | grep ttyS2
kiwi@kiwi-P55A-UD5:~$ dmesg | grep ttyS3
kiwi@kiwi-P55A-UD5:~$ dmesg | grep ttyS

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
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » ned srp 19, 2018 4:45 pm

Tak včera mi to nešlo kvoli káblu. Tu je vyčítanie z dvoch ds18b20 a zobrazenie cez Wemos D1,
ale určite to pojde na hocijakom ESP8266. Keďže je to cez AJAX, tak možete si tam nastaviť
obnovu napr. 500 alebo 2000 ms, resp. poslať aj iné dáta okrem teploty.

Kód: Vybrat vše
#include <OneWire.h>
#include <ESP8266WiFi.h>
//#include <DallasTemperature.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char* ssid = "guest";
const char* password = "00000000";
 
OneWire ds (D8);
OneWire ds_2 (D6);
//DallasTemperature sensor(&oneWire);

String myHTML = "";
String XML;
ESP8266WebServer server(80);
 
 
const int led = BUILTIN_LED;
float teplota;
 

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);
}

float Get_temp_0 ()
{

    float celsius = 25.2;
      return celsius;
}


float Get_temp_1 ()
{
    byte i;
    byte present = 0;
    byte type_s;
    byte data[12];
    byte addr[8];
   
    float celsius;
    if ( !ds.search(addr)) {
        Serial.println("No more addresses.");
        Serial.println();
        ds.reset_search();
        delay(130);
     
        return -33.3;
      }
      Serial.print("ROM =");
      for( i = 0; i < 8; i++) {
        Serial.write(' ');
        Serial.print(addr[i], HEX);
      }

      if (OneWire::crc8(addr, 7) != addr[7]) {
          Serial.println("CRC is not valid!");
          return -33.2;
      }
      Serial.println();
 
    // the first ROM byte indicates which chip
      switch (addr[0]) {
        case 0x10:
          Serial.println("  Chip = DS18S20");  // or old DS1820
          type_s = 1;
          break;
        case 0x28:
          Serial.println("  Chip = DS18B20");
          type_s = 0;
          break;
        case 0x22:
          Serial.println("  Chip = DS1822");
          type_s = 0;
          break;
        default:
          Serial.println("Device is not a DS18x20 family device.");
          return -33.1;
      };

      ds.reset();
      ds.select(addr);
      ds.write(0x44, 1);        // start conversion, with parasite power on at the end
 
      // wait to see if a reply is available
      delay(790);
    // maybe 750ms is enough, maybe not
    // we might do a ds.depower() here, but the reset will take care of it.
 
      present = ds.reset();
      ds.select(addr);   
      ds.write(0xBE);         // Read Scratchpad
 
      Serial.print("  Data = ");
      Serial.print(present, HEX);
      Serial.print(" ");
      for ( i = 0; i < 9; i++) {           // we need 9 bytes
        data[i] = ds.read();
        Serial.print(data[i], HEX);
        Serial.print(" ");
      }
      Serial.print(" CRC=");
      Serial.print(OneWire::crc8(data, 8), HEX);
      Serial.println();

    // Convert the data to actual temperature
    // because the result is a 16 bit signed integer, it should
    // be stored to an "int16_t" type, which is always 16 bits
    // even when compiled on a 32 bit processor.
      int16_t raw = (data[1] << 8) | data[0];
      if (type_s) {
        raw = raw << 3; // 9 bit resolution default
        if (data[7] == 0x10) {
        // "count remain" gives full 12 bit resolution
          raw = (raw & 0xFFF0) + 12 - data[6];
        }
      } else {
        byte cfg = (data[4] & 0x60);
        // at lower res, the low bits are undefined, so let's zero them
        if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
        else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
        else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
        //// default is 12 bit resolution, 750 ms conversion time
      }
      celsius = (float)(raw / 16.0);
     
/*   
    Serial.print("  Temperature = ");
    Serial.print(celsius);
    Serial.print(" Celsius, ");
    Serial.print(fahrenheit);
    Serial.println(" Fahrenheit");
*/
     
      return celsius;
}

float Get_temp_2 ()
{
    byte i;
    byte present = 0;
    byte type_s;
    byte data[12];
    byte addr[8];
   
    float celsius;
    if ( !ds_2.search(addr)) {
        Serial.println("No more addresses.");
        Serial.println();
        ds_2.reset_search();
        delay(130);
     
        return -33.3;
      }
      Serial.print("ROM =");
      for( i = 0; i < 8; i++) {
        Serial.write(' ');
        Serial.print(addr[i], HEX);
      }

      if (OneWire::crc8(addr, 7) != addr[7]) {
          Serial.println("CRC is not valid!");
          return -33.2;
      }
      Serial.println();
 
    // the first ROM byte indicates which chip
      switch (addr[0]) {
        case 0x10:
          Serial.println("  Chip = DS18S20");  // or old DS1820
          type_s = 1;
          break;
        case 0x28:
          Serial.println("  Chip = DS18B20");
          type_s = 0;
          break;
        case 0x22:
          Serial.println("  Chip = DS1822");
          type_s = 0;
          break;
        default:
          Serial.println("Device is not a DS18x20 family device.");
          return -33.1;
      };

      ds_2.reset();
      ds_2.select(addr);
      ds_2.write(0x44, 1);        // start conversion, with parasite power on at the end
 
      // wait to see if a reply is available
      delay(760);
    // maybe 750ms is enough, maybe not
    // we might do a ds.depower() here, but the reset will take care of it.
 
      present = ds_2.reset();
      ds_2.select(addr);   
      ds_2.write(0xBE);         // Read Scratchpad
 
      Serial.print("  Data = ");
      Serial.print(present, HEX);
      Serial.print(" ");
      for ( i = 0; i < 9; i++) {           // we need 9 bytes
        data[i] = ds_2.read();
        Serial.print(data[i], HEX);
        Serial.print(" ");
      }
      Serial.print(" CRC=");
      Serial.print(OneWire::crc8(data, 8), HEX);
      Serial.println();

    // Convert the data to actual temperature
    // because the result is a 16 bit signed integer, it should
    // be stored to an "int16_t" type, which is always 16 bits
    // even when compiled on a 32 bit processor.
      int16_t raw = (data[1] << 8) | data[0];
      if (type_s) {
        raw = raw << 3; // 9 bit resolution default
        if (data[7] == 0x10) {
        // "count remain" gives full 12 bit resolution
          raw = (raw & 0xFFF0) + 12 - data[6];
        }
      } else {
        byte cfg = (data[4] & 0x60);
        // at lower res, the low bits are undefined, so let's zero them
        if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
        else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
        else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
        //// default is 12 bit resolution, 750 ms conversion time
      }
      celsius = (float)(raw / 16.0);
     
/*   
    Serial.print("  Temperature = ");
    Serial.print(celsius);
    Serial.print(" Celsius, ");
    Serial.print(fahrenheit);
    Serial.println(" Fahrenheit");
*/
     
      return celsius;
}



void generateHTML(){
myHTML="<!DOCTYPE HTML>\n";
myHTML +="<html>\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 += "      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 += "          ['Teplota', temp_1]\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: 40, greenTo: 50,\n";
myHTML += "          minorTicks: 5\n";
myHTML += "        };\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_1'));\n";
myHTML += "         chart.draw ( data1, options1 );\n";
myHTML += "         setInterval ( function () {\n";
myHTML += "         Act_1 ();\n";
myHTML += "         data1.setValue ( 0, 1, temp_1 );\n";
myHTML += "         chart.draw ( data1, options1 );\n";
myHTML += "         } ,2000 );\n";
myHTML += "      }\n";
myHTML += "      google.charts.setOnLoadCallback(drawChart_2);\n";
myHTML += "      function drawChart_2() {\n";
myHTML += "        nocache = \"&nocache=\" + Math.random() * 1000000;\n";
myHTML += "        var data2 = google.visualization.arrayToDataTable([\n";
myHTML += "          ['Label', 'Value'],\n";
myHTML += "          ['Teplota', temp_2]\n";
myHTML += "        \n";
myHTML += "        ]);\n";
myHTML += "        var options2 = {\n";
myHTML += "          width: 400, height: 400,\n";
myHTML += "          greenFrom: 20, greenTo: 25,\n";
myHTML += "          redFrom: 90, redTo: 100,\n";
myHTML += "          yellowFrom:75, yellowTo: 90,\n";
myHTML += "          minorTicks: 5\n";
myHTML += "        };\n";
myHTML += "        var chart = new google.visualization.Gauge(document.getElementById('chart_div_2'));\n";
myHTML += "         chart.draw ( data2, options2 );\n";
myHTML += "         setInterval ( function () {\n";
myHTML += "         Act_2 ();\n";
myHTML += "         data2.setValue ( 0, 1, temp_2 );\n";
myHTML += "         chart.draw ( data2, options2 );\n";
myHTML += "         } ,2000 );\n";
myHTML += "      }\n";
myHTML += "       function Act_1() {\n";
myHTML += "       var xmlhttp = new XMLHttpRequest();\n";
myHTML += "           xmlhttp.onreadystatechange = function() {\n";
myHTML += "             if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {\n";
myHTML += "               temp_1 = xmlhttp.responseXML.getElementsByTagName('response')[0].childNodes[0].nodeValue;\n";
myHTML += "             }\n";
myHTML += "           }\n";
myHTML += "           xmlhttp.open(\"GET\", \"/act1\", true);\n";
myHTML += "           xmlhttp.send(null);\n";
myHTML += "       }\n";
myHTML += "       function Act_2() {\n";
myHTML += "       var xmlhttp = new XMLHttpRequest();\n";
myHTML += "           xmlhttp.onreadystatechange = function() {\n";
myHTML += "             if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {\n";
myHTML += "               temp_2 = xmlhttp.responseXML.getElementsByTagName('response')[0].childNodes[0].nodeValue;\n";
myHTML += "             }\n";
myHTML += "           }\n";
myHTML += "           xmlhttp.open(\"GET\", \"/act2\", 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;\"></div>\n";
myHTML += "    <div id=\"chart_div_2\" style=\"width: 400px; height: 400px;\"></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(){
  XML="<?xml version=\"1.0\"?>\n";
  XML+="<response>";
  XML+= String(Get_temp_1 (),1);
  XML+="</response>\n";
}


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


void handleAct1 (){
   buildXML_1();
  server.send(200,"text/xml",XML);
  //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);
  //server.send(200, "text/plain", String(Get_temp_2 (),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);
}

/*
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(led, OUTPUT);
  digitalWrite(led, 0);
  Serial.begin(115200);
  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("/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();
}
 
Přílohy
wemos_d1_dallas.png
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: WeMos D1 WIFI WebServer

Příspěvekod rottenkiwi » pát srp 31, 2018 5:15 pm

Doplnil som do Wemos-u meranie napatia bateriek 18650, aby som ich vedel dobiť.
Lenže potreboval by som ešte merať napatie panelov, ale to má len jeden A0 pin.
Ako to multiplexovať ?
Přílohy
wemos_temp_voltage.png
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1717
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Další

Zpět na Arduino

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků

cron
Reputation System ©'