|
V následujícím článku je popsána instalace meteoserveru na domácím úložišti QNAP. Výhodou je, že aktuální teploty lze sledovat odkudkoli a zároveň je vyřešen i přenos z více čidel, která jsou ke stanici připojená. Uvedený postup bude s drobnými úpravami aplikovatelný i pro meteostanice SENCOR a NAS Synology.
Vlastním wifi meteostanici 1025 Arcus od společnosti Garni. Stanice má přehledný displej na kterém zobrazuje svá měření. V základu ukazuje venkovní a vnitřní teplotu, srážky, solární intenzitu, rychlost a směr větru a spoustu dalšího. Ke stanici lze za nemalé peníze dokoupit další čidla, kterých může být až 8. Nespornou výhodou wifi meteostanice je, že měření lze sledovat nejen na displeji, ale i vzdáleně pomocí mobilní aplikace nebo cloudových služeb třetích stran. Pokud nechcete být odkázáni na předplatné, tak cloudové služby zobrazují pouze jednu teplotu, a to z venkovního čidla. Nedozvíte se, kolik je vnitřní teplota domu nebo teplota z dalších čidel. Meteorologická stanice Garni 1025 Arcus je od výrobce přednastavená pro posílání dat na server Wunderground, Weathercloud a jeden vlastní server.
Dlouhou dobu jsem opomíjel možnosti, které meteorologická stanice nabízela a používal jí výhradně s cloudovými službami. Stanice však umožňuje nastavit i přenos na jeden vlastní server, dle vlastního uvážení, což přináší nemalé výhody a tom pojednává tento příspěvek.
Porovnání meterologických služeb:
|
Wunderground(web, cloud service)
|
- zdarma, ale předpokládá se předplatné
- bez předplatného pouze teplota z venkovního čidla
- bez předplatného nelze stáhnout historii měření do souboru
- zobrazuje teplotu na mapě
- podporuje API pro připojení 3rd stran k měření
|
|
Weathercloud (web, cloud service)
|
- zdarma, ale předpokládá se předplatné
- bez předplatného pouze teplota z venkovního čidla
- ukládá historie měření po dobu jednoho roku
- možnost stáhnout data do Excelu
- zobrazuje teplotu na mapě
- nemá API
|
|
aplikace Garni (Android, IOS)
|
- zdarma k meteostanici
- vyžaduje pro svoji funkci API od služby Wunderground
- historie měření 1 den
- pouze jedna teplota
- pěkná a rychlá aplikace
|
Odesílání dat na vlastní server přináší nesporné výhody:
|
přenos dat na server QNAP
|
- přenáší data z hlavní vnější jednotky, vnitřního čidla a až ze čtyř dalších externích čidel
- údaje lze ukládat do souboru, neomezená historie měření
- možnost vlastní webové stránky s aktuálními údaji
- nezávislost na cloudových službách a zachování soukromí naměřených dat
- pracuje na portu 80, menší bezpečnost, nutný firewall
|
Schéma komunikace:

Jak funguje web server na úložišti QNAP
Na serveru QNAP lze zprovoznit webový server, který má výchozí složku /Web. V této složce musíme vytvoříme složku “Weatherstation”, kam nahrajeme script, vytvořený v jazyce PHP. Tento skript je pak dotazován samotnou meteorologickou stanicí. I když skript leží v cestě: /Web/weatherstation/updateweatherstation.php.
Tak webová adresa pro přenos dat z meteostanice je:
http://IP_ADRESA/weatherstation/updateweatherstation.php
Poznámka: Základní složku /Web webový server nezobrazuje.
Popis funkce:

krok 1: Meteostanice odešle veškeré naměřené hodnoty na webový server a kontaktuje skript updateweatherstation.php.
krok 2: Skript updateweatherstation.php uloží hodnoty do textového souboru. Každý měsíc se s prvním uložením hodnot vytvoří nový soubor.
krok 3: Mobil se připojí na webové stránky, které jsou uložené na domácím NAS.
http://192.168.1.6/meteo.html
krok 4: Stránky meteo.html si natáhnou poslední naměřená data z aktuálního souboru v aktuálním měsíci v roce. Web je citlivý na správný název souborů s uloženými hodnotami. Formát je uzpůsoben mým potřebám, ale není problém jej změnit: YYYYMM-IPRAGU481.txt
krok 5: Hodnoty se zobrazí na stránkách v mobilním telefonu. Datová pole se sami neaktualizují. Pokud cheme po chvilce zobrazit aktuální stav, tak stiskneme tlačítko pro obnovu stránky.
Konfigurace meterologické stanice
Nejprve provedeme nastavení v samotné meteostanici. K již dříve nastaveným cloudovým serverům přidáme nastavení pro vlastní server, v tomto případě QNAP.

V tomto případě stačí, když nastavíte pouze IP adresu QNAP serveru (např. 192.168.1.10), a meteostanice automaticky přidá zbytek URL, jako je
/weatherstation/updateweatherstation.php
Poznámka: Meteostanice má ve svém firmware nastaveno výchozí nastavení cesty pro odesílání dat. Pozor u starších modelů bylo třeba zadávat celou přístupovou cestu ke skriptu.
Heslo pro přístup k webseru není povinné a možná i v domácí síti zbytečné. Heslo brání tomu, aby neautorizovaná stanice nemohla ukládat data na server QNAP.
Aktivace web serveru na úložišti QNAP
1) Přejděte do Ovládacího panelu > Aplikace > Web Server. Ujistěte se, že je web server aktivován. Pokud není, zapněte jej.


2) Zvolte Výchozí složku webu (např. /Web). A vytvořte následující adresářovou strukturu. Je nutné vytvořit i podsložku data. Pro složku “weatherstation” musíme nastavit plná práva.

Příprava skriptu v php:
Skript jsem připravil na základě inspirace od dvou autorů na internetu. Základní skript od autora buffy.cz má výhodu v tom, že uloží veškerá data do souboru, která meteostanice v jednom časovém okamžiku odešle. Hodí se to pro analýzu struktury dat.
| <?php // script: Garni Weather Station server PHP script // version: 1.0 (MIT licence) // author: Petr Fismol (buffy.cz)
// Logování příchozích dat pro diagnostiku file_put_contents("data/request.log", json_encode($_GET) . PHP_EOL, FILE_APPEND);
$export = "{"; foreach ($_GET as $key => $value) { $export .= '"' . $key . '":"' . $value . '",'; } $export .= '"manufacturer":"Garni"}'; echo $export; // Pro zobrazení dat v prohlížeči (pro ladění)
// Zápis do souboru $file = fopen("data/garni.json", "w+"); if (!$file) { die("Chyba: Soubor nelze otevřít pro zápis."); } fwrite($file, $export); fclose($file); ?> |
|
Meteostanice neposílá datum a čas měření a veškeré údaje jsou v imperiálních jednotkách. Jak je z ukázky patrné, tak teplota je ve stupních Fahrenheita. Meteostanice je velmi čilá a posílá údaje každých 12 minut.
Ukázka dat z meterologické stanice:

Proto jsem se inspiroval u druhého autora “jachym brzezina”, jehož skript jsem vylepšil a uvedl v život mým potřebám. Tento skript přidává datum a čas, převádí jednotky veličin a výstupem je soubor, který lze bez problémů nahrát do Excelu pro další vyhodnocení. Zároveň umí spočítat rosný bod a pocitovou teplotu.
Výhody mého řešení:
- každý měsíc se vytváří nový soubor, který v názvu obsahuje jméno Meteostanice. (například: 202502-IPRAGU481.txt)
- umožňuje ukládat data z více meteostanic najednou, do vlastních samostatných souborů
- redukce intervalu záznamu z původních 12s na 1 minutu
- navíc přenos dat z externích čidel (Garni podporuje další 4 čidla navíc)
- správné nastavení časového pásma
skript musí mít zachován svůj název updateweatherstation.php a musí být zkopírován do složky “weatherstation” na serveru QNAP. Jakmile skript nahrajeme na server QNAP, s prvním příjmem dat se ve složce /data/ automaticky vytvoří soubor, do kterého se ukládají měření.
Ukázka názvu souboru a jeho obsahu: 202502-GarniXXX.txt

Webové stránky s počasím na serveru QNAP
Jakmile již máme datové soubory, které obsahují naměřená data na serveru QNAP, tak není nic jednoduššího než vytvořit webové stránky, které budou data dále zobrazovat. Webová stránka je přednastavena mým potřebám a načítá poslední naměřená data z aktuálního souboru v daném měsíci. Název souboru se skládá ze jména meteostanice, roku a měsíce: YYYYMM-IPRAGU481.txt. Další nestandardní nastavení je pojmenování dat ze dvou externích čidel palma a pergola. Ale drobnou úpravou lze stránky adaptovat na jakýkoliv projekt. Stránky pak mohou vypadat takto:

Pocitová teplota:
Údaj, který naměříme na teploměru, nám ovšem nedává ucelený přehled o tom, jak tuto teplotu bude vnímat náš organismus. Při 30 °C v Praze se budeme cítit zcela jinak než při stejné teplotě v deštném pralese. Čím jsou tyto rozdíly způsobené a co ovlivňuje naši pocitovou teplotu? Například vítr, vlhkost, sluneční záření a jiné. Většinou se dává do úvahy jen některé z těchto faktorů - například vítr. Tím se vyjadřuje zjednodušený ukazatel chlad větru (volně přeloženo z anglického "wind chill"). Wind chill se používá právě v chladné části roku, většinou když se reálné teploty vzduchu pohybují pod 10 °C a od určité rychlosti větru. Když se totiž lidské tělo vyskytuje v chladnějším prostředí, vytváří kolem sebe jistou tenkou vrstvu teplejšího vzduchu. Můžeme ji chápat jako jakousi izolaci před chladem. A právě vlivem větru tato izolace je pak oslabena nebo rovnou odfouknuta a my potom cítíme mnohem větší chlad než jak by tomu bylo v bezvětří. Výpočet Wind chillu (kanadský model) je dán podle vzorců a zanedbává vlhkost vzduchu.
Pocitová teplota v teplé části roku bývá vyjádřena pomocí tepelného indexu (z anglického "Heat index"). Ten se většinou uvádí při reálných teplotách vzduchu nad 27 °C a vlhkosti vzduchu nad 40 %. Vyšší vlhkost vzduchu totiž omezuje možnost vypařování potu z našeho tělo, a to pak ztrácí možnost se ochlazovat. My pak máme pocit, že je tepleji, pociťujeme takové to letní "dusno".
AAT - australský model je navržen pro celoroční výpočty a bere kromě teploty a rychlosti větru v úvahu i vlhkost vzduchu. Tento model používá ČHMÚ i většina předpovědních webů v ČR. Proto při vyhodnocení dat používám model AAT, který více vypovídá realitě.
Závěr:
S minimálními náklady se mi podařilo rozšířit funkce výtečné meteostanice Garni. Údaje z měření lze bez problémů sledovat na mobilním telefonu přímo z postele, ačkoliv mám meteostanici dole v obýváku. Data se mi nyní zobrazují ze všech čidel, která jsou k dispozici (maximálně však ze 4 dalších). Hodnoty se ukládají do souborů a mám je tak uložené pro pozdější analýzu. Samotné datové soubory však nejsou příliš vhodné pro online analýzu naměřených dat na webových stránkách a dalším krokem v tomto vývoji by bylo ukládání dat do databáze. Cloudové služby jsem nezavrhl a používám je jako zálohu, pokud by se mi nepodařilo připojit do domácí sítě.
|