NEWS
gelöst Name im Datenpunkt ändern mit Variable als Name
-
Hallo Forum,
ich komme nicht so recht weiter und hoffe hier nochmals auf Hilfe...
die Variable "device_id" habe ich erstellt.
Dann möchte ich einen Datenpunkt anlegen mit:
createState("0_userdata.0."+ Ordner +".ALARM", 0,{ name: "ALARM", unit: "", read: true, write: true, desc: "ALARM", type: "number", });
Wie kann ich den Inhalt der Variable "device_id" vor den Namen "name" = "ALARM" stellen? irgendwie mit
name: ".device_id +".ALARM"
oder so... Ich bekomme es einfach nicht hin...Ziel ist, wenn ich in Node Red den Datenpunkt wähle, würde ich gern sehen, welches Device dahinter steckt ohne alles händisch ändern zu müssen.
Tausend Dank!!!
-
@flehmann1234 sagte: Wie kann ich den Inhalt der Variable "device_id" vor den Namen "name" = "ALARM" stellen?
Ist der Variablenbezeichner
device_id
oderOrdner
(wie im Skript)? -
Danke für die Antwort...
ich habe mehrere Variablen defeniert. Die Variable "Order" bezeichnet den Ort des Datenpunktes:
0_userdata.0.tnn.05.05-fenstersensoren.05-dg-re-sz-35.DOOR_OPEN_STATUS
Die Variable device_id bezeichnet den Raum, in diesem FAll "05-dg-re-sz-35" diesen Teil bräuchte ich im Namen.
Vielleicht kann man diesen Teil auch aus der Variable "Order" herleiten....
Bei den Homematic Sensoren wird es automatisch angelegt...
Ich habe lange gesucht und propiert aber nichts gefunden.....
Danke !
-
@flehmann1234 sagte: 0_userdata.0.tnn.05.05-fenstersensoren.05-dg-re-sz-35.DOOR_OPEN_STATUS
Das soll die ID eines Ziel-Datenpunktes sein? Die Variable
Ordner
also "tnn.05.05-fenstersensoren.05-dg-re-sz-35" enthalten? Dann enthält er doch diedevice-id
am Ende.
Wie sieht das JSON eines Trigger-Datenpunktes aus (bitte in code tags)? -
Hallo paul53, die Lösung ist wahrscheinlich so einfach dass du zu kompliziert denkst...
Wenn ich bei Node Red einen Datenpunkt auswähle, wird standardmäßig der Name ausgewählt. Das heiß, dass alle meine zig Sensoren "DOOR_OPEN_STATUS" heißen würden.Wenn der Raumname mit im Namen stehen würde, wüsste ich wo sich der Sensor befindet.
Die Variable mit dem Raumnamen gibt es ja schon: device_id. Doch die Frage ist, wie bekomme ich diese vor den Namen "DOOR_OPEN_STATUS" geschrieben.Wahrscheinlich muss man nur 'device_id'+"DOOR_OPEN_STATUS" oder so schreiben, damit der Raumname vor dem Wort DOOR_OPEN_STATUS steht... ??? Ich kenne nur die Syntax nicht dafür und bekomme es einfach nicht hin...
createState("0_userdata.0."+ Ordner +".ALARM", 0,{ name: '$device_id'+"ALARM", unit: "", read: true, write: true, desc: "ALARM", type: "number", });
Danke vielmals und grüße
Fabian
-
@flehmann1234
Du willst den Namen der schon bestehenden Datenpunkte um die "device_id" erweitern?// id = Datenpunkt-ID const device_id = id.split('.')[5]; const dpName = getObject(id).common.name; if(!dpName.includes(device_id)) extendObject(id, {common: {name: dpName + ' ' + device_id}});
-
@paul53 eigentlich noch einfacher, ich lösche alle Datenpunkte und würde diese neu anlegen lassen.
das Script von oben gibt eine Fehlermeldung zurück.
createState("0_userdata.0."+ Ordner +".ALARM", 0,{ name: {device_id+"ALARM"}, unit: "", read: true, write: true, desc: "ALARM", type: "number", }); createState("0_userdata.0."+ Ordner +".ALARM", 0,{ name: {device_id+".ALARM"}, unit: "", read: true, write: true, desc: "ALARM", type: "number", }); createState("0_userdata.0."+ Ordner +".ALARM", 0,{ name: {device_id.split('.')[5]+".ALARM"}, unit: "", read: true, write: true, desc: "ALARM", type: "number", }); createState("0_userdata.0."+ Ordner +".ALARM", 0,{ name: device_id.split('.')[5]+".ALARM", unit: "", read: true, write: true, desc: "ALARM", type: "number", });
geht alles nicht, beim letzten wird ein undefined geschrieben...
reateState("0_userdata.0."+ Ordner +".ALARM", 0,{ name: device_id.split('.')[5]+".ALARM", unit: "", read: true, write: true, desc: "ALARM", type: "number", });kannst du nochmal bitte schauen, wo der fehler liegt?
Danke !
-
@flehmann1234
habe jetzt die Lösung:createState("0_userdata.0."+ Ordner +".ALARM", 0,{ name: device_id+".ALARM", unit: "", read: true, write: true, desc: "ALARM", type: "number", });
-
@flehmann1234 sagte: diese neu anlegen lassen.
Dann kann man die Tatsache verwenden, dass "Ordner" die "device-id" enthält.
createState("0_userdata.0."+ Ordner +".ALARM", 0, {name: Ordner.split('.')[3] + " ALARM", unit: "", read: true, write: true, desc: "ALARM", type: "number", role: 'indicator.alarm'});