1

Téma: [vyřešeno] předávání dat

Zdravím chtěl jsem se zeptat jak pomocí toho programu:

var pr;

 main
 {
   label smycka:
     pr = sys[310];  
     pr = pr / 100;  
     http_get(IPa,IPb,IPc,IPd,'www.xyzyxyxyx.cz','/teplota.php?t1=',pr);
     wait(10000);
     goto smycka;
 }

načtu teplotu v souboru teplota.php. Předávání parametru mi bohužel nejde.
Chtěl bych na strance teplota.php vidět teplotu s prvního čidla děkuji mupy

(je to jen začátečnický pokus )

2

Re: [vyřešeno] předávání dat

Jde to poměrně snadno.

Potřebujete PHP skript na vašem serveru. Tomuto skriptu budete posílat data, a to tak, že jej zavoláte s parametrem.

Např.

www.mujserver.com/teplota.php?teplota=123

Tento skript uloží co dostane např. do souboru na serveru, nebo do databáze, nebo ... cokoliv co vás napadne.

Následně při vytváření webové stránky, která má obsahovat daný údaj (např. tu teplotu), spustíte proces, který získá aktuální poslední získanou hodnotu (např. přečte soubor na serveru, nebo údaj z databáze) a vloží ji do těla stránky.
Taky to lze udělat tak, že ten vzorový teplota.php přímo zapíše teplotu do .HTM souboru, a tento soubor pak do cílové stránky vložíte např. přes IFRAME atd. Možností je spousta.

Jeden vzor viz http://micro.merenienergie.cz/phpsend.htm , je tam i vzorový zdrojový kód pro PHP skript. Týká se to sice měření energie, ale není nic snazšího než změnit sys[XXX] na sys[310], že ano.


Každopádně, ten SDS-C program, který jste napsal, by měl fungovat - jen doplnit správný obsah do teplota.php.
Nevím jestli jste to špatně nepochopil, nejde tam totiž o načítání obsahu teplota.php, ale o spuštění skriptu v teplota.php, který musíte naprogramovat. Jestli to víte tak se omlouvám, ale pro jistotu to tady píšu...

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

3

Re: [vyřešeno] předávání dat

Dobrý den,
kouknul jsem na odkaz pokusně jsem do zařízení nahrál:

main
{
echo('Start programu - CAS: ',sys[4]);
http_get(192,168,0,5,'192.168.0.5','/data.php?devid=', 'd00?????', '&T0imp1=', sys[310], '&T1imp1=', sys[311], '&T0imp2=', sys[312], '&T1imp2=', sys[313], '&T0imp3=',
         sys[314], '&T1imp3=', sys[315],'&T0imp4=', sys[316],'&T1imp4=', sys[317]);

wait (10000);

http_get(192,168,0,2,'192.168.0.2','/data.php?devid=', 'd00?????', '&T0imp1=', sys[310], '&T1imp1=', sys[311], '&T0imp2=', sys[312], '&T1imp2=', sys[313], '&T0imp3=',
         sys[314], '&T1imp3=', sys[315],'&T0imp4=', sys[316],'&T1imp4=', sys[317]);

wait (100000);
}

pomocí programu SDS log parametry na IP192.168.0.5 načtu ale stále bojuju
s načtením hodnoty v data.php  mám tam pokusně toto:

<?php

$raw_udaje["T0imp4"] = htmlspecialchars($_GET['T0imp4'], ENT_QUOTES, "UTF-8");

//mam prijem nejakych udaju ?
if ($raw_udaje["T0imp4"])  

{ $plny_cas = date("H:i:s");

 $filename = "soubor.txt";
 $file=fopen($filename, "w");
  if ($file)
 {
   //zapisu 
         $textline = $plny_cas . ";" . $raw_udaje["T0imp4"] . "\n";
         $text=fwrite($file,$textline);
 }
 
 if ($file) { fclose($file); };

 //hotovo

};

?>

Do souboru mi to nezapisuje i když mám v linuxu danná práva. Chtěl bych vědět jak správně načtu proměnou T0imp4?


Díky moc

4

Re: [vyřešeno] předávání dat

Tak si zkuste zavolat nejprve svůj php skript a předat mu v řádku hodnoty např. muj.php?T0imp4=123
A podívejte se, jestli to zapsalo data do souboru.

5

Re: [vyřešeno] předávání dat

Díky moc za odpověď

zavolal jsem http://192.168.0.2/data.php?T0imp4=123

a do souboru se zapsalo 06:23:00;123

tak tohle by šlo ale nevím jak pokračovat dál aby se data načítala ze
zařízení?

6

Re: [vyřešeno] předávání dat

Já parametry volám takto :

http_get(109,123,223,75,'www.mujweb.cz','/prace2/stanice.php?date=',sys[7],'-',sys[6],'-',sys[5],'&time=',sys[8],':',sys[9],':',sys[10],'&teplota1=',tc,'.',td);

kde:

tc=t/100;
td=t % 100;

7

Re: [vyřešeno] předávání dat

Problém může být např. v tom, že webový server který používáte potřebuje nějaké specifické host name, tj. ten první textový údaj.

viz http_get(ip,ip,ip,ip,hostname,data)

Podívejte se na programy co posílají data na portál. Je tam totiž navíc (po zavolání http_get) i test na úspěšné nebo neúspěšné dokončení odesílání, plus je tam možno vypsat (do konzole) hodnotu chyby a hodnotu kódu vráceného webovým serverem.

Pokud se to nepodaří řešit, zkuste si na počítači, na kterém máte svůj webový server, spustit záchyt síťových paketů (např. pomocí WireShark) a podívejte se na celou komunikaci mezi zařízením a serverem.

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

8

Re: [vyřešeno] předávání dat

Díky moc adamn a Simi,
bylo to hostname pro ty co maj malo paměti tohle mi jde:

SDC program

main
{
http_get(192,168,0,2,'server','/data.php?T01=',sys[310],'&T02=',sys[311],'&T03=',sys[312]
         ,'&T04=',sys[313],'&T05=',sys[314],'&T06=',sys[315],'&T07=',sys[316],'&T08=',sys[317]
         ,'&T09=',sys[318],'&T10=',sys[319],'&T11=',sys[320],'&T12=',sys[321],'&T13=',sys[322]
         ,'&T14=',sys[323],'&T15=',sys[324],'&T16=',sys[325]);
sys[64] = 60;
label cekej:
 if (sys[64] != 0) goto cekej;
}

a soubor :data.php

<?php
//
$raw_udaje["T01"] = htmlspecialchars($_GET['T01'], ENT_QUOTES, "UTF-8");
$raw_udaje["T02"] = htmlspecialchars($_GET['T02'], ENT_QUOTES, "UTF-8");
$raw_udaje["T03"] = htmlspecialchars($_GET['T03'], ENT_QUOTES, "UTF-8");
$raw_udaje["T04"] = htmlspecialchars($_GET['T04'], ENT_QUOTES, "UTF-8");
$raw_udaje["T05"] = htmlspecialchars($_GET['T05'], ENT_QUOTES, "UTF-8");
$raw_udaje["T06"] = htmlspecialchars($_GET['T06'], ENT_QUOTES, "UTF-8");
$raw_udaje["T07"] = htmlspecialchars($_GET['T07'], ENT_QUOTES, "UTF-8");
$raw_udaje["T08"] = htmlspecialchars($_GET['T08'], ENT_QUOTES, "UTF-8");
$raw_udaje["T09"] = htmlspecialchars($_GET['T09'], ENT_QUOTES, "UTF-8");
$raw_udaje["T10"] = htmlspecialchars($_GET['T10'], ENT_QUOTES, "UTF-8");
$raw_udaje["T11"] = htmlspecialchars($_GET['T11'], ENT_QUOTES, "UTF-8");
$raw_udaje["T12"] = htmlspecialchars($_GET['T12'], ENT_QUOTES, "UTF-8");
$raw_udaje["T13"] = htmlspecialchars($_GET['T13'], ENT_QUOTES, "UTF-8");
$raw_udaje["T14"] = htmlspecialchars($_GET['T14'], ENT_QUOTES, "UTF-8");
$raw_udaje["T15"] = htmlspecialchars($_GET['T15'], ENT_QUOTES, "UTF-8");
$raw_udaje["T16"] = htmlspecialchars($_GET['T16'], ENT_QUOTES, "UTF-8");

//podminka prijmu udaju
if ($raw_udaje["T01"])  
{
      $plny_cas = date("j.n.Y H:i:s");
    $text= $plny_cas . ";" . ($raw_udaje["T01"]/100) . ";" . ($raw_udaje["T02"]/100) . ";" . ($raw_udaje["T03"]/100) . 
                       ";" . ($raw_udaje["T04"]/100) . ";" . ($raw_udaje["T05"]/100) . ";" . ($raw_udaje["T06"]/100) . 
                       ";" . ($raw_udaje["T07"]/100) . ";" . ($raw_udaje["T08"]/100) . ";" . ($raw_udaje["T09"]/100) . 
                       ";" . ($raw_udaje["T10"]/100) . ";" . ($raw_udaje["T11"]/100) . ";" . ($raw_udaje["T12"]/100) . 
                       ";" . ($raw_udaje["T13"]/100) . ";" . ($raw_udaje["T14"]/100) . ";" . ($raw_udaje["T15"]/100) . 
                       ";" . ($raw_udaje["T16"]/100) . ";" ."\n";
    $handle = fopen("teploty.txt", "a+");
    $načteno = fread($handle, 52);
    fwrite($handle,$text);
    fclose($handle);
};

?>

9 Naposledy upravil: cncp (2011-09-26 16:03:44)

Re: [vyřešeno] předávání dat

Můžeme si to ješte trochu shrnout? Rád bych posílal data na svůj server. Je umístěn na webzdarma.cz, který podporuje PHP skritpty.

Do SDS nahraji tedy tento program (viz příspěvek výše)

main
{
http_get(192,168,0,2,'server','/data.php?T01=',sys[310],'&T02=',sys[311],'&T03=',sys[312]
         ,'&T04=',sys[313],'&T05=',sys[314],'&T06=',sys[315],'&T07=',sys[316],'&T08=',sys[317]
         ,'&T09=',sys[318],'&T10=',sys[319],'&T11=',sys[320],'&T12=',sys[321],'&T13=',sys[322]
         ,'&T14=',sys[323],'&T15=',sys[324],'&T16=',sys[325]);
sys[64] = 60;
?>
label cekej:
if (sys[64] != 0) goto cekej;
}

Ta IP adresa je serveru na který budu posílat, název serveru také a data.php je stránka ve formátu PHP, kterou si vytvořím??






a toto nahraji kodu stránky data.PHP??



a soubor :data.php

<?php
//
$raw_udaje["T01"] = htmlspecialchars($_GET['T01'], ENT_QUOTES, "UTF-8");
$raw_udaje["T02"] = htmlspecialchars($_GET['T02'], ENT_QUOTES, "UTF-8");
$raw_udaje["T03"] = htmlspecialchars($_GET['T03'], ENT_QUOTES, "UTF-8");
$raw_udaje["T04"] = htmlspecialchars($_GET['T04'], ENT_QUOTES, "UTF-8");
$raw_udaje["T05"] = htmlspecialchars($_GET['T05'], ENT_QUOTES, "UTF-8");
$raw_udaje["T06"] = htmlspecialchars($_GET['T06'], ENT_QUOTES, "UTF-8");
$raw_udaje["T07"] = htmlspecialchars($_GET['T07'], ENT_QUOTES, "UTF-8");
$raw_udaje["T08"] = htmlspecialchars($_GET['T08'], ENT_QUOTES, "UTF-8");
$raw_udaje["T09"] = htmlspecialchars($_GET['T09'], ENT_QUOTES, "UTF-8");
$raw_udaje["T10"] = htmlspecialchars($_GET['T10'], ENT_QUOTES, "UTF-8");
$raw_udaje["T11"] = htmlspecialchars($_GET['T11'], ENT_QUOTES, "UTF-8");
$raw_udaje["T12"] = htmlspecialchars($_GET['T12'], ENT_QUOTES, "UTF-8");
$raw_udaje["T13"] = htmlspecialchars($_GET['T13'], ENT_QUOTES, "UTF-8");
$raw_udaje["T14"] = htmlspecialchars($_GET['T14'], ENT_QUOTES, "UTF-8");
$raw_udaje["T15"] = htmlspecialchars($_GET['T15'], ENT_QUOTES, "UTF-8");
$raw_udaje["T16"] = htmlspecialchars($_GET['T16'], ENT_QUOTES, "UTF-8");

//podminka prijmu udaju
if ($raw_udaje["T01"]) 
{
      $plny_cas = date("j.n.Y H:i:s");
    $text= $plny_cas . ";" . ($raw_udaje["T01"]/100) . ";" . ($raw_udaje["T02"]/100) . ";" . ($raw_udaje["T03"]/100) .
                       ";" . ($raw_udaje["T04"]/100) . ";" . ($raw_udaje["T05"]/100) . ";" . ($raw_udaje["T06"]/100) .
                       ";" . ($raw_udaje["T07"]/100) . ";" . ($raw_udaje["T08"]/100) . ";" . ($raw_udaje["T09"]/100) .
                       ";" . ($raw_udaje["T10"]/100) . ";" . ($raw_udaje["T11"]/100) . ";" . ($raw_udaje["T12"]/100) .
                       ";" . ($raw_udaje["T13"]/100) . ";" . ($raw_udaje["T14"]/100) . ";" . ($raw_udaje["T15"]/100) .
                       ";" . ($raw_udaje["T16"]/100) . ";" ."\n";
    $handle = fopen("teploty.txt", "a+");
    $načteno = fread($handle, 52);
    fwrite($handle,$text);
    fclose($handle);
}

tento zřejmě "zdrojový kod" si sám vytvoří soubor teploty.txt a do něj bude předávat informace a stránka si  z něj bude po každém zobrazení číst poslední data?

Je to tak správně??  Díky

Kdo nic nezkusí, nic nezíská.

10

Re: [vyřešeno] předávání dat

Tak jsem přišel na to, že pokud pošlu hodnotu přímo

www.mujserver.com/teplota.php?teplota=123

Tak se mi na stránce zobrazí

Ale pokud chci posílat data s SDS, tak stále hlásí chybu 302.

Účet mám hrdlickovi.wz.cz.
IP jejich serveru (kde jsou mé stránky ) je xx.xx.xxx.xxx

kde je chyba??

Kdo nic nezkusí, nic nezíská.

11

Re: [vyřešeno] předávání dat

Nebude to tím, že mám freehosting na webzdarma .cz a IP adresa xx.xx.xxx.xxx je jejich serveru a ne přímo má??

Kdo nic nezkusí, nic nezíská.

12

Re: [vyřešeno] předávání dat

Je potřeba zjistit, jaká má být hodnota "hostname", a tu správně vyplnit do http_get().

Protože na jedné IP může současně běžet i např. sto různých serverů, a to právě díky HTTP 1.1 specifikaci, kdy se tyto jednotlivé servery od sebe odliší právě hodnotou v "hostname".

Doporučuji zachytit si paket HTTP GET, který posílá prohlížeč když se v něm otevře ten fungující odkaz, a podle obsahu toho paketu pak vyplnit volání funkce http_get() v programu.


HTTP 302: http://en.wikipedia.org/wiki/HTTP_302

Zřejmě to je špatně vyplněno a proto dochází k přesměrování na nějakou chybovou stránku s informacemi, což si ale zařízení nepřečte...

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

13

Re: [vyřešeno] předávání dat

Tak jsem to po cca 14 dnech vyřešil :-)

musím napsat před můj web ještě slovo "localhost"

http_get(88,86,113,152,'localhost.hrdlickovi.wz.cz','/data.php......
Kdo nic nezkusí, nic nezíská.

14

Re: [vyřešeno] předávání dat

Poradí ještě někodo jak do programu výše zapsat, aby se hodnoty vypisovaly do sloupce a ne do řádku?
Myslím  každý teploměr do jednoho řádku. Nějak se mi to nedaří. Zřejmě někam zapsat "/n"
Lépe se mi to bude vyčítat na stránky

díky

Kdo nic nezkusí, nic nezíská.

15

Re: [vyřešeno] předávání dat

Posílám si na svůj web pomocí http_get... teploty každou minutu. ale rád bych je posílal ještě na jiný web ale s jinou periodou.
Jak napsat takový program??
díky

Kdo nic nezkusí, nic nezíská.

16

Re: [vyřešeno] předávání dat

na řadkování každé teploty zadej např: ($raw_udaje["T16"]/100) ."\n";
a na změnu času uprav sys[64] = 60; třeba na 600 každých 10 minut a pokračuj
upravou programu třeba

 http_get(x,x,x,x,'www.server1.cz','/teplota.php?t1=',pr);
 wait(10000);
 http_get(x,x,x,x,'www.server2.cz','/teplota.php?t1=',pr);

17

Re: [vyřešeno] předávání dat

Pokud chci posílat na jeden server s periodou 5 minut a na druhý třeba 10minut?

Dle Tvého programu to sice počká 10sec, pak pokračuje dál.
Ale stejně poté čeká na ten delší čas, který vrátí program na začátek.

Potřebuji aby se jedno odesílání  stále opakovalo po 5min. a jednou za 10 min. se odešle i druhé

Kdo nic nezkusí, nic nezíská.

18

Re: [vyřešeno] předávání dat

Podívejte se na jeden z programů pro odesílání dat na portál (viz wiki).
Je tam vyřešeno odesílání každých 15 minut. Stejným způsobem se dá realizovat odesílání co 5 minut a současně co 20 min atd.
Je to jen o tom nápadu.

Zítra možná napíšu celý příklad, teď už začíná večer.

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

19

Re: [vyřešeno] předávání dat

tak jsem to snad spáchal :-)

odešle každou minutu na jeden server a každou desátou minutu na druhý server.

var i;
main
{
again:
i=i+1;

http_get(192,168,0,2,'server','/data.php?T01=',sys[310],'&T02=',sys[311],'&T03=',sys[312]
         ,'&T04=',sys[313],'&T05=',sys[314],'&T06=',sys[315],'&T07=',sys[316],'&T08=',sys[317]
         ,'&T09=',sys[318],'&T10=',sys[319],'&T11=',sys[320],'&T12=',sys[321],'&T13=',sys[322]
         ,'&T14=',sys[323],'&T15=',sys[324],'&T16=',sys[325]);

echo('odeslano na server_1');
wait(60000);
if (i < 10) goto again;
if (i==10) goto next;

next:

http_get(77,93,211,207,'portal.merenienergie.cz','/data.php?devid=', 'xxxxxxxxxx', '&T0imp1=', sys[493]
         , '&T1imp1=', sys[526], '&T0imp2=', sys[494], '&T1imp2=', sys[527], '&T0imp3=', sys[495], '&T1imp3=', sys[528]);

echo('odeslano na server_2');

i=0;
}
Kdo nic nezkusí, nic nezíská.

20

Re: [vyřešeno] předávání dat

V tomto programu chybí test na úspěšnost odeslání dat. Z různých důvodů se to nemusí povést.
Proto je potřeba testovat sys[65] na konkrétní hodnoty, viz http://wiki.merenienergie.cz/index.php/OSI7_status_code a také viz oficiální programy pro odesílání dat na náš portál.

Co se časovaného spouštění funkcí týká, tak pak viz příklad http://forum.merenienergie.cz//viewtopic.php?id=130 .

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

21

Re: [vyřešeno] předávání dat

Máte někdo prosím nějaký PHP skript, který obnovuje zobrazená data na webu?

Posílám si data na stránku a zobrazuji, ale pokud mám stránku otevřenou, tak tam jsou stále stejné hodnoty.
Musím stránku aktualizovat.
Je něco takového??

Kdo nic nezkusí, nic nezíská.

22

Re: [vyřešeno] předávání dat

Použijte AJAX (javascript, který si načítá hodnoty, např. generované jiným PHP skriptem, a pak přepisuje obsah stránky v prohlížeči).

Nebo nejsurovější metoda: meta-refresh stránky.

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

23

Re: [vyřešeno] předávání dat

Je lepší si data na svůj server vyčítat pomocí PHP skriptu přímo z IP.XML.XML , nebo je lepší posílat data na server a tam je až pomocí PHP zobrazovat??

Třeba kvůli bezpečnosti?... nevím.
Díky

Kdo nic nezkusí, nic nezíská.

24

Re: [vyřešeno] předávání dat

Zdravím,
poradí někdo kde najít nějaký vzor programu SDS-C na vyčtení hodnot z jiného SDS. Mám dvě zařízení a potřebuji se z jednoho se dotazovat do druhého zařízení na hodnotu sys(xxx)   

díky

25

Re: [vyřešeno] předávání dat

Řeším stejný problém a nějak se mi nedaří se dobrat k funkčnímu programu. Také bych přivítal nějakou nápovědu, vzorovou ukázku.

Děkuji