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

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Alexa Temperaturabfrage mit Node Red

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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
                                        • mickym
                                          mickym Most Active @Kymchy last edited by mickym

                                          @kymchy sagte in Alexa Temperaturabfrage mit Node Red:

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

                                          Ja - ich zeig Dir gleich wie man den behebt und das ist die Ursache.

                                          So Du nimmst beim ersten Parameter ein Verschiebe (und Du musst das ganze umdrehen) :

                                          73271fbd-b22f-401f-a405-9bbf6cca7d04-image.png

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

                                            @mickym
                                            keine Daten in den DPs, müsste da nicht was kommen?
                                            ergebnis.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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