Seite 1 von 1
Aus OpenweatherMap Werte an KNX senden
Verfasst: Do Mai 28, 2020 3:48 pm
von Robert_Mini
Dank
@alexbeer gab es schon länger eine Beschreibung für die Verwendung von OpenweatherMAP in NodeRED.
Ich habe die Anleitung nun in die KB eingepflegt:
app.php/kb/viewarticle?a=123
lg
Robert
Re: Aus OpenweatherMap Werte an KNX senden
Verfasst: Do Mai 28, 2020 10:05 pm
von Robert_Mini
Hallo zusammen!
Ich hätte die Map von Alex gerne noch um die Vorhersage Regen erweitert.
Hab zwar von NodeRED keine Ahnung, aber ich finde es auf den ersten Blick sehr intuitiv!!!
Ich habe bisher geschafft den Wert richtig zu lesen, siehe die 0,84mm im Bild unten im Debug Node msg.payload.
Der Code hierfür im Node "Vorhersage Regen" ist wie folgt:
Code: Alles auswählen
var preview_rain_3h_1_600 = { payload:msg.payload[3].rain };
return preview_rain_3h_1_600;
NodeRed_Rain.png
Ich scheitere aber beim Übertragen an KNX. Dort kommt bei DPT 9 nur 0 an.
Ich vermute das hängt mit den 3h im Objekt zusammen.
Ich kann im Code aber nicht payload:msg.payload[3].rain
.3h ansprechen.
Testweise dachte ich, ein DPT16 zu erzeugen, aber da bekomme ich einen "TypeError: Cannot read property 'toString' of undefined", womit ich als Rookie auch nichts anfange.
@alexbeer: kannst du mir da weiterhelfen?
Konkret: Wie bekommte ich die 0,84 in den DPT 9 KNX Objekt geschrieben?
Danke und lg
Robert
Re: Aus OpenweatherMap Werte an KNX senden
Verfasst: Do Mai 28, 2020 10:29 pm
von Robert_Mini
Hab grad noch ein wenig probiert:
Mit split auf 3 Stellen bekomme ich tatsächlich die Regenmenge auch auf den Bus.
An der Stelle bin ich aber mit dem Latein ziemlich am Ende:
- Richtigerweise muss ich die ersten 3 Stellen wegschneiden - keine Idee wie?
- Wenn der Regenforecast 0 ist gibt die API leider "undefinded" zurück. Wie kann ich undefined durch 0 ersetzen
DANKE
Robert
Re: Aus OpenweatherMap Werte an KNX senden
Verfasst: Do Mai 28, 2020 11:12 pm
von alexbeer
Hi Robert,
ich habe das mittlerweile wie folgt am laufen:
Code: Alles auswählen
// path to rain: payload[1].rain["3h"]
// sum for next 24h
var rainTotal = 0;
for (var i = 0; i < msg.payload.length; i++) {
if (i < 9 && msg.payload[i].hasOwnProperty("rain")) {
rainTotal += msg.payload[i].rain["3h"];
}
}
return {payload:rainTotal};
Re: Aus OpenweatherMap Werte an KNX senden
Verfasst: Fr Mai 29, 2020 9:38 am
von Robert_Mini
Hallo Alex!
Funktioniert perfekt - Danke!! Ich finde mehr und mehr gefallen an NodeRED!
Ich verstehe die API so, dass man mit obigem Aufruf den Regen am nächsten Tag 0:00 - 24:00 bekommt?
Im Diagramm auf OWM sind auch die Regenforecasts des aktuellen Tages zu sehen. Die bekommt man offensichtlich nur, wenn man am Vortag abfragt, oder sehe ich das falsch?
Danke und lg
Robert
PS: Habs auch in der KB angemerkt!
Re: Aus OpenweatherMap Werte an KNX senden
Verfasst: Fr Mai 29, 2020 10:14 am
von alexbeer
Hi Robert,
Ich teile deine Einschätzung bzgl NodeRed vollständig. Das Tool ist wahnsinnig umfangreich und erweitert den TWS für mich super.
Bzgl der API und dem Parameter Regen scheint es einen Unterschied bzgl IST-Wetter und Vorhersage zu geben.
Die Vorhersage ist bereits für den kompletten Tag.
Beim Ist-Wetter gibt es ein Array mit dem Niederschlag je 3h.
Daher kummuliere ich mir den Niederschlag über einen ganzen Tag.
Sorry falls ich da irritiert haben sollte.
VG Alex
Re: Aus OpenweatherMap Werte an KNX senden
Verfasst: Fr Mai 29, 2020 10:20 am
von Robert_Mini
Hast du für das Ist-Wetter auch den Code für mich?
Ich hab das schon so gelesen, dass du i=0 - <9 aufsummierst, das ist aber immer der
nächste Tag - richtig?
Hinweis: Ich bin der Meinung, dass es i<8 heißen sollte, da 0-7 Tag1 ist! - 5 Tages Arry 0-39 (bzw. 5x8=40)
Danke für deine Hilfe!
NodeRED ist super und wenn man den Umweg über KNX durch MQTT ersetzen kann, dann wird es so richtig COOL!!!
lg
Robert