Netatmo in FHEM integrieren

Begonnen von FotoFieber, 26 August 2013, 09:15:06

Vorheriges Thema - Nächstes Thema

FotoFieber

Über das Wochenende habe ich ein bisschen mit Netatmo gespielt und in mein FHEM integriert.

1. netatmo api für Python runterladen und konfigurieren

https://github.com/philippelt/netatmo-api-python

2. script gatherNetatmo einspielen, anpassen und per cron alle Minuten starten

3. in fhem Dummy devices für Sensoren definieren


define NETATMO_INDOOR dummy
attr NETATMO_INDOOR room Wetter

define FileLog_NETATMO_INDOOR FileLog ./log/NETATMO_INDOOR-%Y.log NETATMO_INDOOR
attr FileLog_NETATMO_INDOOR logtype text
attr FileLog_NETATMO_INDOOR room Wetter


define NETATMO_OUTDOOR dummy
attr NETATMO_OUTDOOR room Wetter


define FileLog_NETATMO_OUTDOOR FileLog ./log/NETATMO_OUTDOOR-%Y.log NETATMO_OUTDOOR
attr FileLog_NETATMO_OUTDOOR logtype text
attr FileLog_NETATMO_OUTDOOR room Wetter


Es ist eher ein Hack, als eine saubere Lösung, aber es funktioniert
Viel Spass.....

Borkk

#1
Hi,

Dein Script funktioniert prima, ich hab nun folgendes Device in meinem FHEM

dummy
Netatmo_indoor Co2: 783 Luftdruck: 1015.5 Luftfeuchte: 57 Pegel: 46 Temperatur: 21.600000000000001 Uhrzeit: 18:33 When: 1384104794

Ich würde nun gerne bei Erreichen von Messwerten (z.B. C02 >1000) eine Aktion auslösen. (z.B. eine Lampe anschalten). Ich bekomme das aber irgendwie nicht hin. Ich kann leider weder Perl noch sonst eine Programmiersprache. Ich habe es mit ein Notify versucht aber mir fehlt die zündende Idee wie ich aus dem state die einzelnen Werte rausziehen kann, evtl. mit einem userReading?

Bei den EventTyps taucht das Device wie folgt auf:
6 Netatmo_indoor Co2: .* Luftdruck: .* Luftfeuchte: .* Pegel: .* Temperatur: .* Uhrzeit: .*:.* When: .*

Bin für jeden Tipp dankbar.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Habe über Notify und $EVTPART hinbekommen :-)

FHEM ist echt super :-)
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

fh168

Sieht schick aus.
Benötigt man nur den  "Netatmo NIM01 IP- Wetterstation Zusatz-Innensensor"  oder die komplette Wetterstation.
Werden die Signale über 868Mhz zum Fhem (über CUL) übertragen?

LG
/robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

Borkk

Du brauchst einmal das Standardpaket, bestehend aus 1x Innen- und 1x Aussenstation. Die Dinger werden ins WLAN integriert und reporten alle Werte in die Netatmo "Cloud". Das Script zieht die Werte dann über eine API dort raus und schreibst sie in FHEM.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

fh168

Hallo Borkk,

danke für die Info. Ist mir dann doch zu teuer. Wenn man schon einen Cul hat und einige Temperatursensoren und den Luftqualitäts-Sensor von Voltcraft, kommt doch etwas preiswerter dran. Die Auswertungen von Temperatur und Luftqualitäts-Sensor als Plot sieht unter Fhem mittlerweile auch schick aus.
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

svenr

Zitat von: Borkk am 10 November 2013, 23:52:00
Habe über Notify und $EVTPART hinbekommen :-)

Könntest Du mir zeigen, wie Du das genau hinbekommen hast?

Danke!
Sven

Borkk

Hi,

Ich gehe mal davon aus, du hast die Anleitung von FotoFieber umgesetzt und hast die Netatmo als Dummy Device eingebunden und du bekommst regelmäßig Wert aus dem Python script gesendet, das du als cronjob regelmässig aufrufst.

Um dann z.B. bei Erreichen von 1200 ppm CO2 Gehalt in der Luft eine Lampe einschalten zu lassen:

define Co2_Notify_1200 notify Netatmo_indoor { if ($EVTPART1 >= "1200") {fhem("set Lampe1 on")} }

Co2_Notify_1200 = Name des notifys
Netatmo_indoor = Name der Netatmo Dummy Device
$EVTPARTn = hier den n ten Wert eingeben, an dem der auszuwertende Wert (Co2) bei dir im Netatmo String steht (Hab ihn bei mir etwas umgebaut)
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Lupla

Hallo zusammen,

irgendetwas machts bei mir noch nicht so, wie es soll. Ich bekomme beim Ausführen von gatherNetatmo folgende Fehlermeldung:
Traceback (most recent call last):
  File "./gatherNetatmo", line 21, in <module>
    indoor = collections.OrderedDict(sorted(theData['Indoor'].items()))
TypeError: 'NoneType' object is not subscriptable


Hier bin ich jedoch völlig überfragt, was das Problem ist.

Vielleicht hat einer von Euch ja einen Hinweis für mich, wo ich das Problem angehen kann.

Gruß

Bastian

merlin2010

#9
Ja, diese Fehlermeldung kam bei mir auch.

Du musst im gatherNetatmo Skript den Stationsnamen 'Nikita' mit dem Stationsnamen von Deiner netatmo Station ersetzen.

Per Cron starten heisst für Linux Dummies, dass via ssh Kommandozeile mit 'sudo nano /etc/crontab' die Cron-Job Tabelle mit zum Beispiel folgendem Eintrag ergänzt werden muss, damit die Station z.B. alle 10 Minuten ausgelesen wird:

*/10  * * * *   root    python  /usr/local/bin/gatherNetatmo.py

Wenn das Skript ansonsten nicht verändert wird, ist übrigens für das Notify $EVTPART3 zu verwenden, um den CO2-Wert auszulesen.

Hoffe, das hilft weiter und macht es für alle anderen einfacher, die Netatmo-Stationen einzubinden.



thomilla

Hi,

hat jemand von euch sich schon eine passende gplot-Datei geschrieben, um aus den Logfiles Kurven zu zeichnen?
Wenn ja, könntet ihr den Code eventuell hier einstellen?

Danke und Gruß,
Thomas

merlin2010

Habe mal was auf die Schnelle für Temperatur und Feuchtigkeit für drinnen und draussen geplottet.

Ist aber sicher noch ausbaufähig.

In die fhem.cfg wie folgt einbinden (Beispiel für OUTDOOR, INDOOR analog)

#Werte plotten
define SVG_FileLog_NETATMO_OUTDOOR SVG FileLog_NETATMO_OUTDOOR:netatmo_outdoor:CURRENT
attr SVG_FileLog_NETATMO_OUTDOOR room Wetter


netatmo_indoor.gplot
# Created by FHEM/98_SVG.pm, 2013-11-26 22:06:36
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid ytics y2tics
set ylabel "Feuchtigkeit"
set y2label "Temperatur in Grad Celsius"

#FileLog 14:NETATMO_INDOOR.*::
#FileLog 8:NETATMO_INDOOR.*::

plot "<IN>" using 1:2 axes x1y2 title 'Temperatur' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Feuchtigkeit' ls l1 lw 1 with lines


netatmo_outdoor.gplot
# Created by FHEM/98_SVG.pm, 2013-11-26 22:19:22
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid ytics y2tics
set ylabel "Feuchtigkeit"
set y2label "Temperatur in Grad Celsius"

#FileLog 8:NETATMO_OUTDOOR.*::
#FileLog 6:NETATMO_OUTDOOR.*::

plot "<IN>" using 1:2 axes x1y2 title 'Temperatur' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Feuchtigkeit' ls l1 lw 1 with lines


Hyco

Ich bin leider noch ein FHEM Newbie. Bei mir läuft FHEM auf einem RasPi (wheezy) mit CUL und ich bin super zufrieden. Nun habe ich gestern die Netatmo geschenkt bekommen und will diese natürlich in FHEM integrieren. Ich kämpfe jedoch noch etwas mit Linux und GitHub. Wenn ich per wget die Datei https://github.com/philippelt/netatmo-api-python/blob/master/lnetatmo.py ins Linux hole, bekomme ich eine Kopie der GitHub-Seite. Wenn ich es mit git clone versuche gibts einen "HTTP-Fehler". Wenn ich die Datei in Linux mit nano erzeuge und den Inhalt der Inetatmo.py dort hinein kopiere, erhalte ich nach dem Starten immer einen SyntaxError: Non ASCII character in Line 17.
Wie kann ich am einfachsten die API ins Linux laden?
Vielen Dank für Eure Hilfe!

Schmitz

Wo gibt es die Datei: gatherNetatmo
Kann mir die jemand ggf. zur Verfügung stellen?

Vielen Dank

und Frohe Weihnachten

merlin2010