NEWS
Unterschiedliche Geräte mit dem selben Namen "pro Raum" steuern
-
Hi,
da ich es nicht hinbekommen habe, dass Alexa mit "Heizung an" dies immer nur in dem Raum tut in dem ich mich gerade befinde (genauer, in dem Raum in dem der Echo steht, den ich gerade anspreche
), habe ich mal versucht das selbst zu lösen...
(mit sowas wie "licht an" gibt es wohl diese Probleme nicht, denn "licht" scheint ein Sonderfall zu sein, der "raumspezifisch" sein kann - "heizung" ist da vermutlich zu exotisch).
Meine Lösung den skill für blueprints "Fragen & Antworten" nutzen, um "das Gerät" zu verstehen (in meinem Test noch "testgerät"). Alternativ gingen sicher auch "Routinen", scheint mir aber "overkill", nur um den Text "Gerät an/aus" abzufangen.
dann in den Objekten des iot adapters einen Ordner unter "smart" anlegen, der meine "devices" (Räume) enthält (sorry, habe noch keinen besseren Platz dafür gefunden
).
und schließlich ein Skript (bei mir Blockly), das versucht das Gesprochene auszuwerten und entsprechend zu handeln.
Scheint hier soweit zu funktionieren.
(muss nur hoffen, dass der iot Adapter nicht seine Struktur säubert, wie z.B. der Alexa Adapter, der mag es gar nicht, wenn er "Knoten" nicht kennt und putz die gnadenlos weg.Evtl. jemand eine andere oder gar bessere Idee um das sauber(er) umzusetzen?
Bin für (fast alle) Kritik offen.
CU,
padrino -
@padrino
was soll bei Heizung an passieren ? (ich meine wieviel Grad sollen eingestellt werden ?)
Einen Ordner in der Adapterstruktur würde ich nicht anlegen, da der beim nächsten Adapter Update sicher gelöscht wird.
Warum erstellst Du Dir nicht einen eigenen Ordner ? -
PS: meine Heizungsdatenpunkte haben gar kein "an aus" dabei...
Die müsste ich noch dazu packen -
@dslraser sagte in Unterschiedliche Geräte mit dem selben Namen "pro Raum" steuern:
@padrino
was soll bei Heizung an passieren ? (ich meine wieviel Grad sollen eingestellt werden ?)Hier werden nur Lüfter damit geschaltet, könnte auch sagen "Turbo an"
Einen Ordner in der Adapterstruktur würde ich nicht anlegen, da der beim nächsten Adapter Update sicher gelöscht wird.
Warum erstellst Du Dir nicht einen eigenen Ordner ?Hmm, ja, muss ich mal schauen...
Habe schon mit einer eigenen Ordnerstruktur auf oberster Ebene experimentiert, aber da habe ich irgendwie das Problem, dass iobroker den vorherigen Zustand vergisst, sprich, ist von Zeit zu Zeit einfach mal 100%, das ist doof. -
was bewirkt das ungleich 0 (Mathe Baustein) in Deinem Blockly ?
-
"ungleich Null" bedeutet der String kommt vor, man könnte wohl auch "> 0" nehmen, schätze ich.
-
@padrino
müsste das dann nicht ungleich (Textbaustein mit Leerstaste, oder leerer Textbaustein sein ?)
Du sagst ja selbst, der "string" kommt vor. -
Hmm, also ich verstehe das so, und nutze es auch in meinen Skripten wie folgt.
Es wird ja auf das erste Vorkommen geprüft. Sprich, es gibt mir die Stelle zurück an der der String beginnt.
Bekomme ich "0" zurück, dann wurde er gar nicht gefunden. Bekomme ich etwas anderes zurück, dann gibt es ihn - an welcher Stelle ist ein meinem Fall ja egal.Ich prüfe in dem Fall auf "testgerät" und (bzw. oder
) "test gerät", da Alexa mich mal so und mal so versteht.
-
@padrino
ja, verstehe schon. Sollte nur eine Anmerkung sein.
Ich würde Vergleiche halt anders machen.String=Text=Textbaustein
Number=Zahl=MathebausteinWenn es funktioniert ist ja alles gut. Nicht das es Dir in anderen Beispielen mal auf die Füße fällt, weil Du daran gewöhnt bist und Dich dann fragst warum es nicht funktioniert.
-
Hmm, leider kann ich Dir da nicht folgen.
Hast Du mal ein Blockly Beispiel was damit meinst?
-
@dslraser
Würde echt gerne Deinen Weg verstehen, bin immer offen für bessere/sauberer Lösungen... -
@padrino
und ich weiß nicht wie ich es anders erklären sollwenn ich einen Text mit gleich oder ungleich vergleiche, dann nehme ich einen TextBaustein. (und nicht so wie oben in Deinem Blockly mit ungleich 0 (0 ist doch eine Zahl, da hast Du einen Mathebaustein)
Text:
Mathe:
-
Hmm...
Also, ich will ja testen, ob der Text von history.summary einen andern Text enthält und nicht, ob beide gleich sind.
Da kenne ich keinen anderen Weg als den, den ich nutze, und zwar dem 3. Block von unten auf Deinem Textbaustein.
Und der nimmt ja zwei Texte und gibt eine Zahl (=Position) zurück.