Meteostanice v inteligentním domě
Vlastní meteostanice vám umožní sledovat přesný směr a rychlost větru, množství spadnutých srážek, ale také intenzitu slunečního záření. Tyto informace lze mimo jiné využít k vlastnímu stínění domu před sluncem nebo větrem a rozhodování o zálivce zahrady. Meteostanic je celá řada od levných až pro dražší profesionální varianty. My jsme se rozhodovali dle možnosti univerzálnosti použití a dostupnosti na našem trhu. Praktickou zkušenost máme s meteostanicí Renkforce WH2600. Prakticky jakákoliv meteostanice obsahující vlastní webový server s hodnotami je pro tento návod použitelná. Máte-li jinou stanici, zkuste napsat do komentářů nebo fóra, určitě se nějaká možnost importu dat do OpenHAB najde. Zkuste se podívat i na oficiální OpenHAB forum.
Hardware
MeteoStanice (např. Renkforce WH2600)
Pi-Home - pokud nemáte, viz sekci Jak na to
Software
OpenHAB
Aplikace
Meteostanice obsahuje venkovní jednotku napájenou akumulátorem a fotovoltaickým panelem. Uvnitř domu se k LAN síti připojí vnitřní jednotka. Jednotka dostane adresu z DHCP nebo je možné nastavit statickou adresu. Poté zadejte do prohlížeče adresu meteostanice a uvidíte webové rozhraní. My budeme v OpenHAB přejímat data ze záložky "Live Data"
OpenHAB
Hodnoty budeme do OpenHAB dostávat pomocí parseru HTML stránky meteostanice s Live hodnotami. Hodnoty, co budeme chtít, si pak uložíme do databáze MySQL v OpenHAB. Takto lze parsrovat jakákoliv data, dokonce i z jakýchkoliv webových stránek. Užitečná funkce! (aktuální kurzy, předpověď počasí atd. atd.)
1) Nejdříve jděte do OpenHAB rozhraní PaperUI a nainstalujte rozšíření HTTP Binding a Regex transformation
Addons -> Binding -> HTTP Binding
Addons -> Transformation -> RegEx Transformation
V items OpenHAB pak vytvoříme novou položku, např. meteo.items. Vypadat bude asi takto. Nahraďte IP adresu 192.168.4.35 adresou vaší meteostanice. Jednotlivé řádky pak uloží hodnoty z meteostanice do vašeho OpenHAB a můžete je vidět v BasicUI nebo si je vytáhnout v HABpanelu
/*První řadek je skupina kde se budou položky zobrazovat */
Group weather_local "MeteoStanice" (all)String weather_local_dateutc "Čas odečtu [%s]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?CurrTime.*?value=\"([0-9]*.[0-9]*)\".*)]" }
Number weather_local_tempin "Teplota vnitřní [%.2f °C]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?inTemp.*?value=\"([0-9]*.[0-9]*)\".*)]" }
Number weather_local_humiin "Vlhkost vnitřní [%d %]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?inHumi.*?value=\"([0-9]*.[0-9]*)\".*)]" }Number weather_local_tempout "Teplota vnější [%.2f °C]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?outTemp.*?value=\"([0-9]*.[0-9]*)\".*)]" }
Number weather_local_humiout "Vlhkost vnější [%d %]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?outHumi.*?value=\"([0-9]*.[0-9]*)\".*)]" }Number weather_local_relbarom "Relativní tlak [%.2f mb]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?RelPress.*?value=\"([0-9]*.[0-9]*)\".*)]" }
Number weather_local_absbarom "Absolutní tlak [%.2f mb]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?AbsPress.*?value=\"([0-9]*.[0-9]*)\".*)]" }String weather_local_winddir "Směr větru [%s °]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?windir.*?value=\"([0-9]*.[0-9]*)\".*)]" }
String weather_local_windspeed "Rychlost větru [%s km/h]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?windspeed.*?value=\"([0-9]*.[0-9]*)\".*)]" }
String weather_local_gustspeed "Nárazy větru [%s km/h]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?gustspeed.*?value=\"([0-9]*.[0-9]*)\".*)]" }Number weather_local_solarradiation "Solarní záření [%.2f lux]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?solarrad.*?value=\"([0-9]*.[0-9]*)\".*)]" }
Number weather_local_UV "UV [%.2f index]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?uv.*?value=\"([0-9]*.[0-9]*)\".*)]" }Number weather_local_rainin "Rain [%.2f mm]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?rainofhourly.*?value=\"([0-9]*.[0-9]*)\".*)]" }
Number weather_local_dailyrainin "Rain daily [%.2f mm]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?rainofdaily.*?value=\"([0-9]*.[0-9]*)\".*)]" }
Number weather_local_weeklyrainin "Weekly rain [%.2f mm]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?rainofweekly.*?value=\"([0-9]*.[0-9]*)\".*)]" }
Number weather_local_monthlyrainin "Monthly rain [%.2f mm]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?rainofmonthly.*?value=\"([0-9]*.[0-9]*)\".*)]" }
Number weather_local_yearlyrainin "Yearly rain [%.2f mm]" (weather_local) { http="<[http://192.168.4.35/livedata.htm:5000:REGEX(.*?rainofyearly.*?value=\"([0-9]*.[0-9]*)\".*)]" }
V Rules části se pak můžete vyřádit, co dělat s hodnotami z meteostanice, například:
- je-li vítr vyšší než 60 km/h, zatáhnout žaluzie
- je-li intenzita slunečního záření již půl hodiny vyšší než 50000 lux, zatáhnou žaluzie
- jsou-li srážky za poslední týden menší než 2 mm, zalij zahradu atd. atd.
V HABpanelu by to mohlo vypadat následovně:
Přidat komentář