NEWS
Auf Werte prüfen und schalten & Ausgabe per Alexa
-
Hallo zusammen!
Ich habe zwei Garagen ausgestattet mit einem Fenster-/Tür-Magnetkontakt und einem einfachen Ein-/Ausschalter mit potentialfreiem Kontakt, damit der Garagenmotor getriggert wird.
Jetzt zu der Challenge, vor der ich stehe:
Muss in Node-RED jeweils für jedes Tor die Werte abgreifen:
- Ist Magnetsensor geschlossen? (Block "Lese Autogarage-Tor geschlossen")
- Ist Magnetsensor offen? (Block "Lese Autogarage-Tor geöffnet")
Sage ich dann zu Alexa "Autogarage schließen", soll in Abhängigkeit, ob das Tor bereits geöffnet oder geschlossen ist, Folgendes passieren:
-
Tor bereits geschlossen: Magnetsensor geschlossen = TRUE & Magnetsensor geöffnet = FALSE
--> Sprachausgabe Alexa "Das Garagentor ist bereits geschlossen". Dann nichts mehr machen. -
Tor noch geöffnet:
Magnetsensor geschlossen = FALSE & Magnetsensor geöffnet = TRUE
--> Sprachausgabe Alexa "Okay, ich werde das Garagentor schließen" & Schalte "Switch State" des Garagenschließers = TRUE, nach zwei Sekunden wieder FALSE (muss gemacht werden, sonst blockiert der Zigbee Schalter die mechanischen Schalter)
Wie weit ich bisher gekommen bin:
Der Block "serialNumber" holt sich den Seriennummer des Amazon Echo, damit der korrekte antwortet.
Bisher habt ihr mit all meinen Beschwerden aus der Patsche geholfen. Ich bin zuversichtlich
Danke schon mal für eure Antworten!
-
@wannseesprinter Ich habe mit Alexa nichts am Hut- aber ich würde generell den Status nur von den Datenpunkten zu den Toren triggern lassen und dann der Status über die Alexa Node abfragen lassen. Generell sollte man das also Unabhängig machen und den aktuellen Status im Kontext speichern.
Anstelle der Delay Node würde ich eine Trigger Node nutzen.
Was mir an Deiner Logik unklar ist:
- Das was meines Erachtens erstmal fehlt ist der Switch der aus der Alexa Node filtert, dass nur Autogarage schließen rauskommt.
- Wenn das Garagentor geschlossen wird, soll nach Beendigung von Alexa gemeldet werden, wenn es geschlossen oder nur, wenn nochmal nachgefragt wird?
- Soll Alexa auch melden wenn geschlossen wurde und nicht gefragt wurde?
Was ich auch nicht sagen kann, wie Du Alexa dazu bringst, was zu sagen. Wie gesagt bei der Logik und NodeRed kann ich Dir vielleicht helfen - die Kommunikation mit der Alexa musst Du entweder selbst wissen oder brauchst andere Hilfe.
Ansonsten wenn du es unbedingt per Huckepack machen willst, wie Du es machst - geht prinzipiell auch, aber wo ist dann dein Problem. Generell würde ich es einfacher machen und anstelle einer JOIN Node, die Get Nodes in Serie schalten.
-
@wannseesprinter
Die Ausgabe auf den angesprochenen Echo kann man so lösen.
Ich gehe mal vom Alexa2 Adapter aus.
Hier dann einfach die msg.payload mit dem Text draufschicken. Die Seriennummer des Echos wird dann über die Get Node (hier setzte ich das Atribut auf serial, damit msg.payload nicht überschrieben wird) abgefragt, dann wird in der Change Node das msg.topic mit der richtigen serial erstellt, dahinter dann ne Iobroker Out Node, mit leerem Topic (das wird da ja vom Flow reingschrieben)Für den Rest müsste man noch wissen was überhaupt aus deiner Alexa Node rauskommt.
-
Im Prinzip habe ich schon so weit meine Gedankengänge weiter geführt. Es gestaltet sich so:
Da, wo jetzt der rote Pfeil ist, fehlt es mir eindeutig an Kreativität. Ich kratze alle drei Werte zusammen und muss "nur noch" eine Logik dort einbetten:
- Wenn Wert "Geschlossen" = TRUE und "Geöffnet" = FALSE, dann "Alexa spricht: XYZ"
- Wenn Wert "Geschlossen" = FALSE und "Geöffnet" = TRUE, dann "Alexa spricht: 123"
Ich möchte nach dem Join auf die Zustände prüfen. So tief in den Scriptssprachen stecke ich dann leider doch nicht
Ich muss anhand der Statuswerte halt min. zwei Pfade haben, die, je nachdem was der aktuelle Stand ist, gegangen werden und letztlich Alexa antwortet. ^^
Danke für deine Gedankengänge schon mal!
-
@wannseesprinter Wie gesagt ich empfehle Dir anstelle der JOIN Node einfach alle 3 iobroker GET Nodes in Serie zu setzen.
Eine function Node braucht es meines Erachtens nicht. Du musst nur schauen, dass Du den GET Nodes unterschiedliche Attribute verleihst. Dann machst Du hinter die letzte GET Node eine Debug Node und lässt Dir das KOMPLETTE Nachrichten Objekt ausgeben.
Wenn da alles enthalten ist kannst Du über 2 Switch Nodes Deine 2 Fälle erstellen. Und wie gesagt das Schalten würde ich über eine Trigger Node machen - aber ggf. im Parallelflow. Ich zeig Dir das nur was ich mit dem seriell Schalten meine:
Ich halte aber das Triggern über die Alexa Node nicht hilfreich - aber gut - musst Du wissen. Ich hab das nun über 2 Inject Nodes simuliert .
-
@mickym danke für deine Lösung! Ich bin mit NR noch sehr unbedarft, weswegen ich für alle Vorschläge und Verbesserungen dankbar bin. Aktuelle nutze ich es zum Ansteuern meiner ganzen Zigbee Devices per Alexa und rudimentäre Spracheingaben wie "Wie ist die Temperatur im Schlafzimmer" und anschließender Sprachausgabe der Temperatur auch wieder per Alexa. Das läuft in NR aktuell bisher ohne Beschwerden. Deswegen möchte ich auch künftig diese Logik mit den Garagentoren in NR umsetzen.
Lange Rede, kurzer Sinn:
Ich werde mal deine Lösung ins Auge fassen
-
@wannseesprinter Na ja - wie gesagt ist es Deine Lösung, nur etwas modifiziert. Ich bin wie gesagt, von Deiner Logik nur "halb überzeugt".
-
@mickym sagte in Auf Werte prüfen und schalten & Ausgabe per Alexa:
Ich halte aber das Triggern über die Alexa Node nicht hilfreich
Wieso nicht, die Garage soll doch gesteuert und abgefragt werden wenn er Alexa das sagt, somit wäre das doch auch dann der Trigger oder habe ich da was falsch verstanden.
@wannseesprinter Hi, wegen der Sprachausgabe und der Serial Abfrage hätte ich noch nen kleinen Verbesserungsvorschlag. Du baust das ja wie es aussieht in jedem Flow wieder ein. Ich habe die nur einmalig und gehe mit meinen ganzen Abfragen und Ausgaben da drauf, spart einiges an Nodes und konfiguration.
Ich habe nur einmal diesen Block in meinem gesamten Node Red, mit Link in Nodes davor und schicke alles Sprachausgaben darüber, einmal für den angesprochenen Echo und einmal wenn ich direkt nen bestimmten Echo ansprechen will.
Alles meine Abfragen gehen dann über ne Link Node dort drauft.
Sieht vereinfacht so aus.
Für direkte ansteuerung von bestimmten Echos, setzte ich über ne Change Node die passende Serial.
-
@frankyboy73 ok das hängt von den Vorlieben ab. Ich dachte dass das Tor vielleicht auch anders gesteuert werden kann und man vielleicht grundsätzlich eine Rückmeldung bekommt wenn sich der Status des Tors geändert hat und man ggf. dies nur als zusätzliche Statusabfrage nutzt. Wenn man das nicht will, dann ist das so schon ok. Ich würde zumindest, wenn das Tor nich offen war, nicht nur gerne eine Meldung bekommen, dass das Tor nun geschlossen wird, sondern auch Vollzug. Natürlich kann man Alexa auch ein zweites Mal fragen. Ist alles Geschmackssache.
-
@mickym Ah ok, das mit dem Vollzug kann ich nachvollziehen. Habe ich so ähnlich per Telegram, wenn ich mein Tor ansteuere, lasse ich mir 20 Sekunden später den Status ausgeben. Frage das aber per trigger Node ab, die ich beim ansteuern anstupse. Ist auf jeden fall sinnvoll.