Založen: Apr 02, 2011 Příspěvky: 18082 Bydliště: Nový Bydžov
Zaslal: út prosinec 12 2023, 0:13 Předmět:
Tak jsem se tři hodiny trápil s klientem s připojením na ipinfo.io z příkladu z Githubu, co jsi dal. Vůbec to nemaká, nedokáže se ani připojit na server.
Možná nějaký problém s přechodem z knihovny WiFi na ESP8266WiFi.
Zkusil jsem jinej příklad z Arduino ESP8266 knihoven s připojením na djxmmx.net (citáty dne) a ten jde jak z praku. Když jsem ale zkusil změnit server na ipinfo.io, tak to zase vůbec nešlo. Když jsem zkusil zaklepat na Bastlírna.cz, tak mi přišla odpověď. Prostě hodně starý weby s tím makaj ale relativně nový ne. Jestli je problém v portu nebo HTTP kontra HTTPS netuším.
To code, co jsi dal v předešlým příspěvku zkusím zítra. Ale asi moc rozdíl něž ten z ESP8266 co mi chodí s djxmmx.net nebude. Taky tam je "refresh" dvě minuty aby nebyl server příliš zatěžován. _________________ Jirka
Založen: Jan 01, 2023 Příspěvky: 1800 Bydliště: Česká Lípa
Zaslal: út prosinec 12 2023, 0:34 Předmět:
To ipinfo.io nijak nesouvisí s tím jestli je to HTTP nebo HTTPS. HTTP se provozuje na TCP portu 80 a HTTPS na TCP portu 443 a navíc vyžaduje šifrování. Pokud je použit jiný port tak je to atypické alias nestandardní. HTTP je mnohem jednodušší na implementaci do tak jednoduchých web serverů a běžně se tedy používá v různých zařízeních, která poskytují svá webová rozhraní.
To "ipinfo.io" je pouze DNS název web serveru, a to ve vaší Wifi síti asi nebude odpovídat skutečné IP adrese toho vámi vytvořeného web serveru s Wemosem. Pro komunikaci bude asi přijatelnější to ipinfo.io nahradit statickou IP adresou toho web serveru, kterou skutečně má ve vaší lokální Wifi síti, a to jak v client.connect() tak i v client.println("Host:.
Součástí Wifi.h v knihovně ESP8266WiFi je vložen odkaz na ESP8266WiFi.h a v tom je mimo jiné vložen odkaz na vlastní WiFiClient.h a v adresáři té knihovny je i zdroják WiFiClient.cpp tj. ne ten původní, ale upravený pro ESP8266. Takže pokud máte knihovnu ESP8266WiFi správně nainstalovanou v Arduino IDE a tu původní knihovnu tj. celý adresář Wifi z podadresáře libraries dočasně přesunete jinam zcela mimo adresáře Arduino IDE tj. defacto odeberete, pak by mělo stačit pro klienta #include <WiFi.h> a definovat objekt WiFiClient client; viz níže.
// XXXXX nahradit nazvem WiFi site, ke ktere se chcete pripojit
char ssid[] = "XXXXX";
// Wifi sifrovane WPA pouzivaji pro zabezpeceni heslo ve forme retezce
// Pokud ma prislusna Wifi jine sifrovani tak to udelat jinak
// podobne jako viz dalsi moznosti volani wifi.begin
// https://www.arduino.cc/reference/en/libraries/wifi/wifi.begin/
char pass[] = "YYYYY"; // YYYYY nahradit odpovídajícím heslem
// 192.168.1.10 nahradit skutecnou statickou IP adresou web serveru v siti
char server[] = "192.168.1.10";
unsigned long tck;
int status = WL_IDLE_STATUS;
int stav;
char c;
void setup()
{
Serial.begin(115200);
while (!Serial) {}
Serial.print("Connecting to: ");
Serial.println(ssid);
while (status != WL_CONNECTED) {
status = WiFi.begin(ssid, pass);
delay(1000);
}
Serial.println("Connected to wifi");
printWifiStatus();
tck = millis();
stav = ZADOST;
}
void loop()
{
switch (stav)
case ZADOST:
// spojeni a zadost o web stranku web serveru
Serial.println("\nZacatek spojeni na web server...");
if (client.connect(server, 80)) {
Serial.println("spojeni na web server OK");
client.println("GET /index.html HTTP/1.1");
// 192.168.1.10 nahradit skutecnou
// statickou IP adresou web serveru v siti
client.println("Host: 192.168.1.10");
client.println("Connection: close");
client.println();
stav = CTENI;
} else {
client.stop();
Serial.println("nepodarilo se spojeni na web server");
stav = CEKANI;
}
tck = millis();
break;
case CTENI:
// cteni dat prichazejicich z web serveru
if ((millis() - tck) >= TIMEOUT) {
Serial.println("Timeout dat z web serveru");
Serial.println();
Serial.println("odpojeni od web serveru");
client.stop();
stav = CEKANI;
tck = millis();
} else {
if (!client.connected()) {
Serial.println();
Serial.println("odpojeni od web serveru");
client.stop();
stav = CEKANI;
tck = millis();
} else {
while (client.available()) {
c = client.read();
Serial.write(c);
// doplnit vlastni vyber hodnot z dat
// a pripadne zobrazeni na displeji
// pokud je vse nacteno tak
//
// Serial.println("odpojeni od web serveru");
// client.stop();
// stav = CEKANI;
// tck = millis();
// break;
}
}
}
break;
case CEKANI:
// jen cekame po dobu TIMEOUT v milisekundach
if ((millis() - tck) >= TIMEOUT) {
stav = ZADOST;
}
break;
Založen: Apr 02, 2011 Příspěvky: 18082 Bydliště: Nový Bydžov
Zaslal: út prosinec 12 2023, 23:10 Předmět:
Tak bohužel, s těma knihovnama nemáš pravdu. Pokud není #include <ESP8266WiFi.h>, tak to prostě s Wemosem D1 nemaká. On to má i Drátek v příkladech, tam řeší knihovny podmíněným překladem ESP8266 nebo ESP32 plus ostatní WiFi shieldy.
Ten tvůj kód jsem zkoušel, bylo tam spousta špatnejch složenozávorkovejch úrovní. Ale stejně se s tím k ničemu nepřipojím.
Vzal jsem ten chodivej klient pro čtení z djxmmx.net a zkusil do něj zadat různý IP adresy, co mám v lokální síti. Většina adres psala Timeout, nebo Připojení se nezdařilo. Odpovídal pouze Tp-Link Archer C50. Ten můj server s měřením teplot, co na prohlížečích chodí, se taky nenačte.
Je to pro mě pole neoraný. Vždycky mě víc bavilo programovat věci, který měly nějakej fyzikální výstup co se viděl, nebo dal změřit. Tohle je takový imaginární. _________________ Jirka
Založen: Dec 12, 2005 Příspěvky: 2249 Bydliště: SR, Poprad
Zaslal: st prosinec 13 2023, 7:01 Předmět:
ked sa cez vikend k tomu dostanem, skusim urobit na wemos jednoduchy priklad cez websocket. mam tam aj indikaciu ledkou - svieti, ked je vytvorene spojenie, ked padne, tak zhasne. _________________ No vidis, a tak si sa bal
Založen: Apr 02, 2011 Příspěvky: 18082 Bydliště: Nový Bydžov
Zaslal: st prosinec 13 2023, 18:52 Předmět:
Tak už mi klient chodí, mel jsem tam chybu v v definici HTTP. Seriovej monitor mi vypisuje dost keců. Chtěl jsem to sem dát přes Code a Bastlírna se tomu brání.
Tak ještě vyseparovat těch 6 teplot a poslat je na TFT displej. Názvy sond separovat nebudu, dorazím je natvrdo v obsluze displeje. Možná ještě do serveru přidám nějaký značky aby se to líp separovalo.
to pocitujlásku: Nezdržuj se s tím, pravděpodobně budu používat thingspeak a ten snad to co mi leze ze serveru sežere. _________________ Jirka
Založen: Dec 12, 2005 Příspěvky: 2249 Bydliště: SR, Poprad
Zaslal: st prosinec 13 2023, 20:21 Předmět:
ok, ja napr. nemam rad, ked data lezu mimo moj dom, preto aj vlastne riesenie.
mozes to urobit tak, ze si budes posielat id cisla a teplotu, a v tom programe na obsluhu displeja si naparujes id na nazov. a ked v buducnosti pridas cidla, tak sa bude menit program len v casti displeja. _________________ No vidis, a tak si sa bal
Založen: Apr 02, 2011 Příspěvky: 18082 Bydliště: Nový Bydžov
Zaslal: pá prosinec 15 2023, 23:01 Předmět:
Dnes se mi povedlo celkem jednoduchým způsobem vyseparovat z tý hory HTML blábolů, co posílá server měření teplot, názvy sond a hodnoty teplot z nich ve string i flow. Tak teď ještě připojit nejspíš 3.2" 240x320 TFT displej, ILI9341, SPI, jeden mi tu leží. Mám tu sice i větší, ale má paralelní připojení a to by Wemos D1 vývodově nedal. No a pak ještě napsat ukládání teplot po cca 10 minutách aby se daly zjistit trendy teplot, případně alarmy. Jestli bude na něco potřeba dotyk, to ještě nevím.
Jo netušíte prosím někdo, proč Wemos D1 posílá na serialmonitor neustále tohle? Dá se to nějak zlikvidovat nějakým nastavením?
kód:
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Založen: Jan 01, 2023 Příspěvky: 1800 Bydliště: Česká Lípa
Zaslal: so prosinec 16 2023, 9:58 Předmět:
Celeron napsal(a):
Jo netušíte prosím někdo, proč Wemos D1 posílá na serialmonitor neustále tohle?
...Soft WDT reset...
Dá se to nějak zlikvidovat nějakým nastavením?
"Soft WDT reset" tj. reset vyvolaný interním watchdog časovačem, který je implementován v ESP a zajišťuje automatický reset pokud se program při provádění někde tzv. zasekne nebo vytuhne. Je to v podstatě pokus o zotavení resetem. Pro Wemos D1 je doba nastavena na cca 1600 ms. Interně po každém ukončení loop() se WDT nuluje, ale pokud kód uvnitř při provádění loop() trvá déle dojde k tomuto resetu.
To v podstatě znamená, že někde v kódu programu je smyčka např. FOR nebo WHILE, ve které není WDT vynulován a jejíž provedení trvá tak dlouho, že celkové provedení loop() se protáhne a způsobí reset vyvolaný watchdog časovačem. U smyček např. FOR nebo WHILE kde by k tomu mohlo za běžného provozu docházet je tedy vhodné uvnitř volat yield(); což zajistí vynulování WDT a pak by k tomu resetu už nemělo docházet.
Takže například do smyčky while pro čtení dat je vhodné vložit yield(); viz níže.
kód:
while (client.available()) {
c = client.read();
Serial.write(c);
// doplnit vlastni vyber hodnot z dat
// a pripadne zobrazeni na displeji
// pokud je vse nacteno tak
//
// Serial.println("odpojeni od web serveru");
// client.stop();
// stav = CEKANI;
// tck = millis();
// break;
Založen: Dec 12, 2005 Příspěvky: 2249 Bydliště: SR, Poprad
Zaslal: so prosinec 16 2023, 10:54 Předmět:
ako pisal Valdano, resetuje sa ti wemos. zaklad je nepouzivat delay, ale radsej to urobit na kontrolu cez millis, ci uz uplynul dany cas. A v cykloch davat yield().
Mahoney: to nie je standardna vec, to ako keby si povedal, ze staci vypnut bsod vo windows a system nebude padat. _________________ No vidis, a tak si sa bal
Založen: Jan 01, 2023 Příspěvky: 1800 Bydliště: Česká Lípa
Zaslal: so prosinec 16 2023, 12:43 Předmět:
pocitujlasku napsal(a):
zaklad je nepouzivat delay
Použití funkce delay() by v tomto ohledu vadit nemělo, protože je interně pro ESP řešena s opakovaným nulováním WDT časovače v průběhu čekání na uplynutí příslušného intervalu tj. mělo by to být obdobné jako smyčka while s voláním yield().
Založen: Apr 02, 2011 Příspěvky: 18082 Bydliště: Nový Bydžov
Zaslal: so prosinec 16 2023, 18:08 Předmět:
Mahoney napsal(a):
To je celkem standardní věc, stačí vypnout debug.
Jedinný kolem debug, co jsem našel v IDE1.8.19 je v nastaveních desky Generic ESP8266 module toto:
Debug port: Disabled
Debug Level: Žádný
Takže by to asi nemělo valit blbiny na SerialMonitor.
Nebo máš na mysli něco jinýho?
Díky _________________ Jirka
Založen: Apr 02, 2011 Příspěvky: 18082 Bydliště: Nový Bydžov
Zaslal: so prosinec 16 2023, 18:41 Předmět:
Valdano napsal(a):
"Soft WDT reset" tj. reset vyvolaný interním watchdog časovačem, který je implementován v ESP a zajišťuje automatický reset pokud se program při provádění někde tzv. zasekne nebo vytuhne.
Delay je použit pouze v Setup a to jen delay(200); kdy se čeká na připojení WiFi. V Loop žádnej delay není použitej. Ale ten příjem paketu, jeho zpracování a výpis na SerialMonitor může něco trvat. Zkusil jsem zrychlit přenosovku na SerialMonitor z 19200 na 115200 a žádnej vliv.
Pak jsem do všech smyček nacpal yield(); Naprosto žádnej vliv, stále Soft WDT reset.
Tak jsem yield(); nacpal na zkoušku ob řádek v celým programu. Nepomohlo, stále Soft WDT reset. Jste si pánové jistí, že to má u ESP8266 nějakej vliv na WD? Někde jsem četl, že se to podobně chová při přetečení stack. _________________ Jirka
Časy uváděny v GMT + 1 hodina Jdi na stránku Předchozí1, 2, 3Další
Strana 2 z 3
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.