Hallo Forum,
bin schon seit geraumer Zeit auf der Suche, wie ich am Besten einen Mehrfachschalter (entspricht einem Dummy mit mehreren vordefinierten Werten) mit Alexa steuern kann. Ist das überhaupt möglich?
Als Beispiel: "Alexa, setze Anwesenheit auf Büro", "Alexa, setze Anwesenheit auf Urlaub", "Alexa, setze Anwesenheit auf Freizeit"
Zur Zeit behelfe ich mir, für jede Einstellung einen eigenen Dummy zu "verschwenden". Wie habt Ihr das gelöst? Oder geht das gar nicht?
Gruß Rainer
Geht nur mit Custom Skill...
ODER: eben (fast) so wie du es gemacht hast/vorhast...
Es würde aber auch ein dummy reichen: Licht das dimmbar ist...
Dann in der Alexa-App für jeden gewünschten "Zustand" eine Routine und am Ende eben verschiedene dimm-Werte...
Dann halt ein Notify auf den "Lampen-Dummy" und Abfragen des dimm-Wertes und entsprechende Aktion...
...oder halt DOIF und genauso...
In irgendeinem Alexa-Thread gibt es das als Beispiel...
...evtl. auch im Wiki!?
EDIT: hier der dummy als raw definition
defmod dmAlexaRoutine dummy
attr dmAlexaRoutine alexaName alexaRoutine
attr dmAlexaRoutine comment 0 - nichts\
1 - Frühschicht\
2 - Spätschicht\
3 - Nachtschicht\
4 - Panik
attr dmAlexaRoutine genericDeviceType light
attr dmAlexaRoutine homebridgeMapping Brightness=dim,cmd=dim On=state,valueOn=on,valueOff=off
attr dmAlexaRoutine readingList dim
attr dmAlexaRoutine room alexa
attr dmAlexaRoutine setList on off dim
setstate dmAlexaRoutine 2020-01-08 22:58:11 dim 0
Gruß, Joachim
es gibt drei möglichkeiten wie man alexa szenen mit fhem devices benutzen kann. structure, LightScene und dummy mit mehreren möglichen werten. siehe wiki.
Leider finde ich die entsprechende Information im Wiki nicht, um einen Dummy mit mehreren Values in der Setlist anzusprechen. Anbei der Dummy:
defmod HomeStatus dummy
attr HomeStatus alexaName Homestatus
attr HomeStatus alexaRoom Zustand
attr HomeStatus genericDeviceType scene
attr HomeStatus group Home-Status
attr HomeStatus room App,Home-Status
attr HomeStatus setList state:Zuhause,Abwesend,Schlafen
attr HomeStatus webCmd state:
setstate HomeStatus Zuhause
setstate HomeStatus 2020-11-08 06:30:00 state Zuhause
Habs auch schon mit folgenden Anpassungen an der Setlist versucht:
attr HomeStatus setList Zuhause Abwesend Schlafen
attr HomeStatus setList Zuhause Abwesend Schlafen on off
Wäre sehr dankbar für einen Denkanstoß.
https://wiki.fhem.de/wiki/FHEM_Connector_für_Amazon_Alexa#Was_geht_alles_.3F
szenen sind drei mal dabei.
Es wird bei den genannten Szenen immer nur vom ein- bzw. ausschalten geschrieben. Eine Umschaltung zwischen den in meinem Dummy vorhandenen Werten Zuhause, Abwesend und Schlafen ist also nicht möglich, oder verstehe ich den Wiki Artikel nicht?
du schaltest von einer ,szene' auf eine andere. d.h. wenn du auf einen wert schaltest ist doch implizit der vorherige wert nicht mehr da.
Danke justme1968. Hab es jetzt so gelöst, dass ich in FHEM ein LightScene Device angelegt habe.
defmod Szenen LightScene HomeStatus
attr Szenen alexaName Homestatus
attr Szenen genericDeviceType scene
setstate Szenen Schlafen
setstate Szenen 2020-11-09 22:53:31 state Schlafen
Im LightScene Device habe ich drei Scenen hinterlegt, um meinen Dummy (HomeStatus) entsprechend zu setzen.
HomeStatus set Zuhause
HomeStatus set Abwesend
HomeStatus set Schlafen
In Alexa konnte ich dann drei Routinen erstellen, die jeweils eine der angelegten Szenen setzen/aktivieren. Danke für die Hilfestellung.
der umweg über die LightScene ist nicht nötig. du kannst den dummy direkt für alexa szenen verwenden. du musst ihm nur ein passendes homebridgeMapping geben.
die routine ist nur nötig wenn dir der wortlaut zum direkten aktivieren der szene über alexa nicht gefällt.
Genau daran bin ich bisher gescheitert, wobei ich auch kein passendes homebridgeMapping gesetzt habe. Da muss ich mich auch nochmal reinleesen, das ist mir noch nicht klar. Aber danke für den Hinweis, dass es auch ohne Umweg geht.
Also mit dem Homebridgemapping komme ich ehrlich gesagt nicht klar. Hab jetzt paar Stunden gelesen, aber ich verstehe z. B. nicht, wie ich die drei Werte meines Dummys (Zuhause, Abwesend, Schlafen) in ein Homebridgemapping mit entsprechendem Characteristic bekommen.
Meiner Ansicht nach muss ich ja zunächst eine Characteristic wählen. Logisch hätte ich gefunden es gebe eine Characteristic scene, aber das scheint nicht der Fall zu sein. Habs dann mal mit der On Charateristic versucht:
ZitatOn=verb=stelle,values=zuhause;abwesend;schlafen
Leider findet Alexa damit keine entsprechende Szene. Die ganzen Beispiele gehen bei On auch immer nur von zwei Werten aus (on/off). Vielleicht kommt bei mir ja noch die Erleuchtung. Über Hinweise wäre ich dankbar :-)
Mittlerweile bin ich soweit, dass ich mit der characteristic On eine Umschaltung der Zustände Schlafen und Zuhause umsetzen kann.
defmod HomeTest dummy
attr HomeTest alexaName Test
attr HomeTest genericDeviceType switch
attr HomeTest homebridgeMapping clear\
On=subtype=schlafen,valueOn=schlafen,cmdOn=schlafen,cmdOff=zuhause
setstate HomeTest schlafen
setstate HomeTest 2020-11-13 21:59:35 state schlafen
D. h. wenn ich also zu Amazon Alexa sage "Alexa, schalte Test an" wird der state von meinem Dummy Test auf schlafen gesetzt. Sage ich "Alexa, schalte Test aus" wird entsprechend der state vom Dummy auf zuhause gesetzt.
Was nicht funktioniert ist Alexa zu sagen "Alexa, schalte Test schlafen|zuhause". Wenn also nur an/aus als Kommandos gehen, wie soll ich dann jemals auf den dritten Status abwesend schalten können?
Ahh beim Schreiben fällt mir jetzt gerade auf, dass ich den Dummy ja als Szene setzen soll...das probiere ich nochmal. :)
... zumindest habe ich jetzt eine funktionierende Lösung. Ob es die beste ist, weiß ich nicht, aber ich möchte sie hier kurz erläutern, da ich denke, dass noch mehr Leute dieses Problem haben.
Den Dummy (genannt Anwesenheit mit den Werten Arbeit, Freizeit, Urlaub und HomeOffice) habe ich um folgende Attribute ergänzt:
eventMap /1:Arbeit/2:Freizeit/3:Urlaub/4:HomeOffice
genericDeviceType light
homebridgeMapping clear Brightness,values=Arbeit:1;Freizeit:2;Urlaub:3;HomeOffice:4;1:1;2:2;3:3;4:4
room Alexa,Zentralschalter
setList Arbeit Freizeit Urlaub HomeOffice
webCmd Arbeit:Freizeit:Urlaub:HomeOffice
Durch den Devicetyp "light" bekomme ich in Alexa den Regler "Helligkeit" angeboten. Dort kann ich dann mit den "Helligkeitswerten" 1 bis 4 den Dummy auf die entsprechenden Werte (Arbeit, Freizeit, Urlaub, HomeOffice) stellen. Entweder passiert das dann mit der Ansage: "Alexa, stelle Anwesenheit auf 1%" (für Arbeit). Schöner finde ich dann die Lösung mit einer Routine (falls "Alexa, stelle Aktivität auf Arbeit" gesagt wird, stelle Anwesenheit auf Helligkeit 1%).
Interessant ist, dass sich jetzt (durch die eventMap) state und STATE unterscheiden.
Was mir zur Zeit noch fehlt, ist, wie ich mit MQTT den STATE übertragen kann (bisher hatte ich den state ausgelesen, aber das nützt mir jetzt nichts, da ich da ja nur die Werte 1 bis 4 drin stehen habe) ... aber das wäre ein neues Thema 8)
Hoffe, es hilft dem einen oder anderen. Für Verbesserungen bin ich dankbar und offen.
Gruß Rainer
Sodele, das Thema MQTT konnte ich auch noch erfolgreich lösen:
Habe mir ein UserReading zusammengebastelt. Ja, ich weiß, dass das in Perl noch experimentell ist (so bekomme ich zumindest immer die Warnung), aber es funktioniert. 8) ;D Der nachfolgende Code ist aus der RAW Definition.
attr Anwesenheit userReadings status {\
use feature qw(switch);;\
given (ReadingsNum('Anwesenheit','state','nix')) {\
when(1) {return "Arbeit"}\
when(2) {return "Freizeit"}\
when(3) {return "Urlaub"}\
when(4) {return "HomeOffice"}\
}}
Und dieses Reading "status" wird dann zur Aktualisierung via MQTT verwendet.
Für mich wäre das Thema damit erledigt und ich setze gemäß guter alter Foren-Sitte das Thema auf "gelöst".
Gruß Rainer