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 ?
-
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"]| -

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"]| -
@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.
-
@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":""}]!
-
@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 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": "" } ]
-
@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": "" } ]
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden