1

Téma: http_get více hodnot

zdravím,
máte někdo nějak vyřešeno v SDS-C to, že zavoláte nějaký http zdroj a z toho načtete více hodnot do více proměných?
Idální by bylo něco jako funkce explode. Jenom, že by nemusel něco takového zbytečně psát. Ideálně třeba, že by to načetlo JSON pole dat. Například by bylo pole jako níže a podle toho se přepsaly proměnné. Zatím mám vyřešeno, že co načtení jedné proměnné to jeden http požadavek.

{
   ram[150] : 23
   ram[214] : 75
}

Díky Ruda

2

Re: http_get více hodnot

Nepomůže třeba toto: sys[77], sys[78]
Viz http://wiki.merenienergie.cz/index.php/Sdsc_sysp#OSI7_funkce

3

Re: http_get více hodnot

Nevím asi to nechápu, ale popisu na konkrétním případe.
Mam 10 místnosti v každé teplotní čidlo (sys[320-330]). Pomoci podmínky rozhodují jestli se ma topení zapnout nebo ne ( uvazuju primotopy na elektřinu ) na základě porovnání teploty z čidla a požadované teploty v ram[320-330].

Jde mi o to jak dostat požadované teploty do časti ram pomoci jednoho http requestu z databaze a nemusel použit requestu vice.

4

Re: http_get více hodnot

Poslat http_get na stránku s daty (napr. teploty.php). Zde se načtou teploty z databáze a vrátí se do sds pomocí echo().

$t1=$data[t1]*100;  //desetiny na int
$t2=$data[t2]*100;
$t3=$data[t3]*100;

echo($t1.$t2.$t3);

Tím se vrátí do sds něco jako "220023002150". Samozřejmě předpokládám teploty ve formátu ##.##. Jinak by se to ještě muselo poladit aby teplota byla vždy jako int(4).

Text "220023002150" se dostane do ram[] případně dle nastavení do text[]. Odtud už jen vytahat data vždy po 4 bajtech.

5 Naposledy upravil: ruda (2013-12-18 00:22:40)

Re: http_get více hodnot

Tak přesně takto jsem myslel, že to bude fungovat. Ale problém je následující:
ze serveru dostanu tuto odpoved (vzdy kazde topeni po 4 cislech):

http://192.168.1.252/api/private/getTempRequested.php

0022002200220022002200220022

ale z SDS vypadne toto:

http://192.168.1.250/get_ram[1]?rn=50

48|48|50|50|48|48|50|50|48|48|50|50|48|48|50|50|48|48|50|50|48|48|50|50|48|48|50|50|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0

ale ted nevim jak z tohoto dostat do promennych v ram[xxx] cislo ve tvaru 22 a potom bych ho uz jenom vynasobil 100 a bylo by hotovo

dik Ruda

6

Re: http_get více hodnot

To co z SDS "vypadne" je spravne.

Potrebujete nastavit funkci http_get() tak, aby ukládala přijaté data do pole text[], nikoliv do pole ram[]. Viz sys[78].

Takže uložit přijaté data do text[] a odtud pomoci atoi() převádět po 4 polích na vlastní proměnné a ty pak zpracovat.

Jiné příklady byly uvedené v tomto fóru, stačí pohledat ("sdscep").

7

Re: http_get více hodnot

http://wiki.merenienergie.cz/index.php/Sdsc_sysp#OSI7_funkce

Ukazuje prázdný dokument, děkuji.

8

Re: http_get více hodnot

Došlo k rozšíření dokumentace, funkce jsou zde:
https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS-C:_sdsc_sysf
a popis k HTTP klientovi pak dále zde:
https://wiki.merenienergie.cz/subdom/wiki/index.php?title=HTTP_Klient:_Prvn%C3%AD_Produktov%C3%A1_%C5%98ada

Tyto věci se dají dohledat na wiki SDS, na hlavní stránce: kategorie SDS-C - odkaz "systémové funkce".

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