Uživatelské nástroje

Nástroje pro tento web


openfvelog:start

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
openfvelog:start [2011/11/03 00:32] – [Odeslání dat na server] mypower_czopenfvelog:start [2013/09/22 16:20] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 ====== OpenFVELog ====== ====== OpenFVELog ======
  
-OpenFVELog je jednoduchý protokol využívající HTTP pro přenos měřených dat z FVE ve formátu XML. XML data jsou serializována pomocí PHP funkce serialize, komprimována pomocí gzcompress, výsledná binární data jsou kódována pomocí base64_encode a odeslána metodou POST na server jako formulářové pole HTML formuláře s názvem "data"+Pokud chcete zasílat data z vaší FVE na server [[http://mypower.cz#log|MyPower.CZ]], ozvěte se prosím na [[http://forum.mypower.cz/viewtopic.php?f=24&t=285|diskuzním fóru]], dohodneme detaily, měřené veličiny, zabezpečení přenosu dat, atd. 
 + 
 +===== Hotové aplikace ===== 
 + 
 +Hotové aplikace umožňující přenos dat na MyPower.CZ 
 + 
 +  * [[http://forum.mypower.cz/viewtopic.php?f=58&t=761|Aplikace pro vizualizaci dat z MorningStar TriStar]] (Windows, Linux [wine]) 
 +  * [[http://forum.mypower.cz/viewtopic.php?t=885&p=11683|Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem]] (Linux, Unix, Raspbian, *NIX) 
 +  * [[http://microlog.mypower.cz|OpenSource MicroLog2 pro Arduino]] (Arduino) 
 + 
 +===== OpenFVELog/GET ===== 
 + 
 +OpenFVELog/GET je protokol využívající jednoduchý HTTP dotaz pro zaslání měřených dat z FVE. 
 + 
 +Příklad HTTP dotazu na server: 
 + 
 +  http://log.mypower.cz/?unix=1320171659&u_in=0.04&i_in=0&u_bat=25.72&u_tgt=0&p_bat=0&e_dly=3120 
 + 
 +  * **unix** - unixtimestamp - čas měření 
 +  * **u_in**, **i_in**, **u_bat**, **u_tgt**, **p_bat**, **e_dly** - měřené veličiny FVE systému - mohou být odlišné pro různé FVE. 
 + 
 +Jiný příklad HTTP dotazu na server: 
 + 
 +  http://log.mypower.cz/?unix=1320192323&fv1=20.78&fv2=23.33&u16v=15.86&bat2=13.82&i1=4.3&i2=6.22&i3=2.12&i3=0.78&i4=1.35&i5=2.27 
 + 
 +26.11.2012 byl [[http://forum.mypower.cz/viewtopic.php?t=285&p=11681#p11675|přidán]] parametr **fveid** 
 + 
 +  * **fveid** - identifikace FVE tam kde to není možno detekovat podle statické IP adresy, nebo je IP adresa společná pro více měření 
 + 
 +Příklad HTTP dotazu na server s parametrerm fveid: 
 + 
 +  http://log.mypower.cz/?fveid=VASEFVE&unix=1320192323&fv1=20.78&fv2=23.33&u16v=15.86&bat2=13.82&i1=4.3&i2=6.22&i3=2.12&i3=0.78&i4=1.35&i5=2.27 
 + 
 +===== OpenFVELog/XML ===== 
 + 
 +OpenFVELog/XML je jednoduchý protokol využívající HTTP pro přenos měřených dat z FVE ve formátu XML. XML data jsou serializována pomocí PHP funkce serialize, komprimována pomocí gzcompress, výsledná binární data jsou kódována pomocí base64_encode a odeslána metodou POST na server jako formulářové pole HTML formuláře s názvem "data". V zaslaných datech se může vyskytovat i pole "src", které obsahuje dohodnutý název FVE z důvodů odlišení jednotlivých FVE, jejichž měření přichází ze stejné IP adresy.
  
   $data=base64_encode(gzcompress(serialize($xmldata)))   $data=base64_encode(gzcompress(serialize($xmldata)))
Řádek 7: Řádek 42:
 Ze serveru se vrátí krátká zpráva obsahující výsledek HTTP dotazu. Na tomto jednoduchém komunikačním protokolu je realizováno například měření [[http://forum.mypower.cz/viewtopic.php?t=157&p=1640|FVE Maršov]] na úvodní straně webu MyPower.CZ. Data jsou na serveru archivována v MySQL databázi pro generování různých statistických výstupů a monitoringu FVE. Ze serveru se vrátí krátká zpráva obsahující výsledek HTTP dotazu. Na tomto jednoduchém komunikačním protokolu je realizováno například měření [[http://forum.mypower.cz/viewtopic.php?t=157&p=1640|FVE Maršov]] na úvodní straně webu MyPower.CZ. Data jsou na serveru archivována v MySQL databázi pro generování různých statistických výstupů a monitoringu FVE.
  
-===== Odeslání dat na server =====+==== Odeslání dat na server ====
  
   * URL: **http://log.mypower.cz**   * URL: **http://log.mypower.cz**
Řádek 14: Řádek 49:
   * Form variable name: **src** - dohodnutý název FVE   * Form variable name: **src** - dohodnutý název FVE
  
-Pokud chcete zasílat data z vaší FVE na server MyPower.CZ, ozvěte se prosím na fóru, dohodneme detaily, měřené veličiny, zabezpečení přenosu dat, atd. +==== Příklad zasílaných dat ($xmldata) ====
- +
-===== Příklad zasílaných dat ($xmldata) =====+
  
 <file> <file>
Řádek 68: Řádek 101:
   * 904 Unknown data - data se nepodařilo dekodovat   * 904 Unknown data - data se nepodařilo dekodovat
   * 905 XML parse error - chyba pri parsovani XML - problem s formatem XML dat   * 905 XML parse error - chyba pri parsovani XML - problem s formatem XML dat
-  * 906 Cannot get FVE name - nelze zjistit nazev FVE dle IP+  * 906 Cannot detect FVE name/type. IP AAA.BBB.CCC.DDD - nelze detekovat nazev FVE nebo jeji typ
   * 907 Values not found - nenalezeno pole "values"   * 907 Values not found - nenalezeno pole "values"
   * 908 Cannot get time from XML - round($xmldata["time"]["unix"]) == 0   * 908 Cannot get time from XML - round($xmldata["time"]["unix"]) == 0
   * 909 SQL error - Chyba při zápisu do databáze   * 909 SQL error - Chyba při zápisu do databáze
   * 910 FVE name not known - neznámý název FVE (u systémů které posílají i název FVE)   * 910 FVE name not known - neznámý název FVE (u systémů které posílají i název FVE)
 +
 +===== Buffering =====
 +
 +S ohledem na možné výpadky sítě, či problémy ať už na straně serveru či na straně klienta (měřené FVE) je doporučováno měření rozdělit na dvě různé funkce. První funkcí je samotné měření, tedy odečítání dat z čidel FVE. Data je doporučeno ukládat do datového úložiště, ať již se jedná o souborový systém, nebo o databázi, záleží pouze na vašich preferencích. Při měření FVE Napajedla je využíváno techniky ukládání serializovaných dat do souborů, jejichž název je unixtimestamp (čas), kvůli možnosti setřídění a přípona ".dat".
 +
 +Příklad scriptu zajišťujícího odečítání dat:
 +<file>
 +#!/usr/bin/php
 +<?
 +
 +function GetValuesFromFVE() {
 +$data=array();
 +// ... kód pro načtení dat z čidel FVE do asociativního pole uloženého do proměnné $data ...
 +$data["unix"]=time();
 +return ($data);
 +}
 +
 +$data=GetValuesFromFVE();
 +file_put_contents("/path/to/datafiles/".$data["unix"].".dat",serialize($data));
 +
 +?>
 +</file>
 +
 +Výše uvedený script je spouštěn jako naplánovaná úloha (například pomocí programu cron), u FVE Napajedla konkrétně jednou za 2 minuty. Tímto způsobem máme zajištěno vytváření úložiště s měřenými daty.
 +
 +Dalším scriptem je script, který nezávisle na prvním scriptu zajistí přesun jednotlivých měření na server a jejich smazání po úspěšném přenosu, aby se data nepřenášela vícekrát. Smazání souboru je provedeno pouze pokud server po zaslání dat vráti návratovou hodnotu OK. Pokud nikoliv, script se ukončí a příští spuštění zajistí nový pokus o odeslání posledního vzorku měření, který zaručeně na serveru ještě není uložen.
 +
 +<file>
 +#!/usr/bin/php
 +<?
 +
 +clearstatcache();
 +$files=glob("/path/to/datafiles/*.dat");
 +sort($files);
 +reset($files);
 +while ($cc=each($files))
 +  {
 +  clearstatcache();
 +  $filename=$cc["value"];
 +  if (!is_file($filename))
 +    die("Pravděpodobně běžím vícekrát :(").
 +  $content=file_get_contents($filename);
 +  $result=trim(file_get_contents("http://log.mypower.cz?data=".base64_encode($content)));
 +  if ($result=="OK")
 +    unlink($filename);
 +  else
 +    die("Chyba");
 +  }
 +  
 +?>
 +</file>
 +
 +Script pro transfer dat je spouštěn rovněž jako plánovaná úloha. Není nutno ho spouštět ve stejném intervalu jako měření, je možno použít i delší interval. Například transfer 1x za 10 minut a měření 1x za 2 minuty. Doporučený postup však je spouštět měření i transfer ve stejných časových intervalech.
 +
 +Vhodnou technikou je také zamykání a expirace zámku pro zamezení vícenásobného spuštění transferu, což by mohlo způsobit kolize. Ve výše uvedeném scriptu je použita jednoduchá detekce. V případě, že script pro transfer poběží vícekrát, pak nejspíše dojde k tomu, že jednomu z nich přestanou existovat dříve nalezené soubory s daty měření, které se povedlo odeslat jinému běžícímu scriptu a tyto po smazání přestanou existovat. Script se při této situaci ukončí a dále už nepokračuje. Tato technika není stoprocentní, ale s vysokou pravděpodobností bude ve většině případů fungovat správně.
 +
 +Výše uvedené postupy je nutno chápat pouze jako ukázku principů, nikoliv jako hotové řešení. Lze však z těchto scriptů vyjít při tvorbě řešení pro měření a přenos, které bude odolné proti výpadkům sítě, nebo serveru v případě, že server z nějakého důvodu data nemůže příjmout.
  
 ===== Changelog ===== ===== Changelog =====
  
-v.0.1 - vytvoreno a vyuzito pro prenos dat z [[http://forum.mypower.cz/viewtopic.php?t=157&p=1640|FVE Maršov]]+v.0.1 - vytvoreno a vyuzito pro prenos dat z [[http://forum.mypower.cz/viewtopic.php?t=157&p=1640|FVE Maršov]]\\  
 +v.0.2 - 3.11.2011 - pridan parametr src a protokol rozdelen na /GET a /XML variantu.
openfvelog/start.1320276774.txt.gz · Poslední úprava: 2011/11/03 05:32 (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki