1

Téma: http_get na web a na SDS

Funguje někomu v jednom programu odesílání hodnot na web a v jiný čas i odeslání hodnot do místní sítě na jiné SDS přes sys 141-147?
Mě to funguje vždy do jiného SDS, ale na web mi to odesílá vždy jen bez http_get do SDS.  Triviální věc, ale nedokážu to rozběhat.

2

Re: http_get na web a na SDS

Můžete poslat vzorek programu ?

Typicky je to způsobeno tím, že se volá více http_get rychle za sebou - je potřeba čekat na úspěšné dokončení prvního http_get a až pak spustit další atd.

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

3

Re: http_get na web a na SDS

Můj případ jsem popisoval v :
http://forum.merenienergie.cz//viewtopic.php?id=265

4

Re: http_get na web a na SDS

karel napsal:

Můj případ jsem popisoval v :
http://forum.merenienergie.cz//viewtopic.php?id=265

Dobrý den. Mám stejný problém a nedaří se mi ho vyřešit. Na jednu adresu odešlu bez problému a na druhou se mi vrátí sys75 s chybou 404. Poslal by někdo ukázku programu, jak by to mělo být ošetřeno, aby došlo k odeslání na obě adresy. Díky

5 Naposledy upravil: karel (2012-05-21 21:15:20)

Re: http_get na web a na SDS

Mám obavy, že Vám asi zde nikdo neporadí. Já to tady řeším už 7 týdnů, bohužel bez úspěchu. Pokud by se Vám to podařilo nějakým způsobem rozběhat, budu velmi vděčen za radu.

6

Re: http_get na web a na SDS

Já osobně jsem se s tím ještě nesetkal. Zkuste vyrobit nový program dle úryvků níže. Finta je v nepřetržitém běhu programu. Používám to pokud má sds dělat fůru jiných věcí.

odesli_data_na_web
{
 if (_web_tget==0) goto odesli_data_na_web_get;   //zadny timeout odeslat data
 //pred odeslanim dat zkontrolovat zda nebezi predchozi pozadavek
 if (sys[65]==0 && _web_tget>=sys[3]) return;    //jeste bezi, ale mam cas delam neco jineho
 if (_web_tget<sys[3]) goto odesli_data_na_web_chyba;    //uz neni cas - chyba
 if ((sys[65]!=1024) || (sys[75] != 200)) {
  goto odesli_data_na_web_chyba;
 } else {
  if (_web_data==1) { echo('1 odeslano na server, OK.'); }
  if (_web_data==2) { echo('2 odeslano na server, OK.'); }
  if (_web_data==3) { echo('3 odeslano na server, OK.'); }
  _web_data++;
  _web_tget=0;
  if (_web_data>3) {
   _web_timeout=sys[3]+90000;    //15minut timeout
   _web_data=0;                  //vynulovat
  }
  }
 }

label odesli_data_na_web_get:
 if (_web_data==1) {
  http_get(x,x,x,x,'x', ...);
 }
 if (_web_data==2) {
  http_get(x,x,x,x,'x', ...);
 }
 if (_web_data==3) {
  http_get(x,x,x,x,'x', ...);
 }
 _web_tget=sys[3]+4500;   //45sekund pro potvrzeni ze serveru
 return;

label odesli_data_na_web_chyba:
 echo('Chyba komunikace s www serverem, http: ', sys[75]);
 _web_timeout=sys[3]+90000;    //za 15minut to zkusim znovu
 _web_data=0;                  //vynulovat
 _web_tget=0;                  //vynulovat
}

nastav_web
{
 _web_timeout=0;   //zrovna se odesilaji data
 _web_tget=0;      //vynulovat timeout predchozich get pozadavku
 _web_data=1;      //vzdy od prvni funkce
}

init
{
 echo('Start programu');
 _web_tget=0;
 _web_timeout=1;  //odeslat data ihned
}

main
{
 //odeslani dat na web po 15minutach
 if (_web_timeout>0 && _web_timeout<sys[3]) nastav_web();
 if (_web_data>0) odesli_data_na_web();

 //tady muzete delat neco jineho...
 //nastav_rele();
}

7

Re: http_get na web a na SDS

Zdravím, po dlouhém hledání chyby při posílání požadavku http_GET na více serverů jsem se pustil se zkušeným kamarádem k monitorování posílaných paketů a zjistili jsme, že je problém v samotné funkci  HTTP_GET . Konkrétně jde o parametr HOST_NAME. Jde o to, že při dalším odesíláním http_GET se původní obsah paměti nesmaže, ale jen dojde k přepsání přes původní. Pokud budete posílat první požadavek na www.mujserver.cz a druhé odeslání bude na www.server.cz, pak skutečné HOST_NAME odeslané bude www.server.cz.cz. Je to celé zřejmě chyba firmware. Obejít to jde tak, že se vám podaří zapsat adresy požadavků se stejným počtem znaků a též aby byly funkční. V mém případě jsem to řešil u jedné adresy umazáním www. a přidáním  mezery nakonec.
příklad:
http_get(25,25,211,244,'mujserver.cz ' //tady je za cz mezera
http_get(25,25,211,244,'www.server.cz'
Ve Vašem případě Karle, pokud dobře počítám, by stačilo přidat na konec mezeru  za „cz“   'vyjaha.g6.cz '
Nejlepší řešení by byla oprava firmware. Dejte vědět , zda Vám to pomohlo.

8

Re: http_get na web a na SDS

fanda788 napsal:

Konkrétně jde o parametr HOST_NAME. Jde o to, že při dalším odesíláním http_GET se původní obsah paměti nesmaže, ale jen dojde k přepsání přes původní.

Díky moc za nahlášení chyby, je to opraveno v novém firmware.

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

9

Re: http_get na web a na SDS

Fandovi788:
Odzkoušel jsem to dle Vašeho návodu a samozřejmě vše funguje tak, jak jste napsal. Takže ještě jednou moc díky , bez Vás bych ten problém ani náhodou nedokázal vyřešit.

Pro adminy , včetně adamn.
10 týdnů jsem očekával od Vás odpověď, psal jsem jak na diskuzi, tak i osobní maily všem SDS adminům. Naprosto jste se na mě vyprdli a jen díky mým šedinám nevolím podstatně ostřejší výrazy.
(13.4. mail na adamn atd.)

Pokud je míněno SDS jako vývojové zařízení, kde početná komunita bastlířů dokončuje firmware k dokonalosti, tak prosím. Já jsem ale vždy všechna SDS kupoval jako hotové produkty, kde jsem očekával, jako je to běžné u konkurence, jakousi podporu.  V mém případě všechny dotazy byly ignorovány.

10

Re: http_get na web a na SDS

Ano pamatuju si vaše emaily, stále je mám. Do teď jsem na to neměl odpověď.

Doufám že opravený firmware to spraví (na WiKi je už opravený FW pro SDS MACRO, a SDS MICRO se chystá).

Každopádně připojuji omluvu.

Mrzí mne že jste naštván, ja bych na vašem místě byl ale ještě více, to bez debaty.
Prosím směřujte svou oprávněnou stížnost na výrobce zařízení, věřím že vás určitě nějak kompenzuje.

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

11

Re: http_get na web a na SDS

Omluvu příjmám, v minulosti jste  mi mnohokrát pomohl.
Vše ok.

12

Re: http_get na web a na SDS

adamn napsal:

Ano pamatuju si vaše emaily, stále je mám. Do teď jsem na to neměl odpověď.

Doufám že opravený firmware to spraví (na WiKi je už opravený FW pro SDS MACRO, a SDS MICRO se chystá).

Každopádně připojuji omluvu.

Mrzí mne že jste naštván, ja bych na vašem místě byl ale ještě více, to bez debaty.
Prosím směřujte svou oprávněnou stížnost na výrobce zařízení, věřím že vás určitě nějak kompenzuje.


Asi jsem včera narazil na tenýž problém, odeslání obsahu registru z jednoho na druhé zařízení mi zablokuje odesílání emailu přes smtp_send a asi i odesílání dat na portál (to jsem ještě neověřil). Mám nainstalovanou verzi FW ze začátku května. Nenašel jsem nový FW s novějším datem pro verzi Light, než je datum výše citovaného příspěvku.

13

Re: http_get na web a na SDS

Zkuste BETA firmware (je to možné stáhnout z jiného vlákna na tomto fóru).

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

14

Re: http_get na web a na SDS

Zkouším program od uživatele J@m
A vyskakují neustale různé chyby při kontrole kodu pro SDS
Nemá někdo nějakou radu? (mám SDSC_080313.exe)

var _web_tget;
var _web_data;
var _web_timeout;

odesli_data_na_web
{
 if (_web_tget==0) goto odesli_data_na_web_get;   //zadny timeout odeslat data
 //pred odeslanim dat zkontrolovat zda nebezi predchozi pozadavek
 if (sys[65]==0 && _web_tget>=sys[3]) return;    //jeste bezi, ale mam cas delam neco jineho
 if (_web_tget<sys[3]) goto odesli_data_na_web_chyba;    //uz neni cas - chyba
 if ((sys[65]!=1024) || (sys[75] != 200)) {
  goto odesli_data_na_web_chyba;
 } else {
  if (_web_data==1) { echo('1 odeslano na server, OK.'); }
  if (_web_data==2) { echo('2 odeslano na server, OK.'); }
  if (_web_data==3) { echo('3 odeslano na server, OK.'); }
  _web_data++;
  _web_tget=0;
  if (_web_data>3) {
   _web_timeout=sys[3]+90000;    //15minut timeout
   _web_data=0;                  //vynulovat
  }
  }
 }

label odesli_data_na_web_get:
 if (_web_data==1) {
  http_get(77,93,211,207,'eportal.merenienergie.cz','/datas0.php?ver=1&devid=', '*************', '&t0v1=', sys[493], '&t0v2=', sys[494], '&t0v3=', sys[495], '&t0v4=', sys[496], '&t0v5=', sys[497], '&t0v6=', sys[498], '&t0v7=', sys[499], '&t0v8=', sys[500], '&t1v1=', sys[526], '&t1v2=', sys[527], '&t1v3=', sys[528], '&t1v4=', sys[529], '&t1v5=', sys[530], '&t1v6=', sys[531], '&t1v7=', sys[532], '&t1v8=', sys[533], '&av1=', sys[592], '&av2=', sys[593], '&av3=', sys[594], '&av4=', sys[595], '&av5=', sys[596], '&av6=', sys[597], '&av7=', sys[598], '&av8=', sys[599], '&tt=', sys[459]);
 
 }
 if (_web_data==2) {
 
  http_get(77,93,211,207,'eportal.merenienergie.cz','/datatemp.php?ver=1&line=a&devid=', '************', '&t1=', sys[310], '&t2=', sys[311], '&t3=', sys[312], '&t4=', sys[313], '&t5=', sys[314], '&t6=', sys[315], '&t7=', sys[316], '&t8=', sys[317], '&t9=', sys[318], '&t10=', sys[319], '&t11=', sys[320], '&t12=', sys[321], '&t13=', sys[322], '&t14=', sys[323], '&t15=', sys[324], '&t16=', sys[325]);
 }
 if (_web_data==3) {
  http_get(88,86,113,152, '********','/datatxt.php?temp00=', sys[310], '&temp01=', sys[311], '&temp02=', sys[312], '&temp03=', sys[313], '&temp04=', sys[314], '&temp05=', sys[315]);
 }
 _web_tget=sys[3]+4500;   //45sekund pro potvrzeni ze serveru
 return;

label odesli_data_na_web_chyba:
 echo('Chyba komunikace s www serverem, http: ', sys[75]);
 _web_timeout=sys[3]+90000;    //za 15minut to zkusim znovu
 _web_data=0;                  //vynulovat
 _web_tget=0;                  //vynulovat
}

nastav_web
{
 _web_timeout=0;   //zrovna se odesilaji data
 _web_tget=0;      //vynulovat timeout predchozich get pozadavku
 _web_data=1;      //vzdy od prvni funkce
}

init
{
 echo('Start programu');
 _web_tget=0;
 _web_timeout=1;  //odeslat data ihned
}

main
{
 //odeslani dat na web po 15minutach
 if (_web_timeout>0 && _web_timeout<sys[3]) nastav_web();
 if (_web_data>0) odesli_data_na_web();

 //tady muzete delat neco jineho...
 //nastav_rele();
}
nějaké ukázky kódu zde: http://forum.merenienergie.cz//viewtopic.php?id=552

15

Re: http_get na web a na SDS

sidbin napsal:

Zkouším program od uživatele J@m
A vyskakují neustale různé chyby při kontrole kodu pro SDS
Nemá někdo nějakou radu? (mám SDSC_080313.exe)

Na řádku 23 je o jednu závorku navíc.

Každá levá závorka musí mít svou, odpovídající, pravou. Tady je jedna pravá navíc.

Překladač to i hlásí

26: coding error : new process about to be defined, but no "{" found !

Tím že je tam ta závorka navíc, tak si překladač (správně) myslí, že už je uzavřena funkce odesli_data_na_web.
Následně však najde label odesli_data_na_web_get:, namísto nějaké další funkce.
To je to, co říká jako chybu.

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