Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. [gelöst] String in Objekt umwandeln

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

[gelöst] String in Objekt umwandeln

Geplant Angeheftet Gesperrt Verschoben Node-Red
17 Beiträge 3 Kommentatoren 1.6k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Claus1985 0C Offline
    Claus1985 0C Offline
    Claus1985 0
    schrieb am zuletzt editiert von Claus1985 0
    #1

    Hallo Zusammen,

    ich habe folgendes Thema. Ich erhalte aus einem System eine Payload mit zwei verschiedenen Strings.
    Entweder im Format temp(47,4464) oder im Format hsv(237,100,60).

    Beim ersten Format benötige ich die erste Zahl (geht von 0 bis 100) als Objekt Brightness.
    Im Zweiten Format benötige ich alle drei Zahlen als Objekte Hue, Saturation und Brightness.

    Ich habe versucht das mit einem Switch Baustein zu trennen in temp/hsv und dann mit Split weiter zu bearbeiten.
    Allerdings hänge ich da an Split. Das Komma könnte als Seperator dienen allerdings weiß ich nicht, wie ich die
    Split Node dazu anpassen muss.

    Kann mir hier jemand weiterhelfen?

    Danke und Gruß,

    Claus

    F mickymM 3 Antworten Letzte Antwort
    0
    • Claus1985 0C Claus1985 0

      Hallo Zusammen,

      ich habe folgendes Thema. Ich erhalte aus einem System eine Payload mit zwei verschiedenen Strings.
      Entweder im Format temp(47,4464) oder im Format hsv(237,100,60).

      Beim ersten Format benötige ich die erste Zahl (geht von 0 bis 100) als Objekt Brightness.
      Im Zweiten Format benötige ich alle drei Zahlen als Objekte Hue, Saturation und Brightness.

      Ich habe versucht das mit einem Switch Baustein zu trennen in temp/hsv und dann mit Split weiter zu bearbeiten.
      Allerdings hänge ich da an Split. Das Komma könnte als Seperator dienen allerdings weiß ich nicht, wie ich die
      Split Node dazu anpassen muss.

      Kann mir hier jemand weiterhelfen?

      Danke und Gruß,

      Claus

      F Offline
      F Offline
      frankyboy73
      schrieb am zuletzt editiert von frankyboy73
      #2

      @claus1985-0 Hi, im Split bei Aufteilung "," eingeben. Dann müsstest du noch temp( und hsv( und ) durch "nichts" ersetzen per change Node und dann per Switch nach index Nummern aufteilen. Dann solltest du deine Werte als einzelne Ausgaben erhalten. Die Ausgaben sind allerdings als String, wenn du das als Nummer brauchst müsste man das noch umwandeln.
      Split1.jpg

      [
         {
             "id": "4d52f24f.97e57c",
             "type": "inject",
             "z": "42e1e0df.44b9f",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 },
                 {
                     "p": "topic",
                     "vt": "str"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "temp(47,4464)",
             "payloadType": "str",
             "x": 120,
             "y": 680,
             "wires": [
                 [
                     "ae3d6d9e.dd294"
                 ]
             ]
         },
         {
             "id": "b3bfd4c2.e5c2c8",
             "type": "split",
             "z": "42e1e0df.44b9f",
             "name": "",
             "splt": ",",
             "spltType": "str",
             "arraySplt": 1,
             "arraySpltType": "len",
             "stream": false,
             "addname": "",
             "x": 430,
             "y": 700,
             "wires": [
                 [
                     "1b19502c.f6aba"
                 ]
             ]
         },
         {
             "id": "1b19502c.f6aba",
             "type": "change",
             "z": "42e1e0df.44b9f",
             "name": "",
             "rules": [
                 {
                     "t": "change",
                     "p": "payload",
                     "pt": "msg",
                     "from": "temp(",
                     "fromt": "str",
                     "to": "",
                     "tot": "str"
                 },
                 {
                     "t": "change",
                     "p": "payload",
                     "pt": "msg",
                     "from": ")",
                     "fromt": "str",
                     "to": "",
                     "tot": "str"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 610,
             "y": 700,
             "wires": [
                 [
                     "d6edd7f5.488038"
                 ]
             ]
         },
         {
             "id": "340f067c.5eb5ba",
             "type": "debug",
             "z": "42e1e0df.44b9f",
             "name": "temp 0",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 1000,
             "y": 660,
             "wires": []
         },
         {
             "id": "d6edd7f5.488038",
             "type": "switch",
             "z": "42e1e0df.44b9f",
             "name": "",
             "property": "parts.index",
             "propertyType": "msg",
             "rules": [
                 {
                     "t": "eq",
                     "v": "0",
                     "vt": "num"
                 },
                 {
                     "t": "eq",
                     "v": "1",
                     "vt": "num"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 2,
             "x": 790,
             "y": 700,
             "wires": [
                 [
                     "340f067c.5eb5ba"
                 ],
                 [
                     "e9d9933f.1a956"
                 ]
             ]
         },
         {
             "id": "e9d9933f.1a956",
             "type": "debug",
             "z": "42e1e0df.44b9f",
             "name": "temp 1",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 1000,
             "y": 700,
             "wires": []
         },
         {
             "id": "ae3d6d9e.dd294",
             "type": "switch",
             "z": "42e1e0df.44b9f",
             "name": "",
             "property": "payload",
             "propertyType": "msg",
             "rules": [
                 {
                     "t": "cont",
                     "v": "temp",
                     "vt": "str"
                 },
                 {
                     "t": "cont",
                     "v": "hsv",
                     "vt": "str"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 2,
             "x": 290,
             "y": 740,
             "wires": [
                 [
                     "b3bfd4c2.e5c2c8"
                 ],
                 [
                     "98705cc5.40bea"
                 ]
             ]
         },
         {
             "id": "98705cc5.40bea",
             "type": "split",
             "z": "42e1e0df.44b9f",
             "name": "",
             "splt": ",",
             "spltType": "str",
             "arraySplt": 1,
             "arraySpltType": "len",
             "stream": false,
             "addname": "",
             "x": 430,
             "y": 880,
             "wires": [
                 [
                     "50cb25a1.9dad3c"
                 ]
             ]
         },
         {
             "id": "50cb25a1.9dad3c",
             "type": "change",
             "z": "42e1e0df.44b9f",
             "name": "",
             "rules": [
                 {
                     "t": "change",
                     "p": "payload",
                     "pt": "msg",
                     "from": "hsv(",
                     "fromt": "str",
                     "to": "",
                     "tot": "str"
                 },
                 {
                     "t": "change",
                     "p": "payload",
                     "pt": "msg",
                     "from": ")",
                     "fromt": "str",
                     "to": "",
                     "tot": "str"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 610,
             "y": 880,
             "wires": [
                 [
                     "caec53e8.e5f43"
                 ]
             ]
         },
         {
             "id": "6e7f194e.1989a8",
             "type": "debug",
             "z": "42e1e0df.44b9f",
             "name": "hsv 0",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 1000,
             "y": 840,
             "wires": []
         },
         {
             "id": "caec53e8.e5f43",
             "type": "switch",
             "z": "42e1e0df.44b9f",
             "name": "",
             "property": "parts.index",
             "propertyType": "msg",
             "rules": [
                 {
                     "t": "eq",
                     "v": "0",
                     "vt": "num"
                 },
                 {
                     "t": "eq",
                     "v": "1",
                     "vt": "num"
                 },
                 {
                     "t": "eq",
                     "v": "2",
                     "vt": "num"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 3,
             "x": 790,
             "y": 880,
             "wires": [
                 [
                     "6e7f194e.1989a8"
                 ],
                 [
                     "26c05105.7fd35e"
                 ],
                 [
                     "4d7a76c1.31a138"
                 ]
             ]
         },
         {
             "id": "26c05105.7fd35e",
             "type": "debug",
             "z": "42e1e0df.44b9f",
             "name": "hsv 1",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 1000,
             "y": 880,
             "wires": []
         },
         {
             "id": "4d7a76c1.31a138",
             "type": "debug",
             "z": "42e1e0df.44b9f",
             "name": "hsv 2",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 990,
             "y": 920,
             "wires": []
         },
         {
             "id": "1d31f72d.e308e9",
             "type": "inject",
             "z": "42e1e0df.44b9f",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 },
                 {
                     "p": "topic",
                     "vt": "str"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "hsv(237,100,60)",
             "payloadType": "str",
             "x": 120,
             "y": 800,
             "wires": [
                 [
                     "ae3d6d9e.dd294"
                 ]
             ]
         }
      ]
      

      Dieser Post ist auch hilfreich:
      https://forum.iobroker.net/topic/44986/string-aufteilen/5

      Schöne Grüße Frank

      1 Antwort Letzte Antwort
      0
      • Claus1985 0C Claus1985 0

        Hallo Zusammen,

        ich habe folgendes Thema. Ich erhalte aus einem System eine Payload mit zwei verschiedenen Strings.
        Entweder im Format temp(47,4464) oder im Format hsv(237,100,60).

        Beim ersten Format benötige ich die erste Zahl (geht von 0 bis 100) als Objekt Brightness.
        Im Zweiten Format benötige ich alle drei Zahlen als Objekte Hue, Saturation und Brightness.

        Ich habe versucht das mit einem Switch Baustein zu trennen in temp/hsv und dann mit Split weiter zu bearbeiten.
        Allerdings hänge ich da an Split. Das Komma könnte als Seperator dienen allerdings weiß ich nicht, wie ich die
        Split Node dazu anpassen muss.

        Kann mir hier jemand weiterhelfen?

        Danke und Gruß,

        Claus

        mickymM Offline
        mickymM Offline
        mickym
        Most Active
        schrieb am zuletzt editiert von mickym
        #3

        @claus1985-0 Alternativ kannst auch die Parameter über Regex extrahieren in ein Array umwandeln und dann direkt auf die Werte zugreifen, dann kann man das auch noch leichter in Zahlen umwandeln. Ich wandle mal den Flow von @frankyboy73 leicht ab - führen ja viele Wege nach Rom. ;)

        Ich habe mal die Umwandlung in Zahlen mit aufgenommen. Um die Parameter zu extrahieren, habe ich oberen Fall mal Frankies Change Node belassen, das untere Beispiel mit RegEx gemacht.

        d1b9da6b-1d75-490a-97da-2afa865b0732-image.png

        Der Vorteil es über ein Array zu machen ist, dass Du das über eine Change Node und JSONATA direkt den Eigenschaften Deinen zukünftigen payload Objektes zuweisen kannst:

        4b06f9d4-3d3a-4670-8f54-f4827310f4c5-image.png

        Falls Du keine Zahlen brauchst lässt halt die Change Node in der Mitte nach der split Node weg. In diesem Fall könnte man aber auch die ganzen 3 Nodes weglassen und in den beiden vorhergehenden Change Nodes eine JSONATA Anweisung mit einem split Befehl nutzen. Die erstellt dann ein bereits ein Array. Wenn man es dann wieder in Zahlen verwandeln wollte müsste man das Array nochmals aufdröseln, weshalb ich jetzt der Übersichtlichkeit halber direkt diese VAriante gewählt habe.

        [{"id":"54c38a05634e4db5","type":"inject","z":"2c16cb289e22bc5d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"temp(47,4464)","payloadType":"str","x":180,"y":1560,"wires":[["1940a72d37c147db"]]},{"id":"1940a72d37c147db","type":"switch","z":"2c16cb289e22bc5d","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"temp","vt":"str"},{"t":"cont","v":"hsv","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":350,"y":1620,"wires":[["a3d552d2b549fd4f"],["e20e5abcd4687eb7"]]},{"id":"468099936eb5e6c0","type":"inject","z":"2c16cb289e22bc5d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"hsv(237,100,60)","payloadType":"str","x":180,"y":1680,"wires":[["1940a72d37c147db"]]},{"id":"e20e5abcd4687eb7","type":"change","z":"2c16cb289e22bc5d","name":"RegEx","rules":[{"t":"set","p":"topic","pt":"msg","to":"temp","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":".*\\((.*)\\)","fromt":"re","to":"$1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":1680,"wires":[["7adfa668f8ba53e6"]]},{"id":"84f5be0ed25f491a","type":"split","z":"2c16cb289e22bc5d","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":710,"y":1560,"wires":[["54946a15f87d5838"]]},{"id":"7adfa668f8ba53e6","type":"split","z":"2c16cb289e22bc5d","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":710,"y":1680,"wires":[["6fd016c8f84d35be"]]},{"id":"a2f380bafd4661f5","type":"join","z":"2c16cb289e22bc5d","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1010,"y":1560,"wires":[["de25586b5f5ed96e"]]},{"id":"f4af9f63ac060617","type":"join","z":"2c16cb289e22bc5d","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1010,"y":1680,"wires":[["e7b4f331c0f02440"]]},{"id":"54946a15f87d5838","type":"change","z":"2c16cb289e22bc5d","name":"to number","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":1560,"wires":[["a2f380bafd4661f5"]]},{"id":"6fd016c8f84d35be","type":"change","z":"2c16cb289e22bc5d","name":"to number","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":1680,"wires":[["f4af9f63ac060617"]]},{"id":"e7b4f331c0f02440","type":"change","z":"2c16cb289e22bc5d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\t \"hue\": payload[0],\t \"saturation\": payload[1],\t \"brightness\": payload[2]\t}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":1680,"wires":[["24fc2bcf6b927b5e"]]},{"id":"a0e4364555127b92","type":"debug","z":"2c16cb289e22bc5d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1390,"y":1560,"wires":[]},{"id":"24fc2bcf6b927b5e","type":"debug","z":"2c16cb289e22bc5d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1390,"y":1680,"wires":[]},{"id":"de25586b5f5ed96e","type":"change","z":"2c16cb289e22bc5d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\": payload[0]}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":1560,"wires":[["a0e4364555127b92"]]},{"id":"a3d552d2b549fd4f","type":"change","z":"2c16cb289e22bc5d","name":"Frankies Change Node","rules":[{"t":"change","p":"payload","pt":"msg","from":"temp(","fromt":"str","to":"","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":")","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":1560,"wires":[["84f5be0ed25f491a"]]}]
        

        Der Unterschied zwischen @frankyboy73 Flow und meinem ist nur, dass ich den String mit den Parameter in Array umwandle und nicht vorher die einzelnen Parameter rauspflücke - hängt halt davon ab, ob Du die Parameter in hsv in einem Objekt brauchst oder in Einzelteilen.

        In Einzelteilen ist @frankyboys73 's Flow vorzuziehen, als Objekt müsstest Du dann in @frankyboy73 Flow wieder die Parameter über eine JOIN Node in ein Objekt zusammenführen. In diesem Fall hängst Frankies Switch Node hinter die toNumber Change oder direkt hinter die split Node. Ich würde halt in jedem Fall mit der Change Node vorher die nackte Parameterliste extrahieren und nicht erst hinter dem split.

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        Claus1985 0C F 2 Antworten Letzte Antwort
        0
        • mickymM mickym

          @claus1985-0 Alternativ kannst auch die Parameter über Regex extrahieren in ein Array umwandeln und dann direkt auf die Werte zugreifen, dann kann man das auch noch leichter in Zahlen umwandeln. Ich wandle mal den Flow von @frankyboy73 leicht ab - führen ja viele Wege nach Rom. ;)

          Ich habe mal die Umwandlung in Zahlen mit aufgenommen. Um die Parameter zu extrahieren, habe ich oberen Fall mal Frankies Change Node belassen, das untere Beispiel mit RegEx gemacht.

          d1b9da6b-1d75-490a-97da-2afa865b0732-image.png

          Der Vorteil es über ein Array zu machen ist, dass Du das über eine Change Node und JSONATA direkt den Eigenschaften Deinen zukünftigen payload Objektes zuweisen kannst:

          4b06f9d4-3d3a-4670-8f54-f4827310f4c5-image.png

          Falls Du keine Zahlen brauchst lässt halt die Change Node in der Mitte nach der split Node weg. In diesem Fall könnte man aber auch die ganzen 3 Nodes weglassen und in den beiden vorhergehenden Change Nodes eine JSONATA Anweisung mit einem split Befehl nutzen. Die erstellt dann ein bereits ein Array. Wenn man es dann wieder in Zahlen verwandeln wollte müsste man das Array nochmals aufdröseln, weshalb ich jetzt der Übersichtlichkeit halber direkt diese VAriante gewählt habe.

          [{"id":"54c38a05634e4db5","type":"inject","z":"2c16cb289e22bc5d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"temp(47,4464)","payloadType":"str","x":180,"y":1560,"wires":[["1940a72d37c147db"]]},{"id":"1940a72d37c147db","type":"switch","z":"2c16cb289e22bc5d","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"temp","vt":"str"},{"t":"cont","v":"hsv","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":350,"y":1620,"wires":[["a3d552d2b549fd4f"],["e20e5abcd4687eb7"]]},{"id":"468099936eb5e6c0","type":"inject","z":"2c16cb289e22bc5d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"hsv(237,100,60)","payloadType":"str","x":180,"y":1680,"wires":[["1940a72d37c147db"]]},{"id":"e20e5abcd4687eb7","type":"change","z":"2c16cb289e22bc5d","name":"RegEx","rules":[{"t":"set","p":"topic","pt":"msg","to":"temp","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":".*\\((.*)\\)","fromt":"re","to":"$1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":1680,"wires":[["7adfa668f8ba53e6"]]},{"id":"84f5be0ed25f491a","type":"split","z":"2c16cb289e22bc5d","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":710,"y":1560,"wires":[["54946a15f87d5838"]]},{"id":"7adfa668f8ba53e6","type":"split","z":"2c16cb289e22bc5d","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":710,"y":1680,"wires":[["6fd016c8f84d35be"]]},{"id":"a2f380bafd4661f5","type":"join","z":"2c16cb289e22bc5d","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1010,"y":1560,"wires":[["de25586b5f5ed96e"]]},{"id":"f4af9f63ac060617","type":"join","z":"2c16cb289e22bc5d","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1010,"y":1680,"wires":[["e7b4f331c0f02440"]]},{"id":"54946a15f87d5838","type":"change","z":"2c16cb289e22bc5d","name":"to number","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":1560,"wires":[["a2f380bafd4661f5"]]},{"id":"6fd016c8f84d35be","type":"change","z":"2c16cb289e22bc5d","name":"to number","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":1680,"wires":[["f4af9f63ac060617"]]},{"id":"e7b4f331c0f02440","type":"change","z":"2c16cb289e22bc5d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\t \"hue\": payload[0],\t \"saturation\": payload[1],\t \"brightness\": payload[2]\t}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":1680,"wires":[["24fc2bcf6b927b5e"]]},{"id":"a0e4364555127b92","type":"debug","z":"2c16cb289e22bc5d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1390,"y":1560,"wires":[]},{"id":"24fc2bcf6b927b5e","type":"debug","z":"2c16cb289e22bc5d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1390,"y":1680,"wires":[]},{"id":"de25586b5f5ed96e","type":"change","z":"2c16cb289e22bc5d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\": payload[0]}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":1560,"wires":[["a0e4364555127b92"]]},{"id":"a3d552d2b549fd4f","type":"change","z":"2c16cb289e22bc5d","name":"Frankies Change Node","rules":[{"t":"change","p":"payload","pt":"msg","from":"temp(","fromt":"str","to":"","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":")","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":1560,"wires":[["84f5be0ed25f491a"]]}]
          

          Der Unterschied zwischen @frankyboy73 Flow und meinem ist nur, dass ich den String mit den Parameter in Array umwandle und nicht vorher die einzelnen Parameter rauspflücke - hängt halt davon ab, ob Du die Parameter in hsv in einem Objekt brauchst oder in Einzelteilen.

          In Einzelteilen ist @frankyboys73 's Flow vorzuziehen, als Objekt müsstest Du dann in @frankyboy73 Flow wieder die Parameter über eine JOIN Node in ein Objekt zusammenführen. In diesem Fall hängst Frankies Switch Node hinter die toNumber Change oder direkt hinter die split Node. Ich würde halt in jedem Fall mit der Change Node vorher die nackte Parameterliste extrahieren und nicht erst hinter dem split.

          Claus1985 0C Offline
          Claus1985 0C Offline
          Claus1985 0
          schrieb am zuletzt editiert von
          #4

          @mickym @frankyboy73 Vielen Dank Euch beiden!! :blush:
          Teste ich nachher direkt aus!

          1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @claus1985-0 Alternativ kannst auch die Parameter über Regex extrahieren in ein Array umwandeln und dann direkt auf die Werte zugreifen, dann kann man das auch noch leichter in Zahlen umwandeln. Ich wandle mal den Flow von @frankyboy73 leicht ab - führen ja viele Wege nach Rom. ;)

            Ich habe mal die Umwandlung in Zahlen mit aufgenommen. Um die Parameter zu extrahieren, habe ich oberen Fall mal Frankies Change Node belassen, das untere Beispiel mit RegEx gemacht.

            d1b9da6b-1d75-490a-97da-2afa865b0732-image.png

            Der Vorteil es über ein Array zu machen ist, dass Du das über eine Change Node und JSONATA direkt den Eigenschaften Deinen zukünftigen payload Objektes zuweisen kannst:

            4b06f9d4-3d3a-4670-8f54-f4827310f4c5-image.png

            Falls Du keine Zahlen brauchst lässt halt die Change Node in der Mitte nach der split Node weg. In diesem Fall könnte man aber auch die ganzen 3 Nodes weglassen und in den beiden vorhergehenden Change Nodes eine JSONATA Anweisung mit einem split Befehl nutzen. Die erstellt dann ein bereits ein Array. Wenn man es dann wieder in Zahlen verwandeln wollte müsste man das Array nochmals aufdröseln, weshalb ich jetzt der Übersichtlichkeit halber direkt diese VAriante gewählt habe.

            [{"id":"54c38a05634e4db5","type":"inject","z":"2c16cb289e22bc5d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"temp(47,4464)","payloadType":"str","x":180,"y":1560,"wires":[["1940a72d37c147db"]]},{"id":"1940a72d37c147db","type":"switch","z":"2c16cb289e22bc5d","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"temp","vt":"str"},{"t":"cont","v":"hsv","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":350,"y":1620,"wires":[["a3d552d2b549fd4f"],["e20e5abcd4687eb7"]]},{"id":"468099936eb5e6c0","type":"inject","z":"2c16cb289e22bc5d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"hsv(237,100,60)","payloadType":"str","x":180,"y":1680,"wires":[["1940a72d37c147db"]]},{"id":"e20e5abcd4687eb7","type":"change","z":"2c16cb289e22bc5d","name":"RegEx","rules":[{"t":"set","p":"topic","pt":"msg","to":"temp","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":".*\\((.*)\\)","fromt":"re","to":"$1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":1680,"wires":[["7adfa668f8ba53e6"]]},{"id":"84f5be0ed25f491a","type":"split","z":"2c16cb289e22bc5d","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":710,"y":1560,"wires":[["54946a15f87d5838"]]},{"id":"7adfa668f8ba53e6","type":"split","z":"2c16cb289e22bc5d","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":710,"y":1680,"wires":[["6fd016c8f84d35be"]]},{"id":"a2f380bafd4661f5","type":"join","z":"2c16cb289e22bc5d","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1010,"y":1560,"wires":[["de25586b5f5ed96e"]]},{"id":"f4af9f63ac060617","type":"join","z":"2c16cb289e22bc5d","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1010,"y":1680,"wires":[["e7b4f331c0f02440"]]},{"id":"54946a15f87d5838","type":"change","z":"2c16cb289e22bc5d","name":"to number","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":1560,"wires":[["a2f380bafd4661f5"]]},{"id":"6fd016c8f84d35be","type":"change","z":"2c16cb289e22bc5d","name":"to number","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":1680,"wires":[["f4af9f63ac060617"]]},{"id":"e7b4f331c0f02440","type":"change","z":"2c16cb289e22bc5d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\t \"hue\": payload[0],\t \"saturation\": payload[1],\t \"brightness\": payload[2]\t}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":1680,"wires":[["24fc2bcf6b927b5e"]]},{"id":"a0e4364555127b92","type":"debug","z":"2c16cb289e22bc5d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1390,"y":1560,"wires":[]},{"id":"24fc2bcf6b927b5e","type":"debug","z":"2c16cb289e22bc5d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1390,"y":1680,"wires":[]},{"id":"de25586b5f5ed96e","type":"change","z":"2c16cb289e22bc5d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"brightness\": payload[0]}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":1560,"wires":[["a0e4364555127b92"]]},{"id":"a3d552d2b549fd4f","type":"change","z":"2c16cb289e22bc5d","name":"Frankies Change Node","rules":[{"t":"change","p":"payload","pt":"msg","from":"temp(","fromt":"str","to":"","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":")","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":1560,"wires":[["84f5be0ed25f491a"]]}]
            

            Der Unterschied zwischen @frankyboy73 Flow und meinem ist nur, dass ich den String mit den Parameter in Array umwandle und nicht vorher die einzelnen Parameter rauspflücke - hängt halt davon ab, ob Du die Parameter in hsv in einem Objekt brauchst oder in Einzelteilen.

            In Einzelteilen ist @frankyboys73 's Flow vorzuziehen, als Objekt müsstest Du dann in @frankyboy73 Flow wieder die Parameter über eine JOIN Node in ein Objekt zusammenführen. In diesem Fall hängst Frankies Switch Node hinter die toNumber Change oder direkt hinter die split Node. Ich würde halt in jedem Fall mit der Change Node vorher die nackte Parameterliste extrahieren und nicht erst hinter dem split.

            F Offline
            F Offline
            frankyboy73
            schrieb am zuletzt editiert von frankyboy73
            #5

            @mickym sagte in String in Objekt umwandeln:

            Ich würde halt in jedem Fall mit der Change Node vorher die nackte Parameterliste extrahieren und nicht erst hinter dem split.

            Da stimme ich Dir zu. Das wäre sinnvoller.

            Also die bei meinem Post die beiden change vor die Split.

            @mickym Gibts eigentlich irgendwo ne vernümpftige Erklärung, wie man das mit dem Regulären Ausdruck (change Node) umsetzt, bzw. wann man was eingeben muss und wofür was steht? Und wieso ersetze durch $1 usw. ?

            Schöne Grüße Frank

            mickymM 1 Antwort Letzte Antwort
            0
            • F frankyboy73

              @mickym sagte in String in Objekt umwandeln:

              Ich würde halt in jedem Fall mit der Change Node vorher die nackte Parameterliste extrahieren und nicht erst hinter dem split.

              Da stimme ich Dir zu. Das wäre sinnvoller.

              Also die bei meinem Post die beiden change vor die Split.

              @mickym Gibts eigentlich irgendwo ne vernümpftige Erklärung, wie man das mit dem Regulären Ausdruck (change Node) umsetzt, bzw. wann man was eingeben muss und wofür was steht? Und wieso ersetze durch $1 usw. ?

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #6

              @frankyboy73 sagte in String in Objekt umwandeln:

              @mickym Gibts eigentlich irgendwo ne vernümpftige Erklärung, wie man das mit dem Regulären Ausdruck (change Node) umsetzt, bzw. wann man was eingeben muss und wofür was steht? Und wieso ersetze durch $1 usw. ?

              Nun der reguläre Ausdruck "matched" erst mal nur, deswegen findest Du Ihn den regulären Ausdruck nur beim Ändern in der Change Node oder auch in der Switch Node.

              b0aae3f2-ef13-4f09-aada-0a873a328bef-image.png 9475e4c4-019b-4248-b49f-c534cefccf6c-image.png

              In der Change Node kann man den Match kannst Du ganz normal durch irgendwas ersetzen, dabei kann man eben auch die Gruppenfunktion nutzen,

              Ist auch so in der Hilfe beschrieben:

              a5a4bd8f-06a0-49e5-b68f-0bf5b93a329b-image.png

              Im Prinzip mit regulären Ausdrücken und JSONATA läßt sich der Flow sehr verkürzen: ;)

              81fbc85c-4cbd-4f0e-a657-152df08c9c7b-image.png

              [
                 {
                     "id": "4ac5e923.ce6068",
                     "type": "change",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "$match(payload,/\\d+/)\t",
                             "tot": "jsonata"
                         },
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "{\t   \"brightness\": $number(payload[0].match)\t}",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 750,
                     "y": 1980,
                     "wires": [
                         [
                             "316957b6.cff788"
                         ]
                     ]
                 },
                 {
                     "id": "316957b6.cff788",
                     "type": "debug",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "false",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 970,
                     "y": 2000,
                     "wires": []
                 },
                 {
                     "id": "a51b8dfb.ae2d3",
                     "type": "inject",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "temp(47,4464)",
                     "payloadType": "str",
                     "x": 380,
                     "y": 1980,
                     "wires": [
                         [
                             "3ceed4df.8c3e1c"
                         ]
                     ]
                 },
                 {
                     "id": "e3ab959c.0d6238",
                     "type": "inject",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "hsv(237,100,60)",
                     "payloadType": "str",
                     "x": 380,
                     "y": 2040,
                     "wires": [
                         [
                             "3ceed4df.8c3e1c"
                         ]
                     ]
                 },
                 {
                     "id": "1192805.3b9618",
                     "type": "change",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "$match(payload,/\\d+/)\t",
                             "tot": "jsonata"
                         },
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "{\t   \"hue\": $number(payload[0].match),\t   \"saturation\": $number(payload[1].match),\t   \"brightness\": $number(payload[2].match)\t   \t}",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 750,
                     "y": 2040,
                     "wires": [
                         [
                             "316957b6.cff788"
                         ]
                     ]
                 },
                 {
                     "id": "3ceed4df.8c3e1c",
                     "type": "switch",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "property": "payload",
                     "propertyType": "msg",
                     "rules": [
                         {
                             "t": "cont",
                             "v": "temp",
                             "vt": "str"
                         },
                         {
                             "t": "cont",
                             "v": "hsv",
                             "vt": "str"
                         }
                     ],
                     "checkall": "true",
                     "repair": false,
                     "outputs": 2,
                     "x": 550,
                     "y": 2000,
                     "wires": [
                         [
                             "4ac5e923.ce6068"
                         ],
                         [
                             "1192805.3b9618"
                         ]
                     ]
                 }
              ]
              

              Statt den 2 Regeln geht das glaub noch eleganter - aber das muss ich erst wieder ausprobieren, da bin ich noch am Lernen. ;)

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              mickymM 1 Antwort Letzte Antwort
              1
              • mickymM mickym

                @frankyboy73 sagte in String in Objekt umwandeln:

                @mickym Gibts eigentlich irgendwo ne vernümpftige Erklärung, wie man das mit dem Regulären Ausdruck (change Node) umsetzt, bzw. wann man was eingeben muss und wofür was steht? Und wieso ersetze durch $1 usw. ?

                Nun der reguläre Ausdruck "matched" erst mal nur, deswegen findest Du Ihn den regulären Ausdruck nur beim Ändern in der Change Node oder auch in der Switch Node.

                b0aae3f2-ef13-4f09-aada-0a873a328bef-image.png 9475e4c4-019b-4248-b49f-c534cefccf6c-image.png

                In der Change Node kann man den Match kannst Du ganz normal durch irgendwas ersetzen, dabei kann man eben auch die Gruppenfunktion nutzen,

                Ist auch so in der Hilfe beschrieben:

                a5a4bd8f-06a0-49e5-b68f-0bf5b93a329b-image.png

                Im Prinzip mit regulären Ausdrücken und JSONATA läßt sich der Flow sehr verkürzen: ;)

                81fbc85c-4cbd-4f0e-a657-152df08c9c7b-image.png

                [
                   {
                       "id": "4ac5e923.ce6068",
                       "type": "change",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "$match(payload,/\\d+/)\t",
                               "tot": "jsonata"
                           },
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "{\t   \"brightness\": $number(payload[0].match)\t}",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 750,
                       "y": 1980,
                       "wires": [
                           [
                               "316957b6.cff788"
                           ]
                       ]
                   },
                   {
                       "id": "316957b6.cff788",
                       "type": "debug",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "false",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 970,
                       "y": 2000,
                       "wires": []
                   },
                   {
                       "id": "a51b8dfb.ae2d3",
                       "type": "inject",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "temp(47,4464)",
                       "payloadType": "str",
                       "x": 380,
                       "y": 1980,
                       "wires": [
                           [
                               "3ceed4df.8c3e1c"
                           ]
                       ]
                   },
                   {
                       "id": "e3ab959c.0d6238",
                       "type": "inject",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "hsv(237,100,60)",
                       "payloadType": "str",
                       "x": 380,
                       "y": 2040,
                       "wires": [
                           [
                               "3ceed4df.8c3e1c"
                           ]
                       ]
                   },
                   {
                       "id": "1192805.3b9618",
                       "type": "change",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "$match(payload,/\\d+/)\t",
                               "tot": "jsonata"
                           },
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "{\t   \"hue\": $number(payload[0].match),\t   \"saturation\": $number(payload[1].match),\t   \"brightness\": $number(payload[2].match)\t   \t}",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 750,
                       "y": 2040,
                       "wires": [
                           [
                               "316957b6.cff788"
                           ]
                       ]
                   },
                   {
                       "id": "3ceed4df.8c3e1c",
                       "type": "switch",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "property": "payload",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "cont",
                               "v": "temp",
                               "vt": "str"
                           },
                           {
                               "t": "cont",
                               "v": "hsv",
                               "vt": "str"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 2,
                       "x": 550,
                       "y": 2000,
                       "wires": [
                           [
                               "4ac5e923.ce6068"
                           ],
                           [
                               "1192805.3b9618"
                           ]
                       ]
                   }
                ]
                

                Statt den 2 Regeln geht das glaub noch eleganter - aber das muss ich erst wieder ausprobieren, da bin ich noch am Lernen. ;)

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #7

                @mickym noch etwas einfacher - aber in meinen Augen noch nicht optimal. ;)

                Helfen kann hier auch der JSONATA

                39adc4c6-f7bf-4839-b9bd-3e25ab4a24d5-image.png

                572704c7-ab56-42a8-8afc-83061e856920-image.png

                [
                   {
                       "id": "8d316bcb.d5a0a8",
                       "type": "change",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "{\t    \"hue\":$match(payload,/\\d+/)[0].match,\t    \"saturation\":$match(payload,/\\d+/)[1].match,\t    \"brightness\":$match(payload,/\\d+/)[2].match\t}\t",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 780,
                       "y": 2160,
                       "wires": [
                           [
                               "93d9d8b5.26ff98"
                           ]
                       ]
                   },
                   {
                       "id": "93d9d8b5.26ff98",
                       "type": "debug",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "false",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 970,
                       "y": 2160,
                       "wires": []
                   },
                   {
                       "id": "56febbc6.3c4944",
                       "type": "inject",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "hsv(237,100,60)",
                       "payloadType": "str",
                       "x": 560,
                       "y": 2160,
                       "wires": [
                           [
                               "8d316bcb.d5a0a8"
                           ]
                       ]
                   }
                ]
                


                63a72bae-189b-444f-ab20-3a3ca7c17a3e-image.png 3c7b3122-61e5-4304-88f0-a3ee0b3d1b3c-image.png

                Das geht aber noch eleganter. ;) ... probiere noch aus. ;)

                mit diesem JSONATA Ausdruck

                $match(payload,/\d+/)[*].$number(match)
                

                kann jedenfalls numerische Ganzzahlen aus einem String so einer Parameterliste rausholen und in ein Array verwandeln und dann wie herkömmlich vorgehen

                175e5e66-25b4-497c-befb-d314d147e126-image.png

                [
                   {
                       "id": "114d95e.3ff196a",
                       "type": "change",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "$match(payload,/\\d+/)[*].$number(match)",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 790,
                       "y": 2380,
                       "wires": [
                           [
                               "204302c4.255aee",
                               "1d234b38.633fb5"
                           ]
                       ]
                   },
                   {
                       "id": "e72c3eb5.d2b11",
                       "type": "inject",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "temp(47,4464)",
                       "payloadType": "str",
                       "x": 560,
                       "y": 2360,
                       "wires": [
                           [
                               "114d95e.3ff196a"
                           ]
                       ]
                   },
                   {
                       "id": "43843b4c.3323c4",
                       "type": "inject",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "hsv(237,100,60)",
                       "payloadType": "str",
                       "x": 560,
                       "y": 2420,
                       "wires": [
                           [
                               "114d95e.3ff196a"
                           ]
                       ]
                   },
                   {
                       "id": "db63c4ff.bbc2b8",
                       "type": "debug",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "false",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1370,
                       "y": 2380,
                       "wires": []
                   },
                   {
                       "id": "204302c4.255aee",
                       "type": "switch",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "property": "$count(payload)",
                       "propertyType": "jsonata",
                       "rules": [
                           {
                               "t": "eq",
                               "v": "2",
                               "vt": "num"
                           },
                           {
                               "t": "eq",
                               "v": "3",
                               "vt": "num"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 2,
                       "x": 970,
                       "y": 2380,
                       "wires": [
                           [
                               "e361c073.0c974"
                           ],
                           [
                               "5152e3fb.9b736c"
                           ]
                       ]
                   },
                   {
                       "id": "e361c073.0c974",
                       "type": "change",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "{\t    \"brightness\": payload[0]\t}",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1170,
                       "y": 2340,
                       "wires": [
                           [
                               "db63c4ff.bbc2b8"
                           ]
                       ]
                   },
                   {
                       "id": "1d234b38.633fb5",
                       "type": "debug",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "false",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1030,
                       "y": 2300,
                       "wires": []
                   },
                   {
                       "id": "5152e3fb.9b736c",
                       "type": "change",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "{\t    \"hue\": payload[0],\t    \"saturation\": payload[1],\t    \"brightness\": payload[2]\t}",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1170,
                       "y": 2420,
                       "wires": [
                           [
                               "db63c4ff.bbc2b8"
                           ]
                       ]
                   }
                ]
                

                Wie gesagt die Iteration in einem Objekt geht wahrscheinlich auch noch einfacher - der Vorteil zu der vorigen Variante ist, dass nur einmal das Array gebildet wird:

                1b4c0311-ba41-4109-903c-476903df6109-image.png

                [
                    {
                        "id": "8fda0f96.094af",
                        "type": "change",
                        "z": "54b226bc.0793e8",
                        "name": "",
                        "rules": [
                            {
                                "t": "set",
                                "p": "payload",
                                "pt": "msg",
                                "to": "(\t   $x := $match(payload,/\\d+/)[*].$number(match);\t   $x := {\t       \"hue\" : $x[0],\t       \"saturation\" : $x[1],\t       \"brightness\" : $x[2]\t            }\t   )",
                                "tot": "jsonata"
                            }
                        ],
                        "action": "",
                        "property": "",
                        "from": "",
                        "to": "",
                        "reg": false,
                        "x": 840,
                        "y": 2640,
                        "wires": [
                            [
                                "15cd076b.9d4e69"
                            ]
                        ]
                    }
                ]
                

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                mickymM 1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @mickym noch etwas einfacher - aber in meinen Augen noch nicht optimal. ;)

                  Helfen kann hier auch der JSONATA

                  39adc4c6-f7bf-4839-b9bd-3e25ab4a24d5-image.png

                  572704c7-ab56-42a8-8afc-83061e856920-image.png

                  [
                     {
                         "id": "8d316bcb.d5a0a8",
                         "type": "change",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "{\t    \"hue\":$match(payload,/\\d+/)[0].match,\t    \"saturation\":$match(payload,/\\d+/)[1].match,\t    \"brightness\":$match(payload,/\\d+/)[2].match\t}\t",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 780,
                         "y": 2160,
                         "wires": [
                             [
                                 "93d9d8b5.26ff98"
                             ]
                         ]
                     },
                     {
                         "id": "93d9d8b5.26ff98",
                         "type": "debug",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 970,
                         "y": 2160,
                         "wires": []
                     },
                     {
                         "id": "56febbc6.3c4944",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "hsv(237,100,60)",
                         "payloadType": "str",
                         "x": 560,
                         "y": 2160,
                         "wires": [
                             [
                                 "8d316bcb.d5a0a8"
                             ]
                         ]
                     }
                  ]
                  


                  63a72bae-189b-444f-ab20-3a3ca7c17a3e-image.png 3c7b3122-61e5-4304-88f0-a3ee0b3d1b3c-image.png

                  Das geht aber noch eleganter. ;) ... probiere noch aus. ;)

                  mit diesem JSONATA Ausdruck

                  $match(payload,/\d+/)[*].$number(match)
                  

                  kann jedenfalls numerische Ganzzahlen aus einem String so einer Parameterliste rausholen und in ein Array verwandeln und dann wie herkömmlich vorgehen

                  175e5e66-25b4-497c-befb-d314d147e126-image.png

                  [
                     {
                         "id": "114d95e.3ff196a",
                         "type": "change",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$match(payload,/\\d+/)[*].$number(match)",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 790,
                         "y": 2380,
                         "wires": [
                             [
                                 "204302c4.255aee",
                                 "1d234b38.633fb5"
                             ]
                         ]
                     },
                     {
                         "id": "e72c3eb5.d2b11",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "temp(47,4464)",
                         "payloadType": "str",
                         "x": 560,
                         "y": 2360,
                         "wires": [
                             [
                                 "114d95e.3ff196a"
                             ]
                         ]
                     },
                     {
                         "id": "43843b4c.3323c4",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "hsv(237,100,60)",
                         "payloadType": "str",
                         "x": 560,
                         "y": 2420,
                         "wires": [
                             [
                                 "114d95e.3ff196a"
                             ]
                         ]
                     },
                     {
                         "id": "db63c4ff.bbc2b8",
                         "type": "debug",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 1370,
                         "y": 2380,
                         "wires": []
                     },
                     {
                         "id": "204302c4.255aee",
                         "type": "switch",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "property": "$count(payload)",
                         "propertyType": "jsonata",
                         "rules": [
                             {
                                 "t": "eq",
                                 "v": "2",
                                 "vt": "num"
                             },
                             {
                                 "t": "eq",
                                 "v": "3",
                                 "vt": "num"
                             }
                         ],
                         "checkall": "true",
                         "repair": false,
                         "outputs": 2,
                         "x": 970,
                         "y": 2380,
                         "wires": [
                             [
                                 "e361c073.0c974"
                             ],
                             [
                                 "5152e3fb.9b736c"
                             ]
                         ]
                     },
                     {
                         "id": "e361c073.0c974",
                         "type": "change",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "{\t    \"brightness\": payload[0]\t}",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 1170,
                         "y": 2340,
                         "wires": [
                             [
                                 "db63c4ff.bbc2b8"
                             ]
                         ]
                     },
                     {
                         "id": "1d234b38.633fb5",
                         "type": "debug",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 1030,
                         "y": 2300,
                         "wires": []
                     },
                     {
                         "id": "5152e3fb.9b736c",
                         "type": "change",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "{\t    \"hue\": payload[0],\t    \"saturation\": payload[1],\t    \"brightness\": payload[2]\t}",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 1170,
                         "y": 2420,
                         "wires": [
                             [
                                 "db63c4ff.bbc2b8"
                             ]
                         ]
                     }
                  ]
                  

                  Wie gesagt die Iteration in einem Objekt geht wahrscheinlich auch noch einfacher - der Vorteil zu der vorigen Variante ist, dass nur einmal das Array gebildet wird:

                  1b4c0311-ba41-4109-903c-476903df6109-image.png

                  [
                      {
                          "id": "8fda0f96.094af",
                          "type": "change",
                          "z": "54b226bc.0793e8",
                          "name": "",
                          "rules": [
                              {
                                  "t": "set",
                                  "p": "payload",
                                  "pt": "msg",
                                  "to": "(\t   $x := $match(payload,/\\d+/)[*].$number(match);\t   $x := {\t       \"hue\" : $x[0],\t       \"saturation\" : $x[1],\t       \"brightness\" : $x[2]\t            }\t   )",
                                  "tot": "jsonata"
                              }
                          ],
                          "action": "",
                          "property": "",
                          "from": "",
                          "to": "",
                          "reg": false,
                          "x": 840,
                          "y": 2640,
                          "wires": [
                              [
                                  "15cd076b.9d4e69"
                              ]
                          ]
                      }
                  ]
                  
                  mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @mickym So ich habe nun hier meine endgültige Version - einfacher bekomme ich es noch nicht hin:

                  Aber ist wieder ein Einzeiler, wobei ich immernoch ein function definieren muss:

                  8ef875b3-73b3-477c-9078-28caa32c187f-image.png

                  $match($.payload,/\d+/)[*].$number(match) ~> function($x) {
                     {
                         "hue" : $x[0],
                         "saturation" : $x[1],
                         "brightness" : $x[2]
                              } 
                  }
                  

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  Claus1985 0C 1 Antwort Letzte Antwort
                  0
                  • Claus1985 0C Claus1985 0

                    Hallo Zusammen,

                    ich habe folgendes Thema. Ich erhalte aus einem System eine Payload mit zwei verschiedenen Strings.
                    Entweder im Format temp(47,4464) oder im Format hsv(237,100,60).

                    Beim ersten Format benötige ich die erste Zahl (geht von 0 bis 100) als Objekt Brightness.
                    Im Zweiten Format benötige ich alle drei Zahlen als Objekte Hue, Saturation und Brightness.

                    Ich habe versucht das mit einem Switch Baustein zu trennen in temp/hsv und dann mit Split weiter zu bearbeiten.
                    Allerdings hänge ich da an Split. Das Komma könnte als Seperator dienen allerdings weiß ich nicht, wie ich die
                    Split Node dazu anpassen muss.

                    Kann mir hier jemand weiterhelfen?

                    Danke und Gruß,

                    Claus

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von
                    #9

                    @claus1985-0

                    Hier noch eine interessante Lösung - mit der CSV Node - habe ich erst gerade im NodeRed Forum gelesen. Da wird die Umwandlung in Zahlen automatisch vorgenommen, wenn es geht.

                    730876e8-b563-4438-8f4d-010d7db0c542-image.png

                    [
                       {
                           "id": "2676e699.24d21a",
                           "type": "inject",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "props": [
                               {
                                   "p": "payload"
                               }
                           ],
                           "repeat": "",
                           "crontab": "",
                           "once": false,
                           "onceDelay": 0.1,
                           "topic": "",
                           "payload": "hsv(237,100,60)",
                           "payloadType": "str",
                           "x": 480,
                           "y": 2700,
                           "wires": [
                               [
                                   "d898bd42.c9aa3"
                               ]
                           ]
                       },
                       {
                           "id": "d898bd42.c9aa3",
                           "type": "change",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "rules": [
                               {
                                   "t": "change",
                                   "p": "payload",
                                   "pt": "msg",
                                   "from": ".*\\((.*)\\)",
                                   "fromt": "re",
                                   "to": "$1",
                                   "tot": "str"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 700,
                           "y": 2700,
                           "wires": [
                               [
                                   "3e8a2638.f0148a",
                                   "7b3a7061.a068"
                               ]
                           ]
                       },
                       {
                           "id": "7b3a7061.a068",
                           "type": "csv",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "sep": ",",
                           "hdrin": "",
                           "hdrout": "none",
                           "multi": "one",
                           "ret": "\\n",
                           "temp": "",
                           "skip": "0",
                           "strings": true,
                           "include_empty_strings": "",
                           "include_null_values": "",
                           "x": 890,
                           "y": 2700,
                           "wires": [
                               [
                                   "b521ebd1.5b01c8"
                               ]
                           ]
                       },
                       {
                           "id": "20b20f88.7ed18",
                           "type": "debug",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "false",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 1270,
                           "y": 2700,
                           "wires": []
                       },
                       {
                           "id": "3e8a2638.f0148a",
                           "type": "debug",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "false",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 950,
                           "y": 2760,
                           "wires": []
                       },
                       {
                           "id": "b521ebd1.5b01c8",
                           "type": "change",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "rules": [
                               {
                                   "t": "move",
                                   "p": "payload.col1",
                                   "pt": "msg",
                                   "to": "payload.hue",
                                   "tot": "msg"
                               },
                               {
                                   "t": "move",
                                   "p": "payload.col2",
                                   "pt": "msg",
                                   "to": "payload.saturation",
                                   "tot": "msg"
                               },
                               {
                                   "t": "move",
                                   "p": "payload.col3",
                                   "pt": "msg",
                                   "to": "payload.brightness",
                                   "tot": "msg"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 1070,
                           "y": 2700,
                           "wires": [
                               [
                                   "20b20f88.7ed18"
                               ]
                           ]
                       }
                    ]
                    

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    1 Antwort Letzte Antwort
                    0
                    • mickymM mickym

                      @mickym So ich habe nun hier meine endgültige Version - einfacher bekomme ich es noch nicht hin:

                      Aber ist wieder ein Einzeiler, wobei ich immernoch ein function definieren muss:

                      8ef875b3-73b3-477c-9078-28caa32c187f-image.png

                      $match($.payload,/\d+/)[*].$number(match) ~> function($x) {
                         {
                             "hue" : $x[0],
                             "saturation" : $x[1],
                             "brightness" : $x[2]
                                  } 
                      }
                      
                      Claus1985 0C Offline
                      Claus1985 0C Offline
                      Claus1985 0
                      schrieb am zuletzt editiert von
                      #10

                      @mickym sehr elegant und kompakt!
                      Eins hab ich vergessen, ist mir grad beim ausprobieren aufgefallen. Ist es möglich in dem Programm analog Brightness, Hue und Saturation noch On (Boolean) mit einzufügen, dass autom. gesetzt wird je nach Brightness Wert (Brightness = 0 > false, Brighhness grösser 0 > true)?

                      Danke und Gruß,

                      Claus

                      mickymM 1 Antwort Letzte Antwort
                      0
                      • Claus1985 0C Claus1985 0

                        @mickym sehr elegant und kompakt!
                        Eins hab ich vergessen, ist mir grad beim ausprobieren aufgefallen. Ist es möglich in dem Programm analog Brightness, Hue und Saturation noch On (Boolean) mit einzufügen, dass autom. gesetzt wird je nach Brightness Wert (Brightness = 0 > false, Brighhness grösser 0 > true)?

                        Danke und Gruß,

                        Claus

                        mickymM Offline
                        mickymM Offline
                        mickym
                        Most Active
                        schrieb am zuletzt editiert von mickym
                        #11

                        @claus1985-0 sagte in String in Objekt umwandeln:

                        @mickym sehr elegant und kompakt!
                        Eins hab ich vergessen, ist mir grad beim ausprobieren aufgefallen. Ist es möglich in dem Programm analog Brightness, Hue und Saturation noch On (Boolean) mit einzufügen, dass autom. gesetzt wird je nach Brightness Wert (Brightness = 0 > false, Brighhness grösser 0 > true)?

                        Danke und Gruß,

                        Claus

                        Meinst Du so?

                        f47e2098-b56f-474c-8dd9-e85f74806464-image.png

                        [
                           {
                               "id": "8d316bcb.d5a0a8",
                               "type": "change",
                               "z": "54b226bc.0793e8",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "$match($.payload,/\\d+/)[*].$number(match) ~> function($x) {\t   {\t       \"hue\" : $x[0],\t       \"saturation\" : $x[1],\t       \"brightness\" : $x[2],\t       \"on\" : $x[2] > 0 ? true : false\t            } \t}",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 770,
                               "y": 2040,
                               "wires": [
                                   [
                                       "93d9d8b5.26ff98"
                                   ]
                               ]
                           },
                           {
                               "id": "93d9d8b5.26ff98",
                               "type": "debug",
                               "z": "54b226bc.0793e8",
                               "name": "",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "false",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 960,
                               "y": 2040,
                               "wires": []
                           },
                           {
                               "id": "56febbc6.3c4944",
                               "type": "inject",
                               "z": "54b226bc.0793e8",
                               "name": "",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "hsv(237,100,60)",
                               "payloadType": "str",
                               "x": 540,
                               "y": 2020,
                               "wires": [
                                   [
                                       "8d316bcb.d5a0a8"
                                   ]
                               ]
                           },
                           {
                               "id": "4d7bedbb.68d9b4",
                               "type": "inject",
                               "z": "54b226bc.0793e8",
                               "name": "",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": " temp(47,4464)",
                               "payloadType": "str",
                               "x": 540,
                               "y": 1920,
                               "wires": [
                                   [
                                       "ba81659a.38d878"
                                   ]
                               ]
                           },
                           {
                               "id": "ba81659a.38d878",
                               "type": "change",
                               "z": "54b226bc.0793e8",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "$match($.payload,/\\d+/)[*].$number(match) ~> function($x) {\t   {\t       \"brightness\" : $x[0],\t       \"colortemp\" : $x[1],\t       \"on\" : $x[0] > 0 ? true : false\t            } \t}",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 770,
                               "y": 1940,
                               "wires": [
                                   [
                                       "ba0163ff.e6896"
                                   ]
                               ]
                           },
                           {
                               "id": "ba0163ff.e6896",
                               "type": "debug",
                               "z": "54b226bc.0793e8",
                               "name": "",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "false",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 960,
                               "y": 1940,
                               "wires": []
                           },
                           {
                               "id": "1dedf46.62a380c",
                               "type": "inject",
                               "z": "54b226bc.0793e8",
                               "name": "",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": " temp(0,4464)",
                               "payloadType": "str",
                               "x": 550,
                               "y": 1960,
                               "wires": [
                                   [
                                       "ba81659a.38d878"
                                   ]
                               ]
                           },
                           {
                               "id": "d4ab5b3a.f7bcb8",
                               "type": "inject",
                               "z": "54b226bc.0793e8",
                               "name": "",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "hsv(237,100,0)",
                               "payloadType": "str",
                               "x": 540,
                               "y": 2060,
                               "wires": [
                                   [
                                       "8d316bcb.d5a0a8"
                                   ]
                               ]
                           }
                        ]
                        

                        Anderenfalls halt mit Switch abprüfen und gesondert schalten.

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        Claus1985 0C 1 Antwort Letzte Antwort
                        0
                        • mickymM mickym

                          @claus1985-0 sagte in String in Objekt umwandeln:

                          @mickym sehr elegant und kompakt!
                          Eins hab ich vergessen, ist mir grad beim ausprobieren aufgefallen. Ist es möglich in dem Programm analog Brightness, Hue und Saturation noch On (Boolean) mit einzufügen, dass autom. gesetzt wird je nach Brightness Wert (Brightness = 0 > false, Brighhness grösser 0 > true)?

                          Danke und Gruß,

                          Claus

                          Meinst Du so?

                          f47e2098-b56f-474c-8dd9-e85f74806464-image.png

                          [
                             {
                                 "id": "8d316bcb.d5a0a8",
                                 "type": "change",
                                 "z": "54b226bc.0793e8",
                                 "name": "",
                                 "rules": [
                                     {
                                         "t": "set",
                                         "p": "payload",
                                         "pt": "msg",
                                         "to": "$match($.payload,/\\d+/)[*].$number(match) ~> function($x) {\t   {\t       \"hue\" : $x[0],\t       \"saturation\" : $x[1],\t       \"brightness\" : $x[2],\t       \"on\" : $x[2] > 0 ? true : false\t            } \t}",
                                         "tot": "jsonata"
                                     }
                                 ],
                                 "action": "",
                                 "property": "",
                                 "from": "",
                                 "to": "",
                                 "reg": false,
                                 "x": 770,
                                 "y": 2040,
                                 "wires": [
                                     [
                                         "93d9d8b5.26ff98"
                                     ]
                                 ]
                             },
                             {
                                 "id": "93d9d8b5.26ff98",
                                 "type": "debug",
                                 "z": "54b226bc.0793e8",
                                 "name": "",
                                 "active": true,
                                 "tosidebar": true,
                                 "console": false,
                                 "tostatus": false,
                                 "complete": "false",
                                 "statusVal": "",
                                 "statusType": "auto",
                                 "x": 960,
                                 "y": 2040,
                                 "wires": []
                             },
                             {
                                 "id": "56febbc6.3c4944",
                                 "type": "inject",
                                 "z": "54b226bc.0793e8",
                                 "name": "",
                                 "props": [
                                     {
                                         "p": "payload"
                                     }
                                 ],
                                 "repeat": "",
                                 "crontab": "",
                                 "once": false,
                                 "onceDelay": 0.1,
                                 "topic": "",
                                 "payload": "hsv(237,100,60)",
                                 "payloadType": "str",
                                 "x": 540,
                                 "y": 2020,
                                 "wires": [
                                     [
                                         "8d316bcb.d5a0a8"
                                     ]
                                 ]
                             },
                             {
                                 "id": "4d7bedbb.68d9b4",
                                 "type": "inject",
                                 "z": "54b226bc.0793e8",
                                 "name": "",
                                 "props": [
                                     {
                                         "p": "payload"
                                     }
                                 ],
                                 "repeat": "",
                                 "crontab": "",
                                 "once": false,
                                 "onceDelay": 0.1,
                                 "topic": "",
                                 "payload": " temp(47,4464)",
                                 "payloadType": "str",
                                 "x": 540,
                                 "y": 1920,
                                 "wires": [
                                     [
                                         "ba81659a.38d878"
                                     ]
                                 ]
                             },
                             {
                                 "id": "ba81659a.38d878",
                                 "type": "change",
                                 "z": "54b226bc.0793e8",
                                 "name": "",
                                 "rules": [
                                     {
                                         "t": "set",
                                         "p": "payload",
                                         "pt": "msg",
                                         "to": "$match($.payload,/\\d+/)[*].$number(match) ~> function($x) {\t   {\t       \"brightness\" : $x[0],\t       \"colortemp\" : $x[1],\t       \"on\" : $x[0] > 0 ? true : false\t            } \t}",
                                         "tot": "jsonata"
                                     }
                                 ],
                                 "action": "",
                                 "property": "",
                                 "from": "",
                                 "to": "",
                                 "reg": false,
                                 "x": 770,
                                 "y": 1940,
                                 "wires": [
                                     [
                                         "ba0163ff.e6896"
                                     ]
                                 ]
                             },
                             {
                                 "id": "ba0163ff.e6896",
                                 "type": "debug",
                                 "z": "54b226bc.0793e8",
                                 "name": "",
                                 "active": true,
                                 "tosidebar": true,
                                 "console": false,
                                 "tostatus": false,
                                 "complete": "false",
                                 "statusVal": "",
                                 "statusType": "auto",
                                 "x": 960,
                                 "y": 1940,
                                 "wires": []
                             },
                             {
                                 "id": "1dedf46.62a380c",
                                 "type": "inject",
                                 "z": "54b226bc.0793e8",
                                 "name": "",
                                 "props": [
                                     {
                                         "p": "payload"
                                     }
                                 ],
                                 "repeat": "",
                                 "crontab": "",
                                 "once": false,
                                 "onceDelay": 0.1,
                                 "topic": "",
                                 "payload": " temp(0,4464)",
                                 "payloadType": "str",
                                 "x": 550,
                                 "y": 1960,
                                 "wires": [
                                     [
                                         "ba81659a.38d878"
                                     ]
                                 ]
                             },
                             {
                                 "id": "d4ab5b3a.f7bcb8",
                                 "type": "inject",
                                 "z": "54b226bc.0793e8",
                                 "name": "",
                                 "props": [
                                     {
                                         "p": "payload"
                                     }
                                 ],
                                 "repeat": "",
                                 "crontab": "",
                                 "once": false,
                                 "onceDelay": 0.1,
                                 "topic": "",
                                 "payload": "hsv(237,100,0)",
                                 "payloadType": "str",
                                 "x": 540,
                                 "y": 2060,
                                 "wires": [
                                     [
                                         "8d316bcb.d5a0a8"
                                     ]
                                 ]
                             }
                          ]
                          

                          Anderenfalls halt mit Switch abprüfen und gesondert schalten.

                          Claus1985 0C Offline
                          Claus1985 0C Offline
                          Claus1985 0
                          schrieb am zuletzt editiert von Claus1985 0
                          #12

                          @mickym Mega, funktioniert perfekt!! Vielen, vielen Dank! :v:
                          Ich bin inzwischen übrigens auch beim umgekehrten Weg etwas weitergekommen dank Deinen Tipps und einem Code aus dem NodeRed Forum (siehe Function im Code):

                          [
                             {
                                 "id": "d75f0ada.a524f8",
                                 "type": "debug",
                                 "z": "f3f0ca0.5f2f538",
                                 "name": "Aus Homekit umgewandelt Werte",
                                 "active": true,
                                 "tosidebar": true,
                                 "console": false,
                                 "tostatus": false,
                                 "complete": "payload",
                                 "targetType": "msg",
                                 "statusVal": "",
                                 "statusType": "auto",
                                 "x": 3560,
                                 "y": 3360,
                                 "wires": []
                             },
                             {
                                 "id": "16d7556083bcce80",
                                 "type": "function",
                                 "z": "f3f0ca0.5f2f538",
                                 "name": "",
                                 "func": "let store = context.get('store') || {\"Brightness\":100,\"Saturation\":28,\"Hue\":335}\n\nObject.assign (store, msg.payload)\n\ncontext.set('store', store); \n\nmsg.payload = store;\n\nvar hue = msg.payload.Hue;\nvar sat = msg.payload.Saturation;\nvar bri = msg.payload.Brightness;\nreturn {payload: [hue, sat, bri]};",
                                 "outputs": 1,
                                 "noerr": 0,
                                 "initialize": "",
                                 "finalize": "",
                                 "libs": [],
                                 "x": 2880,
                                 "y": 3360,
                                 "wires": [
                                     [
                                         "b9f34451.c1aa38"
                                     ]
                                 ]
                             },
                             {
                                 "id": "b9f34451.c1aa38",
                                 "type": "change",
                                 "z": "f3f0ca0.5f2f538",
                                 "name": "In String umwandeln",
                                 "rules": [
                                     {
                                         "t": "set",
                                         "p": "payload",
                                         "pt": "msg",
                                         "to": "$string(msg.payload)",
                                         "tot": "jsonata"
                                     }
                                 ],
                                 "action": "",
                                 "property": "",
                                 "from": "",
                                 "to": "",
                                 "reg": false,
                                 "x": 3080,
                                 "y": 3360,
                                 "wires": [
                                     [
                                         "90af8445.678f58"
                                     ]
                                 ]
                             },
                             {
                                 "id": "90af8445.678f58",
                                 "type": "change",
                                 "z": "f3f0ca0.5f2f538",
                                 "name": "String anpassen",
                                 "rules": [
                                     {
                                         "t": "change",
                                         "p": "payload",
                                         "pt": "msg",
                                         "from": "[",
                                         "fromt": "str",
                                         "to": "hsv(",
                                         "tot": "str"
                                     },
                                     {
                                         "t": "change",
                                         "p": "payload",
                                         "pt": "msg",
                                         "from": "]",
                                         "fromt": "str",
                                         "to": ")",
                                         "tot": "str"
                                     }
                                 ],
                                 "action": "",
                                 "property": "",
                                 "from": "",
                                 "to": "",
                                 "reg": false,
                                 "x": 3300,
                                 "y": 3360,
                                 "wires": [
                                     [
                                         "d75f0ada.a524f8"
                                     ]
                                 ]
                             },
                             {
                                 "id": "2e057f29.73b3e",
                                 "type": "switch",
                                 "z": "f3f0ca0.5f2f538",
                                 "name": "",
                                 "property": "payload",
                                 "propertyType": "msg",
                                 "rules": [
                                     {
                                         "t": "cont",
                                         "v": "payload.On",
                                         "vt": "msg"
                                     },
                                     {
                                         "t": "else"
                                     }
                                 ],
                                 "checkall": "true",
                                 "repair": false,
                                 "outputs": 2,
                                 "x": 2730,
                                 "y": 3340,
                                 "wires": [
                                     [
                                         "faad214e.ac7d2"
                                     ],
                                     [
                                         "16d7556083bcce80"
                                     ]
                                 ]
                             },
                             {
                                 "id": "2cd24509.aee27a",
                                 "type": "debug",
                                 "z": "f3f0ca0.5f2f538",
                                 "name": "Aus Homekit On/Off",
                                 "active": true,
                                 "tosidebar": true,
                                 "console": false,
                                 "tostatus": false,
                                 "complete": "payload",
                                 "targetType": "msg",
                                 "statusVal": "",
                                 "statusType": "auto",
                                 "x": 3440,
                                 "y": 3320,
                                 "wires": []
                             },
                             {
                                 "id": "faad214e.ac7d2",
                                 "type": "change",
                                 "z": "f3f0ca0.5f2f538",
                                 "name": "Boolean2Integer",
                                 "rules": [
                                     {
                                         "t": "change",
                                         "p": "payload.On",
                                         "pt": "msg",
                                         "from": "true",
                                         "fromt": "bool",
                                         "to": "0",
                                         "tot": "num"
                                     },
                                     {
                                         "t": "change",
                                         "p": "payload.On",
                                         "pt": "msg",
                                         "from": "false",
                                         "fromt": "bool",
                                         "to": "off",
                                         "tot": "str"
                                     }
                                 ],
                                 "action": "",
                                 "property": "",
                                 "from": "",
                                 "to": "",
                                 "reg": false,
                                 "x": 2900,
                                 "y": 3320,
                                 "wires": [
                                     [
                                         "ae33f17a.3a4c1"
                                     ]
                                 ]
                             },
                             {
                                 "id": "ae33f17a.3a4c1",
                                 "type": "change",
                                 "z": "f3f0ca0.5f2f538",
                                 "name": "Set playoad.On to payload",
                                 "rules": [
                                     {
                                         "t": "move",
                                         "p": "payload.On",
                                         "pt": "msg",
                                         "to": "payload",
                                         "tot": "msg"
                                     },
                                     {
                                         "t": "delete",
                                         "p": "payload.On",
                                         "pt": "msg"
                                     }
                                 ],
                                 "action": "",
                                 "property": "",
                                 "from": "",
                                 "to": "",
                                 "reg": false,
                                 "x": 3130,
                                 "y": 3320,
                                 "wires": [
                                     [
                                         "2cd24509.aee27a"
                                     ]
                                 ]
                             }
                          ]
                          

                          Homekit schickt immer nur den sich ändernden Wert (z.B. nur Hue oder nur Saturation oder nur Brightness), das Zielsystem benötigt aber immer einen vollständigen Ausdruck mit allen drei Werten.
                          Ich habe oben nun eine Funktion, welche alle eingehenden Werte speichert, konsolidiert und dann zusammen als eine Nachricht weitergibt. Falls noch keine Werte kamen greift sie auf default Werte zurück.

                          Ein Problem habe ich noch mit dem Code der Funktion:
                          Wenn sich der Wert On von true auf false und dann wieder auf true ändert wäre es gut, wenn er auf die Default Werte zurückgreift und diese weitergibt (immer wenn die Lampe aus- und wieder eingeschaltet wird).
                          Er soll also nur dann die konsolidierten Werte senden, wenn die Lampe zwischendrin nicht ausgeschaltet wurde.

                          Hast Du eine Idee wie ich die Funktion dafür anpassen müsste?

                          Danke und Gruß,

                          Claus

                          mickymM 1 Antwort Letzte Antwort
                          0
                          • Claus1985 0C Claus1985 0

                            @mickym Mega, funktioniert perfekt!! Vielen, vielen Dank! :v:
                            Ich bin inzwischen übrigens auch beim umgekehrten Weg etwas weitergekommen dank Deinen Tipps und einem Code aus dem NodeRed Forum (siehe Function im Code):

                            [
                               {
                                   "id": "d75f0ada.a524f8",
                                   "type": "debug",
                                   "z": "f3f0ca0.5f2f538",
                                   "name": "Aus Homekit umgewandelt Werte",
                                   "active": true,
                                   "tosidebar": true,
                                   "console": false,
                                   "tostatus": false,
                                   "complete": "payload",
                                   "targetType": "msg",
                                   "statusVal": "",
                                   "statusType": "auto",
                                   "x": 3560,
                                   "y": 3360,
                                   "wires": []
                               },
                               {
                                   "id": "16d7556083bcce80",
                                   "type": "function",
                                   "z": "f3f0ca0.5f2f538",
                                   "name": "",
                                   "func": "let store = context.get('store') || {\"Brightness\":100,\"Saturation\":28,\"Hue\":335}\n\nObject.assign (store, msg.payload)\n\ncontext.set('store', store); \n\nmsg.payload = store;\n\nvar hue = msg.payload.Hue;\nvar sat = msg.payload.Saturation;\nvar bri = msg.payload.Brightness;\nreturn {payload: [hue, sat, bri]};",
                                   "outputs": 1,
                                   "noerr": 0,
                                   "initialize": "",
                                   "finalize": "",
                                   "libs": [],
                                   "x": 2880,
                                   "y": 3360,
                                   "wires": [
                                       [
                                           "b9f34451.c1aa38"
                                       ]
                                   ]
                               },
                               {
                                   "id": "b9f34451.c1aa38",
                                   "type": "change",
                                   "z": "f3f0ca0.5f2f538",
                                   "name": "In String umwandeln",
                                   "rules": [
                                       {
                                           "t": "set",
                                           "p": "payload",
                                           "pt": "msg",
                                           "to": "$string(msg.payload)",
                                           "tot": "jsonata"
                                       }
                                   ],
                                   "action": "",
                                   "property": "",
                                   "from": "",
                                   "to": "",
                                   "reg": false,
                                   "x": 3080,
                                   "y": 3360,
                                   "wires": [
                                       [
                                           "90af8445.678f58"
                                       ]
                                   ]
                               },
                               {
                                   "id": "90af8445.678f58",
                                   "type": "change",
                                   "z": "f3f0ca0.5f2f538",
                                   "name": "String anpassen",
                                   "rules": [
                                       {
                                           "t": "change",
                                           "p": "payload",
                                           "pt": "msg",
                                           "from": "[",
                                           "fromt": "str",
                                           "to": "hsv(",
                                           "tot": "str"
                                       },
                                       {
                                           "t": "change",
                                           "p": "payload",
                                           "pt": "msg",
                                           "from": "]",
                                           "fromt": "str",
                                           "to": ")",
                                           "tot": "str"
                                       }
                                   ],
                                   "action": "",
                                   "property": "",
                                   "from": "",
                                   "to": "",
                                   "reg": false,
                                   "x": 3300,
                                   "y": 3360,
                                   "wires": [
                                       [
                                           "d75f0ada.a524f8"
                                       ]
                                   ]
                               },
                               {
                                   "id": "2e057f29.73b3e",
                                   "type": "switch",
                                   "z": "f3f0ca0.5f2f538",
                                   "name": "",
                                   "property": "payload",
                                   "propertyType": "msg",
                                   "rules": [
                                       {
                                           "t": "cont",
                                           "v": "payload.On",
                                           "vt": "msg"
                                       },
                                       {
                                           "t": "else"
                                       }
                                   ],
                                   "checkall": "true",
                                   "repair": false,
                                   "outputs": 2,
                                   "x": 2730,
                                   "y": 3340,
                                   "wires": [
                                       [
                                           "faad214e.ac7d2"
                                       ],
                                       [
                                           "16d7556083bcce80"
                                       ]
                                   ]
                               },
                               {
                                   "id": "2cd24509.aee27a",
                                   "type": "debug",
                                   "z": "f3f0ca0.5f2f538",
                                   "name": "Aus Homekit On/Off",
                                   "active": true,
                                   "tosidebar": true,
                                   "console": false,
                                   "tostatus": false,
                                   "complete": "payload",
                                   "targetType": "msg",
                                   "statusVal": "",
                                   "statusType": "auto",
                                   "x": 3440,
                                   "y": 3320,
                                   "wires": []
                               },
                               {
                                   "id": "faad214e.ac7d2",
                                   "type": "change",
                                   "z": "f3f0ca0.5f2f538",
                                   "name": "Boolean2Integer",
                                   "rules": [
                                       {
                                           "t": "change",
                                           "p": "payload.On",
                                           "pt": "msg",
                                           "from": "true",
                                           "fromt": "bool",
                                           "to": "0",
                                           "tot": "num"
                                       },
                                       {
                                           "t": "change",
                                           "p": "payload.On",
                                           "pt": "msg",
                                           "from": "false",
                                           "fromt": "bool",
                                           "to": "off",
                                           "tot": "str"
                                       }
                                   ],
                                   "action": "",
                                   "property": "",
                                   "from": "",
                                   "to": "",
                                   "reg": false,
                                   "x": 2900,
                                   "y": 3320,
                                   "wires": [
                                       [
                                           "ae33f17a.3a4c1"
                                       ]
                                   ]
                               },
                               {
                                   "id": "ae33f17a.3a4c1",
                                   "type": "change",
                                   "z": "f3f0ca0.5f2f538",
                                   "name": "Set playoad.On to payload",
                                   "rules": [
                                       {
                                           "t": "move",
                                           "p": "payload.On",
                                           "pt": "msg",
                                           "to": "payload",
                                           "tot": "msg"
                                       },
                                       {
                                           "t": "delete",
                                           "p": "payload.On",
                                           "pt": "msg"
                                       }
                                   ],
                                   "action": "",
                                   "property": "",
                                   "from": "",
                                   "to": "",
                                   "reg": false,
                                   "x": 3130,
                                   "y": 3320,
                                   "wires": [
                                       [
                                           "2cd24509.aee27a"
                                       ]
                                   ]
                               }
                            ]
                            

                            Homekit schickt immer nur den sich ändernden Wert (z.B. nur Hue oder nur Saturation oder nur Brightness), das Zielsystem benötigt aber immer einen vollständigen Ausdruck mit allen drei Werten.
                            Ich habe oben nun eine Funktion, welche alle eingehenden Werte speichert, konsolidiert und dann zusammen als eine Nachricht weitergibt. Falls noch keine Werte kamen greift sie auf default Werte zurück.

                            Ein Problem habe ich noch mit dem Code der Funktion:
                            Wenn sich der Wert On von true auf false und dann wieder auf true ändert wäre es gut, wenn er auf die Default Werte zurückgreift und diese weitergibt (immer wenn die Lampe aus- und wieder eingeschaltet wird).
                            Er soll also nur dann die konsolidierten Werte senden, wenn die Lampe zwischendrin nicht ausgeschaltet wurde.

                            Hast Du eine Idee wie ich die Funktion dafür anpassen müsste?

                            Danke und Gruß,

                            Claus

                            mickymM Offline
                            mickymM Offline
                            mickym
                            Most Active
                            schrieb am zuletzt editiert von
                            #13

                            @claus1985-0 Na Du kannst ja wenn On=false ist, den Context in der Function Node einfach löschen, beim nächsten Mal werden dann true ist es dann wie bei Neuinitialisierung.

                            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                            Claus1985 0C 1 Antwort Letzte Antwort
                            0
                            • mickymM mickym

                              @claus1985-0 Na Du kannst ja wenn On=false ist, den Context in der Function Node einfach löschen, beim nächsten Mal werden dann true ist es dann wie bei Neuinitialisierung.

                              Claus1985 0C Offline
                              Claus1985 0C Offline
                              Claus1985 0
                              schrieb am zuletzt editiert von
                              #14

                              @mickym Gute, Idee! Kannst Du mir da mit der Syntax weiterhelfen? Bekomme es nicht gelöst :-/

                              mickymM 1 Antwort Letzte Antwort
                              0
                              • Claus1985 0C Claus1985 0

                                @mickym Gute, Idee! Kannst Du mir da mit der Syntax weiterhelfen? Bekomme es nicht gelöst :-/

                                mickymM Offline
                                mickymM Offline
                                mickym
                                Most Active
                                schrieb am zuletzt editiert von
                                #15

                                @claus1985-0 sagte in String in Objekt umwandeln:

                                @mickym Gute, Idee! Kannst Du mir da mit der Syntax weiterhelfen? Bekomme es nicht gelöst :-/

                                c87e974d-4aa8-405e-af4a-44d9fcad74fd-image.png

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                Claus1985 0C 1 Antwort Letzte Antwort
                                0
                                • mickymM mickym

                                  @claus1985-0 sagte in String in Objekt umwandeln:

                                  @mickym Gute, Idee! Kannst Du mir da mit der Syntax weiterhelfen? Bekomme es nicht gelöst :-/

                                  c87e974d-4aa8-405e-af4a-44d9fcad74fd-image.png

                                  Claus1985 0C Offline
                                  Claus1985 0C Offline
                                  Claus1985 0
                                  schrieb am zuletzt editiert von
                                  #16

                                  @mickym Vielen Dank für Deine Hilfe! :-)
                                  Mit der Zeile funktioniert es nun allerdings kann ich die Lampe nicht mehr ausschalten :D
                                  Wenn ich ausschalte ist ja die if Bedingung wahr und führt zum Default was wiederum zum Einschalten der
                                  Lampe führt.

                                  Wenn ich in der letzten Zeile if (msg.payload.On) einfüge schickt er keine Nachrichten mehr,
                                  wenn kein .On dabei ist :face_with_rolling_eyes:

                                  if (!msg.payload.On) context.set('store', undefined);
                                  let store = context.get('store') || {"Brightness":100,"Saturation":28,"Hue":33}
                                  
                                  Object.assign (store, msg.payload)
                                  
                                  context.set('store', store); 
                                  
                                  msg.payload = store;
                                  
                                  var hue = msg.payload.Hue;
                                  var sat = msg.payload.Saturation;
                                  var bri = msg.payload.Brightness;
                                  if (msg.payload.On) return {payload: [hue, sat, bri]};
                                  

                                  mickymM 1 Antwort Letzte Antwort
                                  0
                                  • Claus1985 0C Claus1985 0

                                    @mickym Vielen Dank für Deine Hilfe! :-)
                                    Mit der Zeile funktioniert es nun allerdings kann ich die Lampe nicht mehr ausschalten :D
                                    Wenn ich ausschalte ist ja die if Bedingung wahr und führt zum Default was wiederum zum Einschalten der
                                    Lampe führt.

                                    Wenn ich in der letzten Zeile if (msg.payload.On) einfüge schickt er keine Nachrichten mehr,
                                    wenn kein .On dabei ist :face_with_rolling_eyes:

                                    if (!msg.payload.On) context.set('store', undefined);
                                    let store = context.get('store') || {"Brightness":100,"Saturation":28,"Hue":33}
                                    
                                    Object.assign (store, msg.payload)
                                    
                                    context.set('store', store); 
                                    
                                    msg.payload = store;
                                    
                                    var hue = msg.payload.Hue;
                                    var sat = msg.payload.Saturation;
                                    var bri = msg.payload.Brightness;
                                    if (msg.payload.On) return {payload: [hue, sat, bri]};
                                    

                                    mickymM Offline
                                    mickymM Offline
                                    mickym
                                    Most Active
                                    schrieb am zuletzt editiert von mickym
                                    #17

                                    @claus1985-0 Na das zum Schluß ist ja klar, mach das einfach wieder rückgängig und wie ursprünlgich.

                                    Dann nimmst halt meine 1. Zeile und setzt sie hinter das msg.payload=store. Dann wird die Nachricht nochmal wie vorher geschickt, aber der Kontext gelöscht und somit werden die Defaultwerte werden erst bei der nächsten Nachricht aktiv.

                                    Schöner ist halt wenn man das alles via Flow Variablen macht - dann implementiert man Logiken im Flow und nicht in einer function Node. Aber egal .

                                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                    1 Antwort Letzte Antwort
                                    0
                                    Antworten
                                    • In einem neuen Thema antworten
                                    Anmelden zum Antworten
                                    • Älteste zuerst
                                    • Neuste zuerst
                                    • Meiste Stimmen


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    372

                                    Online

                                    32.5k

                                    Benutzer

                                    81.7k

                                    Themen

                                    1.3m

                                    Beiträge
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                    ioBroker Community 2014-2025
                                    logo
                                    • Anmelden

                                    • Du hast noch kein Konto? Registrieren

                                    • Anmelden oder registrieren, um zu suchen
                                    • Erster Beitrag
                                      Letzter Beitrag
                                    0
                                    • Home
                                    • Aktuell
                                    • Tags
                                    • Ungelesen 0
                                    • Kategorien
                                    • Unreplied
                                    • Beliebt
                                    • GitHub
                                    • Docu
                                    • Hilfe