Wetterstation WS3500 (Sainlogic) mit Daten von Ecowitt in OH3 mit HTTP-Binding einbinden
Verfasst: 10. Dez 2022 17:28
Meine Systemumgebung:
Synology DS220+, Installierte DSM-Version 6.2.4-25556, Docker, Openhab:3.4.0.M5
Voraussetzung zum Abruf der Daten:
Es muss ein Account unter www.ecowitt.net angelegt werden.
Im erstellten Account kann unter „User profil“ der Application Key und der API Key erzeugt werden.
(API Keys --> create) Die Schlüssel werden zum Einlesen des JSON-String in OH3 benötigt.
MAC-Adresse der WS3500 Wetterstation
1.Anlegen eines http-Thing
Basis-Url
https://api.ecowitt.net/api/v3/device/r ... l_back=all
Aktualisierungsintervall kann nach Wunsch in Sekunden eingestellt werden. Ich habe hier 60 Sek. gewählt
Anlegen eines Item im Channel zur Speicherung des ausgelesenen JSON-String
Anmerkung:
Der erhaltene String kann zum besseren Erkennen der Aufbaustruktur mit einem Json-Parser angeschaut werden.
Ich nutze hierzu den http://json.parser.online.fr/ Online Parser
Hinweis: Die Ecowitt-Daten werden im Imperialen System geliefert.
2. Erstellen einer Rule zum Auslesen der Wetterwerte aus dem JSON-String mit Blockly
When
Als Trigger für die Rule ist „an item state change“ mit dem angelegten Item aus dem http-Thing auszuwählen.
Then
Als Action ist “Run script --> Design with Blockly” auszuwählen
3. Erstellen des scripts mit Blockly
1. Schritt
Erstellen von 2 Blockly-Variablen unter Menüpunkt „Variables“
var_json_string_ecowitt --> (bekommt den json-String zugewiesen)
var_sensorwert_ecowitt --> (bekommt nacheinander alle Sensorwerte zugewiesen)
2. Schritt
Einlesen und Umwandeln des Items das den JSON-String enthält und speichern in der Blockly-Variablen
(„create text with“ unter Menüpunkt Text)
3. Schritt
Auslesen der einzelnen, gewünschten Wetterstationswerte mit Umwandlung vom imperialem in metrisches System und Runden auf eine Nachkommastelle.
Anmerkung:
Für alle gewünschten Wetterstationswerte müssen Items angelegt werden die die Daten speichern.
Blockly-Beispiel "Temperaturwerte und Luftfeuchtigkeit aussen und innen"
Struktur aus dem JSON-Sting für die Aussentemperatur --> $.data.outdoor.temperature.value
Umwandlung Temperaturwert von °F in °C --> (°F-32) x 5/9 = °C
Ist analog für weitere gewünschte Wetterdaten anzuwenden
Korrekturwerte hierzu:
Luftdruck von inHg in hPa --> inHg x 33.8639
Niederschlag von Inch in mm --> inch x 25.4
Windgeschwindigkeit von Inch in mm --> miles x 1.77028
usw.
Viel Erfolg beim Umsetzen
Synology DS220+, Installierte DSM-Version 6.2.4-25556, Docker, Openhab:3.4.0.M5
Voraussetzung zum Abruf der Daten:
Es muss ein Account unter www.ecowitt.net angelegt werden.
Im erstellten Account kann unter „User profil“ der Application Key und der API Key erzeugt werden.
(API Keys --> create) Die Schlüssel werden zum Einlesen des JSON-String in OH3 benötigt.
MAC-Adresse der WS3500 Wetterstation
1.Anlegen eines http-Thing
Basis-Url
https://api.ecowitt.net/api/v3/device/r ... l_back=all
Aktualisierungsintervall kann nach Wunsch in Sekunden eingestellt werden. Ich habe hier 60 Sek. gewählt
Anlegen eines Item im Channel zur Speicherung des ausgelesenen JSON-String
Anmerkung:
Der erhaltene String kann zum besseren Erkennen der Aufbaustruktur mit einem Json-Parser angeschaut werden.
Ich nutze hierzu den http://json.parser.online.fr/ Online Parser
Hinweis: Die Ecowitt-Daten werden im Imperialen System geliefert.
2. Erstellen einer Rule zum Auslesen der Wetterwerte aus dem JSON-String mit Blockly
When
Als Trigger für die Rule ist „an item state change“ mit dem angelegten Item aus dem http-Thing auszuwählen.
Then
Als Action ist “Run script --> Design with Blockly” auszuwählen
3. Erstellen des scripts mit Blockly
1. Schritt
Erstellen von 2 Blockly-Variablen unter Menüpunkt „Variables“
var_json_string_ecowitt --> (bekommt den json-String zugewiesen)
var_sensorwert_ecowitt --> (bekommt nacheinander alle Sensorwerte zugewiesen)
2. Schritt
Einlesen und Umwandeln des Items das den JSON-String enthält und speichern in der Blockly-Variablen
(„create text with“ unter Menüpunkt Text)
3. Schritt
Auslesen der einzelnen, gewünschten Wetterstationswerte mit Umwandlung vom imperialem in metrisches System und Runden auf eine Nachkommastelle.
Anmerkung:
Für alle gewünschten Wetterstationswerte müssen Items angelegt werden die die Daten speichern.
Blockly-Beispiel "Temperaturwerte und Luftfeuchtigkeit aussen und innen"
Struktur aus dem JSON-Sting für die Aussentemperatur --> $.data.outdoor.temperature.value
Umwandlung Temperaturwert von °F in °C --> (°F-32) x 5/9 = °C
Ist analog für weitere gewünschte Wetterdaten anzuwenden
Korrekturwerte hierzu:
Luftdruck von inHg in hPa --> inHg x 33.8639
Niederschlag von Inch in mm --> inch x 25.4
Windgeschwindigkeit von Inch in mm --> miles x 1.77028
usw.
Viel Erfolg beim Umsetzen