NEWS
ShellyPlug / NodeRed / Werte zu einem Objekt
-
Hallo,
ich möchte einzelne Werte des Shelly in ein Objekt ohne die Topics zusammenfassen:
{"shellies/shellyplug-s-1/relay/0/power":0,"shellies/shellyplug-s-1/relay/0/energy":3846,"shellies/shellyplug-s-1/temperature":15.37,"shellies/shellyplug-s-1/overtemperature":0,"shellies/shellyplug-s-1/relay/0":0}
nach
{"power":0,"energy":3846,"temperature":15.37,"overtemperature":0,"relay":0}
Ich weiß nicht, wie ich die Topics entfernen kann. Wer kann mir da weiterhelfen ?
-
So hier obigen Flow in JSONATA:
Hier der JSONATA-Code aus der Change Node:
$each(payload, function($v, $k) {$. {$replace($k,/.*\/(.*)$/,"$1"):$v}}) ~> $merge()~>|$|{"relay_0" : $lookup($,"0"),"relay_1" : $lookup($,"1")},["0","1"]|
-
@mickym : Vielen Dank ! Sieht nach einer Lösung aus, probiere ich morgen
-
@frank86 Ja ich musste noch was ändern - da gerade wenn Du 2 Relais hast - das 0 als Integer und nicht als Key interpretiert wurde. Den JSONATA Code habe ich schon angepasst.
So ich habe beide Lösungen angepasst. Statt relay - habe ich jetzt relay_0 und relay_1 genommen, dann passt es auch für Shellies 2.5. Falls Du das nicht willst, musst es halt wieder ändern.
-
@mickym
Funktioniert !Jetzt stelle ich mir die Frage, warum ich nicht nur ein mqtt-Node benutzen kann mit Auswahl aller Nachrichten-Objekte ("shellies/shellyplug-s-1/#") , ich baue einen Nachricht ja zunächst auf
[{"id":"eda5f77f7c8eed8d","type":"mqtt in","z":"c9969210232b94da","name":"mqtt-shellyplug-s-1","topic":"shellies/shellyplug-s-1/overtemperature","qos":"0","datatype":"auto-detect","broker":"c34b10c04573881a","nl":false,"rap":true,"rh":0,"inputs":0,"x":110,"y":360,"wires":[["c87fc064918d6540"]]},{"id":"c34b10c04573881a","type":"mqtt-broker","name":"mqtt-fhem","broker":"192.168.178.212","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]!
-
@mickym Kannst Du doch - ich würde einfach shellies/shellyplug-s-1/# nehmen und den ersten Teil aus dem Topic einfach entfernen - ist doch easy. Da muss man doch nicht so Riesenverrenkungen machen:
-
@mickym Habe es nochmals versucht, jetzt habe ich wieder relay/0/ drin. Der Versuch mit den oben gezeigten Nodes nur "relay" stehen zu lassen schlägt fehl, ich lasse es nun so, danke.
[ { "id": "8dfc8447eab4b4d7", "type": "tab", "label": "Flow 5", "disabled": false, "info": "", "env": [] }, { "id": "ed30cdc3fbacb298", "type": "mqtt in", "z": "8dfc8447eab4b4d7", "name": "", "topic": "shellies/shellyplug-s-1/#", "qos": "0", "datatype": "auto-detect", "broker": "c34b10c04573881a", "nl": false, "rap": true, "rh": 0, "inputs": 0, "x": 140, "y": 140, "wires": [ [ "1abae9f5e394107f", "886f94224123013e" ] ] }, { "id": "1abae9f5e394107f", "type": "debug", "z": "8dfc8447eab4b4d7", "name": "Shelly Küche", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 390, "y": 60, "wires": [] }, { "id": "886f94224123013e", "type": "change", "z": "8dfc8447eab4b4d7", "name": "Relais - string to int", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "on", "fromt": "str", "to": "1", "tot": "num" }, { "t": "change", "p": "payload", "pt": "msg", "from": "off", "fromt": "str", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 390, "y": 140, "wires": [ [ "e7cfa2110d433df8" ] ] }, { "id": "e7cfa2110d433df8", "type": "change", "z": "8dfc8447eab4b4d7", "name": "", "rules": [ { "t": "change", "p": "topic", "pt": "msg", "from": "shellies/shellyplug-s-1/", "fromt": "str", "to": "", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 590, "y": 140, "wires": [ [ "46377bffe56d4ecc", "f105ba5467a7b184" ] ] }, { "id": "46377bffe56d4ecc", "type": "debug", "z": "8dfc8447eab4b4d7", "name": "Shelly Küche ohne Pfad", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 830, "y": 60, "wires": [] }, { "id": "f105ba5467a7b184", "type": "join", "z": "8dfc8447eab4b4d7", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "1", "count": "", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 770, "y": 140, "wires": [ [ "4a297d0aef5f7b54" ] ] }, { "id": "4a297d0aef5f7b54", "type": "debug", "z": "8dfc8447eab4b4d7", "name": "Shelly Objekt", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 930, "y": 140, "wires": [] }, { "id": "c34b10c04573881a", "type": "mqtt-broker", "name": "mqtt-fhem", "broker": "192.168.178.212", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" } ]
-
@frank86 warum stört dich der /? Du kannst die / ja auch noch weg lassen.