NEWS
Alexa ein befehl true oder false
-
Hey Ho, vllt kann mir einer helfen, ich würde gerne in alexa nur einen Befehl benutzen zB
wenn ich sage; Echo Bad das wenn dann das Deckenlicht an ist wird es ausgeschaltet, wenn es aus ist wird es eingeschaltet, also ein Befehl für true oder false.
Das ist eine meiner Standard Steuerungen. wie kann man die anpassen, damit es mit einem befehl klappt.
Eine kleine Hilfestellung wäre prima, da ich noch nicht wirklich fit bin in Node-Red -
@Aphofis dann musst du einfach nur das ioBroker Objekt abfragen in deinem Flow. Die Felder sind noch nicht gefüllt und ich benutze einen anderen Alexa Node. Weiterhin solltest du auf die funktionen für true/false verzichten. Das kostet lt. Internet performance. Die Switch nodes erfüllen denselben Zweck.
[ { "id": "f37f966b.08767", "type": "tab", "label": "Flow 2", "disabled": false, "info": "" }, { "id": "662043fc.0ca6bc", "type": "switch", "z": "f37f966b.08767", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "true", "vt": "str" }, { "t": "eq", "v": "false", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 590, "y": 340, "wires": [ [ "cc1c31d1.b2f1" ], [ "4203e903.237a58" ] ] }, { "id": "a7fd7da5.5ad2c8", "type": "amazon-echo-device", "z": "f37f966b.08767", "name": "Aquarium Info", "topic": "", "x": 260, "y": 340, "wires": [ [ "c414919a.985578" ] ] }, { "id": "c414919a.985578", "type": "ioBroker get", "z": "f37f966b.08767", "name": "", "topic": "Aquarium Info", "attrname": "payload", "payloadType": "value", "x": 440, "y": 340, "wires": [ [ "662043fc.0ca6bc" ] ] }, { "id": "cc1c31d1.b2f1", "type": "change", "z": "f37f966b.08767", "name": "false", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "false", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 730, "y": 300, "wires": [ [ "ac23a23.dd15f6" ] ] }, { "id": "4203e903.237a58", "type": "change", "z": "f37f966b.08767", "name": "true", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "true", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 730, "y": 380, "wires": [ [ "ac23a23.dd15f6" ] ] }, { "id": "ac23a23.dd15f6", "type": "ioBroker out", "z": "f37f966b.08767", "name": "", "topic": "Aquarium Info", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 900, "y": 340, "wires": [] } ]
-
@Hc-Yami Ich danke Dir! Ich werde ds mal testen.
Hatte deinen flow importiert nur findet alexa das gerät nicht!
Was mache ich falsch -
@Aphofis Warum nutzt Du Funktions-Nodes - da sieht man erstens nicht was dahinter steckt und ist doch nicht notwendig.
Sowie ich Dich verstehe willst Du doch einfach nur wenn switch true ist - false schicken und vice versa.
Allerdings weiß ich nicht was die Alexa Node schickt - aber wenn es egal ist, was die rausschickt, dann hänge wie @Hc-Yami gepostet hat einfach das Auslesen Deines Datenpunktes aus dem iobroker dazwischen und schalte dann Dein Gerät entweder direkt oder über den Aquarium Info Datenpunkt.
-
@mickym
Das hatte ich ja versucht. nur findet Alexa in dieser konstellation kein neues gerät.
Es geht mir darum das wenn ich sage: "Alexa, badezimmer" wenns licht an ist wird es mit dem befehl ausgeschaltet, wenns aus ist wirds eingeschaltet. -
@Aphofis "Alexa, Badezimmer" dürfte nicht funktionieren. Bei mir weiß sie nicht, was Sie machen soll. "Schalte Badezimmer" funzt. Badezimmer muss virtuell sein. Bei Blockly macht man jetzt einfach "Wenn Badezimmer "war" dann umschalten Datenpunkt Licht, oder so. Wies bei Node geht. k.a. Vielcht gibs da auch "umschalten"
-
@Elzershark
in Blockly bekomme ich das hin nur wollte ich langsam nach und nach auf node-red umsteigen -
@Aphofis Das habe ich ja alles verstanden - wobei es ja in Deinem Flow anscheinend nicht um das Badezimmer, sondern um das Aquarium geht, aber das ist eigentlich egal.
Sowie ich das verstehe - ist es auch ziemlich egal was aus Deiner Alexa-Node rauskommt, du willst einfach schalten. Die Shellies verstehen zum Beispiel einfach den "toggle" Befehl. Wenn allerdings nur on/off oder true/false funktioniert, dann muss NodeRed ja wissen, wie der aktuelle Zustand ist. Deswegen musst Du nach der Alexa Node den Datenpunkt auslesen, wo der aktuelle Status gespeichert ist und kannst dann das Gegenteil setzen.
-
@mickym
Naja beides! Es geht ums Aquarium und um mein Smart Home! -
@Aphofis Gibs kein Befehl wie change oder so?
-
@Aphofis
Also nochmal - es ist egal was aus der Aquarium-info (Alexa Node) rauskommt - Du willst schalten?In welchem Datenpunkt steht der aktuelle Status und welchen Datenpunkt musst Du verändern um zu schalten? Aquarium_info?
Ausserdem musst Du entweder Deinen ganzen Flow exportieren oder Du musst in Deinen ScreenShots Deine Settings posten, sonst kann man schlecht helfen. Ich seh doch nicht was Du in Deinen Function Nodes machst nd warum Du die nimmst.
-
@mickym
Der Datenpunkt den ich schalten will, liegt inAqua_Control.0.System.Aquarium_Info
egal welcher state ist soll der andere angenommen werden. wenn ich in Alexa nur ein wort benutzen möchte.
Ob es da in node-red einen umschalter gibt ist die frage -
@Aphofis Ok dann hänge ein iobroker get Node mit "Aqua_Control.0.System.Aquarium_Info" hinter Deine Alexa Node.
Dann schau in Deine Einstellung Deines Node-Red Adapters, ob Du den Haken "iobroker-Wert in String konvertieren" gesetzt hast.
Der Umschalter ist easy und mit einer einzigen Change Node zu realisieren. Ist aber wichtig, was aus Deiner iobroker get Node rauskommt. -
@mickym
nur findet alexa in der zusammensetzung kein neues gerät![ { "id": "a2e50519.903df8", "type": "ioBroker out", "z": "8c9f0f34.ebd0a", "name": "badezimmer", "topic": "sonoff.0.bad_decke.POWER1", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 870, "y": 400, "wires": [] }, { "id": "24bf0afa.92401e", "type": "function", "z": "8c9f0f34.ebd0a", "name": "true", "func": "msg.payload = true;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "x": 690, "y": 380, "wires": [ [ "a2e50519.903df8" ] ] }, { "id": "e6ec9c4e.1c945", "type": "function", "z": "8c9f0f34.ebd0a", "name": "false", "func": "msg.payload = false;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "x": 690, "y": 420, "wires": [ [ "a2e50519.903df8" ] ] }, { "id": "a14b9dd2.72fbe", "type": "switch", "z": "8c9f0f34.ebd0a", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "on", "vt": "str" }, { "t": "eq", "v": "off", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 550, "y": 400, "wires": [ [ "24bf0afa.92401e" ], [ "e6ec9c4e.1c945" ] ] }, { "id": "1ef29d63.705e2b", "type": "ioBroker get", "z": "8c9f0f34.ebd0a", "name": "badezimmer", "topic": "sonoff.0.bad_decke.POWER1", "attrname": "payload", "payloadType": "value", "x": 370, "y": 400, "wires": [ [ "a14b9dd2.72fbe" ] ] }, { "id": "4bc72dd3.3336bc", "type": "alexa-local", "z": "8c9f0f34.ebd0a", "devicename": "badezimmer", "inputtrigger": false, "x": 170, "y": 400, "wires": [ [ "1ef29d63.705e2b" ] ] } ]
also im beispiel mit der badezimmer deckenbeleuchtung. auch wenn ich die true false und switch nodes nehme wie von Hc-Yami beschrieben
-
@Aphofis
Also habe Deinen Flow mal importiert und da sind einige Ungereimtheiten drin. Ich kann Dir aber nur helfen, wenn Du halt konkret bist.Du kannst doch Deinen Flow nehmen, wo Du ja mittels Debug Node rausfindest, ob was gesendet wird, wenn Du mit Alexa sprichst. Die Alexa-Node von @Hc-Yami ist doch nur ein Beispiel.
In dem Flow den Du gepostet hast - wird aber nicht der Aqua_Control.0.System.Aquarium_Info Punkt abgefragt, sondern sonoff.0.bad_decke.POWER1. Und am besten nicht irgendwelche Fälle durcheinander mischen, sondern mal entweder beim Licht oder Aquarium bleiben.
Dann bleibt weiterhin die Frage offen, ob Du den Haken in Deinem Adapter gesetzt hast oder nicht?
-
@mickym wenn du mir sagst in welcher node das sein soll! irgendwie finde ich diese option nicht!
-
@Aphofis Das ist keine Node - sondern eine Einstellung im Node-Red Adapter in iobroker.
-
@mickym
Achsooo!!! Schande über mein haupt
ja diese option ist angehakt -
@Aphofis OK mit dieser Einstellung bekommst Du dann im Node-Red nur Text raus - das musst Du halt wissen und ggf. konvertieren - egal wie der Datenpunkt konfiguriert ist.
Das mag sinnvoll sein, wenn man ähnlich wie mit mqtt arbeiten will. Willst Du jedoch, dass keine Typkonvertierung stattfindet, dann musst den Haken halt raus machen.Dann bleiben wir doch mal bei dem ursprünglich von Dir geposteten Flow - kannst Du den auch mal exportieren?
Ich gehe mal davon aus, dass diese aquarium-info Node ja funktioniert? Hast Du mal eine Debug Node dahintergehängt und geschaut ob was rauskommt aus der Node - wenn Du mit Alexa den entsprechenden Befehl gibst?
Und noch was: Verwende Function Nodes nur im äußersten Notfall oder bei komplexen Fragestellungen - sonst machst Du die ganzen Vorteile von Node-Red - grafisch Dir die Flows anzuschauen - komplett zu nichte. Dann kannst gleich alles Java-Script in einer Function Node kopieren.
-
@mickym
Da kam ein Debug raus nur halt jetzt nicht mehr![ { "id": "6dac84f0.fc2eec", "type": "tab", "label": "Aquarium Info", "disabled": false, "info": "" }, { "id": "a79b37b1.ab50d8", "type": "switch", "z": "6dac84f0.fc2eec", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "false", "vt": "str" }, { "t": "eq", "v": "true", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 530, "y": 300, "wires": [ [ "c3b65007.dd9628" ], [ "7d3d0e47.b569" ] ] }, { "id": "be3e85ef.aeb568", "type": "ioBroker get", "z": "6dac84f0.fc2eec", "name": "Aquarium_Info", "topic": "Aqua_Control.0.System.Aquarium_Info", "attrname": "payload", "payloadType": "value", "x": 380, "y": 300, "wires": [ [ "a79b37b1.ab50d8" ] ] }, { "id": "c3b65007.dd9628", "type": "change", "z": "6dac84f0.fc2eec", "name": "false", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "false", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 670, "y": 260, "wires": [ [ "b56db490.8a04e" ] ] }, { "id": "7d3d0e47.b569", "type": "change", "z": "6dac84f0.fc2eec", "name": "true", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "true", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 670, "y": 340, "wires": [ [ "b56db490.8a04e" ] ] }, { "id": "b56db490.8a04e", "type": "ioBroker out", "z": "6dac84f0.fc2eec", "name": "Aquarium_Info", "topic": "Aqua_Control.0.System.Aquarium_Info", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 840, "y": 300, "wires": [] }, { "id": "ccc7fafa.991e28", "type": "alexa-local", "z": "6dac84f0.fc2eec", "devicename": "aquarium-info", "inputtrigger": false, "x": 140, "y": 300, "wires": [ [ "be3e85ef.aeb568" ] ] } ]
OK verstanden mache ich ! ich wusste es einfach nihct besser und hatte rum probiert bis irgendwas funktionierte