Arduino klient - ovládanie z webu

rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: Arduino klient - ovládanie z webu

Příspěvek od rejze69 » 24 črc 2018, 08:02

martinius96 píše:
24 črc 2018, 01:29
Rekapitulácia:
Ethernet.begin() --> myslím, že najväčší problém si mal tu, napríklad ak vypršala adresa na DHCP, tak už to nedokázalo nastaviť adresu, zvyčajne sa adresa mení po 2 hodinách, ja som si napr všimol, že tá adresa, čo dávam Arduinu napevno, tak ju nie vždy má, niekedy mu to pridelí DHCP, ten proces sa deje zrejme niekde na pozadí.
To jako, že nastavíš pevnou ip arduinu a ono ji při dalším přihlášení nedostane? To se může stát jedině tehdy, když ji nastavíš v rozsahu adres přidělovaných DHCP. Pevné ip se musí dávat mimo tento rozsah.

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Arduino klient - ovládanie z webu

Příspěvek od martinius96 » 24 črc 2018, 09:38

Takúto mám sieť...
Mám bránu na 192.168.2.20, pod ňou smerovače s IP 192.168.2.21 - 192.168.2.24
Maska je klasická 24 bit --> 255.255.255.0
DHCP prideľuje adresy od 192.168.2.30 do 192.168.2.50.
Ak Arduinu nastavím adresu 192.168.2.100 tak ju nemá vždy :) Niekedy má z rozsahu 30-50. Neviem čím to je.

MichalCzEJ
Příspěvky: 17
Registrován: 03 bře 2018, 21:38
Reputation: 0

Re: Arduino klient - ovládanie z webu

Příspěvek od MichalCzEJ » 24 črc 2018, 12:17

Přesně kvůli tomu a radši nastavování IP na routeru, kde máš jistotu, že jí to přiřadí správně a vždy tomu zařízení.

rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: Arduino klient - ovládanie z webu

Příspěvek od rejze69 » 24 črc 2018, 12:53

A které z těch zařízení je DHCP server?

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Arduino klient - ovládanie z webu

Příspěvek od martinius96 » 24 črc 2018, 15:08

192.168.2.20 je router vrátane DHCP služby

rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: Arduino klient - ovládanie z webu

Příspěvek od rejze69 » 24 črc 2018, 15:25

Ty další směrovače jsou jen switche? Abysme si rozuměli směrovač je router, ale možná je to jen česko-slovenský rozdíl.
Pokud jsou to routry je v nich DHCP vypnuté? Může být jen jeden dhcp v subnetu. Jinak mne ještě napadlo, jestli se wifi modul toho arduina nemůže přihlásit do sítě po restartu sám dřív než mu arduino předá parametry.

H107
Příspěvky: 10
Registrován: 21 bře 2018, 17:51
Reputation: 0

Re: Arduino klient - ovládanie z webu

Příspěvek od H107 » 25 črc 2018, 11:39

Fúú.. na mňa trochu veľa info :)

Ale skúsim to zhrnúť:
MichalCzEJ píše:
23 črc 2018, 23:11
...

Kód: Vybrat vše

if (Ethernet.begin(mac) == 0) {                  //V PRIPADE ZLYHANIA NASTAVENIA MAC ADRESY VYPIŠ  
     }
Něco ověříš, ale nic nevykonáš?
...
1. doplním do podmienky

Kód: Vybrat vše

Ethernet.begin(mac, ip);
(asi som to nedopatrením odstránil, lebo v starších zálohách kódu to mám)

2. reštart by som riešil ako popisuje martinius

Kód: Vybrat vše

void softReset(){
asm volatile ("  jmp 0"); //ak sa zavola, kod skoci na zaciatok za bootloader cast na tzv. aplikacnu (takto som to pochopil)
}
+ podmienkou na zavolanie by bolo práve zlyhanie pripojenia

Kód: Vybrat vše

if (Ethernet.begin(mac) == 0) { 
softReset();
}
Kam to zakonponovať, aby to aj fungovalo a ako to viem otestovať doma? - ako som spomínal doma všetko funguje bez problémov (podľa toho čo som čítal vo vaších príspevkoch problém bude v sieti/infraštruktúre na chalupe, nižšie vysvetlím..)

Reset by som nakódoval až keď overím na chalupe že je to potrebné..

3. Nastavím v routry pevnú IP pre moje zariadenie tak, aby nebola z rozsahu určeného pre automatické prideľovanie. Rozumiem dobre, že na pevno nastavená IP v routry = IP v kóde arduina?

4. Vopred sa ospravedlňujem, ak je tento bod mimo tému.. Asi bude potrebné prejsť/nastaviť celú sieť na chalupe (v týchto veciach tiež nie som zbehlý).

a) doma mám internet privedený káblom + router od poskytovateľa. Do routra nemám administrátorsky, resp. žiadny prístup. Odtiaľ je pripojený NB cez kábel, a cez WIFI TV a pod. Tu mi moje arduino zariadenie pripojené káblom cez ethernet shield funguje bezproblémovo.

b) na chalupe je to ale zložitejšie - od poskytovateľa je na komíne rodinného domu tuším 5GHz anténa s POE napájaním a zapojená do routru č.1 (D-link), ktorý poskytovateľ nastavil a do neho mám prístup, odtiaľ je napojený domáci PC + 2,4 Ghz WIFI je cez smerovú anténu namierené na moju chalupu (cca 120 m s priamou viditeľnosťou) - na chalupe je myslím Tp-link 7210 s POE a napojený do routru č.2 (D-link) ku ktorému sa pripája IP kamera cez kábel (v 1s intervaloch posiela snímky na server, funguje bez problémov) a moje arduino tak isto cez kábel, ktoré ako som spomínal sa po určitom čase zasekne. Na dvore pri chalupe v pohode chytám wifi z routru č.1 a samozrejme aj z č.2.

Som si vedomý toho, že takáto "infraštruktúra" by sa dala optimalizovať, zároveň ale dodávam , že ide o hobby projekt vyskladaný z dostupných vecí typu "čo šuflík dal"..

Takže otázka znie: Mohlo by pre fungovanie (nezasekávanie) arduina stačiť nastavenie pevnej IP na poslednom routry? Alebo bude potrebné nastaviť všetky zariadenia tak, aby IP prideľovalo len jedno? - toto je už určite mimo tému fóra, ale budem vďačný, ak ma aspoň nasmerujete.

5. k napájaniu
MichalCzEJ píše:
23 črc 2018, 23:11
...
//edit: a ještě jedna věc, z čeho máš napájené to arduino? Jestli není náhodou chyba v napájení.
Normálne tam mám spínaný zdroj 7,5 V/2A (alebo 1A, to je asi jedno..) napojené priamo na piny Vin. napájanie mi napadlo tiež, keď to celú noc bežalo spolu s NB predpokladal som že to napájal práve NB. Skúsil lom pôvodný zdroj odpojiť a použil som 9V/500mA trafo napojené na vonk. konektor ale výsledok bol rovnaký - arduino sa zasekávalo. Doma to beži od pondelka na toto trafo a funguje.. Preto som napájane ďalej neriešil.

MichalCzEJ
Příspěvky: 17
Registrován: 03 bře 2018, 21:38
Reputation: 0

Re: Arduino klient - ovládanie z webu

Příspěvek od MichalCzEJ » 25 črc 2018, 12:40

Pokud nastavíš statickou IP adresu na routeru, čili že DHCP bude přiřazovat IP 192.168.1.5 na MAC adresu 90:A2:DA:00:9C:B7, tak už ji pak nemusíš nastavovat staticky na Arduinu, ale vždy ti tento router přiřadí tuhle IP. Pokud ji máš staticky i na Arduinu, tak to máš 2x ošetřené a mělo by to pak jet v pohodě.

Pevnou IP nastavuješ na routeru, který je připojený k té IP kameře a Arduinu, takže druhý D-Link.
Ta infrastruktura sítě na chalupě, no dalo by se to udělat lepší, ale jestli tam nemáš vysokou odezvu a stačí ti takové pásmo Download/Upload, tak bych to neměnil.

Napadá mě ještě jedna taková "super" věc. Ošetři si celý program výstupy na serial port, a jakmile se to zasekne, zkus přes seriovou linku RX,TX,GND, jestli to Arduino jede, nebo jestli spadne celé. Jestli by jelo dál, tak je to na 99% chyba v nastavení síťě a hledáš chybu tam.
Nejlepší ale ovšem je USB->Serial (případně pokud máš nějaký COM port na NB, což ale asi nemáš), tak to nechat připojené jen RX,TX,GND, tím to vše pojede z toho trafa a ty jen budeš číst co se tam děje a zjistíš, kde se zasekne.
Případně zapisovat stav na SD kartu, nebo na nějaký server posílat aktuální stav a poslední stav = místo, kde se sekne program.

H107
Příspěvky: 10
Registrován: 21 bře 2018, 17:51
Reputation: 0

Re: Arduino klient - ovládanie z webu

Příspěvek od H107 » 25 črc 2018, 15:45

OK, kód som doplnil, ešte skúsim nastavenie IP na routry. Na chalupe budem až cez víkend, ak to po týchto úpravách nebude fungovať vyskúšam odsledovať cez výpisy, resp. doplním reset, takže uvidíme budúci týždeň..

Inak sériové výpisy som tam mal, ale kód už zaberal cez 75% pamäte a v niektorých prípadoch to už UNO nezvládalo, tak som výpisy postupne zredukoval len na časti, ktoré som potreboval vyladiť a v "produkčnej" verzii kódu ich už nemám vôbec.. Ak bude potrebné, skúsim dorobiť zápis stavu na server.

Vrátim sa ešte k otázke ohľadom millis(), pre nastavenie rozdielnych časových intervalov pre rôzne časti kódu používam toto porovnávanie:

Kód: Vybrat vše

cas_aktMs = millis();
           if(cas_aktMs - cas_preMs > 1800000) {
             cas_preMs = cas_aktMs;
                //... odoslanie dát (vonk. teplota, vlhkosť, atm. tlak, vnút. teplota)  
     }
Čo sa stane pri pretečení millis()?

Teoreticky, ak sa v premennej cas_preMs uloží max. hodnota potom podmienka cas_aktMs - cas_preMs > 1800000 už nikdy nenastane, pretože cas_aktMs - cas_preMs bude vždy záporný, alebo rovný nule. Prosím opravte ma, ak uvažujem zle.

rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: Arduino klient - ovládanie z webu

Příspěvek od rejze69 » 25 črc 2018, 15:56

Jak jsem psal výše, je důležité aby tam nebyly dva dhcp v jednom subnetu. Intetni subnet je predposledni oktet v ip adrese. Všechno co má stejné predposledni cislo musi byt pridelovano jen jednim dhcp a ve vsech ostatnich zarizenich musi byt dhcp vypnut. Tam se pak nastavi ip brány a pevna ip toho zarizeni mimo rozsah automaticky pridelovanych adres.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů