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%"
}
]
}
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)
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
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.....
Wobei ich dazu erstmal eine richtige Visu hinkriegen sollte....da waren sie wieder, meine Probleme....
Vielleicht hilft das ja jemandem, und für Verbesserungsvorschläge bin ich natürlich dankbar!