1

Téma: Posílání dat do vlastní databáze se po několika hodinách ukončí

Upravil jsem program pro posílání čtvrthodinových záznamů do svojí databáze. Posílání se rozběhne, ale po několika hodinách se program kousne a data se přestanou posílat. Předtím fungovalo posílání dat na portal.merenienergie.cz bezproblému.

2

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

Jakou to hlásí chybu?

Podívejte se do webového rozhraní, jaký je výpis na stránce "Log" dole (OSI7 chyby), je tam hlášení o úspěšnosti nebo neúspěšnosti každého volání funkce http_get().

Dále zkontrolujte program, jestli vám nezůstane zablokovaný v nějaké smyčce atd., nevím co tam přesně máte...
Obvyklé řešení je vypisovat např. čas (NTP unix time stačí, viz seznam sys[]) a místo v programu pomocí funkce echo() , přičemž tyto výpisy vložíte na různá místa programu. Pak se jen díváte na konzolový výstup (např. /echo.htm) zda-li program provádí to co má (podle postupného výpisu, a taky podle časových značek, které se musí neustále zvyšovat).

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

3

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

HTTP_get OK - je zobrazen čas posledního zaslání a žádná CHYBA.
Na výpisu konsole také standartní hláška SO odesláno na servr,OK
A běh programu je dle mého názoru zastaven
Program je použit Váš, pouze je změněná IP adresa na příslušných místech.
V zařízení mám opět nahraný Váš program na zasílání dat na merenienergie.cz a vše funguje.
josef@nesvara.cz

4

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

nesvara napsal:

A běh programu je dle mého názoru zastaven

ok, v tom případě bude potřeba doplnit program o nějaký neustálý výpis, aby jsme to potvrdili

tzn. někam do hlavní smyčky dát

echo(sys[4]);

což vždycky vypíše čas z NTP, a tak půjde jednoznačně vidět, jestli se program zasekl nebo ne.

Každopádně, jestliže funguje odesílání na portál, tak musí fungovat odesílání na jakýkoliv jiný webovový server - pošlete mi na email ten celý program, který vám nejde, prohlédnu ho a vyzkouším a doufám že zjistím kde je chyba.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

5

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

Program jsem zaslal na email.
Děkuji

6

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

Podle posledních pokusů to vypadá, že se program zasekne na funkci http_get(), z důvodů chyby komunikace s vaším webovým serverem.

Po příčině se pátrá, jakmile bude nalezene, pokusíme se opravit firmware tak, aby to pracovalo i v tomto případě.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

7

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

adamn napsal:

Podle posledních pokusů to vypadá, že se program zasekne na funkci http_get(), z důvodů chyby komunikace s vaším webovým serverem.

Po příčině se pátrá, jakmile bude nalezene, pokusíme se opravit firmware tak, aby to pracovalo i v tomto případě.

Našla sa nejaká príčina? Resp. je nejako ošetrený vo firmware neúspech vykonania funkcie http_get() ? Ideálne by bola možnosť dať tejto funkcii na vykonanie nejaký (nastaviteľný) čas a ak sa do tejto doby nevykoná, umožniť napr. reštart programu.
Občas sa totiž zasekne program aj mne, zatial som hlbšie nepátral, ale je to nepríjemné.  Pritom cez web sa do sds dostanem, len program sa nevykonáva. Preto som sa aj v inom príspevku pýtal na možnosť diaľkového reštartu.
Nie som si ani istý, či to mrzne na http_get(), budem to ešte skúmať...

8

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

Já jsem upustil od posílání dat na jiný server a posílám data na merenienergie.cz a tam vše funguje a program se neseká.

9

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

Jsem zvědavý na nový portál.

Kdo nic nezkusí, nic nezíská.

10

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

Před časem jsem narazil na podobný problém - pokud vše fungovalo, data se na portál odesílala pravidelně, ale např. během výpadku netu se asi 5x ve výpisu objevila chyba komunikace ale po znovu najetí netu se dále data neodesílala, program sds se kousnul. Pomohl až reset.
Funguje také u sds problém s návraty z volání ? (přetečení programových kroků, stack). Pokud není stejný počet return a call (takto to fungovalo u programování PIC)

V mém případě pomohlo u
label chyba_www_serveru: , které končilo příkazem goto opakovat; nahradit příkazem return;

pak to funguje i po výpadku netu a jeho naběhnutí

11 Naposledy upravil: depett (2011-12-06 11:10:05)

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

Tak dnes v noci sa to znova zakuslo...
V programe som si dal vypisovať hlášku aj pred funkciou HTTP_GET aj po nej, takže som zistil, že funkcia prešla OK, teda mi program vypísal hlášku aj po jej ukončení a hlášku pred spustením ďalšej už nevypísal. A niekde sa to aj tak zastavilo.
Ale mám istotu, že HTTP_GET() to nerobí.
Je zaujímavé, že niekedy to ide v pohode 5 dní, niekedy vydrží iba pár hodín. Program je jednoduchý, ten by nemal to zastavenie spôsobiť. Ešte ma napadá zdroj 12V, vyskúšam dať iný...

Doplnené:

Tak zdrojom to určite nie je.
Ale na 99,9% je chyba v meraní teploty. Zistil som, že čidlo teplomera občas nahodí obrovské číslo (a neviem prečo, celú cestu som dôkladne skontroloval, žiaden studený spoj, alebo zlý kontakt som nenašiel).  V programe som mal podmienku, ak je sys(310) > 100 skoč na opakovať. A pri opakovaní sa s tým program nejako nevedel vyrovnať. Preto som skok na opakovať zrušil a zadal som takúto podmienku:

label chyba_teploty:
tep = (sys[310] / 100);
if (tep > 100)
{
echo ('CHYBA MERANIA TEPLOTY!!! Teplota = ',sys[310],' cas = ',sys[8],':',sys[9],':',sys[10]);
wait(1000);
goto chyba_teploty;
}

Neviem tú chybu sys(310) nasimulovať, tak budem čakať, ako to dopadne.
Vie niekto povedať, aké sú všetky možné chybové stavy na 1-wire a čo môže byť ich príčinou?

12

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

Chyby na 1w jsem odhalil 2. Jedna je číslo 16777216, které se vyskytuje při chybě čidla. Toto opravdu dělaly zpětné odrazy po lince když jsem měl zapojené čidla ve 3 větvích a paralelně jsem je připojil k sobě. Odrazy z kretších a delších tras se projevovaly ihned. Závada odstraněna zapojením všech čidel za sebe.

Druhý problém je občasná chyba některého čipu, který vyřadí celou linku. Všude se nahodí hodnota 0. Dělá to některé čidlo. Jeho výměnou se chyba odstraní. Vše funguje třeba týden, 3 týdny a pak konec. Než jsem přišel na to které čidlo to dělá, měl jsem napájení linky připojené přes relé a "resetoval" jsem linku c-programem když jsem zjistil na všech čidlech hodnotu 0.

13

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

Ano můžu jen potvrdit.

Je to dáno tím, jak jsou čidla zapojeny - všechny sdílí jeden společný datový drát.

Pokud SDS komunikuje s jedním čidlem, ostatní to musí pokaždé rozpoznat a vnitřně se od datového drátu odpojit.
Vadné čidlo to neprovede. Nakonec ani nemusí být vadné, jen může mylně vyhodnotit požadavek na komunikaci a pak vznikne kolize, kdy více než jedno čidlo odesílá data.

Také je potřeba zajistit dostatečné napájení pro všechny čidla (měřte přímo na vývodech čidla, musí tam být +3.3V nebo alespoň dostatečně blízká hodnota).

Chybové kódy - využijte sys[350] až sys[381], viz http://wiki.merenienergie.cz/index.php/Sdsc_sysp .
Pro každé čidlo je tam uveden jeho stav (ok, chyba, porucha komunikace, probíhá převod ...)

Samozřejmě do hodnoty teploty (sys[310] a výše) se pak schválně zapíše 16777216, což má program varovat že došlo k chybě měření. Pozn. podobná hodnota 32767 se zapisuje do výstupů přes SNMP.


K programu o dva příspěvky výše:
Není vhodné použít čekaní wait(1000) a pak to zkoušet znovu. Protože jednotlivá čidla jsou čtena postupně, a čtení čidla trvá zhruba 800 msec (protože minimálně 750 msec trvá čidlu jeho převod, viz datasheet), tak při dvou a více čidlech nedojde k aktualizaci příslušné sys[] v rámci té jedné vteřiny kterou se čeká.
Zde by se naopak právě krásně hodil pouze test na sys[350] atd.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

14

Re: Posílání dat do vlastní databáze se po několika hodinách ukončí

Vďaka - nejako som tie chybové sys pre teplotné snímače prehliadol, už som kód opravil na test sys[350] http://forum.merenienergie.cz//viewtopi … d=838#p838 a zdá sa, že všetko ide ok. Ak trvá ten prevod tak dlho, je jasné, že ak snímam dáta v minútových intervaloch, veľmi často sa dostanem do času, keď tento prevod prebieha.