Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Wie funktioniert der Input Kanal zu Alexa

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Wie funktioniert der Input Kanal zu Alexa

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      Reini_T last edited by Reini_T

      Da dies mein erster Beitrag ist, möchte ich mich kurz vorstellen. Mein Smarthome läuft seid ca. 1 Jahr mit Blockly Scripte und einigen Adaptern. Ich bin von Iobroker begeistert und versuche nun auf meine Scripte auf Node Red umzustellen.

      Ich versuche gerade in Node Red eine einfache Lampe mit Alexa und einen Button auf dem Dashboard zu steuern. Die Verbindung zu Alexa funktioniert. Ich kann sowohl mit Alexa als auch mit dem Button am Dashboard die Lampe steuern. Wenn ich mit Alexa die Lampe an oder aussschalte, bekomme ich den Zustand in der Alexa App angezeigt. Wenn ich dies aber mit dem Dashboard Button mache, bekomme ich nicht den richtigen Zustand in der Alexa App angezeigt.
      Ich habe mich durch einige Internetseiten durchgekämpft, aber ich bekomme es nicht zusammen.
      Ich benutze die Pallette node-red-contrib-amazon-echo. Ich habe zwei Debug eingefügt. der eine überprüft den Ausgang von der Alexa, der andere den Eingang. Ich glaube das ich hier das gleiche in die Alexa schicke, wie ich auch herausbekomme.
      Vielleicht habe ich aber auch den Retourkanal nicht verstanden. Darum hoffe ich auf eure Erfahrung.

      Das wäre mein Flow.


      [
      {
      "id": "70d295d8a000ae9c",
      "type": "ioBroker in",
      "z": "fd777960455711e3",
      "name": "Wohzimmerlicht_Zustand_in",
      "topic": "sonoff.0.Schlafzimmer_Fernseher.POWER",
      "payloadType": "value",
      "onlyack": "update",
      "func": "all",
      "gap": "",
      "fireOnStart": "true",
      "outFormat": "MQTT",
      "x": 140,
      "y": 40,
      "wires": [
      [
      "c93884d0.feed28",
      "f9dd571ea72a0fe7"
      ]
      ]
      },
      {
      "id": "3cec2de9b5852079",
      "type": "ioBroker out",
      "z": "fd777960455711e3",
      "name": "Wohnzimmerlicht Zustand_out",
      "topic": "sonoff.0.Schlafzimmer_Fernseher.POWER",
      "ack": "false",
      "autoCreate": "false",
      "stateName": "",
      "role": "",
      "payloadType": "",
      "readonly": "",
      "stateUnit": "",
      "stateMin": "",
      "stateMax": "",
      "x": 1210,
      "y": 180,
      "wires": []
      },
      {
      "id": "7a3d4ecd1154580b",
      "type": "switch",
      "z": "fd777960455711e3",
      "name": "an/aus",
      "property": "payload",
      "propertyType": "msg",
      "rules": [
      {
      "t": "eq",
      "v": "on",
      "vt": "str"
      },
      {
      "t": "eq",
      "v": "off",
      "vt": "str"
      }
      ],
      "checkall": "true",
      "repair": false,
      "outputs": 2,
      "x": 730,
      "y": 200,
      "wires": [
      [
      "01f3553c6f985687"
      ],
      [
      "8d36aa6bb404bc6f"
      ]
      ]
      },
      {
      "id": "01f3553c6f985687",
      "type": "change",
      "z": "fd777960455711e3",
      "name": "",
      "rules": [
      {
      "t": "change",
      "p": "payload",
      "pt": "msg",
      "from": "on",
      "fromt": "str",
      "to": "true",
      "tot": "bool"
      }
      ],
      "action": "",
      "property": "",
      "from": "",
      "to": "",
      "reg": false,
      "x": 920,
      "y": 180,
      "wires": [
      [
      "3cec2de9b5852079"
      ]
      ]
      },
      {
      "id": "8d36aa6bb404bc6f",
      "type": "change",
      "z": "fd777960455711e3",
      "name": "",
      "rules": [
      {
      "t": "change",
      "p": "payload",
      "pt": "msg",
      "from": "off",
      "fromt": "str",
      "to": "false",
      "tot": "bool"
      }
      ],
      "action": "",
      "property": "",
      "from": "",
      "to": "",
      "reg": false,
      "x": 920,
      "y": 220,
      "wires": [
      [
      "3cec2de9b5852079"
      ]
      ]
      },
      {
      "id": "329c84a2.30b45c",
      "type": "ui_switch",
      "z": "fd777960455711e3",
      "name": "",
      "label": "Wohnzimmer",
      "tooltip": "tip",
      "group": "6eb3ac754da90e0e",
      "order": 17,
      "width": 4,
      "height": 1,
      "passthru": false,
      "decouple": "false",
      "topic": "topic",
      "topicType": "msg",
      "style": "",
      "onvalue": "true",
      "onvalueType": "bool",
      "onicon": "",
      "oncolor": "",
      "offvalue": "false",
      "offvalueType": "bool",
      "officon": "",
      "offcolor": "",
      "animate": false,
      "className": "",
      "x": 990,
      "y": 120,
      "wires": [
      [
      "3cec2de9b5852079"
      ]
      ]
      },
      {
      "id": "c93884d0.feed28",
      "type": "function",
      "z": "fd777960455711e3",
      "name": "Nachricht mit aktuellen Status erstellen",
      "func": "let status = msg.payload;\nmsg = {};\n\nif (status == true) {\n msg.ui_control = {\n onicon: "fa-2x fa-wifi",\n oncolor: "#ffd700",\n officon: "fa-2x fa-wifi",\n offcolor: "#ffd700"\n }\n msg.payload = true;\n \n} else {\n msg.ui_control = {\n onicon: "fa-2x fa-wifi",\n oncolor: "lightgreen",\n officon: "fa-2x fa-wifi",\n offcolor: "#898989"\n }\n msg.payload = false;\n}\n\nreturn msg;\n\n",
      "outputs": 1,
      "noerr": 0,
      "initialize": "",
      "finalize": "",
      "libs": [],
      "x": 730,
      "y": 120,
      "wires": [
      [
      "329c84a2.30b45c"
      ]
      ]
      },
      {
      "id": "f9dd571ea72a0fe7",
      "type": "change",
      "z": "fd777960455711e3",
      "name": "Von true auf An, false auf Aus",
      "rules": [
      {
      "t": "change",
      "p": "payload",
      "pt": "msg",
      "from": "true",
      "fromt": "bool",
      "to": "on",
      "tot": "str"
      },
      {
      "t": "change",
      "p": "payload",
      "pt": "msg",
      "from": "false",
      "fromt": "bool",
      "to": "off",
      "tot": "str"
      }
      ],
      "action": "",
      "property": "",
      "from": "",
      "to": "",
      "reg": false,
      "x": 510,
      "y": 40,
      "wires": [
      [
      "1fafb16966e53f51"
      ]
      ]
      },
      {
      "id": "1fafb16966e53f51",
      "type": "function",
      "z": "fd777960455711e3",
      "name": "Ein/Aus",
      "func": "return { payload: msg.payload };",
      "outputs": 1,
      "noerr": 0,
      "initialize": "",
      "finalize": "",
      "libs": [],
      "x": 140,
      "y": 200,
      "wires": [
      [
      "aef10237aec90c0f",
      "d40b51d719082e48"
      ]
      ]
      },
      {
      "id": "aef10237aec90c0f",
      "type": "amazon-echo-hub",
      "z": "fd777960455711e3",
      "port": "80",
      "processinput": "1",
      "discovery": true,
      "x": 370,
      "y": 200,
      "wires": [
      [
      "1cd744f3ca3d71ff",
      "51e756f94fc1c9a8"
      ]
      ]
      },
      {
      "id": "1cd744f3ca3d71ff",
      "type": "amazon-echo-device",
      "z": "fd777960455711e3",
      "name": "virtruell",
      "topic": "",
      "x": 560,
      "y": 200,
      "wires": [
      [
      "7a3d4ecd1154580b"
      ]
      ]
      },
      {
      "id": "51e756f94fc1c9a8",
      "type": "debug",
      "z": "fd777960455711e3",
      "name": "Zustand",
      "active": true,
      "tosidebar": true,
      "console": false,
      "tostatus": false,
      "complete": "payload",
      "targetType": "msg",
      "statusVal": "",
      "statusType": "auto",
      "x": 620,
      "y": 280,
      "wires": []
      },
      {
      "id": "d40b51d719082e48",
      "type": "debug",
      "z": "fd777960455711e3",
      "name": "Retour",
      "active": true,
      "tosidebar": true,
      "console": false,
      "tostatus": false,
      "complete": "payload",
      "targetType": "msg",
      "statusVal": "",
      "statusType": "auto",
      "x": 370,
      "y": 280,
      "wires": []
      },
      {
      "id": "6eb3ac754da90e0e",
      "type": "ui_group",
      "name": "Erdgeschoß",
      "tab": "9e95cae1a62f9f7c",
      "order": 1,
      "disp": true,
      "width": "6",
      "collapse": false,
      "className": ""
      },
      {
      "id": "9e95cae1a62f9f7c",
      "type": "ui_tab",
      "name": "Lichter",
      "icon": "dashboard",
      "order": 3,
      "disabled": false,
      "hidden": false
      }
      ]

      DJMarc75 1 Reply Last reply Reply Quote 0
      • DJMarc75
        DJMarc75 @Reini_T last edited by DJMarc75

        @reini_t sagte in Wie funktioniert der Input Kanal zu Alexa:

        Das wäre mein Flow.

        bitte als Screenshot zeigen da man nicht unbedingt jeden Flow importieren mag

        R 1 Reply Last reply Reply Quote 0
        • R
          Reini_T @DJMarc75 last edited by

          Ich hoffe das reicht so?

          862b89fd-797e-433a-9a14-beedfddf4d7e-image.png

          P mickym 2 Replies Last reply Reply Quote 0
          • P
            peterfido @Reini_T last edited by

            @reini_t
            Meine Rückmeldungen an die App erledige ich per Function_Nodes:

            var nodeid = "6df04e96.e4c63";
            var ison=false;
            
            if (msg.payload > 0){
                ison=true;
            }
            
            var newMsg={
                payload: ''
            }
            
            newMsg.payload= {
                nodeid: nodeid,
                on: ison,
                }
            
            node.status({text:"on: "+ison});
            return newMsg;
            
            1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @Reini_T last edited by mickym

              @reini_t Nun dann hättest Du ja auch trotz Umstellung Deiner Logikmaschine auf NodeRed Deinen Adapter weiter behalten können.

              Falls man wirklich die node.id der Amazon Node benötigt - dann erstellst einfach das Objekt- du kannst aber auch mal weglassen.

              Wenn Du als ein aus true/false hast - kannst Du das direkt über eine Change Node machen, in dem Du das Objekt einfach so einstellst wie Du es brauchst.

              Merke: NodeRed hat gerade seine Vorteile, in dem man keinen Javascript Code schreibt - das ist wirklich nur in einigen Ausnahmefällen (z. Bsp bei externen Bibliotheken oder wenn man eine Node braucht um was zu speichern und man das nicht im flow-Kontext machen will).

              Du schreibst einfach in Deine Change Node - das Objekt was Du haben willst, in ein JSONATA Feld und gut ist.

              {
                  "nodeid": "6df04e96.e4c63",
                  "on": payload
                  }
              

              7ef4088f-44b9-4b68-aadc-1828c9e7b240-image.png
              10643578-839b-495e-a43a-e61f9957ae95-image.png

              Diese ganze Codiererei ist einfach unnötig.

              Falls Du als Input nicht true oder false, sonder ON/OFF oder 0/1 hast, dann kannst Du das in der Change node mit 2 zusätzlichen Regeln ändern oder einfach im JSONATA Objekt.

              Hier mit zusätzlichen Regeln in der Change Node:

              1eda77f1-71ac-4348-8bb8-c8fbd7665835-image.png

              oder nur im Objekt:

              19dfe883-7b1c-435d-9418-ea6fc651eaec-image.png

              [
                 {
                     "id": "e4ae86b05c50d9cd",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "true",
                     "payloadType": "bool",
                     "x": 370,
                     "y": 3520,
                     "wires": [
                         [
                             "2dc8e8ac670c9a16"
                         ]
                     ]
                 },
                 {
                     "id": "26b9506fb10256b1",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "false",
                     "payloadType": "bool",
                     "x": 370,
                     "y": 3560,
                     "wires": [
                         [
                             "2dc8e8ac670c9a16"
                         ]
                     ]
                 },
                 {
                     "id": "2dc8e8ac670c9a16",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "{\t   \"nodeid\": \"6df04e96.e4c63\",\t   \"on\": payload\t   }\t",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 550,
                     "y": 3540,
                     "wires": [
                         [
                             "9c31686c26785195"
                         ]
                     ]
                 },
                 {
                     "id": "9c31686c26785195",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "Zur Alexa Node",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 760,
                     "y": 3540,
                     "wires": []
                 }
              ]
              

              @Reini_T

              Deinen Flow kann man nicht interpretieren, wenn Du den nicht in CodeTag setzt, da sonst der Browser hier Formatsteuerzeichen interpretiert. Also jeden Export bin in CodeTags (so wie im Blockly Export auch).

              Code-Tags.gif

              Du kannst ja mal versuchen Deinen Flow so wie er ist zu reimportieren - Du wirst scheitern.

              8e33c27b-1e0c-40e0-8a2e-f1c365edba41-image.png

              Also nur in CodeTags - sonst macht das keinen Sinn.

              Wenn da übrigens solche Objekte rauskommen ....

              {
                  "nodeid": "6df04e96.e4c63",
                  "on": true
                  }
              
              

              (Ich habe die Node selbst nicht, da keine Alexa).

              87d94d42-79c4-4f19-aa48-ba0b4321bc69-image.png

              ... dann kannst Du das ganze vereinfachen - indem Du nur den Wert selektierst über den Pfad:

              copy path.gif

              bf63257a-d0c1-4014-88f5-8da36dd5d16c-image.png

              Das heißt Du kannst alles mit EINER Node umwandeln, um ein Attribut eines Objektes in einen Datenpunkt im iobroker zu schreiben.

              [
                 {
                     "id": "a4aef8eaa9a93ac0",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "Alexa Ausgabe",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "{\"nodeid\":\"6df04e96.e4c63\",\"on\":true}",
                     "payloadType": "json",
                     "x": 280,
                     "y": 3940,
                     "wires": [
                         [
                             "208e759b77bf0348",
                             "56cfb667ef472d47"
                         ]
                     ]
                 },
                 {
                     "id": "56cfb667ef472d47",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "Alexa Ausgabe",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 480,
                     "y": 3900,
                     "wires": []
                 },
                 {
                     "id": "31e9b2dec2c5a305",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "on Status selektiert",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 730,
                     "y": 3900,
                     "wires": []
                 },
                 {
                     "id": "208e759b77bf0348",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload.on",
                             "tot": "msg"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 490,
                     "y": 3940,
                     "wires": [
                         [
                             "31e9b2dec2c5a305"
                         ]
                     ]
                 }
              ]
              

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              1.1k
              Online

              31.7k
              Users

              79.7k
              Topics

              1.3m
              Posts

              4
              5
              298
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo