ESP8266 pro začátečníka – jednoduchý server s čidlem DHT11/22

DHTSSDostal jsem mailem dotaz, zda nemám nějaký příklad pro začátečníka na Arduino ESP8266, který by obsahoval obsluhu webového serveru a čtení čidla relativní vlhkosti a teploty DHT11/22. Odpověděl jsem mu, že si myslím, že by neměl být problém něco vzorového “spíchnout”, ale teprve při psaní jsem si uvědomil, že to není jen tak. Napsat ošetření serveru opravdu je jednoduché, vyčítání hodnot také není problém. Potíž ovšem nastává v okamžiku, kdy je třeba tohle všechno nějak seskládat tak, aby to bylo snadno konfigurovatelné, snadno aktualizovatelné, zobrazení hodnot vypadalo aspoň trošku slušně a přitom načítání stránky netrvalo věčnost.

Klíčem k dosažení tohoto cíle bylo sehnat vhodný hardware, na kterém bych mohl začít. Protože jsem doma měl destičku Wemos D1 mini s DHT shieldem a nechtěl jsem zbytečně trávit čas nad zapojováním breadboardu, byla volba jasná.

IMG_9781_web_cropIMG_9780_web_crop

Další moje úvahy směřovaly ke snadné konfigurovatelnosti – takže jsem použil moji knihovnu WiFiConfig, snadné aktualizaci firmware – pomocí ArduinoOTA. Na čem jsem se ale zarazil bylo to hezké zobrazení a rychlé načítání stránky. Naštěstí jsem našel na internetu zmínku o SVG (Scalable Vector Graphic), což je textový popis grafiky v syntaxi XML (http://www.w3schools.com/svg/svg_inhtml.asp), který umí vykreslit všechny moderní prohlížeče. Výhodou je, že popis jednoduchých grafických prvků není příliš velký (rychlost načítání) a může být přímo vložený do HTML kódu (vystačíme si s jedním requestem na stránku). Po chvíli hledání jsem objevil projekt, jehož webovou aplikaci jsem “přiohnul” k požadovanému stavu. No buďme upřímní – v podstatě jsem jen trošku jinak poskládal už hotové prvky (za což původnímu autorovi děkuji), převedl je do PROGMEM, abych nemusel používat souborový systém a celý příklad byl snadnější ke studiu a nakonec jsem pouze napsal generování JSON výsledku měření. Pro jednoduchou diagnostiku a snadnější pochopení je skript doplněný ladícími výpisy na sériový port.

Takže použité moduly jsou:

  • WiFiConfig – stará se o připojení k WiFi síti, vytváří v případě potřeby konfigurační www server a ukládá/načítá konfiguraci WiFi do (simulované) EEPROM
  • espnbns – slouží pro snadnou lokalizaci zařízení v síti Windows a v kombinaci s ArduinoOTA pak umožňuje lokalizovat modul pomocí např. http://<jméno modulu> (síť Windows), nebo http://<jméno modulu>.local (sítě Linux/Mac)
  • interval – časuje přístupy na čidlo DHT, protože rychlost dotazování může být max. jednou za cca 2 sekundy

Mimoto jsou použity Adafruit knihovny pro obsluhu DHT a standardní Arduino ESP8266 knihovny pro OTA a komunikaci. Všechny použité knihovny mimo standardních jsou přímo obsaženy v adresářové struktuře projektu.

Finální testování probíhalo pomocí USB Powerbanky, protože jsem také chtěl ověřit spolehlivost běhu (zatím běží cca 5 hodin v kuse…)

IMG_9783_web

A na závěr, před odkazem ke stažení, jako obvykle použitá konfigurace:

OS Windows 7 x64 Professional SP1

Arduino IDE 1.6.9 (Portable konfigurace)

ESP8266 Core v 2.3.0-rc1

Odkaz do obchodu pro zakoupení modulu Wemos D1

Wemos D1 mini V2 4M bytes

No a teď už jen archív ke stažení, získaný funkcí “Archivovat projekt” z IDE

 

 

Dhts-160527a
Dhts-160527a
dhts-160527a.zip
32.9 KiB
1324 Downloads
Details

54 thoughts on “ESP8266 pro začátečníka – jednoduchý server s čidlem DHT11/22”

  1. Dobrý den
    Mám ide 1.6.8 s modulem NodeMCU 1.0 ESP12E a při kompilaci projektu mi to vypisuje tuto chybu:

    C:\Users\uziv\Documents\Arduino\dhts_ESP\dhts_ESP.ino:16:31: fatal error: libraries/DHT/DHT.h: No such file or directory
    #include “libraries/DHT/DHT.h”
    compilation terminated.
    exit status 1
    Error compiling for board NodeMCU 1.0 (ESP-12E Module).

    1. Dobrý den,
      archív obsahuje všechny potřebné knihovny ve správných verzích. Nejdříve ověřte, zda se rozbalily všechny knihovny správně, pokud ano, tak zkuste nainstalovat mnou používanou verzi Arduina ve verzi Portable a do ní odpovídající Core ESP8266. Překlad musí proběhnout správně (ověřeno na dvou strojích s Windows W7 x64Pro a W8.1).

  2. Pěkný, prohlídl jsem si html, je to něco jinýho než holý tagy. Jen nechápu, jak může být DHT11/22 tak populární. Vyzkoušel jsem jich několik a nakonec jsem musel přejít na HTU21. Nestabilita byla nepřijatelná. SVG jsem si zkusil taky, je to jedna z cest, jak udělat přijatelně vypadající a přijatelně rychlý webový rozhraní pro ESP8266. Tys šel cestou moderního designu, já si chtěl připomenout starý dobrý časy. Podívej se na můj barometr.
    Jinak tě chválím za nezištnou popularizaci zajímavé techniky. Sleduji zajímavý efekt. Arduino je tak populární, že se kombinací HW Arduino + ESP8266 řeší věci, na které by ESP8266 stačilo desetkrát samo. A ještě jedna věc je velmi patrná. Arduino zpřístupnilo programování masám, což je dobře, ale podstatná část těchto uživatelů nemá ani elementární znalosti o elektronice a příšerně tápou i na maličkostech.
    Měj se Pavel

    1. Ahoj, díky za pochvalu. Barometr máš moc pěkný, určitě se rychle zobrazí. Stránky krásně spartánské – zjevně čisté HTML. DHT jsem použil, protože to byl požadavek – já osobně preferuju sensirion čidla, ale ta láce 🙁 … A o těch nezkušených bych mohl psát dlouho 🙂 Naštěstí se to většinou nějak podařilo vyřešit.
      Taky se měj
      Pavel

    2. Zdravim mohl by jsi zde zveřejnit tvuj program na ten barometr?
      S temi zacatečníky maš pravdu, taky se k nim řadim, ale jak jinak ziskat zkušenosti a vědomosti když v době meho studia se první mikroprocesory teprve vyvíjely.

          1. Ono je to stejně na jedno brdo… Od Jirky tady mám stále půjčené tuším BMP280, nebo podobné čidlo – mám z toho zkusit udělat další díl “Projekty pro začátečníky”?

  3. Ahoj,
    pokoušel jsem se sestavit si vlastní aplikací s Tvými knihovnami, které vypadají teda parádně :-). Nepodařilo se mi ale rozjet OTA. Zkusil jsem ještě nahrát tento projekt s ESP8266 Core v 2.3.0-rc1 a IDE 1.6.9.
    Při pokusu o upload se v IDE zobrazí ERROR : No respose from device. Zapl jsem si debug a OTA vypise Connect Failed
    ERROR[0]: No Error. ESP mam zapnute v AP modu. Nemůže být v tom problém? Díky 🙂

    1. Ahoj. Někteří lidé uvádějí, že jim OTA v AP režimu nepracuje, ale já tu zkušenost nemám… Mám jeden projekt pouze s AP režimem a OTA normálně pracuje. Zkusím z něj udělat příklad pro testování…
      Ještě jedna věc – vidíš zařízení v sériových portech?

      1. ano, to prave vidim, vidim tam i muj nazev zarizeni, ktery jsem si zadal. Kdyz se pokusim o upload nejaky connect zrejme probehne, protoze se mi pak na seriovku od ESP vypise hlaska, ze nastala chyba. Zkousel jsem core 2.2.0, 2.1.0 a tu posledni 2.3.0 a IDE .7 a .9 na konci Zkousel 2 notebooky s W7 a W10 a chova se to stejne.V tom AP modu mi nefunguje ani mDNS. Resp. jednou se to samo rozjelo, ze jsem i prikazem ping videl nazev zarizeni, ale pak uz nikdy vice . Ale to OTA me v tuto chvili trapi vice 🙂 Po nedeli vyzkousim teda v klasickem client rezimu.

          1. super, dekuji moc!!! Ja to hned v pondeli testnu. Hraji si s ESP a Arduinem vubec teprve chvili. Tvuj konfigurator me opravdu nadchnul 🙂 Zprovoznim si nejaky jiny AP a vyzkousim klient rezim. O tom mDNS si prectu. Ale jak rikam, jednou se to i tak rozjelo, fungoval ping i nazev stranky v mozile. Do prvniho restartu nebo noveho uploadu, to uz nevim.

  4. Dobrý den
    rozhodně přivítám jakýkoliv další projekt pro začátečníky. Čtu zde o problému s AP mě se to rozjelo docela dobře a i fungovalo (než mi odešel stabilizátor na 3,3V 🙁 ) tak že ted čekám na nový modul a uvidím.

  5. Po delší odmlce sleduju dění – je to zrovna něco, co bych rád použil, dělám termostat pro spínání oběh. čerpadla bazénu, čidla DS18B20, I2C displej, relé – tohle všechno mám na ESP funkční, jenom bych rád web rozhraní, a trochu nechápu program – když načítání hodnot z čidla je jenom ve void setup, jak to, že se to obnovuje? Co má za funkci v embHTML h na začátku: PROGMEM = R”=====( ?
    – Pokud do html doplním nějakej vstup, třeba radiobuton, nebo pole formuláře, jak to dostanu do proměnné pouzitelné v IDE? (HTTP GET) – chtěl bych tím zároveň něco ovládat…
    Dík za info.

    1. Takže popořadě:
      1. načítání ve skutečnosti není v setup(), je tam jen definice toho, co má server udělat, když zjistí dotaz na teplotu (server.on() ). To, co je za tím je ekvivalent zápisu metody – konkrétně tohohle:
      void getTemp(void)
      {
      read_sensor();
      char response[50];
      snprintf(response, sizeof(response), "Temperature: %s °C", str_temperature);
      server.send(200, "text/plain", response);
      }
      ...
      server.on("/temp", getTemp);

      Můj názor je, že to je kvůli líným programátorům 🙂
      2. R” slouží (tuším od c++11) pro snadnější definici raw řetězců (string literal) – více třeba zde http://en.cppreference.com/w/cpp/language/string_literal
      3. tlačítko, nebo pole formuláře se přenáší jako parametr GET/POST a hodnota je dostupná pomocí .arg() metod webového serveru – je potřeba nastudovat knihovnu ESP8266WebServer a příklady k ní

      1. tak to první jsem přehlídl…
        Zkouším něco najít k ESP8266webserver library, a krom příkladů, co mám v IDE jsem nic k počtení neobjevil, asi neumím ten gůgl správně nakrmit… Něco s ..arg() jsem našel v příkladu simply authentication, ale to asi nedám. Zkusím zatím aspoň aby to malovalo teploty z čidel a tohle budu řešit až potom. Dík za bleskovou odpověď.

        1. Dokumentace ke knihovnám ve čtecí formě nejspíš nikde nebude, “nastudovat” jsem myslel třeba to, jak to dělám já – procházím zdrojáky příkladů, k tomu si otevřu hlavičkový soubor knihovny a snažím se pochopit, jak pracuje. Popřípadě se pro upřesnění kouknu přímo do zdrojáku knihovny, jestli jsou moje úvahy správné…

  6. POZOR! Jeden ze čtenářů mi hlásil potíže s projektem, které se najednou objevily. Znovu jsem celý projekt prošel a objevil chybu, kdy mi v řádku server.send(200, "text/html", PAGE_INDEX); chybí uvedení FPSTR – správně tedy server.send(200, "text/html", FPSTR(PAGE_INDEX)); . Překladač to sice zvládne přeložit a většinou to funguje, nicméně chyba to je 🙁 Za chybu se omlouvám, archív ke stažení byl opravený…

  7. zdravím
    Pár dni si hraju s deskou wemos D1 mini. Stáhl sem si váš projekt, ale bohužel nejde zkompilovat a vyhazuje mi toto:
    sketch\dhts.ino.cpp.o:(.text._Z11read_sensorv+0x30): undefined reference to Interval::expired()'

    sketch\dhts.ino.cpp.o:(.text._Z11read_sensorv+0x34): undefined reference to Interval::set(unsigned int)’

    sketch\dhts.ino.cpp.o:(.text._Z11read_sensorv+0x38): undefined reference to DHT::readHumidity(bool)'

    sketch\dhts.ino.cpp.o:(.text._Z11read_sensorv+0x3c): undefined reference to DHT::readTemperature(bool, bool)’

    sketch\dhts.ino.cpp.o:(.text._Z11read_sensorv+0x54): undefined reference to Interval::expired()'

    sketch\dhts.ino.cpp.o:(.text._Z11read_sensorv+0x62): undefined reference to Interval::set(unsigned int)’

    sketch\dhts.ino.cpp.o:(.text._Z11read_sensorv+0x6f): undefined reference to DHT::readHumidity(bool)'

    sketch\dhts.ino.cpp.o: In function read_sensor()’:

    E:\arduino-1.6.13\Portable\sketchbook\dhts/dhts.ino:40: undefined reference to DHT::readTemperature(bool, bool)'

    sketch\dhts.ino.cpp.o:(.text.setup+0x44): undefined reference to getOurIP()’

    sketch\dhts.ino.cpp.o:(.text.setup+0x48): undefined reference to DHT::begin()'

    sketch\dhts.ino.cpp.o:(.text.setup+0x8a): undefined reference to getOurIP()’

    sketch\dhts.ino.cpp.o:(.text.setup+0x9d): undefined reference to DHT::begin()'

    sketch\dhts.ino.cpp.o: In function loop’:

    E:\arduino-1.6.13\Portable\sketchbook\dhts/dhts.ino:103: undefined reference to DHT::DHT(unsigned char, unsigned char, unsigned char)'

    sketch\dhts.ino.cpp.o: In function function’:

    e:\arduino-1.6.13\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2/functional:2452: undefined reference to DHT::DHT(unsigned char, unsigned char, unsigned char)'

    sketch\nbnsota.cpp.o:(.irom0.text+0x0): undefined reference to WiFiDeviceName’

    sketch\nbnsota.cpp.o:(.irom0.text+0x8): undefined reference to WiFiConfig::begin(int, unsigned char, void (*)(wificonfigstate_t))'

    sketch\nbnsota.cpp.o:(.irom0.text+0xc): undefined reference to NBNS::begin(char const*)’

    sketch\nbnsota.cpp.o: In function nbnsotasetup(void (*)(wificonfigstate_t))':

    sketch/nbnsota.cpp:19: undefined reference to WiFiConfig::begin(int, unsigned char, void (*)(wificonfigstate_t))’

    sketch/nbnsota.cpp:19: undefined reference to NBNS::begin(char const*)'

    sketch\nbnsota.cpp.o:(.text._Z11nbnsotaloopv+0x8): undefined reference to NBNS::poll()’

    sketch\nbnsota.cpp.o: In function nbnsotaloop()':

    sketch/nbnsota.cpp:33: undefined reference to NBNS::poll()’

    collect2.exe: error: ld returned 1 exit status

    exit status 1
    Nastala chyba při kompilaci u desky WeMos D1 R2 & mini.

    Mohl by jste me prosím nakopnout kde muže být problém?
    knihovny mych měl mít správné, testovací program pro DHT zkompilovat jde

    děkuji

    1. Dobrý den,
      problém bude asi v Arduino preprocesoru, přesneji v jeho autorech. On se totiž chová verze od verze trošku jinak (a Vy používáte jinou verzi IDE), takže přejmenujte adresář libraries na src a opravte odkazy v dhts.ino, nbnsota.h, nbns.cpp. Pak by už mělo být vše ok.

      1. Měl jsem nepořádek v knihovnách IDE, tak jsem ho dočista odinstaloval a nahrál nové. A první jsem chtěl vyzkoušet tvůj příklad. (Poté, co jsem zjistil, že balíček obsahuje opravdu všechny potřebné komponenty.) To mě na Arduinu trochu děsí, když musím laborovat a hledat, jaké knihovny autor měl na mysli. Taky rychlost ladění je v případě Lua nesrovnatelně rychlejší. Poctivě jsem podle návodu instaloval tvoji zazipovanou knihovnu a sputsil kompilaci. Samozřejmě to skončilo chybou, s kterou bych si neporadil. Ale prošel jsem si tuto diskuzi a zjistil, že nejsem první. Stejná chyba je tu už popsána. Bez tvého popisu bych to vzdal, ale jdu zkoušet server, právě mě doběhla kompilace.

      2. Ahoj, chtěl jsem tento projekt použít jako studijní příklad, jsem v Arduino IDE naprostý začátečník, ale se změnami popsanými výše jsem si poradil (přejmenujte adresář libraries na src a opravte odkazy v dhts.ino, nbnsota.h, nbns.cpp).
        Nicméně stále to nelze zkompilovat, skončím s chybou:
        sketch/src/interval/interval.cpp:6:21: fatal error: arduino.h: No such file or directory
        #include

        ^
        compilation terminated.
        exit status 1
        Předpokládám, že se opět jedná o nějakou změnu v chování Arduino IDE, já mám verzi 1.8.2.
        Mohl bych poprosit o kontrolu popřípadě o aktualizaci projektu? Děkuju pěkně předem

          1. A koukám, že to tu žere špičaté závorky i s obsahem… no přišel jsem na to, že musí být #include Arduino.h, byla chybka v malém “a”. A poprosím o konsolidaci postů, ať tu nespamuju 🙂

          1. na Linuxu. Nojo, k programování se vracím po dlouhé době, tak mi to někdy nedochází tak rychle. Ale aspoň je tady na to taky už upozorněno, když je to v tom příkladu na stažení – já vim, je to určitě schválně jako test ostražitosti 🙂
            Každopádně děkuji za články o ESP8266, já se o této prima věcičce dozvěděl teprve nedávno a zaujalo mě to natolik, že jsem oprášil i Raspberry, koupil Wemos D1 mini a pár dalších hračiček a zase si hraju. Jednou z toho bude snad i něco užitečného 🙂

  8. Dobrý den, mám takový blbý dotaz. Pročítal jsem vaše stránky, možná jsem to přehlídl. Nahrál jsem váš fimware, funguje bez problému. Nastavil jsem AP, ale potřebuji změnit nastavení sítě. Jakou adresu má konfigurace?
    Děkuji za vaši odpověd.

    1. Dobrý den,
      pokud je zařízení už asociované, tak se změnit konfigurace bohužel nedá. Můžete ale vyvolat nové nastavení aktivací parametru forceConfigure při volání begin(…) – většinou tento parametr nastavuji dle nějakého uživatelského tlačítka, takže pokud ho držím stisknuté při zapnutí napájení, tak se spustí konfigurace. V ní se pak dá nastavit i statická adresa.

  9. Děkuji za vaši odpověď. Ještě bych měl na vás dotaz. S Wemos D1 pracuji krátce ,jakým způsobem lze vymazat program z paměti. Konkrétně smazat na tovární hodnoty celý chip.
    Děkuji.

    1. Program lze vymazat pouze přehráním jiným programem, nebo pomocí nástroje ESP Flash tool za použití blank_xM.bin (hledejte na internetu). Další možností je pak výmaz pomocí esptool.py (je na Githubu). Pokud máte na mysli výmaz uložených parametrů pro připojení k WiFi, tak stačí použít WiFi.disconnect()

  10. Právě nastala situace, že jsem nahrál jiný program. Ale stále je aktivní wifi síť ESPPBSetup. Takže by to chtělo kompletně smazat. Děkuji za vaši ochotu.

    1. To vypadá na uložené parametry v SDK oblasti (i když zrovna ESPPBSetup se neukládá, protože je WiFi.persistent(false), takže je to přece jen trošku podivné). Zkuste použít WiFi.persistent(true) Wifi.mode(WIFI_STA) a WiFi.disconnect() – tohle by mělo vymazat všechna uložená nastavení…

  11. Dobrý den,
    měl bych dotaz k zobrazované teplotě… ukazuje to bez problému i záporné teploty? – mráz?

    Nahrál jsem program bez změn, ale nejnižší teplotu mi to ukazuje 1.

    Nemáte někdo podobný problém? 🙂

    Děkuji

    1. Dobrý večer,
      program vypisuje měřené hodnoty i na sériový port (rychlost je 9600Bd), takže se zkuste podívat, jestli tam záporná čísla jsou. Pokud tam nebudou (a být by určitě měly), tak může být problém v převodních funkcích dtostrf()…

      1. Dobrý den,
        tak jsem se k tomu dostal a serial port vypisuje toto:

        Program started…
        Our IP: 192.168.1.171
        Humidity: 30.00 % Temperature: 1.00 °C
        HTTP server started
        Humidity: 30.00 % Temperature: 1.00 °C
        Humidity: 30.00 % Temperature: 1.00 °C

        testováno se dvěma DHT11 – vyloučena chyba kusu.

        Ještě se na to pokusím podívat večer s jiným čidlem co tu mám

        1. Hmm, tak to vypadá na problém dstrtof – bohužel implementace pro ESP8266 už dříve měla chybu, takže je možné, že není stále vše dotažené. Zkuste místo toho skript upravit a použít vestavěného převodu v objektu String – asi nějak takhle:
          1. teplotu a vlhkost z pole char předělejte na String
          2. místo dstrtof použijte String(f, 2)
          snad se to spraví…

  12. Právě zkouším něco napsat ve Wiring, ale moc se mi teda nedaří. Mám docela problémy. Mimo jiné i s formátováním výstupu. Můžeš mi prosím přiblížit, co jsi myslel tím String(f,2)?
    Když jsem potřeboval oříznout float, tak jsem na to vymýšlel funkci, protože v popise jazyka jsem nic rozumného nenašel.

    String crop(float numb, int how) {
    String Spom =String(numb).substring(0, String(numb).indexOf(“.”)+how);
    return Spom;
    }

  13. Děkuji, předtím jsem na to koukal, ale float jsem přehlédl, je to poslední položka v příkladech. Takhle to bude hodně snadné.
    Dovolil bych si ještě nějaké otázky. Hovořím teď o ESP8266 embed Arduino. Jako v podstatě svůj první pokus jsem přepsal vlhkoměr s DHT11 z Lua do Arduina. Použil jsem standardní knihovny
    #include //Adafruit
    #include
    #include
    Protože chci, aby byla rychlá odezva, tak jsem zkoumal možnost trvalého spojení definicí server.sendHeader(“Connection”, “Keep-Alive”);
    Ale v hlavičce odpovědi serveru se objevilo něco takového: “Connection : Keep-Alive, close”. To je jedna věc, ale druhá asi zásadnější je, že nevím jestli server spojení po každé odpovědi uzavírá nebo ne. Pokud uzavírá, pak se nemusím párat s hlavičkami. S tím souvisí také skutečnost, že jsem někde četl, že server akceptuje pouze jednoho klienta. Je to pravda? Pak by spojení Keep-Alive nebylo možné použít vůbec. A poslední věc, používám funkci
    server.on(“/”, HTTP_GET, []() {
    }); ale netuším, co znamenají ty hranaté a kulaté závorky v poli parametrů, hledal jsem, ale asi ne dost dobře.

    1. Přiznám se, že netuším, jestli server spojení uzavře – koukni do zdrojáků, tam by to mohlo být zřejmé. V každém případě je pravda, že server běží přes jedno spojení.
      Zápis []() je zápis tuším tzv. lambda výrazů (od C++v11), kde [] znamená… ále – mnohem dokonalejší popis, než bych sesmolil já je třeba tady http://en.cppreference.com/w/cpp/language/lambda . Zkráceně to znamená, že líní programátoři můžou zapisovat krátké funkce přímo, aniž by museli nejdříve napsat a pojmenovat funkci a pak její volání přiřadit 🙂 Pokud chceš, aby vlhkoměr byl pro více klientů, tak bych to asi udělal tak, že se nejdřív natáhne hlavní stránka a hodnoty se budou přenášet AJAXem s tím, že to bude minimalistický přenos. Další možností pak je použít pro přenos hodnoty websocket (a nezapomínat soket ihned po přenosu uzavřít).

  14. Dík za odpověď. Když jsem koukal do tvojí Arduino šablony, tak jsem se ujistil, že jsme vlastně staří známí. Tušil jsem to, ale copyright mě utvrdil. Pokud si dobře vzpomínám, tak od tebe jsem měl plošný spoj na tu obrovskou paměťovou desku k Sordu, kterou jsem si dělal včetně WD FDD řadiče a pak s ní natěšeně provozoval CPM.
    Hezký den Pavel

  15. Dobrý den.
    Vyzkoušel jsem Vaše řešení a funguje výborně.
    Jen bych chtěl poprosit jak zajistit aby se stránky samy refrešovaly bez tlačítka?
    Předem díky.

    1. Dobrý den,
      myslím, že se hodnoty občerstvují po 100ms – koukněte do embHTML.h – je to tam v JavaScriptu a je použita setTimeout() metoda (tedy pokud jsem to takto uveřejnil a není to jen nějaká moje novější pokusná verze. A jinak nejprimitivnější metoda je použití meta tagu refresh, třeba takto
      [zobak vlevo]meta http-equiv="refresh" content="5"[zobak vpravo]

      1. Se setTimeout() jsem si hrál, ale nějak to nešlo.
        Meta tag funguje. Díky moc.
        Jen dotaz: Nepřemýšlíte o tvorbě jednoduché adnroid app propojené s ESP8266?
        Na internetu jsem pár projektů našel, ale většinou je to dost chaotické.

        1. Není zač. O tvorbě aplikace jsem zatím neuvažoval, ale jdou mi z Číny plošné spoje na zařízení, ke kterému je android widget pro zobrazování. Hardware bude pod open source licencí, firmware (pravděpodobně) také uveřejním a pokud dostanu svolení od autora widgetu, tak ho zveřejním také.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *