Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Webserver

Netatmo Developer Account und Netatmo App unter https://dev.netatmo.com/dev/createapp anlegen.

Client ID, Client Secret, Benutzname und Passwort im php Script unter Benutzereinstellungen eintragen.

Das Script netatmo.php auf einen Webserver ablegen. (z.B. Raspberry Pi)

Zur Überprüfung ob das Script funktioniert das Script in enem Webbrowser aufrufen.

Loxone

Die Vorlagedatei für den virtuellen HTTP Eingangsbefehl VI_F-Netatmo.xml im Ordner C:\ProgramData\Loxone\Loxone Config 7.2\Templates\VirtualIn ablegen.

LoxConfig Neu starten.

Unter vordefinierte HTTP-Geräte sollte nun F-Netatmo erscheinen.

Anpassung an GetStationData API (GetDeviceList deprecated)

Netatmo wird ab 30.11.2016 die API getDeviceList abschalten, eine Umstellung auf die neue API getStationData war also nötig. Die "neue" API ist deutlich besser strukturiert, innerhalb der Struktur sind sowohl die Devices und unterhalb davon die Module aufgelistet. Daher folgende Anpassungen:

  • das neue Script netatmo_template.php nutzt jetzt die neue API getStationData
  • innerhalb des Scripts wird nur die erste Station ausgegeben, wenn mehr als eine verwendet wird dann bitte das entsprechend im PHP Script anpassen
  • der angepasst virtuelle HTTP Eingangsbefehl VI_F-Netatmo neu.xml nutzt nur noch den Typ des Moduls als Muster zur Suche, weil die Reihenfolge nicht garantiert ist
  • wenn ihr mehr als ein Innenmodul betreibt dort bitte genau prüfen, in welcher Reihenfolge die Module gelistet werden und ob das noch klappt (habe leider nur eins und kann es daher nicht prüfen)

Wenn irgendwas nicht klappt oder ihr Verbesserungsbedarf seht, dann bitte melden (Zwinkern)

 

 

11 Kommentare

  1. PhilB sagt:

    Hallo,

    Erstmals vielen Dank für das Scipt! Ich habe dieses auf einem Webserver abgespeichert und beim Aufrufen direkt im Browser werden auch Daten angezeigt. In der LoxoneConfig habe ich die URL in F-Netatmo angepasst. Leider wird nichts angezeigt, es steht alles auf 0. Muss ich noch irgend etwas einstellen?

    Schonmal im Voraus Danke für eine Antwort!

    Gruss Philipp

    1. Hmm, kann ich nur mutmaßen so ganz ohne Log o.ä.

      • hast du das xml File für die Einbindung der Netatmo in das richtige Loxone Configure Verzeichnis gelegt?
      • hoffe du benutzt keinen Webserver mit Https? Das kann die Loxone nicht!
      • hast du mal versucht zu verstehen wie die Parameter ausgewertet werden? Stimmen die Parameterpositionen im Resultat der Webseite bei dir mit den Mustern in den HTTP-Eingangskommandos überein? Sprich diese \i Werte auch mit deiner Ausgabe des Webservers matchen?
      1. Ach ja, hast du das richtige xml benutzt? Das "alte" geht nicht mehr ...

      2. PhilB sagt:

        Danke für die Antwort. Es lag am HTTPS, hab nun eine Subdomain ohne und es läuft einwandfrei!
        Grüsse Philipp

  2. Hallo Dietmar,

    Ich setze die max anzahl von 3 Innenmodule ein und die Sortierung entspricht der, beim Einbinden.

    Lediglich die Eingangsbefehle müssen angepasst werden.

    \i entspricht Modul 1

    \i[1] entspricht ebenfalls Modul 1

    \i[2] entspricht nun Modul 2

    \i[3] entspricht Modul 3

     

    Ciao, Leigh

    1. Cool, war mit nicht klar das es so trivial ist. Danke fürs teilen!

  3. Hallo!

    Danke für die toller Erklärung.

    Kann mir jemand sagen ob es möglich ist und falls ja wie dass ich wie bei der anderen Einbindelösung zu den Werten auch die Tendenzen dabei habe oder die "Bewertung"?

    z.B.:

    34dB - normal
    37°C - steigend
    700ppm - mittel

    Danke! 

  4. Jens Beckers sagt:

    Hallo Alexander,

    in den alten Loxone-Mustervorlagen waren die Trends in den Statusbaustein noch mit den Werten 0-2 definiert.
    Ich habe heute bei Einbindung meiner neuen Netatmo-Station festgestellt, dass diese Werte von Netatmo als "up, stable oder down" angegeben werden. Wenn Du dies in der Wert-Spalte des Statusbausteins in Loxone eingibst, dann sollte es klappen.

    Anderseits habe ich selbst gerade einige Schwieigkeiten damit, bei der Verwendung der besagten Statusbaustein die von der Netatmo herausgegebenen Zeitwerte in der Loxone-App richtig darstellen zu lassen.

    Zunächst habe ich die Netamo- mit der Loxne-Zeit folgendermaßen abgeglichen: In einem Formelbaustein auf den ersten Eingang den Zeitwert von Netatmo angehängt.  Dann als Formel I1-1230760800 eingegeben. Format <v.x> in den Eigenschaften wählen.
    Die Zahl ist die Differenz der Zeitrechnung zwischen Loxone und Netatmo in Sekunden plus zwei Stunden gerechnet in Sekunden zum Ausgleich von UTC auf MESZ. Wenn man sich etwas Mühe gibt, kann man sicher auch noch den Sommer/Winterzeitwechsel mit in die Formel einbauen. So weit so gut.
    Dann habe ich für den Ausgang des Formelbausteins einen Merker (out) erzeugt anschließend den Merker (in) aus der Periperiestruktur als EIngang auf den gewünschten Statusbaustein gezogen.

    Letzterer verweigert aber aus mir nicht bekannten und nachvollziehbaren Gründen die Ausgabe als Datumsformat <v.x> nur bei <v.1t> hatte ich Glück, was aber eine für meine Begriffe  mit 2017-05-14 09:30:51.295 eine schlecht lesbare Formatierung bietet - und so genau wollte ich es denn auch nicht wissen.

    Klar, man könnte in diesem Fall den Statusbaustein auch weglassen und den Merker in der Visualisierung anzeigen lassen, was aber dann meist wieder dazu führt, dass die Information in der Liste der Visualisierung an anderer Stelle auftaucht, als man sie haben will. Daher war mir die Sache mit dem Status eigentlich ganz sympathisch.

    Gruß Jens  

     

     

     

  5. Erwin Wanner sagt:

    Ich suche immer noch eine Möglichkeit Wert und Uhrzeit für MIN und Max in einem Statusbaustein auszuwerten und anzuzeigen.

    Es gelingt mir nur mit einem Merker, dabei wird das Datum un d die Uhrzeit angezeigt.

  6. Manuel Hahn sagt:

    Hallo zusammen,

    .. vorerst mal Danke für die Möglichkeit die Netatmo an die Loxone anzubinden. Grundsätzlich funktioniert das bei mir auch, bis auf eine Sache. Die Abfrage der Innenmodule. Egal welches ich Abfrage, es kommt immer derselbe Wert. Hat sich hier etwas am Datenlayout geändert?

    .. folgende Befehls Erkennung habe zum testen der einzelnen Module. Ich habe aktuell zwei Innenmodule im Einsatz. Jedoch liefern alle 3 Abfragen ein und denselben Wert von CO2 = 371 ppm

    Innenmodul-1: \i[1] =>\i\i[type] => NAModule4\i\i[CO2] => \i\v

    Innenmodul-2: \i[2] =>\i\i[type] => NAModule4\i\i[CO2] => \i\v

    Innenmodul-3: \i[3] =>\i\i[type] => NAModule4\i\i[CO2] => \i\v


    .. die dazugehörige Abfrage:

    stdClass Object ( [_id] => 70:ee:50:2c:e3:a0 [cipher_id] => enc:16:vbadl0hcVeEIkzNPeJSiUXYs8BRzQIFL6tuUEq1+8W0drlMefyjQMHiZ+8f34Kr4 [last_status_store] => 1518695620 [modules] => Array ( [0] => stdClass Object ( [_id] => 02:00:00:2c:b7:fa [type] => NAModule1 [last_message] => 1518695619 [last_seen] => 1518695587 [dashboard_data] => stdClass Object ( [time_utc] => 1518695587 [Temperature] => 2.8 [temp_trend] => up [Humidity] => 62 [date_max_temp] => 1518695587 [date_min_temp] => 1518673746 [min_temp] => -5.4 [max_temp] => 2.8 ) [data_type] => Array ( [0] => Temperature [1] => Humidity ) [module_name] => Terrasse [last_setup] => 1514979065 [battery_vp] => 6086 [battery_percent] => 100 [rf_status] => 58 [firmware] => 45 ) [1] => stdClass Object ( [_id] => 06:00:00:01:a5:58 [type] => NAModule2 [last_message] => 1518695619 [last_seen] => 1518695619 [dashboard_data] => stdClass Object ( [WindAngle] => 239 [WindStrength] => 8 [GustAngle] => 251 [GustStrength] => 11 [time_utc] => 1518695606 [WindHistoric] => Array ( [0] => stdClass Object ( [WindStrength] => 10 [WindAngle] => 243 [time_utc] => 1518692274 ) [1] => stdClass Object ( [WindStrength] => 10 [WindAngle] => 240 [time_utc] => 1518692575 ) [2] => stdClass Object ( [WindStrength] => 10 [WindAngle] => 242 [time_utc] => 1518692876 ) [3] => stdClass Object ( [WindStrength] => 10 [WindAngle] => 243 [time_utc] => 1518693184 ) [4] => stdClass Object ( [WindStrength] => 10 [WindAngle] => 242 [time_utc] => 1518693485 ) [5] => stdClass Object ( [WindStrength] => 10 [WindAngle] => 242 [time_utc] => 1518693786 ) [6] => stdClass Object ( [WindStrength] => 9 [WindAngle] => 239 [time_utc] => 1518694087 ) [7] => stdClass Object ( [WindStrength] => 8 [WindAngle] => 241 [time_utc] => 1518694395 ) [8] => stdClass Object ( [WindStrength] => 8 [WindAngle] => 242 [time_utc] => 1518694695 ) [9] => stdClass Object ( [WindStrength] => 8 [WindAngle] => 236 [time_utc] => 1518695003 ) [10] => stdClass Object ( [WindStrength] => 8 [WindAngle] => 234 [time_utc] => 1518695299 ) [11] => stdClass Object ( [WindStrength] => 8 [WindAngle] => 239 [time_utc] => 1518695606 ) ) [date_max_wind_str] => 1518688627 [date_max_temp] => 1518649265 [date_min_temp] => 1518649265 [min_temp] => 0 [max_temp] => 0 [max_wind_angle] => 256 [max_wind_str] => 20 ) [data_type] => Array ( [0] => Wind ) [module_name] => Wind [last_setup] => 1518079118 [battery_vp] => 6192 [battery_percent] => 100 [rf_status] => 56 [firmware] => 18 ) [2] => stdClass Object ( [_id] => 05:00:00:04:60:a8 [type] => NAModule3 [last_message] => 1518695619 [last_seen] => 1518695613 [dashboard_data] => stdClass Object ( [time_utc] => 1518695600 [Rain] => 0 [sum_rain_24] => 0 [sum_rain_1] => 0 ) [data_type] => Array ( [0] => Rain ) [module_name] => Niederschlag [last_setup] => 1518079643 [battery_vp] => 6254 [battery_percent] => 100 [rf_status] => 50 [firmware] => 8 ) [3] => stdClass Object ( [_id] => 03:00:00:05:b8:6a [type] => NAModule4 [last_message] => 1518695619 [last_seen] => 1518695581 [dashboard_data] => stdClass Object ( [time_utc] => 1518695581 [Temperature] => 22.1 [temp_trend] => up [Humidity] => 36 [CO2] => 371 [date_max_temp] => 1518668613 [date_min_temp] => 1518692248 [min_temp] => 18.8 [max_temp] => 24.6 ) [data_type] => Array ( [0] => Temperature [1] => CO2 [2] => Humidity ) [module_name] => Schlafzimmer [last_setup] => 1518606109 [battery_vp] => 6352 [battery_percent] => 100 [rf_status] => 57 [firmware] => 44 ) [4] => stdClass Object ( [_id] => 03:00:00:05:b7:d8 [type] => NAModule4 [last_message] => 1518695619 [last_seen] => 1518695581 [dashboard_data] => stdClass Object ( [time_utc] => 1518695581 [Temperature] => 23.3 [temp_trend] => up [Humidity] => 35 [CO2] => 376 [date_max_temp] => 1518669228 [date_min_temp] => 1518691939 [min_temp] => 19.8 [max_temp] => 26.2 ) [data_type] => Array ( [0] => Temperature [1] => CO2 [2] => Humidity ) [module_name] => Bad [last_setup] => 1518606221 [battery_vp] => 6364 [battery_percent] => 100 [rf_status] => 55 [firmware] => 44 ) ) [place] => stdClass Object ( [altitude] => 306 [city] => Dietachdorf [country] => AT [timezone] => Europe/Vienna [location] => Array ( [0] => 14.428700953084 [1] => 48.08306563123 ) ) [station_name] => Home [type] => NAMain [dashboard_data] => stdClass Object ( [AbsolutePressure] => 989.5 [time_utc] => 1518695609 [Noise] => 39 [Temperature] => 20.5 [temp_trend] => up [Humidity] => 34 [Pressure] => 1026.2 [pressure_trend] => stable [CO2] => 402 [date_max_temp] => 1518669848 [date_min_temp] => 1518690757 [min_temp] => 19.9 [max_temp] => 22.1 ) [data_type] => Array ( [0] => Temperature [1] => CO2 [2] => Humidity [3] => Noise [4] => Pressure ) [co2_calibrating] => [date_setup] => 1514979064 [last_setup] => 1514979064 [module_name] => Wohnzimmer [firmware] => 132 [last_upgrade] => 1518078719 [wifi_status] => 36 [friend_users] => Array ( [0] => 5a7c1a9c0d0e236f348b5d85 ) )


    .. besten Dank im Voraus für den ein oder anderen Tipp,

  7. Manuel Hahn sagt:

    mein erster Lösungsansatz wär über die eindeutige MAC Adresse:


    Innenmodul 1 (Bad)
    \i[_id] => 03:00:00:05:b7:d8\i\i[type] => NAModule4\i\i[CO2] => \i\v
    Innenmodul 2 (Schlafzimmer)
    \i[_id] => 03:00:00:05:b8:6a\i\i[type] => NAModule4\i\i[CO2] => \i\v