Nun, dein Verfahren per JSON.stringify() verwendet den kompletten String. Per includes() Methode kann nicht zwischen key und value unterschieden werden. Per Knoten switch und change werden eindeutig keys verwendet. Das macht das Vefahren robuster. Prinzipiell wäre ein value "switch:0" oder "switch:1" möglich, welcher per replace() in der Nachricht verändert würde. Das sind die Gründe, warum ich auf das Verfahren mit den Knoten setzen würde.
Hier meine 3 Knoten, allerdings für die MQTT Nachrichten von einem Plus H&T. Die Teile sollten für dich leicht anpassbar sein.
[
{
"id": "a795fdbf4b88cc48",
"type": "change",
"z": "1d57fbc98cc72f61",
"name": "temperature",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "payload.params.temperature:0.tC",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 870,
"y": 420,
"wires": [
[]
]
},
{
"id": "933fce3faee525d2",
"type": "switch",
"z": "1d57fbc98cc72f61",
"name": "has key",
"property": "payload.params",
"propertyType": "msg",
"rules": [
{
"t": "hask",
"v": "temperature:0",
"vt": "str"
},
{
"t": "hask",
"v": "humidity:0",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 2,
"x": 640,
"y": 440,
"wires": [
[
"a795fdbf4b88cc48"
],
[
"b7f8ead8af088ca7"
]
]
},
{
"id": "b7f8ead8af088ca7",
"type": "change",
"z": "1d57fbc98cc72f61",
"name": "humidity",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "payload.params.humidity:0.rh",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 860,
"y": 480,
"wires": [
[]
]
}
]
Alles anzeigen
Ich habe hier noch nie einen JSON String aus Node RED hineinkopiert und weiß deshalb nicht, ob das so funktioniert. Nach einem gelungenen Test: Node RED -> Import, dort einkleben aus der Zwischenablage -> Import
Wenn du den JavaScript Quellcode bevorzugst, könnte vielleicht der von martner, Post #4, geeignet sein, allerdings würde ich diesen von unnötigem Müll (default ist überflüssig) befreien. Und dieser wäre für deinen Zweck anzupassen und zu erweitern.
Problem: Die Topics zu den Temperatur- und Luftfeuchtigkeit-Informationen von meinem Plus H&T sind andere.