Browsed by
Tag: Meteostanice

Instalace WEEWX pro IP meteostanice EFWS 2900 a ji podobne

Instalace WEEWX pro IP meteostanice EFWS 2900 a ji podobne

 

INSTALACE WEEWX pro IP Meteostanice v systemech zalozenych na Debianu(Ubuntu, Raspbian ..)

Nejdrive je treba rict,kde se ma weewx hledat

wget -qO - http://weewx.com/keys.html | sudo apt-key add -
sudo wget -qO - http://weewx.com/apt/weewx.list | sudo tee /etc/apt/sources.list.d/weewx.list

Pokud nemate nainstalovany WGET, tak provedte jeste

sudo apt install wget

Provede update systemu:

sudo apt-get update
sudo apt-get upgrade

No a ted jiz nainstalujeme WEEWX

sudo apt-get install weewx

 

Na prvni strance vyplnime nepodstatne udaje, Jmeno a kde je MeteoStanice umistena a dame OK.

Nasledne zemepisne souradnice nasi Meteostanice, OK.

Nadmorskou vysku,kde je meteostanice, OK.

Zvolime jednotku, tedy Metric(km/h, mm, °C, mbar), OK.

A zde je dulezite nastavit spravny typ stanice, nas zajima Simulator, ktery zpracovana data prave z IP Meteostanice, ktera nema moznost posilat data primo, OK.

Dale je nutne nainstalovat apache

sudo apt-get install apache2

no a jako posledni balicek je potreba stahnout a nainstalovat plugin do Weewx.

wget -O weewx-interceptor.zip https://github.com/matthewwall/weewx-interceptor/archive/master.zip
sudo wee_extension --install weewx-interceptor.zip
sudo wee_config --reconfigure --driver=user.interceptor --no-prompt

Nez Weewx spustime, je nutne udelat par zmen v configuracnim souboru weewx

sudo vi /etc/weewx/weewx.conf

Tahle zmena je nutna!!!

najedte az na konec configuraku a zde zmente device_type = observer  ( po instalaci je acurite-bridge) a prijdete jeste radek:
port = xxxx ( na tento port budeme posilat veskerou komunikace,neni nutne, ale je to lepsi)

Dale zmenit interval posilani dat do rozhrani Weewx na 60s. Nezkousejte davat mene, jinak weewx po prvni zmene hodi chybu a zastavi se.

archive_interval = 60

No a kdo chce, muze nasledne posilat data na WunderGround

[[Wunderground]] enable = true a nastavime ID a heslo vasi Meteo,ktere mate na Wunderground

Zmenime zacatek tydne z nedele na pondeli

week_start = 0

A ted jen spustime Weewx

sudo /etc/init.d/weewx start

NUTNE!!!

Bez ceho to nebude fungovat, je presmerovani veskere komunikace(TCP) meteostanice na IP a port, ktery jsme nastavili, kde je Weewx nainstalovan. Tohle ma kazdy router jinak, takze to popisovat nema smysl.

No a pokud se vse podarilo, staci se propojit na http://IP_weewx/weewx/ , kde uvidime neco takoveho

A jako posledni, jeste plugin, ktery dava udaje do XML

wget http://android.teszdesign.hu/xml_templates/weewx_pws.xml.tmpl.tar.gz
tar zxvf weewx_pws.xml.tmpl.tar.gz
sudo mkdir /etc/weewx/skins/Standard/XML
sudo cp weewx_pws.xml.tmpl /etc/weewx/skins/Standard/XML/weewx_pws.xml.tmpl
sudo chmod 644 /etc/weewx/skins/Standard/XML/weewx_pws.xml.tmpl

Uprava configuracniho souboru skins.conf

sudo vi /etc/weewx/skins/Standard/skin.conf

 

Pod [[[MobileRadar]]] pridame:

[[[XML]]]
    template = XML/weewx_pws.xml.tmpl

 

Restartujeme Weewx

sudo /etc/init.d/weewx restart

zadame http://IP_weewx/weewx/XML/weewx_pws.xml a meli bychom videt neco takoveho:

 

Pokud by nekde chtel dostat treba UVI nebo Solarni radiaci, staci do souboru weewx_pws.xml.tmpl pridat radky:

<!--UV-->                                                                                                                                                                                                                                                                                                                  
<realtime><data realtime="UV">$current.UV.formatted<!--UV--></data></realtime>                                                                                                                                                                                                                                             
<!--RADIATION-->                                                                                                                                                                                                                                                                                                           
<realtime><data realtime="radiation">$current.radiation.formatted<!--radioation--></data></realtime>

Vnitrni teplota + vlhkost

<!--inTEMP-->
<realtime><data realtime="inTEMP">$current.inTemp.formatted<!--inTEMP--></data></realtime>
<!--inHUM-->
<realtime><data realtime="inHUM">$current.inHumidity.formatted<!--inHUM--></data></realtime>

 

Pridat lze samozrejme vice informaci, viz dokumentace weewx.

Meteostanice – měření atmosferického tlaku, vlhkosti, teploty, intenzity světla a detekce srážek

Meteostanice – měření atmosferického tlaku, vlhkosti, teploty, intenzity světla a detekce srážek

Úvod

A je zde pokračování seriálu o stavbě domácí meteostanice pro Loxone. Tentokráte přijde ke slovu opět Arduino a připravený projekt je velmi variabilní, takže bude jen na vás, jaké komponenty si pořídíte a co budete používat. Komunikace je realizována přes Modbus (RS485), ale bylo by určitě reálné udělat i jiné varianty.

Zdrojové kódy

http://jirin.deso.cz/WetatherStation_RS485/

Hardware

Pro čtení jsem opět využil Arduino Nano, ale je určitě možné využít i jiné moduly (Uno, Pro Mini etc.).

BH1750

Přesný 16 bitový modul pro měření intenzity světla v jednotkách luxů osazený obvodem BH1750FVI umožňuje měřit intenzitu v rozsahu 1 – 65535 lx. Komunikace probíhá přes I2C. Důležité jsou pinyA4 (SDA), A5 (SCL), dále je nutné modul napájet pomocí 3,3 či 5 V a na zem připojit zem, pin ADDR nechat nezapojený.

BME280

Tento senzor patří k dražším, ale co se týká měření atmosferického tlaku, tak je opravdu velmi přesný. Dále je z něj možné číst i vlhkost + teplotu, zde bohužel ale už moc neexceluje a kupříkladu měření teploty jsou běžně o 2 °C mimo (zahřívá se), což rozhodně není ideální. Připojení je realizováno přes sběrnici I2C. Zapojení je naprosto stejné jako u BH1750, stejné piny + napájení.

Je důležité také zmínit, že změřený tlak je absolutní a je nutné zadat v kódu nadmořskou výšku, aby byl přepočítán na hladinu moře.

DHTXX, použit DHT22

DHT je řada senzorů (DHT11, DHT21, DHT22), které velmi dobře měří teplotu a vlhkost, v tomto projektu slouží jako vykrytí hluchého místa BME280. Připojení je jednoduché, napájení VCC jde na 3,3 či 5 V, zem na zem a data na PIN D3. Pokud máte verzi, kdy je dodávám samotný senzor, je vhodné použít pull-up rezistor 4,7 kΩ mezi daty a napájením. U vyobrazené verze pull-up rezistor není nutný (je již na PCB).

DS18B20

Toto teplotní čidlo asi není potřeba představovat, je zde zařazeno jako „levnější“ alternativa k DHT22. Zapojení je stejné jako u každého jiného 1-Wire čidla s tím, že je nutné použít 10 kΩ pull-up rezistor. Pin pro připojení je D2.

Detekce srážek (raindrop sensor)

Přidávám ho jen pro zajímavost, chci si ozkoušet, jak moc dlouho vydrží. Jeho kvalita mě úplně neuchvátila, bohužel také nedisponuje vyhříváním. Senzor disponuje analogovým i digitálním výstupem, použit je pouze ten analogový a je zapojen na pin A0. Napájení VCC na 5 V, zem na zem.

TTL to RS485 předovník

Tento převodník nám zajistí komunikaci po RS485. Napájení je opět 5 V, zem je zem a dále pak RX na RX Arduina a TX na TX Arduina. Na kontakty A + B pak můžeme připojit Loxone Extension či TCP RS485 převodník.

Je důležité zmínit, že pokud je převodník připojen, není možné Arduino programovat! Využívá totiž sériové rozhraní, proto když budete projekt rozcházet, tak minimálně nezapojte pin RX či celý převodník zapojte, až bude modul oživen a ozkoušen.

Takto to vypadá na nahrubo zapojené v nepájivém poli:

Kde senzory pořídit?

https://www.aliexpress.com/wholesale?SearchText=arduino+nano
https://www.aliexpress.com/wholesale?SearchText=bme280+i2c
https://www.aliexpress.com/wholesale?SearchText=ds18b20
https://www.aliexpress.com/wholesale?SearchText=dht22 
https://www.aliexpress.com/wholesale?SearchText=raindrop+sensor 
https://www.aliexpress.com/wholesale?SearchText=RS485+uart+automatic

Konfigurace Arduino Sketche

Jak už jsem zmínil na začátku tento projekt je velmi variabilní a záleží, co budete chtít používat. Základní nastavení se provádí zde:

// Configuration of modules
#define USE_BH1750
#define USE_BME280
#define USE_DHT
#define USE_DS18B20
#define USE_RAINDROP_SENSOR

Pokud kupříkladu budete používat pouze BME280, vše ostatní zakomentujte:

// Configuration of modules
//#define USE_BH1750
#define USE_BME280
//#define USE_DHT
//#define USE_DS18B20
//#define USE_RAINDROP_SENSOR

Po zakomentování budou ze sketche komplet odstaněny věci týkající se neaktivních senzorů a hodnoty, které se k nim vztahují, budou vždy 0.

Dále přichází na řadu nastavení Modbus komunikace:

// Modbus config
#define MODBUS_ID 10
#define MODBUS_SPEED 19200
#define MODBUS_CONFIG SERIAL_8N1

Ve standardním nastavením je použita Modbus adresa 10, rychlost 19200 a 8 datových bitů, žádná bit parity a 1 stop bit. Další módy jsou popsány zde. Přednastavené možnosti byly zvoleny tak, aby fungovaly se zde hojně vyskytujícími se elektroměry ABB B23.

A poslední odstavec, který se vztahuje k nastavení nám umožní změnit nastavení pinů (což asi nebude potřeba), ale je zde určitě nutné zadat správnou nadmořskou výšku v metech nad mořem, aby bylo možné správně vypočítat relativní atmosferický tlak.

// Other config
#define ALTITUDE 340.0F         // Altitude [meters over sea level], needed for pressure conversion
#define BME280_I2C_ADDRESS 0x76 // Address of your BME280 sensor 0x76 or 0x77
#define DHT_PIN 3               // Pin where to connect DHTXX
#define DHT_TYPE DHT22          // Accepted values are "DHT11", "DHT22" (AM2302, AM2321), "DHT21" (AM2301)
#define DS18B20_PIN 2           // Pin where to connect DS18B20
#define RAINDROP_A_PIN A0       // Analogue pin for raindrop sensor

Zprovoznění modulu

Pro oživování modulu je vhodné provést odkomentování řádku:

// Debug
// Enable only when really needed otherwise it will mess up RS485 communication
#define DEBUG

Do vašeho Arduina nahrajte připravený sketch a sledujte na sérové konzoli, že je schopen číst data ze všech senzorů. V ideálním případě uvidíte něco jako:

Pokud bude vše v pořádku, blok DEBUG zase zakomentujte a připojte RS485 předník a pokračujte dále. Pokud data nebudou správná, zkontrolujte zapojení a další nastavení (kupříkladu adresa BME280 apod.).

Ozkoušení Modbus připojení

Tato část je víceméně volitelná, ale pokud máte k dispozici USB <=> RS485 převodník, tak ji doporučuji ozkoušet.

Zapojení je naprosto triviální – A na svorku A, B na svorku B. Pro ozkoušení také bude potřeba vhodný SW, za sebe mohu doporučit kupříkladu QModMaster.
V programu zvolte správný COM port a parametry, které jste vložili do Arduino kódu (standard 19200 8N1):

Dále zvolte připojení přes RTU a zadejte Modbus adresu (standard 10) a zkuste číst 16 vstupních registrů (0x04):

Pokud uvidíte něco podobného (mimochodem stejná data jako v předchozím případě s sériovou konzolou), tak máte vyhráno.

Modus komunikace

Nyní bych chtěl popsat, adresování dat pomocí Modbus, je k dispozici 16 registů, který každý povětšinou vrací 16ti bitové (unsigned) int hodnoty, jediná výjimka jsou 2 hodnoty, které se týkají atmosferického tlaku. Ty jsou kvůli zachování přesnosti přenášeny pomocí 2 16 bitových registrů a ve výsledku je nutné složit jednu 32bitovou unsigned int hodnotu. Zde je mapování:

#define ADDR_TEMP_BME280       0 //  int16_t
#define ADDR_TEMP_DHT          1 //  int16_t
#define ADDR_TEMP_DS18B20      2 //  int16_t
#define ADDR_HUM_BME280        3 // uint16_t
#define ADDR_HUM_DHT           4 // uint16_t
#define ADDR_HEAT_INDEX_BME280 5 //  int16_t
#define ADDR_HEAT_INDEX_DHT    6 //  int16_t
#define ADDR_DEW_POINT_BME280  7 //  int16_t
#define ADDR_DEW_POINT_DHT     8 //  int16_t
#define ADDR_LIGHT             9 // uint16_t
#define ADDR_RAIN_RAW         10 // uint16_t
#define ADDR_RAIN_CONV        11 // uint16_t
#define ADDR_PRESSURE_RAW     12 // uint32_t
#define ADDR_PRESSURE_CONV    14 // uint32_t

Za povšimnutí určitě stojí, že hodnoty, které mohou nabývat záporných hodnot (teploty) jsou přenášeny jako signed int, zbytek jako unsigned int – pozor na to při mapování hodnot v Loxonu.

Dále je také nutné poznamenat, že veškeré hodnoty, které obsahují desetinnou část (vše kromě srážek a intenzity světla) jsou vynásobeny 100 (jsou tedy přenášeny 2 desetinná místa) a je nutné provést korekci „100“ => „1“.

Předpokládám, že ± všechny hodnoty jsou jasné, co ale stojí za vysvětlení jsou 2 hodnoty týkající se srážek. Registr 10 vrací hodnotu v intervalu <0, 1023> a je to přímý vstup z analogového vstupu A0 a hodnota odpovídá 10bitovému DAC převodníku Arduina. Hodnota „0“ znamená 100% detekci srážek (senzor se koupe), naopak hodnota „1023“ indikuje naprosté sucho, takže 0% detekci srážek. Registr 11 vrací hodnoty uvedené v předchozí větě v procentech (provádí přemapování), výstupní hodnoty jsou z intervalu <0, 100>. Je tedy daleko logičtější využít právě tento registr, ale dal jsem možnost číst data z obou.

Loxone šablona

Zde přidávám Loxone šablony pro snadnou integraci to vašeho Loxone plánu.

Další možnosti vývoje

Projekt lze lehce portovat na zasílání dat po 1-Wire sběrnici či při použití ESP8266 není problém data posílat přes WiFi. Dále je možné přidat podporu dalších senzorů ;-).

Autor článku a projektu: Jiří Jaša, http://www.deso.cz

Meteostanice – měření srážek, rychlosti a směru větru

Meteostanice – měření srážek, rychlosti a směru větru

Úvod

Tento návod bude trošku jiného ranku než přechozí Arduino projekty, nabídne poměrně levnou možnost, jak si pořídit svoji meteostanici na měření srážek a rychlosti + směru větru.

Nabízí se určitě možnost koupit stanici, nabízenou přímo firmou Loxone, ale její cena je dle mého hodně mimo na to, co nabízí:

https://shop.loxone.com/cscz/meteostanice.html

Upřímně ale 13 kKč za něco, co měří pouze teplotu, rychlost větru, intenzitu světla a detekuje srážky je trošku silná káva, tak se podíváme na něco trošku dostupnějšího.

Senzory ke stanici WH1080

Je tomu už necelých 10 roků, co jsem domů pořídil meteostanici WH1080, která má venkovní část a pomocí 433 / 866 Mhz posílá data do zobrazovací jednotky. Za ty roky mohu potvrdit, že funguje poměrně spolehlivě a je doma určitě vítaný pomocník. Po těch letech už bohužel mají venkovní senzory to nejlepší za sebou a UV záření si vyžádalo své, zkoušel jsem tedy sehnat sadu náhradních senzorů a ty se dají bez problémů zakoupit a za velmi rozumné peníze. Vyměnil jsem je tedy a za původní sadu a naskytla se možnost prozkoumat, jak to vlastně funguje a zdali by nebylo možné senzory přímo napojit na Loxone a vše funguje na velmi jednoduchém principu.

Na českém trhu je možné zakoupit za cca 600–800 Kč. Já jsem je konkrétně kupoval zde.

Měření srážek

Srážkoměr je velmi jednoduchá věc, která dává pulz vždy, když naprší 0.2794 mm srážek.

Zapojení je naprosto jednoduché – stačí na jeden z pinů přivést 24 V a druhý připojit na digitální či analogový vstup.

Měření rychlosti větru

Senzor rychlosti větru funguje velmi podobně jako srážkoměr, dává pulz při otočení vrtule. Pro správné počítání rychlosti je nutné měřit pulzy za danou časovou jednotku, ideálně Hz – zde je definováno že jeden Hz (jeden pulz za 1 sekundu) znamená rychlost větru 1.492 MPH (2.4 km/h).

Zapojení je obdobné jako u srážkoměru, ale výstup je nutné zapojit na Loxone extension a na digitální vstup. Dále je nutné pro tento vstup zapnout volbu „Čítač frekvence“.

Měření směru větru

Poslední věc, která poskytne určitě také zajímavá data je senzor směru větru, ten funguje kompletně jinak a je s ním také nutné pracovat jinak. Pokud se podíváme do útrob senzoru, najdeme 8 odporů a 8 jazýčkových kontaktů:

Jak se směrovka otáčí dojde k sepnutí jednoho či dvou kontaktů a tím se změní odpor senzoru. Odpory jsou zapojeny paralelně:

Po oprášení středoškolské fyziky pak lze jednoduše dopočítat odpory pro zvolené úhly

Úhel [°]
Odpor [Ω]
0 33000
22,5 6568
45 8200
67,5 891
90 1000
112,5 688
135 2200
157,5 1407
180 3900
202,5 3136
225 16000
247,5 14118
270 120000
292,5 42120
315 64900
337,5 21876

Nyní už pouze nutné zajistit zjištění aktuálního odporu. To lze jednoduše udělat pomocí přidání dalšího odporu a změřením napětí:

Nyní je na vás si spočítat vhodný odpor podle toho, jaké zapojení použijete, výrobcem doporučená hodnota odporu je 10 kΩ a použití napětí 5 V. Ale je jen na vás, jaký odpor zvolíte a stejně tak napětí. Při zmíněném odporu a napětí jsou výstupní hodnoty napětí následující:

Úhel [°] Odpor snímače [Ω] Odpor R [Ω] Celkový odpor [Ω] Napětí [V] Proud [A] Výstupní napětí [V]
0 33000 10000 43000 5,00 0,000116 3,84
22,5 6568 10000 16568 5,00 0,000302 1,98
45 8200 10000 18200 5,00 0,000275 2,25
67,5 891 10000 10891 5,00 0,000459 0,41
90 1000 10000 11000 5,00 0,000455 0,45
112,5 688 10000 10688 5,00 0,000468 0,32
135 2200 10000 12200 5,00 0,000410 0,90
157,5 1407 10000 11407 5,00 0,000438 0,62
180 3900 10000 13900 5,00 0,000360 1,40
202,5 3136 10000 13136 5,00 0,000381 1,19
225 16000 10000 26000 5,00 0,000192 3,08
247,5 14118 10000 24118 5,00 0,000207 2,93
270 120000 10000 130000 5,00 0,000038 4,62
292,5 42120 10000 52120 5,00 0,000096 4,04
315 64900 10000 74900 5,00 0,000067 4,33
337,5 21876 10000 31876 5,00 0,000157 3,43

Přidávám jednoduchou tabulku v Excelu: Smer-vetru-vypocet, kde si každý může jednoduše vypočítat svoje hodnoty.

Poznámka k instalaci senzoru – je samozřejmě nutné tento snímač správně osadit tak, aby hodnota „N“ směřovala na sever.

Zapojení senzorů

Senzory jsou se připojují pomocí dvou RJ11 konektorů.

Srážkoměr

Srážkoměr disponuje svým kabelem s konektorem RJ11, kde jsou použity prostřední kontakty, ty jsou napojeny přímo na snímač – je tedy zapotřebí použít piny 2 a 3.

Senzory větru

Tyto snímače je nejdříve nutné vzájemně propojit – je použit kabel který vede ze senzoru rychlosti větru a zapojen do senzoru směru větru. Z něj už pak vede kabel zakončený RJ11 a jsou v něm využity všechny 4 kontakty. Prostřední 2 (pin 2 + 3) jsou zapojeny na snímač rychlosti větru a krajní 2 (pin 1 + 4) jsou zapojeny na snímač směru větru (odpory). Celkové zapojení následující:

Zapojení obecně

Ideální je zakoupit krabici na připojení 2 klasických telefonů s konektory RJ11, prodává ji třeba firma Datacom.

Do útrob krabičky lze přivést svůj CAT6/7 kabel z rozvaděče a zapojit jej na vhodné kontakty. Také je možné dovnitř schovat odpor potřebný na snímání napětí směru větru.

Programování v Loxonu

Srážkoměr

Srážkoměr lze jednoduše naprogramovat pomocí bloku měření spotřeby, zde je potřebné nastavení:

Hodnota Impulzy „3,579“ znamená kolik impulzů je potřeba k získání jedné jednotky (v našem případě 1 mm srážek). Se získanými daty pak lze jednoduše pracovat jako s daty z elektroměru:

Kupříkladu sledovat kdy a jak pršelo:

Rychlost větru

Jak již bylo zmíněno je nutné použít čítač frekvence na digitálním vstupu extension:

Dále je nutné použít samotnou komponentu rychlost větru:

Faktor musí být 2,4, což je výše uvedených 2,4 km / hod. Je na vás, jestli budete sledovat pouze aktuální rychlost větru či průměr apod.

 

Směr větru

Směr větru je nutné určit na základě změřeného napětí, je nutné aplikovat přepočítanou tabulku uvedenou výše (seřadit si to podle největšího či naopak nejmenšího napětí):

Je dokonce pomocí klouzavého průměru a trošku složitého vzorce určit průměrný směr větru (pokud bude zájem rozvedu detailněji).

A to by asi bylo k první části stavby vlastní meteostanice vše. Bude následovat další díl, kde ke slovu opět přijde Arduino, a ukážeme si, jak se dostat k velmi důležitým datům jako třeba atmosferický tlak. Malý sneak peek:

Autor článku: Jiří Jaša, http://www.deso.cz