NEWS
Dynamisches erzeugen eines Topics in ioBroker in
-
Hallo,
ich bin Neuling im Bereich ioBroker und Node red. Ich habe bisher immer FHEM benutzt, aber aufgrund eines wunderbaren Adapters für Skoda Connect ioBroker, Nodered und den FHEM Adapter installiert und alles läuft wunderbar zusammen.
Jetzt habe ich aber ein Problem. In dem Adapter wird jedes Fahren mit einem Trip dynamisch plus 1 gezählt. LastTrip / Number of LastTrip.
Wie kann ich jetzt den Kontext zum auslesen mit den ioBroker in und einer Funktion so hinbauen, das es dynamisch ausgelesen wird? Ich müsste quasi vw-connect.0.TMBJC7NS0D123456.tripdata.lasttrip.NumberofLastTrip in vw-connect.0.TMBJC7NS0D123456.tripdata.TripDataXXX umwandeln. Gibt es da eine Funktion das abzufragende Topic im IoBroker-in dynamisch zu generieren?
Danke schon mal im voraus für eine Hilfe -
@projectsun es gibt mehrere Möglichkeiten..
dazu müsstest du mal vielleicht ein secreenshot posten da nicht jeder den Adapter nutzt -
Hier mal meine Collage der Struktur
und so sieht mein Flow aus. Die oberen In und Outs funktionieren.
-
Also wenn ich das richtig verstanden habe, willst einen datapoint auslesen, dessen Namen du erst mit einer Funktion ermittelst?
Falls das so ist, könntest du mit wildcards arbeiten z.B.vw-connect.0.TMBJC7NS0D123456.tripdata.TripData*
Und dann die gewünschte aus der Ausgabe filtern.
Falls du aber unbedingt einen konkreten datapoint auslesen willst, dessen Namen du erst zusammenbastelst, könntest du den Simple-API Adapter nutzen und dir die url in einer function zusammenbasteln. Ungefähr so:Dazu muss allerdings der Simple-API Adapter installiert sein.
-
Hmm. Habe mir eine Funktion zusammengeschraubt. Aber im Output kommt nur [object Object] an.
URL passt aber. Im Browser hab ich folgendes.vw-connect.0.TMBJC7NS0J12345.tripdata.tripData859.averageFuelConsumption type "state" common name "averageFuelConsumption" role "indicator" type "mixed" write false read true native {} from "system.adapter.vw-connect.0" user "system.user.admin" ts 1579384720670 _id "vw-connect.0.TMBJC7NS0J12345.tripdata.tripData859.averageFuelConsumption" enums {}
muss da noch was vor den Output?
-
habs jetzt etwas anders gelöst:
var trip = (msg.payload); let dp = "vw-connect.0.TMBJC7NS0J12345.tripdata.tripData" + trip + ".averageFuelConsumption"; msg.url="http://localhost:8087/getPlainValue/" + dp; return msg;
und dann im Simple Api nicht JSON ausgewertet, sondern UTF-8 zurückgegeben und in einer weiteren Funktion durch 10 dividiert. Perfekt. Vielen Dank für den Tipp.
-
@projectsun sagte in Dynamisches erzeugen eines Topics in ioBroker in:
[object Object]
Sollte schon passen. Musst halt das Object noch zerlegen/auswerten.
Aber wenn es mit dem Simple-API passt ist ja alles gut.