TheThingsNetwork, Werte werden als Array übergeben. Wie kann HA diese weiterverarbeiten

Ich habe die TTN (The Things Network) Integration über Storage aktiviert. Die Daten kommen auch in HA an. Jedoch werden die Daten als Array übergeben.

  • unter dem Key „Energy_Data_Type“ wird für den ersten Wert eine Art Sensortyp beschrieben (Durchflusssensor) im zweiten Wert ein (Volumensensor)
  • unter dem Key „Energy_Data_Unit“ die beiden entsprechenden Einheiten für die Werte 1 und 2
  • unter dem Key „Energy_Data_Value“ die beiden echten Messwerte übertragen. Hier 0 und 59674.44.

Leider kann ich die Konvertierung im TTN nicht ändern, da diese auch noch in einem anderen System so erwartet werden.

Kann ich hier 2 Dummy Sensoren erzeugen, die mir die Werte dann richtig in HA zur Verfügung zu stellen.
Beispiel:
Sensor1:
device class: volume_flow_rate
unit_of_measurement: Energy_Data_Unit[0]
value: Energy_Data_Unit[0]
Sensor2:
device class: volume_storage
unit_of_measurement: Energy_Data_Unit[1]
value: Energy_Data_Unit[1]

ist so etwas denkbar?

Gruß
Hans-Jürgen

Das geht bestimmt. Allerdings sind die ‚unit_of_measurement‘ einer Entität meines Wissens nicht variabel.
Den Wert kann man mit Hilfe eines Template-Sensors (Helfer → Template) aus dem Array extrahieren.
Wie sieht das ganze unter ‚Entwicklerwerkzeuge → Zustände‘ bei deinen Entitäten aus?

Wie kann ich denn auf die Werte Zugreifen. Ich habe nach Array Zugriff gesucht, aber nicht gefunden.
Ich dachte, vielleicht geht es mit states('sensor.eui_7066e1fffe01a7a8_energy_data_value.[0] und states('sensor.eui_7066e1fffe01a7a8_energy_data_value.[1]. Es hat aber nicht funktioniert.

Probier mal
states(„sensor.eui_7066e1fffe01a7a8_energy_data_value“)[0]

Hallo Jerry,
danke für deine Unterstützung, leider hat es keinen Erfolg gebracht.

Es sieht für mich so aus, als wenn es kein echtes Array ist, sondern ein String der mit [ Beginnt und mit ] Endet. Weiss jemand, wo ich das prüfen kann? Und vielleicht auch ändern?

doch, doch, du musst in diesem Feld den Ausdruck mit {{ }} umschließen

Guten Morgen,

Danke, jetzt kommt ein Ergebnis, aber es sieht tatsächlich so aus, als wenn das Array ein „String“ ist.

Kann ich den String in ein Array wandeln, oder muss ich den Zerteilen und das ‚,‘ (Komma) dann als Trenner verwenden?
Dann stellt sich die Frage, wie wandle ich den Zahlenstring dann in einen Float, damit ich damit richtig Arbeiten kann? Oder spielt das bei HA keine Rolle.

so müsste es funktionieren:

{{ (states("sensor.eui_7066e1fffe01a7a8_energy_data_value")|replace("[","")|replace("]","")).split(", ")[0] }}
{{ (states("sensor.eui_7066e1fffe01a7a8_energy_data_value")|replace("[","")|replace("]","")).split(", ")[1] }}

Die Ergebnisse sind vom Typ „number“.

1 „Gefällt mir“

Perfekt, vielen Dank, so klappt es.

1 „Gefällt mir“