Ich möchte per Alexa Befehl sagen können „Schalte Erdgeschoss aus“, „Schalte Erdgeschoss ein“. Jedoch soll bei ein/aus etwas anderes passieren. (andere Entitäten schalten)
Nun gut, ich habe:
Eine boolsche Hilfsvariable „Erdgeschoss“ erstellt, OK funktioniert
Automation die auf diese Hilfsvariable triggert und je nach on/off Status verschiedene Dinge ausführt, OK funktioniert
Hilfsvariable in Alexa verfügbar gemacht(nabu casa), funktioniert
Das Problem:
Die Idee funktioniert grundsätzlich, jedoch habe ich das Problem das der Aus bzw. Ein Sprachbefehl genau nur einmal ausgelöst wird. (Also nur wenn der jetzige Zustand der Hilfsvariable nicht dem neuen Zustand entspricht).
Ich hoffe ich habe das Problem verständlich beschrieben.
Einfachste Variante wäre wenn du es statt im einer Automation das ganze über ein Script machst. Dieses kannst du genau wie eine Entität an Alexa übergeben.
So brauchst du nur den Namen des Scriptes sagen und dann ist der Status egal. Da das Script je nach Status automatisch entscheidet was gemacht werden muss.
Es funktioniert, jedoch wird ein Skript wie eine Szene behandelt. Ich kann also sagen:
xyz einschalten, funktioniert
xyz ausschalten, funktioniert nicht
starte xyz, funktioniert
aktiviere xyz, funktioniert
Natürlich kann ich mit einer Skriptlogik prüfen wenn ein, dann aus…
Leider schaffe ich damit keinen natürlichen Sprachbefehl. (xyz einschalten oder xyz ausschalten).
Nicht ganz wenn du z.B. eine Wenn-Dann-Funktion verwendest und dort Bedingung X angibst dann schaltet das Licht ein. Und bei Sonst, sprich die Bedingung trifft nicht zu dann wird es ausgeschalten.
Grundsätzlich wirklich simpel umsetzbar.
Kannst auch gern den Code teilen dann kann man nochmal drüber schauen.
Das Skript poste ich hier. Name: „Erdgeschoss“, so erscheint es dann unter Szenen in der Alexa-App.
Problem ist jedoch das bei Sprachbefehl „Erdgeschoss ausschalten“ das Skript gar nicht getriggert wird. Ich habe deshalb im Skript die Sprachausgabe „ist erledigt“ eingefügt.
Ich sehe grundsätzlich keinen Fehler im Code selbst das einzige was ich.mkt vorstelleb könnte ist, das Alexa nicht damit klar kommt das du ein- bzw.auschalten sagst.
Gibt dafür 2 Lösungen die mir einfallen.
Namen ändern
2 Scripte - 1. Script zum einschalten und 2. Script zum auschalten
Müssten beide mit den jeweils entgegengesetzten Bedingungen und Aktionen gefüllt werden. Und dann entsprechend benannt werden. Anschließend nut noch beide bei Alexa mit dem entsprechenden Spraxhbefehl hinterlegen und es sollte reibungslos klappen.
Am schönsten wäre es mit binärem Schalter, weil hier ein natürlicher Ansagetext (schalte x ein, oder schalte x aus) möglich ist.
Wenn ich über die Entwicklertools die binäre Helfervariable nach einem Schaltvorgang auf unknown setze, funktioniert es mehrmals. So hat Alexa keinen on/off state und würde es immer ausführen.
Idee wäre nun die binäre Helfervariable am Ende der Automation auf unknown zu setzen.
Leider bietet HA über Scriptautomation keine Möglichkeit andere Werte als true/false.
Genau, so hatte ich angefangen bzw. war die Ursprungsidee.
Problem daran ist eben wenn Alexa den Status der binären Helfervariable weiß,
schaltet Sie nur on, wenn zuvor off war.
Deshalb die Idee am Ende der Automation, den state auf unknown zu setzen, sehe bzw. finde hier keine Möglichkeit dazu.
Also, das funktioniert nur solange der neue Status nicht der alte war
Ich nutze Google aber hast du die Möglichkeit diesen Haken zu setzen?
Edit:
Hab jetzt nochmal alles nochmal von Anfang an gelesen. Somit fasse ich für mich nochmal zusammen, du hast den Schalter an Alexa übergeben und sobald du den Zustand von on auf off oder umgedreht änderst. Geht dieser bei deiner Alexa auf Unbekannt. Wie ist das im Home Assistant wie ist da der Zustand?
@UncleSam139
Ich finde so eine Einstellung in der Alexa App leider nicht, das wäre die Lösung.
@Dreckfresse
Text Variablen werden von Alexa nicht unterstützt wenn ich Sie hinzufügen möchte.
Das witzige ist das ich in den Entwicklertools die binäre Variable auf unknown setzen darf, über die (beschnittene) Automation leider nicht, bzw. es ist nicht dokumentiert.
Was mir noch im Kopf rumschwirrt…
Mit meiner vorherigen Smarthomelösung hatte ich auch binäre Variablen verwendet, und hatte das state Problem nicht.
Kann es sein das es am Typ (Schalter, Licht) der Variable liegt, bzw. kann der Device-Typ bei einer Helfervariable überhaupt gesetzt werden?
@UncleSam139
Achso sorry, ich hatte in der Alexa App gesucht, natürlich habe ich den Punkt unter Home Assistant verfügbar
Da mir im Moment die Nebenwirkungen noch nicht klar sind betreffend Routinen warte ich mal ab
@Dreckfresse
DANKE! thats it
Das beste, ich hatte das Video von Simon schon mal angesehen, jedoch war mir da noch nicht bewusst für was ICH das brauchen könnte
Danke euch beiden.
Funktioniert nun wie gewünscht, Beispiel:
alias: Obergeschoss
description: ""
triggers:
- trigger: state
entity_id:
- input_boolean.obergeschoss
to: "on"
id: Ein
- trigger: state
entity_id:
- input_boolean.obergeschoss
to: "off"
id: Aus
conditions: []
actions:
- if:
- condition: trigger
id:
- Ein
then:
- action: notify.alexa_media_echo_buro
metadata: {}
data:
message: Ich habe eingeschaltet
- if:
- condition: trigger
id:
- Aus
then:
- action: notify.alexa_media_echo_buro
metadata: {}
data:
message: Ich habe ausgeschaltet
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 0
- action: python_script.set_state
metadata: {}
data:
entity_id: input_boolean.obergeschoss
state: unknown
mode: restart