Wemos D1 odesílání dat přes WiFi do Firefoxu.
Moderátor: Moderátoři
- pocitujlasku
- Příspěvky: 2764
- Registrován: 12 pro 2005, 00:00
- Bydliště: SR, Poprad
Kód: Vybrat vše
Serial.println("disconnecting from server.");
client.stop();
// do nothing forevermore:
while (true);
To znamená, že po uplynutí WD se klient rozjíždí znova od Setup. Jak to udělat jinak aby se to obešlo bez WD jsem zatím nezkoumal. Na to zobrazení teplot je to asi vuřt.
Spíš mě trápí něco jinýho. Mám dva objekty každej má svoji WiFi s malinko rozdílným SSID. Pass je stejnej. Pokud měly stejnej název, tak to blblo. No a potřebuju aby ten displej se dokázal připojit na jednu nebo druhou síť. Snad to umí knihovna <ESP8266WiFiMulti.h>
Proč mi nemůže všechno chodit hned ?!!
Celeron píše:Už vím, v čem je dílo. Všechny případy WiFi klientů, co jsou v IDE u knihoven pro ESP8266 končí v Loop
Pokud jste v kódu nechal na konci loop() nekonečnou smyčku while (true); pak se není čemu divit, že to jde do resetu na WDT, ale už na první straně tohoto tématu jsem psal, že to máte vypustit. Opakování je vhodné řešit přechody mezi různými stavy, navázání spojení, čtení a čekání atd. a ne resetem v podstatě celého počítače. To je docela "prasárna" vhodná tak leda při nějakém dočasném testování, ale ne pro reálný dlouhodobý provoz i když se vám to třeba jeví jako, že to nemusí nevadit. Obecný způsob řešení jsem naznačil pomocí tzv. "stavového automatu" tj. ten switch kde různé stavy představují jednotlivé case.
Celeron píše:To znamená, že po uplynutí WD se klient rozjíždí znova od Setup. Na to zobrazení teplot je to asi vuřt.
Díky tomu resetu se rozjíždí znova celý Wemos, a to není zrovna moc dobré řešení. Zatím bez displeje to vidíte jen přes SerialMonitor, ale až tam doděláte zobrazování na displeji tak ten reset bude pravděpodobně na displeji znatelný.
Celeron píše:No a potřebuju aby ten displej se dokázal připojit na jednu nebo druhou síť. Snad to umí knihovna <ESP8266WiFiMulti.h>
Pokud se má klient umět připojit buď na jednu nebo na druhou Wifi síť, ale nikdy nemá být připojen na obě Wifi sítě současně pak nepotřebujete ESP8266WiFiMulti a mělo by stačit si to vyřešit opět ve stavovém automatu v loop(), a to tím, že část pro navázání na Wifi co máte zatím v setup() přesunete do jednoho ze stavů stavového automatu v loop(). Postupné stavy ve stavovém automatu v loop() by mohly být zhruba tyto:
Stav 1: Rozhodnutí zda se bude navazovat spojení do Wifi sítě A nebo B.
Stav 2. Navázání spojení a přihlášení k příslušné Wifi síti.
Stav 3. Navázání spojení klienta k příslušnému web serveru v té Wifi síti.
Stav 4. Poslání žádosti klienta na web server o stránku s daty.
Stav 5. Načtení a vyseparování hodnot z dat přijatých od web serveru.
Stav 6. Zobrazení hodnot na displeji.
Stav 7. Stop klienta a tím i rozvázání spojení s web serverem.
Stav 8. Ukončení spojení vůči Wifi síti.
Stav 9. Stav čekání tj. nějaká prodleva před dalším pokračováním a po uplynutí opět přechod do stavu 1.
Loop() by měl při každém průchodu skončit tj. nic nedržet v nekonečné smyčce while (true) a rozhodování řešit již zmíněnými přechody mez různými stavy ve stavovém automatu.
Nějak tak by to mělo vypadat a pokud nikdy nebudete potřebovat současné spojení do dvou nebo více sítí najednou pak dle mého názoru nepotřebujete ESP8266WiFiMulti.
Proč mi nemůže všechno chodit hned ?!!
Web server poskytující hodnoty měření bude předpokládám stabilně stále na jednom místě připojený stále k jedné wifi síti. Smysl by to mohlo mít pokud by ten klient měl být mobilní ve smyslu volně přesouvatelný na různá místa třeba ve více objektech, přičemž v každém objektu by byl samostatný web server připojený k samostatné wifi.
Takže jsem se zase vrátil na měření teplot přes UNO a posíláním dat přes W5500 co mi již chodí delší dobu. Zkusil jsem to převrátit z UNO na Wemose D1 a zase to není až tak jednoduchý, některý piny Wemose se chovají dost jinak než na UNO, třeba GPIO15.
No a co ten klient s displejem? No předpokládám, že ho budu občas potřebovat přenýst z jednoho objektu (WiFi sítě) do druhýho. Na tom snad není nic divnýho, to přeci umí každej mobil, tablet i NTB. Navíc to mám koncipovaný tak, aby se na server mohlo kouknout z čehokoliv a i zvenčí přes NAT.
Proč mi nemůže všechno chodit hned ?!!
- pocitujlasku
- Příspěvky: 2764
- Registrován: 12 pro 2005, 00:00
- Bydliště: SR, Poprad
mam na mysli Nieco taketo
prijimac mozes pripojit na wemos a mas data na wifine.
stoji to stovku, a to by stalo za vyskusanie. Arduino ma na to aj kniznice, pouziva to jednen pin a ked vysielace nebudu vysielat naraz, tak vies v pohode prijimat aj z viacerych modulov.
Dnes jsem lámal Wemos D1 s W5500. Na UNO s W5500 mi to chodilo už dřív, ale stále málo paměti pro dynamický proměnný a ani přesun přes macro F moc nepomohlo. Wemos má paměti podstatně víc a zvládá i ty kupy keců kolem HTML a CSS.
U Wemose je komunikace na LAN docela pakárna. Knihovny Ethernet.h a Ethernet2.h s ESP8266 nechodí. Musí se použít prapodivná kombinace <SPI.h> , <ESP8266WiFi.h> a <W5500lwIP.h>. A před spuštěním ethernetu se musí pomocí SPI nakonfigurovat pár parametrů. No a nakonec připojení na ethernet se musí používat funkce LAN knihovny <W5500lwIP.h> a vytvoření serveru zase volat funkce <ESP8266WiFi.h>. Kdybych nenašel na netu příklad, tak bych to nikdy nedal dohromady.
Proč mi nemůže všechno chodit hned ?!!
- pocitujlasku
- Příspěvky: 2764
- Registrován: 12 pro 2005, 00:00
- Bydliště: SR, Poprad
nemas doma nejaky "server" - pocitac, ktory ti bezi stale? tam by si mohol pichnut prevodnik + HC12 a udaje + stranku generovat tam. Nejake stare raspbery, co ma mizernu spotrebu, ale dostatocny vykon aj na napr. databazu na ukladanie dat. Ja som donedavna tak mal raspi3, kde bezal webserver, databaza, chodili tam logy z mikrotikov a bezal mi tam moj server v .net pre inteligentnu domacnost.
Programovanie nie je o tom, ze pospajam par kniznic a mam hotovo. To je prave ta pakarna, kedy 90% len sedis a kreslis a skusas a 10% je samotne pisanie kodu.
Ale narazil jsem na trochu kosmetickej problém. Knihovna GFX.h a ILI9341 nemají podporu češtiny. Nevíte někdo, zda se někde na netu neválí pro tyhle knihovny sady fontů nejlíp v KOI-8, kde jsou od 80h do 0FFh znaky s nabudeníčkama? Že by se mě to chtělo ručně editovat se mě teda moc nechce. V podstatě by mě stačily znaky malý č, á, ý.
Proč mi nemůže všechno chodit hned ?!!
Edit: tak jsem zkusil v souboru glcdfont.c do prvních pěti byte zadat 3Fh. Při výpisu char(0) se mi původně prázdný znak vybarvil celý pole. Takže soubor s fonty je správný, tak teď nalýzt v tý hromadě hexu ty správný znaky, přidat k ním nabudeníčka a vrazit je buď někam do rozsahu ASCII 0-31 a nebo nad 127.
Proč mi nemůže všechno chodit hned ?!!