1

Téma: [vyřešeno] uložení hodnot na web a do DB

Preji pekny den. Bohuzel nejsem vubec nadany v programovani takze po precteni fora jsem dospel pouze k jednoduchemu nahravani souboru pomoci SDS-C do SDS Micro light.
Nasel by se nekdo kdo by mne pomohl
napsat program ktery by posilal
napr vsechny hodnoty z 192.168.1.100/xml.xml na server  www.xxx.cz
dale aby tyto hodnoty byly ulozeny do DB napr. na db.xxx.cz

kamarad by mne napsal jednoduche stranky na zobrazovani pozadovanych hodnot na webu.
pokousel jsem se upravit
data.php s prejmenovanim na teplota.php ktere jsem umistil na mem servru

<?php

//prevezmeme informace co poslal SDS MICRO pres URL od HTTP GET
//samozrejme pri zmene SDS-C programu lze posilat jine udaje, nebo vetsi pocet, atd.

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

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


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

 //soubor.txt uz by mel existovat, a mit spravne nastavena prava (chmod - at muze PHP zapisovat !!!)

 $filename = "soubor.txt";

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

 //hotovo

};

?>

do SDS-MICRO jsem nahral

// program pro odesilani udaju na PHP skript

//nezapomente spravne nastavit, NA DVOU MISTECH v tomto programu,
//jmeno vaseho serveru (zde jako priklad> www.server.cz)

odesli_data
{

 //provedeme DNS překlad
 dns_resolv('334.hylena.cz');
 
 //pockam az probehne funkce do konce
label cekam_na_dns:
 if (sys[65] == 0) goto cekam_na_dns; 
 
 //otestujeme úspěch DNS překladu
 if (sys[65] == 512) goto mam_dns_preklad;  
 
 //neuspech
 return;

label mam_dns_preklad: 
 //mam DNS preklad - pouziju to !  

 //samozrejme nasledujici radek je prikladem, ktery lze libovolne upravit
 //tento priklad provede nasledujici URL
 // http://www.server.cz/data.php?impulsy=1234&vykon=5678

 http_get(sys[66],sys[67],sys[68],sys[69], '334.hylena.cz','/data.php?impulsy=', sys[310]);
 
 //pockam az probehne funkce do konce
label cekam_na_http:
 if (sys[65] == 0) goto cekam_na_http; 
 
 //pokud server má problém:
 if ((sys[65] != 1024)||(sys[75] != 200)) goto chyba_www_serveru;
 
 //neni problem, takze ok - napiseme na konzoli
 echo('OK.');
 
 //vse hotovo
 return;  
 
label preskocit_protoze_chyba_DNS:
 //obsluha chyby - např. provést chybové hlášení na konzoli
 
 echo('DNS err ', sys[65]);
 
 return;  
 
label chyba_www_serveru:
 //obsluha chyby - www server
 
 echo('http err ', sys[75]);
 
  
}  

main
{
  echo('start');

label opakovat:  

 odesli_data();  

 //pockame minutu 60 sekund (lze zde upravit)
 sys[64] = 60; 
label cekej:  
 if (sys[64] != 0) goto cekej;  

 //znovu  
 goto opakovat;  

}

pri zadani
http://334.hylena.cz/teplota.php
se mne zobrazi jen prazdna stranka

predem dekuji

2

Re: [vyřešeno] uložení hodnot na web a do DB

ppek napsal:

pri zadani
http://334.hylena.cz/teplota.php
se mne zobrazi jen prazdna stranka

To je správně - podívejte se na zdrojový kód skriptu teplota.php který jste tady uvedl.

Musíte si uvědomit jak to celé vůbec funguje.

Tento skript dělá jen jedinou věc - převezme parametry z URL se kterým byl zavolán (to provádí ten SDS-C program v zařízení SDS) a uloží data do souboru.

Zavolal jsem skript s těmito parametry:
http://334.hylena.cz/teplota.php?impulsy=1&vykon=2
a výsledkem je:
http://334.hylena.cz/soubor.txt

Takže by to mělo fungovat - ale pozor, v SDS-C programu máte zapsán odkaz na data.php, ale váš skript se jmenuje teplota.php , a proto vám to zřejmě nefunguje.

Co s údaji budete dále dělat, to nevím. Příkladem může být webový teploměr, který využívá prakticky stejných postupů jaké jsou popsány v tomto vláknu - podívejte se např. na wifi-net.org (úplně dole na úvodní stránce), tam jsou teplotní informace vloženy do stránky při jejím sestavení při každém požadavku na její zobrazení (jednoduše pomocí php skriptu který skládá stránku, přičemž čte hodnoty z např. toho soubor.txt).

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] uložení hodnot na web a do DB

také bych chtěl na svém webu (www.xxx.cz) , umístit aktuální hodnoty třeba teploty na chaloupce, bud přes soubor txt a nebo jsem si myslel že by šlo použít funkce ve scriptu : (jako je má použitý v user.htm ) akorát s odkazem na přesnou IP adresu s portem viz :
...
    reqTemp.open("GET", "http://46.13.196.27:3000/get_sys[310]?rn=6&rand="+Math.random(), true);
...
jde to tak a nebo né ? nebo to lze použít pouze na SDS user.htm  ?

s SDS - Micro začínám, ale učím se

4

Re: [vyřešeno] uložení hodnot na web a do DB

Já to mám řešeno takto. Již jsem to tu někde psal.
Vyčítání aktuálních hodnot. 

př:  teploměr 3

<?php
$obsah=file_get_contents("http://192.168.3.1/xml.xml");
$xml = new SimpleXMLElement($obsah);
$result = $xml->xpath("/sds/snmp");
echo "<p>".$result[0]->temp_3."</p>";
?>

Kdo nic nezkusí, nic nezíská.

5

Re: [vyřešeno] uložení hodnot na web a do DB

asi je potřebné něco nastavit k tomu ještě někde jinde, jelikož když to dám do souboru temp.php nefunguje mě to, teda jedná se mě o vzdálenou stránku někde jinde šlo by poslat celý zápis ? třeba na mail . ??
Ale ještě jsem četl tady ohledně toho "GET" s IP adresou a někomu to funguje mě ne :-(

s SDS - Micro začínám, ale učím se

6

Re: [vyřešeno] uložení hodnot na web a do DB

...
    reqTemp.open("GET", "http://1.2.3.4:3000/get_sys[310]?rn=6&rand="+Math.random(), true);
...

zeptám ještě jednou, jde tento řádek použít, když bych nechtěl využít http_get(), bude ten příkaz natahovat udaje do jiné stránky, samozřejmně že postup je dále jasný za pomocí split a zobrazení na webu. Prostě mě to připadá jednodušší ale jestli to jde nevím , děkuji za další tipy.

s SDS - Micro začínám, ale učím se

7

Re: [vyřešeno] uložení hodnot na web a do DB

co si pamatuju tak toto nebude fungovat kvůli njkým bezpečnostním omezením. Zkusím to pohledat. Už se to tu řešilo. Adamn bude vědět i odkaz na obecnou wiki.

8

Re: [vyřešeno] uložení hodnot na web a do DB

zde je to SOP http://en.wikipedia.org/wiki/Same_origin_policy
tady se to řešilo http://forum.merenienergie.cz//viewtopic.php?id=99

9

Re: [vyřešeno] uložení hodnot na web a do DB

díky ... udělám to jinak, budu posílat přes http_get data na server k sobě do MySql  do databaze a vždy před zapsáním staré data smažu a aktuální se vloží ve scriptu v SDS . To si myslím bude asi nejjednoduší :-) a potom je zobrazím a nebo je tam nechám a budu zobrazovat poslední.

s SDS - Micro začínám, ale učím se

10 Naposledy upravil: roman_rja (2012-10-17 18:06:01)

Re: [vyřešeno] uložení hodnot na web a do DB

Mám jeden dotaz na někoho kdo dělá v PHP , potřeboval bych parametry funkce echo spojené s tabulkou, o co se mě jedná, už si sosám na svůj web data přes http_get se zápisem do Mysql , ale nenašel jsem jak zadat parametry vykopíroval jsem někde tady tento script, kde ukazuji poslední záznam , to potom vypisuji v Joomle na webu, ale není to hezké :-(

$co="SELECT * FROM outbox ORDER BY id desc LIMIT 0,1;";
$navrat=mysql_db_query("xxxxx", $co, $spojeni);
echo("<table border=\"0\">");
for ($i=0;$i<mysql_num_fields($navrat); $i++){
echo("<td>".mysql_field_name($navrat, $i)."</td>");
}
while (list($id, $number) = mysql_fetch_row($navrat)){
echo("<tr><td>$id</td><td>$number</td></tr>");
}
echo("</table>");

ale nevím jak změnit třeba v tabulce velikost písma zobrazené proměnné nebo barvu a tak , jediné co se mě povedlo odstranit tlustý rámeček :-) . Co bych potřeboval je např. Tabulka - popis a podtím velkým písmem udaje . Třeba je také řešení využít tady z fora odkaz na eportal, ale nevím jestli třeba jde jen vypsat aktuální hodnoty bez grafu toto :

Asi takle bych si to představoval bud z eportalu a nebo v php scriptu .

                         Hlavni mistnost        Venku    Zabezpecovacka         Podkroví    Technická místnost
Aktuální hodnoty    11.81       13.06          10.18                   11.43                   10.68

Ted řeším možná dvě věci najednou ale určitě je řešení třeba jednoduší , tak mě neukamenujte , líbilo by se mě z eprotalu to co je vždy na konci stránky ten souhrnný výpis s tím "info" .
Můžeme někdo s  tím pomoci ?

s SDS - Micro začínám, ale učím se

11

Re: [vyřešeno] uložení hodnot na web a do DB

Surové php na výpis hodnot do tabulky. Ještě doplň css dle potřeby.

  <table border=1 cellspacing=0 cellpadding=5> 
   <tr nowrap>
    <td class="tdnadpis">pol1</td> 
    <td class="tdnadpis">pol2</td> 
    <td class="tdnadpis">pol3</td> 
   <tr>

<?php
  $sel="select pol1, pol2, pol3 from data order by id desc";
  $vyber=mysql_query($sel)or die(mysql_error());
  while($zaznam = Mysql_fetch_array($vyber)):
   echo "<tr nowrap>";
   echo "<td><span class=data>";
   echo $zaznam["pol1"];
   echo "</span></td>\n";
   echo "<td><span class=data>";
   echo $zaznam["pol2"];
   echo "</span></td>\n";
   echo "<td><span class=data>";
   echo $zaznam["pol3"];
   echo "</span></td>\n";
   echo "</tr>\n";
  endwhile;
?>

  </table> 

12

Re: [vyřešeno] uložení hodnot na web a do DB

vyzkouším díky

s SDS - Micro začínám, ale učím se

13

Re: [vyřešeno] uložení hodnot na web a do DB

Myslím, že kdo není nijak zběhlý v html, tak může použít nějaký editor.
Já osobně používám WYSIWYG Web Builder. Je poměrně rozšířený a je v češtině.
V něm nějaká tabulka, kterou si nakreslíš  a dosazení PHP skriptu do textu  není vůbec žádný problém.

Kdo nic nezkusí, nic nezíská.

14

Re: [vyřešeno] uložení hodnot na web a do DB

Natabulkovat to je docela makačka :-) Mrkni na můj web www.tiborteam.eu/meteo
mysql_query nepoužívej přímo v daném souboru ale volej na začátku z jiného souboru.
Příkldad:

index.php

<html>
<head>
bla bla bla ....
</head>
<body)>

<?php
include "sqlday.php"; šahám po souboru který vytáhne denní data
bla bla bla 
echo $nejakedata;

..................................
a v sqlday.php mám tohle:

<?php $_SERVER["PHP_SELF"]?>
<?php
include "open_db.php";

$aktual = mysql_query("SELECT rec_date, rec_time, in_temp, out_temp, in_humid, out_humid, rel_pressure,
          dewpoint, wind_chill,
          windspeed, wind_dir, wind_dir0,
          tendency, forecast,
          rain_1h, rain_24h, rain_total
          FROM `w_xmldata` ORDER BY `timestamp` DESC limit 0,1");


$zaznam0=MySQL_Fetch_Array($aktual);
$rec_date = $zaznam0["rec_date"];
$rec_time = $zaznam0["rec_time"];

$intemp=$zaznam0["in_temp"];
$inhumid = $zaznam0["in_humid"];  // vlhkost

$outtemp=$zaznam0["out_temp"];
$outhumid = $zaznam0["out_humid"]; // vlhkost
$rosnybod =  $zaznam0["dewpoint"]; // rosny bod
$efetemp =  $zaznam0["wind_chill"]; // efektivni - pocitova teplota

$relpress = $zaznam0["rel_pressure"]; // tlak
$tendence = $zaznam0["tendency"]; // tendence
$predpoved = $zaznam0["forecast"]; // predpoved

// *** WIND ***  ms / 1000 * 3600 = km/h
$windd0 = $zaznam0["wind_dir0"]; // smer vetru ve stupnich
$windd1 = $zaznam0["wind_dir"]; // smer vetru text
$winds1 = $zaznam0["windspeed"]; // sila vetru m/s
$winds2 = $winds1/1000*3600; // sila vetru km/h

$srazky1h = $zaznam0["rain_1h"]; // srazky za posledni 1 h 
$srazky24h = $zaznam0["rain_24h"]; // srazky za posledni 24 h
$srazky356 = $zaznam0["rain_total"]; // srazky celkem

$dayd = $zaznam0["rec_date"]; // dnesni den
      
include "close_db.php";


?> 

Příklad je z meteostanice ale funkce je stejná ....
Tím docílíš toho že budeš mít trošku pořádek v datech ....
pak můžu udělat různé sql_neco.php a na dané stránce jenom vložím include a sql_neco ....

Nevím jestli je to srozumetelné ... raději to ani nebudu po sobě číst :-))

SDS micro DIN - firmware 8.7.2014, SDS micro DIN - firmware Beta xx.x.2014
SDS nováček :-) Správce sítě, programátor, kutil .... :-)

15

Re: [vyřešeno] uložení hodnot na web a do DB

TiborTeam napsal:

Natabulkovat to je docela makačka :-) Mrkni na můj web www.tiborteam.eu/meteo

Mohu se dotázat, zda existuje nějak důvod k tomu, proč místo

"SELECT rec_date, rec_time, in_temp, out_temp, in_humid, out_humid, rel_pressure,
          dewpoint, wind_chill,
          windspeed, wind_dir, wind_dir0,
          tendency, forecast,
          rain_1h, rain_24h, rain_total ...

nepoužít "SELECT *  ...

L.

16

Re: [vyřešeno] uložení hodnot na web a do DB

Moc díky všem , paráda pohraju si stím, ale také se mě potvrdilo že je lepší vytáhnout data do databaze jedním .php a dalším .php ho ukazovat , v tuto chvíli si hraju s nastavením písma a barev, kde v mém okně na webu (www.rja.cz) se bude ukazovat aktuální teplota . V podstatě jenom dvě teploty vnitřní a venkovní, následně potom již není nic jednodušší si přidat cokoli, ale jak říkám zatím díky .

s SDS - Micro začínám, ale učím se

17

Re: [vyřešeno] uložení hodnot na web a do DB

Tady jeden PHP skript na vyčítání z databáze. Vyčte Ti posledních 20 záznamů z databáze.
Vhodné třeba pro graf.

<?
     $spojeni=mysql_connect("localhost","xxxx","xxxx");
    $co="SELECT * FROM data_1 ORDER BY id DESC LIMIT 20;";
    $navrat=mysql_db_query("energie", $co, $spojeni);
    for ($i=1;$i<mysql_num_fields($navrat); $i++);
    while (list($T1) = mysql_fetch_row($navrat)){
    echo("$T1 <br>");
    }
    ?>
Kdo nic nezkusí, nic nezíská.

18 Naposledy upravil: roman_rja (2012-10-20 21:41:24)

Re: [vyřešeno] uložení hodnot na web a do DB

už mě to frčí, díky díky , ted zase bojuji (nebo bojuji :-)  ) nebojuji ale nastavuji větší písmo a barvy a tak, ted si už jenom hraju ... :-) asi to udělám jako styl css to bude lepší.

Mrkni na můj web www.tiborteam.eu/meteo  .....
To Meteo se mě líbí :......:-) pěkné

s SDS - Micro začínám, ale učím se

19

Re: [vyřešeno] uložení hodnot na web a do DB

LeosL napsal:
TiborTeam napsal:

Natabulkovat to je docela makačka :-) Mrkni na můj web www.tiborteam.eu/meteo

Mohu se dotázat, zda existuje nějak důvod k tomu, proč místo

"SELECT rec_date, rec_time, in_temp, out_temp, in_humid, out_humid, rel_pressure,
          dewpoint, wind_chill,
          windspeed, wind_dir, wind_dir0,
          tendency, forecast,
          rain_1h, rain_24h, rain_total ...

nepoužít "SELECT *  ...

L.

Ani nevím :-) Je tam toho 2x tolik a já vybírám vždy jenom to co potřebuji :-)

SDS micro DIN - firmware 8.7.2014, SDS micro DIN - firmware Beta xx.x.2014
SDS nováček :-) Správce sítě, programátor, kutil .... :-)

20

Re: [vyřešeno] uložení hodnot na web a do DB

Paráda ....
chtěl bych poděkovat za spolupráci s p.Nešvarou, zprovoznili jsme dle scriptu php, vyčítání dat přes funkci file_get_contents, chyba nakonec byla hostingu, no nebyla to chyba, ale nepovolena funkce url_fopen, stačilo naspat a povolit a už to frčí, ted vyčítání dat funhuje uplně perfektně.
Ještě jednou díky moc.

No a ted budu pokračovat ve vizualizaci, teploměr bych chtěl udělat ze starého mob. telefonu s dotykovým displayem a Wi-Fi ...

s SDS - Micro začínám, ale učím se