[OH3] Ecowitt GW1100 über http binding auslesen

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
Ezeqeel
Beiträge: 31
Registriert: 27. Okt 2020 08:16

[OH3] Ecowitt GW1100 über http binding auslesen

Beitrag von Ezeqeel »

Hallo,
ich habe mir ein paar Sensoren und das GW1100 von Ecowitt angeschafft, um die Wetterdaten und vor allem Regen und Bodenfeuchte zu messen und damit die Gartenbewässerung zu steuern.
Soweit ich herausfinden konnte unterstützt Weather Underground die Sensoren für Bodenfeuchte nicht. Deshalb hab ich mal die Informationen zusammen gesucht, um das GW1100 direkt über die API auszulesen.
Neben dem http Binding braucht man auch noch JSONPATH.

Die real-time Daten vom GW1100 erhält man über http://192.168.x.x/get_livedata_info?
Die API liefert die aktuellen Werte aller angebundenen Sensoren zurück.

Code: Alles auswählen

{
    "common_list": [
        {
            "id": "0x02",
            "val": "17.8",
            "unit": "C"
        },
        {
            "id": "0x07",
            "val": "53%"
        },
        {
            "id": "3",
            "val": "17.8",
            "unit": "C"
        },
        {
            "id": "0x03",
            "val": "8.1",
            "unit": "C",
            "battery": "0"
        }
    ],
    "rain": [
        {
            "id": "0x0D",
            "val": "1.1 mm"
        },
        {
            "id": "0x0E",
            "val": "0.0 mm/Hr"
        },
        {
            "id": "0x10",
            "val": "1.2 mm"
        },
        {
            "id": "0x11",
            "val": "34.3 mm"
        },
        {
            "id": "0x12",
            "val": "56.1 mm"
        },
        {
            "id": "0x13",
            "val": "172.7 mm",
            "battery": "0"
        }
    ],
    "wh25": [
        {
            "intemp": "24.9",
            "unit": "C",
            "inhumi": "48%",
            "abs": "995.8 hPa",
            "rel": "995.8 hPa"
        }
    ],
    "ch_soil": [
        {
            "channel": "1",
            "name": "",
            "battery": "0",
            "humidity": "52%"
        },
        {
            "channel": "2",
            "name": "",
            "battery": "0",
            "humidity": "65%"
        },
        {
            "channel": "3",
            "name": "",
            "battery": "0",
            "humidity": "42%"
        },
        {
            "channel": "4",
            "name": "",
            "battery": "0",
            "humidity": "45%"
        }
    ]
}
Common_list ist der Außensensor, rain ist der Regenmesser, wh25 ist der integrierte Sensor im GW1100, und ch_soil sind die vier Bodenfeuchtesensoren in meiner Installation.
Die Werte im Feld "id" sind in folgender Tabelle beschrieben:

Code: Alles auswählen

INTEMP	        0x01	Indoor Temperature (°C)
OUTTEMP	        0x02	Outdoor Temperature (°C)
DEWPOINT	0x03	Dew point (°C)
WINDCHILL	0x04	Wind chill (°C)
HEATINDEX	0x05	Heat index (°C)
INHUMI	        0x06	Indoor Humidity (%)
OUTHUMI	        0x07	Outdoor Humidity (%)
ABSBARO	        0x08	Absolutely Barometric (hpa)
RELBARO	        0x09	Relative Barometric (hpa)
WINDDIRECTION	0x0A	Wind Direction (360°)
WINDSPEED	0x0B	Wind Speed (m/s)
GUSTSPEED	0x0C	Gust Speed (m/s)
RAINEVENT	0x0D	Rain Event (mm)
RAINRATE	0x0E	Rain Rate (mm/h)
RAIN_GAIN	0x0F	Rain gain (mm)
RAINDAY	        0x10	Rain Day (mm)
RAINWEEK	0x11	Rain Week (mm)
RAINMONTH	0x12	Rain Month (mm)
RAINYEAR	0x13	Rain Year (mm)
RAINTOTALS	0x14	Rain Totals (mm)
LIGHT	        0x15	Light (lux)
UV		0x16	UV (uW/m2)
UVI		0x17	UVI (0-15 index)
TIME		0x18	Date and time
DAYLWINDMAX	0X19	Day max wind(m/s)
Für meine Sensoren sehen die JSONPATH Transformationen wie folgt aus:

Code: Alles auswählen

Aussentemperatur = JSONPATH:$.common_list[?(@.id =='0x02')].val
Aussenluftfeuchtigkeit = JSONPATH:$.common_list[?(@.id =='0x07')].val
Taupunkt = JSONPATH:$.common_list[?(@.id =='0x03')].val
Regenereignis = JSONPATH:$.common_list[?(@.id =='0x0D')].val
Regen pro Stunde = JSONPATH:$.rain[?(@.id =='0x0E')].val
Regen pro Tag = JSONPATH:$.rain[?(@.id =='0x10')].val
Regen pro Woche = JSONPATH:$.rain[?(@.id =='0x11')].val
Regen pro Monat = JSONPATH:$.rain[?(@.id =='0x12')].val
Regen pro Jahr = JSONPATH:$.rain[?(@.id =='0x13')].val
Innentemperatur = JSONPATH:$.wh25[*].intemp
Innenluftfeuchtigkeit = JSONPATH:$.wh25[*].inhumi
Bodenfeuchte_1 = JSONPATH:$.ch_soil[?(@.channel ==1)].humidity
Bodenfeuchte_2 = JSONPATH:$.ch_soil[?(@.channel ==2)].humidity
Bodenfeuchte_3 = JSONPATH:$.ch_soil[?(@.channel ==3)].humidity
Bodenfeuchte_4 = JSONPATH:$.ch_soil[?(@.channel ==4)].humidity
Leider geht Ecowitt nicht besonders einheitlich vor. So werden die Werte vom Außensensor ohne Einheit angegeben, beim Regenmesser wird die Einheit mit reingeschrieben. Zudem wird noch ein Unterschied zwischen rainRate (mm/hr) und rainDay/rainWeek/rainMonth/rainYear (mm) gemacht. Somit erhält man also einen string und muss diesen noch in eine Zahl umwandeln.
Das mache ich über eine rule, wobei ich mir da noch nicht 100%ig sicher bin, ob das passt.

Code: Alles auswählen

rule "Regenereignis"
when
    Item EcowittGW1100_RegenereignisString changed
then
    EcowittGW1100_Regenereignis.postUpdate(Float::parseFloat(String::format("%s",EcowittGW1100_RegenereignisString.state).replace(' mm','')))
end

rule "Regen pro Stunde"
when
    Item EcowittGW1100_RegenproStundeString changed
then
    EcowittGW1100_RegenproStunde.postUpdate(Float::parseFloat(String::format("%s",EcowittGW1100_RegenproStundeString.state).replace(' mm/Hr','')))
    //EcowittGW1100_RegenproStunde.postUpdate(EcowittGW1100_RegenproStunde.state as Number)
end

usw.....
Was jetzt noch fehlt sind Schreiben der Werte in eine Datenbank und die Darstellung als Chart.
Wobei ich dazu erstmal eine richtige Visu hinkriegen sollte....da waren sie wieder, meine Probleme.... :lol:

Vielleicht hilft das ja jemandem, und für Verbesserungsvorschläge bin ich natürlich dankbar!

Benutzeravatar
TorstenE
Beiträge: 237
Registriert: 12. Jan 2022 18:29
Answers: 4
Wohnort: Niederstaufen

Re: [OH3] Ecowitt GW1100 über http binding auslesen

Beitrag von TorstenE »

Hallo Ezeqeel,

ich sitze gerade hier und schau mir Wetterstatoinen an, welche
ich in OH einbinden könnte. Dabei bin ich ebenfalls auf die GW 1100
gestoßen. Um so mehr wundert es mich jetzt, was es für ein Akt
ist, diese einzubinden.
Da ich das Gerät ja noch nicht gekauft habe interessiert mich
Dein Beitrag besonders, ob die Erwartung, welche in das Gerät
gesteckt werden auch umsetzbar sind.

Benötigt man zu der Wetterstation noch das Gateway ?

VG

Torsten
openHAB 4.0.4 auf einem Pi 4 mit openHABian

Ezeqeel
Beiträge: 31
Registriert: 27. Okt 2020 08:16

Re: [OH3] Ecowitt GW1100 über http binding auslesen

Beitrag von Ezeqeel »

Hallo Torsten,

ja, es ist jetzt nicht gerade plug & play. Wundert mich auch ein wenig, dass dieses doch sehr verbreitete System von Ecowitt noch kein Binding hat.
Aber wenigstens gibt es eine API. Evtl. ist die offizielle Ecowitt API auch etwas aufgeräumter als die vom GW1100 ;)

Ansonsten finde ich das System und die verfügbaren Sensoren super! Momentan steht das GW1100 noch im Haus, und trotzdem sind alle Sensoren gut erreichbar und stabil. Ich nutze aber keine komplette Wetterstation, sondern die einzelnen Sensoren für Temperatur und Regen. Dazu kommt dann bald noch das WS68 für Windmessung.
Ein Display von Ecowitt brauche ich nicht. Die Daten sollen ausschließlich in openhab verarbeitet und angezeigt werden.

Soweit ich das verstanden habe, brauchst du nicht zwingend das Gateway.
https://osswww.ecowitt.net/uploads/2022 ... 0table.pdf
Ob jede Wetterstation die API zur Verfügung stellt, hab ich auf die Schnelle nicht feststellen können. Da die Daten aber immer auf die Ecowitt Server geladen werden können, kannst du auch immer die API nutzen.

Grüße
Sven

Benutzeravatar
TorstenE
Beiträge: 237
Registriert: 12. Jan 2022 18:29
Answers: 4
Wohnort: Niederstaufen

Re: [OH3] Ecowitt GW1100 über http binding auslesen

Beitrag von TorstenE »

Hey Ezeqeel,

das bedeutet, die Daten werden von der Station immer zum Ecowitt Server gesendet und
von dort werden sie abgerufen. Bedeutet man benötigt immer eine bestehende Internetverbindung ?
openHAB 4.0.4 auf einem Pi 4 mit openHABian

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: [OH3] Ecowitt GW1100 über http binding auslesen

Beitrag von sihui »

Ezeqeel hat geschrieben: 18. Sep 2022 19:26 Wundert mich auch ein wenig, dass dieses doch sehr verbreitete System von Ecowitt noch kein Binding hat.
Doch, gibt es:

https://www.openhab.org/addons/bindings ... erstation/
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Benutzeravatar
TorstenE
Beiträge: 237
Registriert: 12. Jan 2022 18:29
Answers: 4
Wohnort: Niederstaufen

Re: [OH3] Ecowitt GW1100 über http binding auslesen

Beitrag von TorstenE »

Hey sihui,

geht das Binding zur Wetterstation direkt per W-LAN ohne irgend welches "Zwischenzeugs"
oder zu einem Cloud-Anbieter, wo ich meine eigenen Wetterdaten abfragen muss?
openHAB 4.0.4 auf einem Pi 4 mit openHABian

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: [OH3] Ecowitt GW1100 über http binding auslesen

Beitrag von sihui »

TorstenE hat geschrieben: 18. Sep 2022 19:51 geht das Binding zur Wetterstation direkt per W-LAN ohne irgend welches "Zwischenzeugs"
oder zu einem Cloud-Anbieter, wo ich meine eigenen Wetterdaten abfragen muss?
Wäre schön wenn du deine Fragen nur in einem Thread stellst. Antwort siehe im anderen Thread.
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Benutzeravatar
TorstenE
Beiträge: 237
Registriert: 12. Jan 2022 18:29
Answers: 4
Wohnort: Niederstaufen

Re: [OH3] Ecowitt GW1100 über http binding auslesen

Beitrag von TorstenE »

Du hast Recht hat sich durch Zufall so ergeben
ist keine Absicht sorry
openHAB 4.0.4 auf einem Pi 4 mit openHABian

Ezeqeel
Beiträge: 31
Registriert: 27. Okt 2020 08:16

Re: [OH3] Ecowitt GW1100 über http binding auslesen

Beitrag von Ezeqeel »

sihui hat geschrieben: 18. Sep 2022 19:44 Doch, gibt es:

https://www.openhab.org/addons/bindings ... erstation/
Ach sh*** :oops: :lol:
Hätte ich mal bei den community bindings schauen, und dann auch noch raffen sollen, dass das binding passt...

Antworten