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. Alexa Temperaturabfrage mit Node Red

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Alexa Temperaturabfrage mit Node Red

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

      Hallo,
      ich möchte gerne die Temperatur eines Homematic IP Temperatursensors mit Alexa abfragen.
      Dazu habe ich in Node Red den Alexa Home Skill Bridge installiert. Das Gerät sieht so aus:
      home-skill-bridge-aussenfühler.png
      Dann habe ich in Node Red einen Flow angelegt der momentan so aussieht:
      Flow-Aussentemperatur.png
      Das Gerät wird von Alexa gefunden und im ioBroker folgende Datenpunkte erzeugt:
      Datenpunkte-Aussentemperatur.png
      Leider bleibt der Datenpunkt leer bzw. beträgt (null)
      Kann mir da jemand auf die Sprünge helfen? Ich beschäftige mich erst seit gestern mit Node Red, habe auch schon viel gesucht aber komme in diesem Fall momentan nicht weiter.

      Viele Grüße
      Kimchi

      F 1 Reply Last reply Reply Quote 0
      • F
        frankyboy73 @Kymchy last edited by

        @kymchy Hi, so wie du das aufgebaut hast. Gibst du mit der Alexa Node einen Befehl raus, liest danach mit der Iobroker get Node den Außenfühler Datenpunkt aus und schreibst das dann wieder mit der Iobroker Out Node in den gleichen Außenfühler Datenpunkt. Du solltest eigentlich nicht in den Außenfühler Datenpunkt schreiben, das macht Homematic IP, du kannst ja nicht selber die AUßentemperatur bestimmen, sondern nur auslesen.
        Du müsstest über die Get Node den Datenpunkt auslesen und das dann eigentlich auf die Alexa Resp Node schicken damit Alexa das ausgeben kann. Aber so wie ich das in der Doko gelesen habe, ist das nur in US und UK verfügbar.
        https://alexa-node-red.bm.hardill.me.uk/docs

        Alexahome1.jpg

        K 1 Reply Last reply Reply Quote 0
        • K
          Kymchy @frankyboy73 last edited by

          @frankyboy73 OK, vielen Dank! Scheint also nicht ganz so einfach zu sein, wie ich mir das gedacht hatte...

          F 1 Reply Last reply Reply Quote 0
          • F
            frankyboy73 @Kymchy last edited by

            @kymchy Hast du dir schon mal den Alexa 2 Adapter angesehen?

            K 1 Reply Last reply Reply Quote 0
            • K
              Kymchy @frankyboy73 last edited by

              @frankyboy73 ja, was meinst du?

              F 2 Replies Last reply Reply Quote 0
              • F
                frankyboy73 @Kymchy last edited by frankyboy73

                @kymchy Damit kannst du doch Ausgaben auf deine Echos machen.
                Da gibts verschieden Ansätze, du könntest z.B. mit der Alexa Home node die du schon hast den Flow zu Abfrage triggern, dann die Temperatur abfragen und über die Alexa2 History abfragen am welchen Echo du die Abfrage gestartet hast und das dann an dem entsprechenden Echo wieder ausgeben.
                Oder du liest in Alexa2 in History summary aus was du gesagt hast und wenn der entsprechende Satz z.B. "wie ist die außentemperatur" gesagt wurde löst du den Flow zur Temperaturabfrage, welcher Echo und Ausgabe auf entsprechenden Echo aus.
                Bei der Variante die summary auszulesen, müsstest du dir in der Alexa App noch ne Routine erstellen,wenn folgendes passiert, mit dem gleichen Satz den du sagen willst z.B. "wie ist die außentemperatur" und als Action "Warten" 5 Sekunden oder so, sonst Quatsch Alexa bei deiner Anfrage irgendeinen Quatsch, wie das Wetter ist, oder das sie das nicht weiß.

                1 Reply Last reply Reply Quote 0
                • F
                  frankyboy73 @Kymchy last edited by frankyboy73

                  @kymchy Hi, hab mich mal etwas umgeschaut, sonst gibt es noch diese Nodes. Damit soll wohl die Temperaturabfrage möglich sein. Daür musst du natürlich auch die Temperatur an die entsprechende Node senden. Da werden auch viele Beispiele gezeigt und die wird momentan auch aktuell gehalten.
                  https://flows.nodered.org/node/node-red-contrib-virtual-smart-home
                  Alexahome3.jpg
                  Da müsstest du dann wohl nur deine Außentempertatur über Iobroker Input Node auf die Alexa Node senden.

                  K 1 Reply Last reply Reply Quote 0
                  • K
                    Kymchy @frankyboy73 last edited by

                    @frankyboy73 OK, ich guck mir das mal an, danke! Zu deinen ersten Beispielen, das geht dann über Funktionen? Ich kann ja nicht ein Speak Command auf einen ioBroker out legen, oder doch?

                    F 2 Replies Last reply Reply Quote 0
                    • F
                      frankyboy73 @Kymchy last edited by frankyboy73

                      @kymchy Geht auch per Change Node. Ne einfache Sprachausgabe auf einen bestimmten Echo, würde dann so aussehen.
                      Speak.jpg

                      [
                          {
                              "id": "84886fcc.05e8a",
                              "type": "change",
                              "z": "9e1c0edb.e6d2d",
                              "name": "",
                              "rules": [
                                  {
                                      "t": "set",
                                      "p": "payload",
                                      "pt": "msg",
                                      "to": "Test",
                                      "tot": "str"
                                  }
                              ],
                              "action": "",
                              "property": "",
                              "from": "",
                              "to": "",
                              "reg": false,
                              "x": 440,
                              "y": 2940,
                              "wires": [
                                  [
                                      "d967dc29.b5b0f"
                                  ]
                              ]
                          },
                          {
                              "id": "d967dc29.b5b0f",
                              "type": "ioBroker out",
                              "z": "9e1c0edb.e6d2d",
                              "name": "Wohnzimmer speak",
                              "topic": "alexa2.0.Echo-Devices.G090LA09738501R6.Commands.speak",
                              "ack": "false",
                              "autoCreate": "false",
                              "stateName": "",
                              "role": "",
                              "stateUnit": "",
                              "stateMin": "",
                              "stateMax": "",
                              "x": 700,
                              "y": 2940,
                              "wires": []
                          },
                          {
                              "id": "37bd71e1.6c02be",
                              "type": "inject",
                              "z": "9e1c0edb.e6d2d",
                              "name": "",
                              "props": [
                                  {
                                      "p": "payload"
                                  },
                                  {
                                      "p": "topic",
                                      "vt": "str"
                                  }
                              ],
                              "repeat": "",
                              "crontab": "",
                              "once": false,
                              "onceDelay": 0.1,
                              "topic": "",
                              "payload": "",
                              "payloadType": "date",
                              "x": 230,
                              "y": 2940,
                              "wires": [
                                  [
                                      "84886fcc.05e8a"
                                  ]
                              ]
                          }
                      ]
                      


                      Oder so wenn man es mit ner Funktion macht.
                      speak1.jpg

                      [
                          {
                              "id": "d967dc29.b5b0f",
                              "type": "ioBroker out",
                              "z": "9e1c0edb.e6d2d",
                              "name": "Wohnzimmer speak",
                              "topic": "alexa2.0.Echo-Devices.G090LA09738501R6.Commands.speak",
                              "ack": "false",
                              "autoCreate": "false",
                              "stateName": "",
                              "role": "",
                              "stateUnit": "",
                              "stateMin": "",
                              "stateMax": "",
                              "x": 700,
                              "y": 2940,
                              "wires": []
                          },
                          {
                              "id": "37bd71e1.6c02be",
                              "type": "inject",
                              "z": "9e1c0edb.e6d2d",
                              "name": "",
                              "props": [
                                  {
                                      "p": "payload"
                                  },
                                  {
                                      "p": "topic",
                                      "vt": "str"
                                  }
                              ],
                              "repeat": "",
                              "crontab": "",
                              "once": false,
                              "onceDelay": 0.1,
                              "topic": "",
                              "payload": "",
                              "payloadType": "date",
                              "x": 230,
                              "y": 2940,
                              "wires": [
                                  [
                                      "ce9d59c7.e272f8"
                                  ]
                              ]
                          },
                          {
                              "id": "ce9d59c7.e272f8",
                              "type": "function",
                              "z": "9e1c0edb.e6d2d",
                              "name": "speak",
                              "func": "msg.payload = ' Test ';\nreturn msg;",
                              "outputs": 1,
                              "noerr": 0,
                              "initialize": "",
                              "finalize": "",
                              "libs": [],
                              "x": 430,
                              "y": 2940,
                              "wires": [
                                  [
                                      "d967dc29.b5b0f"
                                  ]
                              ]
                          }
                      ]
                      

                      1 Reply Last reply Reply Quote 0
                      • F
                        frankyboy73 @Kymchy last edited by frankyboy73

                        @kymchy Wenn du die Außentemperatur mit rein haben willst, musst du die mit ner get Node Abfragen und die msg. mit in den Text reinbringen.
                        In diesem Fall frage ich auch noch den letzten angesprochenen Echo habe und gebe den Text dort aus. Dafür muss dann in der Output Node das Topic leer bleiben, das wird von der Change Node geschrieben.
                        speak2.jpg

                        [
                            {
                                "id": "8c51e023.84979",
                                "type": "ioBroker get",
                                "z": "9e1c0edb.e6d2d",
                                "name": "serialNumber",
                                "topic": "alexa2.0.History.serialNumber",
                                "attrname": "serial",
                                "payloadType": "value",
                                "x": 820,
                                "y": 2680,
                                "wires": [
                                    [
                                        "a88e6fba.0537a"
                                    ]
                                ]
                            },
                            {
                                "id": "5bc18741.e38488",
                                "type": "ioBroker out",
                                "z": "9e1c0edb.e6d2d",
                                "name": "",
                                "topic": "",
                                "ack": "false",
                                "autoCreate": "false",
                                "x": 680,
                                "y": 2800,
                                "wires": []
                            },
                            {
                                "id": "f1adcbdf.f5b1c8",
                                "type": "ioBroker get",
                                "z": "9e1c0edb.e6d2d",
                                "name": "Außentemperatur",
                                "topic": "deconz.0.Sensors.23.temperature",
                                "attrname": "payload",
                                "payloadType": "value",
                                "x": 410,
                                "y": 2680,
                                "wires": [
                                    [
                                        "b146f726.4c0aa8"
                                    ]
                                ]
                            },
                            {
                                "id": "b146f726.4c0aa8",
                                "type": "change",
                                "z": "9e1c0edb.e6d2d",
                                "name": "Text zusammenstellen",
                                "rules": [
                                    {
                                        "t": "set",
                                        "p": "payload",
                                        "pt": "msg",
                                        "to": "' Die Aussentemperatur beträgt ' & payload & ' Grad'",
                                        "tot": "jsonata"
                                    }
                                ],
                                "action": "",
                                "property": "",
                                "from": "",
                                "to": "",
                                "reg": false,
                                "x": 620,
                                "y": 2680,
                                "wires": [
                                    [
                                        "8c51e023.84979"
                                    ]
                                ]
                            },
                            {
                                "id": "a88e6fba.0537a",
                                "type": "change",
                                "z": "9e1c0edb.e6d2d",
                                "name": "Ausgabe Echo",
                                "rules": [
                                    {
                                        "t": "set",
                                        "p": "topic",
                                        "pt": "msg",
                                        "to": "'alexa2.0.Echo-Devices.' & serial & '.Commands.speak'",
                                        "tot": "jsonata"
                                    }
                                ],
                                "action": "",
                                "property": "",
                                "from": "",
                                "to": "",
                                "reg": false,
                                "x": 440,
                                "y": 2800,
                                "wires": [
                                    [
                                        "5bc18741.e38488"
                                    ]
                                ]
                            }
                        ]
                        


                        Geht auch mit Funktion Nodes
                        speak3.jpg

                        [
                            {
                                "id": "3921d992.2c4a26",
                                "type": "ioBroker get",
                                "z": "9e1c0edb.e6d2d",
                                "name": "serialNumber",
                                "topic": "alexa2.0.History.serialNumber",
                                "attrname": "serial",
                                "payloadType": "value",
                                "x": 740,
                                "y": 2940,
                                "wires": [
                                    [
                                        "7e0dde54.5c71a"
                                    ]
                                ]
                            },
                            {
                                "id": "7e0dde54.5c71a",
                                "type": "function",
                                "z": "9e1c0edb.e6d2d",
                                "name": "Echo Ausgabe",
                                "func": "\n\nmsg.topic = 'alexa2.0.Echo-Devices.' + \n\n    msg.serial + '.Commands.speak';\n\nreturn msg;\n",
                                "outputs": 1,
                                "noerr": 0,
                                "initialize": "",
                                "finalize": "",
                                "libs": [],
                                "x": 340,
                                "y": 3060,
                                "wires": [
                                    [
                                        "328c489.0698bb8"
                                    ]
                                ]
                            },
                            {
                                "id": "328c489.0698bb8",
                                "type": "ioBroker out",
                                "z": "9e1c0edb.e6d2d",
                                "name": "",
                                "topic": "",
                                "ack": "false",
                                "autoCreate": "false",
                                "x": 520,
                                "y": 3060,
                                "wires": []
                            },
                            {
                                "id": "90d62c66.69baa",
                                "type": "ioBroker get",
                                "z": "9e1c0edb.e6d2d",
                                "name": "Außentemperatur",
                                "topic": "deconz.0.Sensors.23.temperature",
                                "attrname": "payload",
                                "payloadType": "value",
                                "x": 370,
                                "y": 2940,
                                "wires": [
                                    [
                                        "fa4c17f7.4792c8"
                                    ]
                                ]
                            },
                            {
                                "id": "fa4c17f7.4792c8",
                                "type": "function",
                                "z": "9e1c0edb.e6d2d",
                                "name": "speak",
                                "func": "msg.payload = Math.round(msg.payload * 10) / 10;\nmsg.payload = ' Die Außentemperatur beträgt ' + msg.payload + ' Grad';\nreturn msg;",
                                "outputs": 1,
                                "noerr": 0,
                                "initialize": "",
                                "finalize": "",
                                "libs": [],
                                "x": 550,
                                "y": 2940,
                                "wires": [
                                    [
                                        "3921d992.2c4a26"
                                    ]
                                ]
                            },
                            {
                                "id": "608d529e.e538ec",
                                "type": "inject",
                                "z": "9e1c0edb.e6d2d",
                                "name": "",
                                "props": [
                                    {
                                        "p": "payload"
                                    },
                                    {
                                        "p": "topic",
                                        "vt": "str"
                                    }
                                ],
                                "repeat": "",
                                "crontab": "",
                                "once": false,
                                "onceDelay": 0.1,
                                "topic": "",
                                "payload": "",
                                "payloadType": "date",
                                "x": 160,
                                "y": 2940,
                                "wires": [
                                    [
                                        "90d62c66.69baa"
                                    ]
                                ]
                            }
                        ]
                        


                        Edit: Habe den Code mit den Funktion Nodes noch mal angepasst, da hatte ich nen Fehler
                        In der Funktion Node (speak) Runde ich übrigens die Temperatur noch auf eine Stelle nach dem Komma.

                        1 Reply Last reply Reply Quote 0
                        • K
                          Kymchy last edited by

                          Danke für deine ganze Mühe! Ich wollte jetzt mal diese Geschichte mit den virtuellen Geräten ausprobieren. Das ganze soll recht gut funktionieren. Aber ich glaube, für die Abfrage muss der Wortlaut haargenau stimmen, das fände ich persönlich nicht so toll. Mal sehen...

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            Kymchy @Kymchy last edited by

                            Im Moment sieht das erstmal so aus:
                            inject.png
                            Ich habe keine Ahnung, wo ich da jetzt mein ioBroker in anschließen soll.

                            F 1 Reply Last reply Reply Quote 0
                            • F
                              frankyboy73 @Kymchy last edited by frankyboy73

                              @kymchy Hi, genau weiß ich das auch nicht, da ich die Node selber nicht verwende.
                              Die iobroker in kommt auf jeden Fall anstatt der Injekt Node. Wenn ich das richtig gesehen habe musst du die Temperatur als msg.payload.temperature übergeben und mit msg.payload.scale noch CELSIUS für die Scalierung. Das geht mit ner Change Node.
                              Edit: In diesem Fall würde ich bei der In Node die Einstellung "send Message at start wählen" damit du bei Deploy bzw. bei Node Red Neustart sofort nen Temperaturwert bekommst.
                              Alexahome4.jpg
                              b40e6f18-4f56-4514-952a-18c95fa8a5c9-grafik.png

                              [
                                 {
                                     "id": "ea3ef81a.abd298",
                                     "type": "change",
                                     "z": "9e1c0edb.e6d2d",
                                     "name": "",
                                     "rules": [
                                         {
                                             "t": "set",
                                             "p": "payload.temperature",
                                             "pt": "msg",
                                             "to": "payload",
                                             "tot": "msg"
                                         },
                                         {
                                             "t": "set",
                                             "p": "payload.scale",
                                             "pt": "msg",
                                             "to": "CELSIUS",
                                             "tot": "str"
                                         }
                                     ],
                                     "action": "",
                                     "property": "",
                                     "from": "",
                                     "to": "",
                                     "reg": false,
                                     "x": 430,
                                     "y": 3560,
                                     "wires": [
                                         [
                                             "d04827e9.44afc8"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "20793bf4.73c104",
                                     "type": "ioBroker in",
                                     "z": "9e1c0edb.e6d2d",
                                     "name": "iobroker in",
                                     "topic": "*",
                                     "payloadType": "value",
                                     "onlyack": "",
                                     "func": "all",
                                     "gap": "",
                                     "fireOnStart": "true",
                                     "x": 190,
                                     "y": 3560,
                                     "wires": [
                                         [
                                             "ea3ef81a.abd298"
                                         ]
                                     ]
                                 }
                              ]
                              


                              Als Tipp noch: Du solltest in den Adaptereinstellungen von Node Red, den Punkt "iobroker Werte in Zeichenkette konvertieren" deaktivieren (ist Standartmäßig leider immer aktiviert), da sonst die iobroker in und get Nodes nur Strings (Zeichenketten) ausgeben. Wenn man das deaktiviert kommen Boolean (true / false) bzw. Nummern aus den Nodes, damit lässt sich besser arbeiten.
                              NodeRed1.jpg

                              mickym 1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @frankyboy73 last edited by mickym

                                @frankyboy73 Jo in dem anderen Projekt klappen die anderen Nodes super inkl. Temperaturabfrage. Insofern wenn ich Alexa nutzen würde, kann ich die Nodes nur empfehlen.

                                @Kymchy @frankyboy73 hat Dir ja gezeigt wie man die Alexa Node füttert. Du findest übrigens über die Import Funktion - und Beispiele - falls Du Dir diese NOdes installiert hast - welche Parameter gefüllt werden müssen.

                                c5b92c84-adfe-4332-82ba-41cf0a03fabb-image.png ![0_1637443942187_264d2e94-83ac-4f12-bf52-b863ca1d3688-image.png](Lade 100% hoch)

                                K 1 Reply Last reply Reply Quote 0
                                • K
                                  Kymchy @mickym last edited by

                                  @mickym @frankyboy73 Vielen Dank für die Tipps. Habs so gemacht, funktioniert aber leider nicht. Bekomme keine Werte in den DPs...

                                  mickym 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @Kymchy last edited by mickym

                                    @kymchy Hast Du Dir denn diese Nodes installiert? - Das Beispiel muss doch funktionieren, da nimmst Du doch eine Inject node als Input.

                                    Wo möchtest Du den Werte haben? Du willst doch Temperaturen auslesen und nicht setzen?

                                    K 1 Reply Last reply Reply Quote 0
                                    • K
                                      Kymchy @mickym last edited by

                                      @mickym ich habs so gemacht, wie frankyboy es beschrieben hatte, also den Inject Node ersetzt durch den ioBroker in Node. Und den Change Node noch dazwischen.

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @Kymchy last edited by mickym

                                        @kymchy Und in dem DP den Du in der iobroker-In Node zeigt auf eine Punkt der die Temperatur anzeigt? Ich weiss wo der Fehler liegt - Du bekommst wahrscheinlich eine Fehlermeldung im Log.

                                        K 2 Replies Last reply Reply Quote 0
                                        • K
                                          Kymchy @mickym last edited by

                                          @mickym ja genau:
                                          Nodes.png
                                          Unter dem ioBroker Node wird die Temperatur ja auch angezeigt.

                                          1 Reply Last reply Reply Quote 0
                                          • K
                                            Kymchy @mickym last edited by

                                            @mickym Cannot set property of non-object type: payload.scale
                                            meinst du den?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            889
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            70
                                            3686
                                            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