Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Wemos D1 odesílání dat přes WiFi do Firefoxu.
Jdi na stránku Předchozí  1, 2, 3  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další)
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Celeron



Založen: Apr 02, 2011
Příspěvky: 17747
Bydliště: Nový Bydžov

PříspěvekZaslal: út prosinec 12 2023, 0:13    Předmět: Citovat

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

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Valdano



Založen: Jan 01, 2023
Příspěvky: 1692
Bydliště: Česká Lípa

PříspěvekZaslal: út prosinec 12 2023, 0:19    Předmět: Citovat

Je to na portu 80 tj. HTTP. Není to tedy HTTPS. Zkuste viz níže kde je za Host: lokální IP adresa web serveru ve vaší Wifi síti.

kód:
...
if (client.connect("192.168.1.10", 80)) {
  client.println("GET /index.html HTTP/1.1");
  client.println("Host: 192.168.1.10");
  client.println("Connection: close");
  client.println();
...


Naposledy upravil Valdano dne út prosinec 12 2023, 2:06, celkově upraveno 2 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17747
Bydliště: Nový Bydžov

PříspěvekZaslal: út prosinec 12 2023, 0:29    Předmět: Citovat

Co, ten ipinfo.io? Tak ten je zrovna HTTPS.
Ten chodící djxmmx.net má port 17.

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Valdano



Založen: Jan 01, 2023
Příspěvky: 1692
Bydliště: Česká Lípa

PříspěvekZaslal: út prosinec 12 2023, 0:34    Předmět: Citovat

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.

kód:

#include <WiFi.h>

#define ZADOST 1
#define CTENI  2
#define CEKANI 3
#define TIMEOUT 5000

WiFiClient client;

// 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;

  }
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17747
Bydliště: Nový Bydžov

PříspěvekZaslal: út prosinec 12 2023, 23:10    Předmět: Citovat

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í. Sad

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pocitujlasku



Založen: Dec 12, 2005
Příspěvky: 2169

PříspěvekZaslal: st prosinec 13 2023, 7:01    Předmět: Citovat

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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17747
Bydliště: Nový Bydžov

PříspěvekZaslal: st prosinec 13 2023, 18:52    Předmět: Citovat

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

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pocitujlasku



Založen: Dec 12, 2005
Příspěvky: 2169

PříspěvekZaslal: st prosinec 13 2023, 20:21    Předmět: Citovat

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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17747
Bydliště: Nový Bydžov

PříspěvekZaslal: pá prosinec 15 2023, 23:01    Předmět: Citovat

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 ---------------

Soft WDT reset

Exception (4):
epc1=0x40201394 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

>>>stack>>>

ctx: cont
sp: 3ffffde0 end: 3fffffd0 offset: 0160
3fffff40:  65746f4b 0000006c 05000000 756f7453 
3fffff50:  8dc46170 0a00616b 63617256 6b8dc465 
3fffff60:  09000061 3ffef624 000e000f 80000000 
3fffff70:  3ffef63c 000f000f 80000000 3ffef654 
3fffff80:  0010001f 80000000 00000000 0012001f 
3fffff90:  00000000 00000000 43b0c230 00000000 
3fffffa0:  3fffdad0 00000000 3ffee738 3ffee764 
3fffffb0:  3fffdad0 00000000 3ffee738 40203a78 
3fffffc0:  feefeffe feefeffe 3fffdab0 40100c39 
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 3424, room 16
tail 0
chksum 0x2e
load 0x3fff20b8, len 40, room 8
tail 0
chksum 0x2b
csum 0x2b
v00044e80
~ld

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mahoney



Založen: Oct 26, 2019
Příspěvky: 381

PříspěvekZaslal: pá prosinec 15 2023, 23:56    Předmět: Citovat

To je celkem standardní věc, stačí vypnout debug.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Valdano



Založen: Jan 01, 2023
Příspěvky: 1692
Bydliště: Česká Lípa

PříspěvekZaslal: so prosinec 16 2023, 9:58    Předmět: Citovat

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;

  // vynulování watchdogu
  yield();
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pocitujlasku



Založen: Dec 12, 2005
Příspěvky: 2169

PříspěvekZaslal: so prosinec 16 2023, 10:54    Předmět: Citovat

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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Valdano



Založen: Jan 01, 2023
Příspěvky: 1692
Bydliště: Česká Lípa

PříspěvekZaslal: so prosinec 16 2023, 12:43    Předmět: Citovat

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().
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17747
Bydliště: Nový Bydžov

PříspěvekZaslal: so prosinec 16 2023, 18:08    Předmět: Citovat

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

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17747
Bydliště: Nový Bydžov

PříspěvekZaslal: so prosinec 16 2023, 18:41    Předmět: Citovat

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

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další) Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3  Další
Strana 2 z 3

 
Přejdi na:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

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.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.19 sekund