NEWS
Skripte Zusammenspiel mit Alexa
-
Hallo,
ich bin noch ganz frisch bei ioBroker dabei. Komme von FHEM und will nun beide in Kombionation verwenden.
ioBroker für Alexa und Darstellung und FHEM für einige Schnittstellen.
Nun zu meinem, vielleicht einfachen Problem, aber irgendwie verstehe ich es nicht ganz.
Ich möchte meinen Receiver und eine Steckdose (beides in FHEM integriert) mit Alexa und / oder einem Schalter einschalten. Und das nur wenn der Receiver Aus bzw. eingeschaltet ist.
Aus diesem Grund habe ich mir in FHEM einen Dummy erstellt, der je nach Status des Power Zustandes des Receivers auf off (false in ioBroker) bzw on (true im ioBroker) gesetzt wird.
Das ein- und ausschalten mit dem Switch funktioniert auch problemlos.
Mein Skript dazu im Anhang.
Gleichzeitig möchte ich das selbe mit Alexa durchführen. Dazu habe ich im ioBroker einen Datenpunkt erstellt, den ich mit Alexa auf true bzw. false setze.
Skript im Anhang.
Prinzipiell funktioniert auch alles. Nur ein Zustand funktioniert nicht, den ich mir nicht erklären kann.
Und zwar wenn ich mit Alexa bspw. Einschalte ("Alexa schalte XXX ein") funktioniert dies auch. Wenn ich nun über den Switch ausschalte funktioniert auch das. Wenn ich jetzt allerdings wieder mit Alexa "schalte XXX" ein beide Geräte einschalten möchte funktioniert dies eben nicht mehr. Damit es dann einschaltet muss ich Alexa sagen "schalte XXX aus"
Sprich wenn ich Alexas Reihenfolge mit dem Switch "durcheinander bringe" muss ich negiert arbeiten. Aber das müsste doch über "wurde geändert" im Skript irrelevant sein oder verstehe ich das falsch? Der Alexa Datenpunkt wird ja auch geändert.
Bin wie gesagt erst eine Woche bei ioBroker, vielleicht auch ein gant simples Problem. Ich seh den Fehler in der Logik jedoch irgendwie nicht.
Hoffe mir kann jemand helfen.
Danke schonmal.
Grüße
PS: Hoffentlich war es im richtigen Forum
3734_skript.switch.png
3734_skript.alexa.png -
Hi und willkommen
Ich glaube dein Problem ist dass der Datenpunkte simple Klick bereits wahr ist?
Wurde geändert Trigger nur wenn der Status sich ändert, probier Mal Update anstatt geändert
–-----------------------
Send from mobile device
-
Hi,
danke für die Begrüßung
Der Datenpunkt "Simple Click" wird nur beim Drücken des Schalters kurzzeitig auf true gesetzt. Fällt danach sofort wieder in false.
Außerdem müssten beide Skripte ja unabhängig voneinander arbeiten, da ich ja nicht den Status des Schalters abfrage sondern den nur zum triggern verwende.
Grüße
-
Moin,
das lässt sich ganz einfach lösen. Setze im unteren Script einfach deinen Alexa-Datenpunkt auf true oder false und sonst nichts. Die Steuerung der Geräte übernimmt dann das erste Script.
Gruß
Matze
-
Moin,
das lässt sich ganz einfach lösen. Setze im unteren Script einfach deinen Alexa-Datenpunkt auf true oder false und sonst nichts. Die Steuerung der Geräte übernimmt dann das erste Script.
Gruß
Matze `
Hi,
so ganz verstehe ich das nicht. Den Alexa-Datenpunkt habe ich im unteren Skript ja gar nicht angewendet also wo sollte ich den genau einfügen/ ändern?
Und gleichzeitig möchte ich ja des es entweder über Alexa oder über den Switch funktioniert. Verliere ich nicht eine Möglichkeit dann?
Gruß
-
Moin,
dein Problem ist, dass bei deinen beiden Scripten der Zustand des Alexa-DP bei schalten über den Taster nicht mehr syncron ist. Daher invertiert sich dann die Steuerung.
Um beides syncron zu halten steuerst du in deinem 2. Script mit dem Taster einfach den Alexa-DP. Ich habe leider grade kein Zugriff auf meinen Broker.
Daher
Falls Objekt Taster wurde geändert -> Falls Objekt Alexa = wahr setze unwahr ansonsten setze wahr.
Die Steuerung deiner Geräte übernimmt dabei das erstere Script.
Matze
-
Uhh, was mir gerade noch auffällt.
Du triggerst im ersten Script auf Änderung des Alexa-DP. Fragst aber im weiteren nicht ab, ob der im Anschluß true oder false ist.
Das solltest du unbedingt einbauen.
Wo kommt der Datenpunkt Status AVR state her? Gibt dein AVR hier Feedback? Geht der auf true wenn du den AVR von Hand einschaltest?
Wenn nicht hast du hier die nächste Quelle für Inkonsistenzen der Zustände.
Um das jetzt nochmal zusammenzufassen:
Ich würde solche Szenarien immer über einen DP steuern. Als Beispiel: Zustand Multimedia true oder false. Diesen DP kannst du von überall steuern, über Alexa, deinen Taster, VIS, etc.
Je nach Zustand des DP schaltest du das Geraff dahinter ein oder aus.
Das Problem mit der Negierung deiner Alexa stammt von der fehlenden Abfrage ob nach trigger true oder false gesetzt wird. Das muss also unbedingt rein.
Matze
-
Hi,
habe versucht es entsprechend zu ändern allerdings bisher noch keinen Erfolg gehabt.
Problem ist vermutlich auch das der swtich immer nur während des Schaltens in true fällt und danach wieder in false.
Verstehe allerdings noch immer nicht warum mein erster Versuch nicht funktioniert. Der Alexa Datenpunkt wird ja nur als Trigger Änderung verwendet. Nicht als Zustandsvariable. Demnach müsste ihm die Änderungen durch den Switch doch egal sein.
Gruß
Edit: deinen zweiten Post hatte ich noch nicht gelesen als ich das geschrieben habe
3734_swtich2.png -
Moin,
machs einfacher. Hab leider grad kein Blockly zur Hand.
Ändere "sonst falls" auf "sonst"
Und dann -> falls Wert von AlexaDP = wahr -> aktualisiere Wert von AlexaDP mit unwahr.
-> sonst -> aktualisiere Wert von AlexaDP mit wahr.
Verstehe allerdings noch immer nicht warum mein erster Versuch nicht funktioniert. Der Alexa Datenpunkt wird ja nur als Trigger Änderung verwendet. Nicht als Zustandsvariable.
Ja eben. Du triggerst auf Änderung. Nehmen wir an, du schaltest über Alexa ein. DP ÄNDERT sich auf true, Script wird ausgelöst.
Jetzt schaltest du über den Taster aus. AVR geht aus, Alexa DP bleibt aber auf true!
Versuchst du jetzt über Alexa einzuschalten wird der DP mit true AKTUALISIERT. Er ändert seinen Zustand aber nicht. Um eine DP-Änderung herbeizuführen musst du jetzt also Alexa ausschalten. DP wird von true nach false geändert, Script wird ausgelöst, AVR schaltet sich ein.
Also bei sowas einfach nicht auf Änderung sondern auf Aktualisierung triggern und im Anschluß den Wert true oder false abfragen.
Matze
-
Moment,
merke gerad, es ist ein Denkfehler drin. Problem ist hier tatsächlich, dass der Switch beim drücken auf true und beim loslassen wieder auf false wechselt.
Ändere bitte den Trigger auf anerkannt = true.
Matze
-
Hi.
Wo kommt der Datenpunkt Status AVR state her? Gibt dein AVR hier Feedback? Geht der auf true wenn du den AVR von Hand einschaltest?
Wenn nicht hast du hier die nächste Quelle für Inkonsistenzen der Zustände.
Matze `
Den Status habe ich in FHEM über einen Dummy realisiert, der je nach Status des Power Zustandes des Receivers auf off (false in ioBroker) bzw on (true im ioBroker) gesetzt wird.
Also auch wen er manuell eingeschaltet wird.
Über den Dummy habe ich es gelöst, weil ich es anfangs nicht hinbekommen habe das das Skript auf einen Variable reagiert die nicht true oder false ist. Aber vermutlich geht das ja auch sondern lag nur an meinen anfänglichen Problemen.
Moin,
machs einfacher. Hab leider grad kein Blockly zur Hand.
Ändere "sonst falls" auf "sonst"
Und dann -> falls Wert von AlexaDP = wahr -> aktualisiere Wert von AlexaDP mit unwahr.
-> sonst -> aktualisiere Wert von AlexaDP mit wahr.
Verstehe allerdings noch immer nicht warum mein erster Versuch nicht funktioniert. Der Alexa Datenpunkt wird ja nur als Trigger Änderung verwendet. Nicht als Zustandsvariable.
Ja eben. Du triggerst auf Änderung. Nehmen wir an, du schaltest über Alexa ein. DP ÄNDERT sich auf true, Script wird ausgelöst.
Jetzt schaltest du über den Taster aus. AVR geht aus, Alexa DP bleibt aber auf true!
Versuchst du jetzt über Alexa einzuschalten wird der DP mit true AKTUALISIERT. Er ändert seinen Zustand aber nicht. Um eine DP-Änderung herbeizuführen musst du jetzt also Alexa ausschalten. DP wird von true nach false geändert, Script wird ausgelöst, AVR schaltet sich ein.
Also bei sowas einfach nicht auf Änderung sondern auf Aktualisierung triggern und im Anschluß den Wert true oder false abfragen.
Matze `
Stimmt da war mein logischer Denkfehler.
Moment,
merke gerad, es ist ein Denkfehler drin. Problem ist hier tatsächlich, dass der Switch beim drücken auf true und beim loslassen wieder auf false wechselt.
Ändere bitte den Trigger auf anerkannt = true.
Matze `
Habe es jetzt fast so geändert. Allerdings nicht bei annerkant = true (das gibt es da ja nicht sondern einfach nur den Trigger auf wahr gelegt.
Und jetzt funktioniert es auch.
Vielen Dank für deine Hilfe :!: :!:
Habe damit auch viel gelernt!
Grüße
3734_alexa3.png -
Habe es jetzt fast so geändert. Allerdings nicht bei annerkant = true (das gibt es da ja nicht sondern einfach nur den Trigger auf wahr gelegt.
Und jetzt funktioniert es auch.
Jepp, das passiert wenn zwei Einäugige auf Dinge starren. Bin genau wie du am Anfang.
Habe damit auch viel gelernt!
Jepp. Ich auch.
Und jetzt funktioniert es auch.
Manchmal zählt das Ergebnis
Matze