Netatmo in FHEM integrieren

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

Vorheriges Thema - Nächstes Thema

justme1968

#165
ab morgen gibt es ein update mit vorläufigen support für die http://www.netatmo.com/weathermap veröffentlichten stationen.


  • das device für den netatmo acoount hat jetzt ein kommando 'get <name> public'
    damit kann man sich eine liste der veröffentlichten stationen ansehen. entweder im umkreis um die eigene fhem installation (global longitude/latitude), im umkreis um einen beliebigen anderen punkt oder in einem vorgegeben bereich
  • die so gefundene station kann man mit copy&paste der ersten drei spalten so anlegen: define <name> netatmo PUBLIC longitude latiude [radius]

in der netatmo doku zu den veröffentlichten station ist zwar beschrieben das man diese ganz normal abfragen kann, das funktioniert aber zumindest nicht einfach so. ein nebensatz erwähnt das man sich diese selber freigeben muss (eine station kann zu mehreren konten gehören). ich habe aber nicht gefunden wo man das tun kann. deshalb gibt es den oben angegeben workaround das bei einer PUBLIC station die position mit angeben werden muss und auch einen suchradius. die abfrage der werte geschieht dann in dem über das api alle stationen im angegeben radius angefordert werden und darin dann die device id gesucht wird. wenn man den radius passend wählt ist der overhead sehr klein zumal die abfrage der readings passiert non blocking ist.

ein radius von 0 funktionert leider nicht da auf netatmo seite die suche scheinbar nicht so genau ist.

die abfrage mit 'get <name> public' ist blocking und man sollte den radius nicht zu gross wählen und sich langsam nach oben tasten.

der einzige wirkliche nachteil gegenüber dem 'echten' abfragen der readings ist das es mit rain nicht wirklich funktioniert da hier immer nur der aktuelle wert über das api gemeldet wird. wenn das polling intervall nicht zum update intervall des gerätes passt gehen hier readings verloren. auf der weathermap seite ist zwar auch ein regen/tag wert zu sehen der ist aber über das public api nicht zu bekommen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Fritzi

#166
Zitat von: justme1968 am 13 Juli 2014, 00:39:29
ab morgen gibt es ein update mit vorläufigen support für die http://www.netatmo.com/weathermap veröffentlichten stationen.
Das klingt ja spannend. Ich binzufällig darauf gestossen, nachdem im Changelog des heutigen Updates darauf hingwiesen wurde.
Leider bekomme ich die öffentlichen Stationen nicht in FHEM integriert.
Über die o.g. weathermap habe ich mehrere Stationen gefunden. Deren Device-Adresse findet man, wenn man sich von der weathermap-Seite eine Mail mit den Daten der Station schickt. Die Device-Adresse ist dann Bestandteil des verschickten Links.
Damit komme ich aber nicht weiter. Auch ein testweise angelegter Account (über die netatmo -,App!) hilft nicht weiter.
und auch ein define Wetter netatmo PUBLIC 70:ee:50:02:43:48 48.4 11.733333 funktioniert nicht.

Kann evtl. mal jemand ein funktionierendes Beispiel posten? Die commandref ist da noch etwas dünn... ;-)
FHEM 5.6 auf RaspberryPi2 mit Busware CUL culfw V1.61
CUL_HM     : HM-CC-RT-DN,HM-LC-SW1-FM,HM-LC-Sw1PBU-FM,HM-SEC-SC,HM-Sen-MDIR-O-2,HM-TC-IT-WM-W-EU
FBDECT      : Dect200
HUEDevice  : LCT001,LCT003

justme1968

was genau funktioniert nicht?

was steht im log file?

du brauchst einen netatmo account mit der für fhem angelegten id und du musst ein entsprechendes fhem device angelegt haben. dort muss das get <name> public funktionieren. d.h. keinen fehler liefern sondern entweder eine liste mit devices oder ein no devices found.

kann es sein das du länge und breite vertauscht hast?

bei einem get <devce> public 11.733333 48.4 <radius> so lange den radius verkleinern bzw. vergrößern bis die station die du dir ausgesucht hast in der liste mit auftaucht. diesen radius dann bei der definition des public device mit angeben.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

no_Legend

@just hast du auch gleich die Tokens fest eingebaut?
Docker FHEM immer aktuell,4x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
Homematic, Shelly, Tasmota, MQTT, Unifi Network usw.

justme1968

du musst weiter einen eigenen account haben und ein app token erzeugen.

das ist nicht wirklich viel aufwand und die einzig wirklich praktikable methode für eine anwendung wie fhem die nicht interaktiv ist und bei der ich das redirect zur netatmo oauth seite nicht machen kann.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Fritzi

Hallo Andre, danke der Nachfrage.
Im log tauchen ständig wiederkehrend folgende Meldungen auf se of uninitialized value $a[2] in string eq at ./FHEM/38_netatmo.pm line 60.
Use of uninitialized value $a[2] in string eq at ./FHEM/38_netatmo.pm line 80.
Use of uninitialized value $a[2] in string eq at ./FHEM/38_netatmo.pm line 96.
2014.07.13 10:53:39 1: define netatmo netatmo netatmo: Usage: define <name> netatmo device
       define <name> netatmo userid publickey
       define <name> netatmo PUBLIC device latitude longitude [radius]
       define <name> netatmo [ACCOUNT] username password
2014.07.13 10:54:38 3: No I/O device found for netatmo
2014.07.13 10:54:38 1: netatmo: no I/O device
Use of uninitialized value $_ in substitution (s///) at FHEM/HttpUtils.pm line 44.
Use of uninitialized value in concatenation (.) or string at FHEM/HttpUtils.pm line 180.
Use of uninitialized value $_ in substitution (s///) at FHEM/HttpUtils.pm line 44.
Use of uninitialized value in concatenation (.) or string at FHEM/HttpUtils.pm line 180.
Use of uninitialized value $_ in substitution (s///) at FHEM/HttpUtils.pm line 44.
Use of uninitialized value in concatenation (.) or string at FHEM/HttpUtils.pm line 180.
Use of uninitialized value $_ in substitution (s///) at FHEM/HttpUtils.pm line 44.
Use of uninitialized value in concatenation (.) or string at FHEM/HttpUtils.pm line 180.
Use of uninitialized value $name in concatenation (.) or string at ./FHEM/38_netatmo.pm line 449.
Use of uninitialized value $name in concatenation (.) or string at ./FHEM/38_netatmo.pm line 452.
2014.07.13 10:54:38 2: : invalid json detected: <html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx/1.6.0</center>
</body>
</html>
.
Im Moment habe ich folgendes in meiner cfg: define Wetter netatmo PUBLIC 70:ee:50:02:43:48 48.4 11.733333
attr Wetter room Aussen
attr Wetter stateFormat

Ein get Wetter public führt immer zur Fehlermeldung unknown argument. use one of the following update,updateall...
FHEM 5.6 auf RaspberryPi2 mit Busware CUL culfw V1.61
CUL_HM     : HM-CC-RT-DN,HM-LC-SW1-FM,HM-LC-Sw1PBU-FM,HM-SEC-SC,HM-Sen-MDIR-O-2,HM-TC-IT-WM-W-EU
FBDECT      : Dect200
HUEDevice  : LCT001,LCT003

Fritzi

Ah. Moment. Jetzt seh ich, das im Log auf JSON hingewiesen wird. Das muss ich wohl erst noch auf meine Fritzbox schieben.
FHEM 5.6 auf RaspberryPi2 mit Busware CUL culfw V1.61
CUL_HM     : HM-CC-RT-DN,HM-LC-SW1-FM,HM-LC-Sw1PBU-FM,HM-SEC-SC,HM-Sen-MDIR-O-2,HM-TC-IT-WM-W-EU
FBDECT      : Dect200
HUEDevice  : LCT001,LCT003

justme1968

du braust ein netatmo device mit user und password deines accounts. das ist das IODev für alle weiteren netatmo devices ohne geht es nicht.

länge und breite sind immer noch vertauscht.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Fritzi


Zitat von: justme1968 am 13 Juli 2014, 12:37:29
du braust ein netatmo device mit user und password deines accounts. das ist das IODev für alle weiteren netatmo devices ohne geht es nicht.

länge und breite sind immer noch vertauscht.

Wenn du sagst "du brauchst ein netatmo device", meinst du dann ein FHEM device oder ein real existierendes Netatmo Gerät, dass man "anfassen kann"? :-)

Ist es dann so, dass ich die Netatmo Public Stations nur auslesen kann, wenn ich selber eine eigene Netatmo Station betreibe?

Einen Account habe ich mir in der Netatmo-App angelegt. Da ich (bisher) keine eigene Netatmo betreibe, ging die Registrierung nur bis zu der Stelle, wo er die Station sucht. Der Account an sich funktioniert jedoch. Ich kann mich damit anmelden.

In der weathermap habe ich einige öffentliche Netatmo Stationen in der Nähe gefunden. Die zu nutzen wäre schon praktisch. Ein wenig unsinnig erscheint es mir, eine eigene Station neben die meines Nachbarn zu stellen, nur um das Wetter bei meinem Nachbarn auslesen zu können. :-)


JSON läuft bei mir übrigens doch bereits erfolgreich. Das hab ich vor einiger Zeit mal für die HUE Devices eingerichtet. Hatte es nur schon wieder vergessen. Insofern wirft das Logfile doch einige Fragen auf.

FHEM 5.6 auf RaspberryPi2 mit Busware CUL culfw V1.61
CUL_HM     : HM-CC-RT-DN,HM-LC-SW1-FM,HM-LC-Sw1PBU-FM,HM-SEC-SC,HM-Sen-MDIR-O-2,HM-TC-IT-WM-W-EU
FBDECT      : Dect200
HUEDevice  : LCT001,LCT003

Fritzi

Zitat von: justme1968 am 13 Juli 2014, 12:25:22
du musst weiter einen eigenen account haben und ein app token erzeugen.

Wie erzeuge ich ein app token?
FHEM 5.6 auf RaspberryPi2 mit Busware CUL culfw V1.61
CUL_HM     : HM-CC-RT-DN,HM-LC-SW1-FM,HM-LC-Sw1PBU-FM,HM-SEC-SC,HM-Sen-MDIR-O-2,HM-TC-IT-WM-W-EU
FBDECT      : Dect200
HUEDevice  : LCT001,LCT003

no_Legend

Du musst dich im Dev Account einloggen und dann einen Token erstellen.

@just
klar ist es kleiner aufwand.
Aber es muss doch nicht jeder einen Token anlegen wenn einer reicht.
Das kostet keine Geld und die Benutzung des Moduls wird einfacher.
Docker FHEM immer aktuell,4x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
Homematic, Shelly, Tasmota, MQTT, Unifi Network usw.

Mitch

Hallo,

habe auch gerade eine PUBLIC Station angelegt, bekomme aber keine Readings.
Status sagt ok und State Initialized.

Auch wenn ich manuel einen get update mache, kommt nicht an??
FHEM im Proxmox Container

Fritzi

#178
Um es anderen etwas leichter zu machen, hier die wichtigsten Schritte:

Aktualisiert am 11.08.2014:

1. Man benötigt einen Netatmo Account (Email und Passwort). Diesen legt man am einfachsten in einer App (z.B. auf dem iPad) an. Auf der Homepage geht das scheinbar nicht. Zumindest habe ich keine Möglichkeit gefunden.

2. Man benötigt eine Client_ID und den Client_Secret. Diese Informationen muss man auf dieser Seite generieren. Hierfür meldet man sich mit den zuvor erstellten Account-Daten an und erstellt dann eine "eigene App". Hier werden einige Daten abgefragt, man muss jedoch nichts eingeben. Es reicht der App-Titel (z.B. "Fhem-Netatmo") und eine kurze Beschreibung (z.B. "meine erste eigene app..."). Auf der dann folgenden Seite tauchen die Client_ID and der Client_Secret auf. Diese Daten braucht man wiederrum in FHEM.

3. In FHEM ein device anlegen mit den o.g. Informationen: define Wetter netatmo ACCOUNT <Email> <Passwort> <Client_ID> <Client_Secret>
Hinweis: Das Wort "ACCOUNT" muss in diesem define angegeben werden. Also nicht durch die o.g. Account-Daten ersetzen!

4. Am besten das neue Device noch schnell in einen Raum schieben, damit man es besser findet: attr Wetter room Aussen

5. Jetzt taucht in FHEM beim Device in der GUI auch die option "public " auf.

6. Wenn nach kurzer Zeit beim Device Status "Invalid Access Token" auftaucht, dann in der Fhem-Installation nach der Datei 38_netatmo.pm suchen und darin "https" durch "http" ersetzen.
[Edit] Inzwischen gibt es ein attribut nossl. Das auf 1 setzen und der https-Fehler wird umgangen: attr Wetter nossl 1[Edit2]Dieser Fehler trat hauptsächlich auf Fritzboxen auf. Die aktuelle Version prüft automatisch auf welcher Hardware Fhem läuft und setzt die korrekten Einstellungen.

7. Mit get Wetter public <longitude> <latitude> <radius> geeignete öffentliche Wetterstationen suchen. <longitude> und <latitude> vom Wunschort findet man recht schnell über Google.

[edit]
Inzwischen geht es auch mit Hilfe der PLZ. get Wetter public <PLZ>Schaut mal ins Wiki.

8. Mit define Wetterstation netatmo public <ID_der_gewählten_Station> <longitude> <latitude> den eigentlichen Datenlieferanten erzeugen.
FHEM 5.6 auf RaspberryPi2 mit Busware CUL culfw V1.61
CUL_HM     : HM-CC-RT-DN,HM-LC-SW1-FM,HM-LC-Sw1PBU-FM,HM-SEC-SC,HM-Sen-MDIR-O-2,HM-TC-IT-WM-W-EU
FBDECT      : Dect200
HUEDevice  : LCT001,LCT003

justme1968

#179
@Fritzi: ich meine ein fhem device.  aber den account bei netatmo brauchst du. ohne account geht auch das public api nicht. eine eigene station brauchst du nicht.

@no_Legend: du kannst gerne deinen account der allgemeinheit zur verfügung stellen :). aber um ernst. das nützt nichts weil dann immer noch jeder diesem token vertrauen muss damit auf die jeweilige station zugegriffen werden kann. und der normale ablauf hierzu geht per redirect interaktiv im browser. das geht mit einer anwendung wie fhem einfach nicht vernünftig.

@Mitch: du musst mit dem radius (und den koordinaten) spielen bis das get public etwas zurück liefert. und wichtig: erst länge dann breite.

gruss andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968