NEWS
Ansage Fenster geöffnet
-
Moin,
ich versuche gerade eine Ansage auf Alexa zu bekommen die mir den Status der Fenster mitteilt.
Ich wollte erst mal klein anfangen und generell schauen ob Fenster offen sind oder nicht und es eventuell erweitern.
Jedoch bekomme ich das mit meiner Anfrage nicht hin. Bei den "und" Verknüpfungen habe ich es mit und ohne wahr/falsch abfrage zu den
Sensoren probiert, sollte ja auch so ein wahr/falsch am ende rauskommen ohne jedes nochmal sepperat nach wahr oder falsch anzufragen.Ich bekomme immer die Antwort das alle Fenster geschlossen sind, auch wenn ich mir grad den Arsch abfriere weil eben doch eines offen steht.
Hier mal mein versuch
Ich dachte das sowas hier bestimmt zu finden ist aber was ich fand war aus 2016 und half nicht weil die Lösung fehlte. -
-
@panik
Du könntest auch über Aufzählungen gehen und dann sowas verwenden.
(Beispiel Steckdosen Licht usw...)https://forum.iobroker.net/post/346230
und die Ansagen gehen dann über die ausgewerteten Sachen vom oberen Link
so z.B. -
@panik
Zu Deinem Blockly von oben:Du triggerst auf den Tür Abstellkammer open Wert (nur wenn dieser Tür open Wert sich ändert wird überhaupt getriggert), dann fragst Du nochmal über falls ab ob der Wert dieser Tür wahr ist. Nur wenn der Wert dieser Tür wahr ist, geht es mit der Variablen weiter. Diese Variable erstellt aber auch nur was, wenn alles anderen Fenster auch wahr sind (und, und, und...) Falls das alles wahr ist, dann gibt es nach Deiner Logik offene Fenster, sonst nicht. Dann füllst Du speak mit Deiner Variablen und anschließen mit einem Leertext.
-
@sigi234 said in Ansage Fenster geöffnet:
https://forum.iobroker.net/topic/23370/alexa-ansagen-über-ssml
Die Ansage an sich funktioniert soweit nur der Inhalt ist halt falsch, aber ich finde es interessant neue Stimmen zu nutzen. Das werde ich erweitern wenn
die Basics laufen.@dslraser said in Ansage Fenster geöffnet:
@panik
Du könntest auch über Aufzählungen gehen und dann sowas verwenden.
(Beispiel Steckdosen Licht usw...)https://forum.iobroker.net/post/346230
und die Ansagen gehen dann über die ausgewerteten Sachen vom oberen Link
so z.B.Mir ist auch wichtig das ich verstehe was passiert und da bin ich bei dem Script auf jeden fall raus, das ist ein paar Stufen weiter als ich es bin Blocky bekomme ich noch hin aber bei deinen Skripten kommt JavaScript hinzu und da bin ich dann raus mit meinem Verständnis.
@dslraser said in Ansage Fenster geöffnet:
@panik
Zu Deinem Blockly von oben:Du triggerst auf den Tür Abstellkammer open Wert (nur wenn dieser Tür open Wert sich ändert wird überhaupt getriggert), dann fragst Du nochmal über falls ab ob der Wert dieser Tür wahr ist. Nur wenn der Wert dieser Tür wahr ist, geht es mit der Variablen weiter. Diese Variable erstellt aber auch nur was, wenn alles anderen Fenster auch wahr sind (und, und, und...) Falls das alles wahr ist, dann gibt es nach Deiner Logik offene Fenster, sonst nicht. Dann füllst Du speak mit Deiner Variablen und anschließen mit einem Leertext.
Abstellkammer habe ich genommen weil die gleich hier ist und ich nicht für jeden test zum Eingang rennen wollte. Es soll mich halt beim rausgehen erinnern das noch Fenster offen sind. Die Abstellkammer frage ich dann aber in den UND Verknüpfungen nicht ab sonst wäre ja immer etwas auf. Die Speak variable habe ich zum Schluss mit leer gefüllt weil sonst bei den Objekten immer der Text stand und ich nicht wollte das es deshalb irgendwo ungeahnte Probleme gibt, daher dachte ich leer ist besser.
Ich muss mir das wohl nochmal genau anschauen. Ist das nur mit JS zu lösen oder auch nur mit Blocky? -
@panik
geht auch mit Blockly. Poste mal einen Export, dann kann ich es mal importieren.
Wann sind Deiner Fenster auf, bei wahr oder falsch ? (ich habe andere Sensoren) -
@panik
mach mal aus Deinen und und und ein oder oder oder usw.Und ganz oben unter egal bzw. über falls setze mal nochmal Deine Ansage Variable hin, also setze Ansage auf, da drann ein Textfeld mit leer. Das zweite speak ganz löschen. Hier wir dann nur geprüft ob irgendein Fenster auf ist.
Variante 2. (Ansage der Fenster die auf sind)
-
Um es ein wenig übersichtlicher zu machen kannst du auch den Block
= wahr
entfernen
also nur Wert von Objekt Id.
Dieser Wert ist ja im korrekten fall schon wahr und muss nicht erst geprüft werden. -
@dslraser said in Ansage Fenster geöffnet:
@panik
mach mal aus Deinen und und und ein oder oder oder usw.Und ganz oben unter egal bzw. über falls setze mal nochmal Deine Ansage Variable hin, also setze Ansage auf, da drann ein Textfeld mit leer. Das zweite speak ganz löschen. Hier wir dann nur geprüft ob irgendein Fenster auf ist.
Variante 2. (Ansage der Fenster die auf sind)
Vielen Dank So konnte ich es lösen und auch verstehen!
Allerdings habe ich die letzte Prüfung ODER und nicht UND verknüpfen müssen um das es auch Funktioniert, das tut es nun wie es scheint. Ich freue mich@CruziX said in Ansage Fenster geöffnet:
Um es ein wenig übersichtlicher zu machen kannst du auch den Block
= wahr
entfernen
also nur Wert von Objekt Id.
Dieser Wert ist ja im korrekten fall schon wahr und muss nicht erst geprüft werden.Danke für den Hinweis, so habe ich es dann auch gemacht.
-
@panik Mal ein Verbesserungsvorschlag.
In deinem Fall musst du ja immer, wenn ein Fenstersensor dazu kommen würde, einen Prüfe Block hinzufügen und ganz unten die oder Verknüpfungen ergänzen.Vorschlag:
Vor dem
Setze Ansage_Fenster.
Eine andere Variable setzen, z.B. die Variable FensterText.
Nun machst du fast das gleiche wie bei Ansage_Fenster.
Du beschreibst die neue Variable mit einem erstelle Text aus Block und verschiebst alle prüfe Blöcke von Ansage_Fenster zu der neuen Variable.
Also hast du, wenn mindestens ein Fenster offen ist in der neuen Variable einen Text stehen, und wenn alle zu sein einen leeren String drin.Den Block mit deinen ganzen oders ersetzt du durch
prüfe ob die länge von FensterText > 0 ist.Dann noch den block wo du "offen." rein schreibst durch einen erstelle Text aus FensterText und " offen."
ersetzen.Somit brauchst du bei einem neuen Fenster nur die prüfe Blöcke in in deiner neuen Variable FesterText zu ergänzen.
Hoffe das war verständlich, sonst mache ich heute Abend nochmal ein Beispiel.
-
@CruziX said in Ansage Fenster geöffnet:
@panik Mal ein Verbesserungsvorschlag.
In deinem Fall musst du ja immer, wenn ein Fenstersensor dazu kommen würde, einen Prüfe Block hinzufügen und ganz unten die oder Verknüpfungen ergänzen.Vorschlag:
Vor dem
Setze Ansage_Fenster.
Eine andere Variable setzen, z.B. die Variable FensterText.
Nun machst du fast das gleiche wie bei Ansage_Fenster.
Du beschreibst die neue Variable mit einem erstelle Text aus Block und verschiebst alle prüfe Blöcke von Ansage_Fenster zu der neuen Variable.
Also hast du, wenn mindestens ein Fenster offen ist in der neuen Variable einen Text stehen, und wenn alle zu sein einen leeren String drin.Den Block mit deinen ganzen oders ersetzt du durch
prüfe ob die länge von FensterText > 0 ist.Dann noch den block wo du "offen." rein schreibst durch einen erstelle Text aus FensterText und " offen."
ersetzen.Somit brauchst du bei einem neuen Fenster nur die prüfe Blöcke in in deiner neuen Variable FesterText zu ergänzen.
Hoffe das war verständlich, sonst mache ich heute Abend nochmal ein Beispiel.
Verstehe die Vereinfachung aber ich denke hier ist das kontraproduktiv da ich ja auch wissen möchte welches Fenster geöffnet ist, das würde dann ja wegfallen.
Allerdings finde ich die Idee gut. Wollte eine Heizung - Fenster Verknüpfung machen, denke da werde ich das mal ausprobieren. Da gilt dann nur wenn dieses oder jedes offen ist, Heizung abstellen. -
@panik Ne, welches Fenster offen ist steht ja dann in der neuen Variable FensterText, nur das du so auf eben diese Variable prüfen kannst ob mindestens ein Fenster geöffnet ist.
Ich mache mal heute Abend -ich hoffe ich denke dran - ein Beispiel