-
Autor
Hallo,
ich hatte mir jüngst einen Shelly Plus 1 mit dem Shelly Addon zugelegt, um Temperaturdaten an einen kleinen geschriebenen Dienst zu senden, die dort weiter verarbeitet werden. Da der Shelly anbietet, bei einer Temperaturänderung eine URL aufzurufen, hab ich mir diesen Teil genauer angeschaut. Laut der Web UI gibt es als verfügbare Tokens:
- $temperature
- $temperatureF
Da ich an dem Addon zwei Temperatursensoren angeschlossen habe (Innen + Außentemp.), benötige ich zwecks Zuordnung weitere Informationen dazu. Da habe ich in der Doku gefunden, dass man folgende Daten ebenfalls zur Verfügung hat:
- info
- config
- status
- event
Das Event Objekt beinhaltet gut nutzbare Daten. Neben der Temperatur wird ebenfalls die component, id aber auch der Zeitstempel der Messaufnahme bereitgestellt. Ein Beispieldatensatz:
{"component":"temperature:101","id":101,"event":"temperature_measurement","tC":7.9,"tF":46.2,"ts":1703800945.41000008583}
Wenn ich in naher Zukunft weitere Shellies mit Temperaturfühlern nutzen möchte, ist die ID bzw. der Komponentenname nicht eindeutig, da diese in den anderen Shellies sehr wahrscheinlich ebenso genutzt werden. Mein Ziel ist, dass der zugehörige Name zur Id mit beim URL Aufruf übertragen wird.
Bei den oben genannten Informationen wird der Name bei der "config" bereitgestellt (Ausschnitt):
....},
"cfg_rev": 14
},
"temperature:100": {
"id": 100,
"name": "Abstellraumtemperatur",
"report_thr_C": 0.1,
"offset_C": 0
},
"temperature:101": {
"id": 101,
"name": "Temperatur Draußen (Carport)",
"report_thr_C": 0.1,
"offset_C": 0
},
"wifi": {
"ap": { ....
Alles anzeigen
Die Config-Dateninstanz ist etwas größer, so dass ich hier lediglich nur den relevanten Namen mit übergeben möchte.
Meine aktuelle URL bei einer konkreten Action (z.B. Außentemperaturänderung):
http://myservice.de:1234/api/data/reception/temperature?event=${event}&component=${config.temperature:101.name}&deviceId=${info.id}
Ich übergebe hier als Query-Param einmal das komplette event und am Ende aus der Info nur die Id, welche ich über einen Ausdruck erreichen kann. Das funktioniert auch wunderbar und diese Daten erreichen auch meinen Service. Lediglich der "component=${config.temperature:100.name}" kommt nicht an, bzw. ein Leerstring.
Ich vermute, dass es durch die "dynamische" Angabe temperature:101 nicht aufgelöst werden kann. Hat trotzdem jemand eine Idee, wie man den Namen, der über die WebUI vergeben wurde, auslesen/mitgeben kann?
Besten Dank schon einmal.
Viele Grüße
Christian