ich habe eben eine test version von alexa-fhem mit unterstützung für ModeController gepublished.
damit kann man in der alexa app aus einem frei konfigurierbaren drop down auswählen.
die mode auswahl ist im prinzip zusätzlich zu anderen dingen wie ein- und ausschalten möglich. welche kombinationen tatsächlich gehen und auch in der alexa app dargestellt werden weiss ich nocht nicht.
ausser diesem posting hier gibt es noch keine doku. bitte probieren und ideen entwickeln :)
mit einer definition wie dieser:
defmod kino dummy
attr kino devStateIcon on:control_on_off: off:control_home:
attr kino genericDeviceType mode
attr kino homebridgeMapping ModeController:mode,cmd=mode,mode=status,values=start;;play;;pause;;stop On=state,cmdOn=on,cmdOff=off
attr kino readingList mode
attr kino setList on off mode:start,play,pause,stop
attr kino webCmd on:off:mode
setstate kino off
setstate kino 2022-01-19 20:09:51 mode stop
setstate kino 2022-01-19 20:09:51 state off
und einem notify:
Zitatdefmod watchKino notify kino:.* {\
if( $EVTPART0 eq 'on') {\
fhem( 'sleep 0.1 ;; set kino mode start' );;\
\
} elsif( $EVTPART0 eq 'off') {\
fhem( 'sleep 0.1 ;; set kino mode stop' );;\
\
} elsif( $EVTPART0 eq 'mode:') {\
if( $EVENT =~ /start/ ) {\
startKino();;\
\
} elsif( $EVENT =~ /stop/ ) {\
stopKino();;\
\
}\
}\
}
kann man in der alexa app neben ein- und ausschalten noch einen mode namens status aus einer liste auswählen. ein und aus ändert den mode ebenfalls zu start bzw. stop
das ganze kann man auch mit routinen in der alexa app kombinieren.
in diesem fall bietet sich z.b. ein
alexa, kino an das das device einschaltet oder direkt den mode start setzt.
alexa, kino status pause geht direkt, mit
alexa, kino pause hatte ich auch schon glück.
alexa, kino aus geht automatisch
wie im beispiel oben zu sehen ist gibt man mit
mode= den namen der angezeigt werden soll an und mit values die möglichen werte. wenn man im menü etwas anderes als den direkten wert anzeigen möchte kann man jeweils
wert:anzeige verwenden
das ganze ist auf amazon seite ziemlich flexibel und mit etwas fantasie müsste es möglich sein in gewissem umfang eigene kommandos damit zu erzeugen. eine genaue beschreibung mit beispielen findet sich hier: https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-modecontroller.html (https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-modecontroller.html).
das api unterstützt auch mehrer ModeController in einem device. aktuelle alexa-fhem Implementierung unterstütz nur strings und (noch ?) keine assets (d.h. die vordefinierten kategorien).
das ist aber in alexa-fhem noch nicht implementiert und ich weiss nicht wie die alexa app damit umgeht.
Hört sich spannend an.
"Gepublished" heist es ist über das normale Update in fhem zu beziehen, richtig?
Zitat von: balli1187 am 21 Januar 2022, 07:20:08
Hört sich spannend an.
"Gepublished" heist es ist über das normale Update in fhem zu beziehen, richtig?
Eher update von alexa-fhem, also dem nodejs, siehe Wiki alexa-fhem Connector...
Gruß, Joachim
Danke justme, damit kann ich nun einige Dummy Devices in einem zusammenführen :)
Dein Beispiel funktioniert bei mir einwandfrei, ohne das Wort status im Befehl nutzen zu müssen.
Besteht die Möglichkeit, auch direkt das Reading state zu setzen? Das würde das Auslesen und Setzen (wenn nicht über Alexa) ein wenig vereinfachen. Ich habe das Attribut setList angepasst (state:on,off,...) und das Attribut readingList entfernt. Im Attribut homebridgeMapping habe ich verschiedene Varianten probiert, habe es aber nicht geschafft state korrekt zu setzen.
mir fällt auf die schnelle nichts ein das mit state nicht gehen würde. was genau möchtest du denn manchen und was geht daran nicht? mach doch am besten mal ein beispiel.
Ich ziehe meine Frage zurück. HAbe das Device heute gelöscht und neu angelegt, jetzt funktioniert es wie gewünscht: Der Alexa Befehl ändert das Reading state.
Somit kann ich an anderen Stellen einfach set licht_modus <Wert> verwenden und den Wert auch einfach in Perl mit Value("licht_modus") auslesen. Ich könnte zwar auch ohne Probleme das Reading mode verwenden, aber ich bin schreibfaul.
Anbei mein Device, falls sich jemand daran orientieren möchte. Keine Ahnung, ob attr homebridgeMapping korrekt ist, aber es funktioniert :)
defmod licht_modus dummy
attr licht_modus alexaName Lichtmodus
attr licht_modus event-on-change-reading state
attr licht_modus genericDeviceType mode
attr licht_modus group Überwachungsstatus
attr licht_modus homebridgeMapping ModeController:state,mode=state,values=standard;;besuch;;essen;;film;;manuell On=mode,cmdOn=on,cmdOff=off
attr licht_modus room 0_Status,93_Alexa
attr licht_modus setList state:on,off,standard,besuch,essen,film,manuell
attr licht_modus webCmd state
Zitat
Perl mit Value("licht_modus") auslesen. Ich könnte zwar auch ohne Probleme das Reading mode verwenden, aber ich bin schreibfaul.
Dann aber nicht wundern, wenn du mal z.B. die Webansicht "aufhübschen"/ändern willst und stateFormat verwendest und dann eben Value() nicht das liefert, was du erwartest...
Weil: Value() "frägt" STATE (das INTERNAL) ab und nicht state (das Reading)!
Gruß, Joachim
Bei mir ist der Eintrag "mode" im Auswahlfeld "gDT" nicht vorhanden.
Kann man diesen gDT nur im Eingabefeld von fhem eingeben?
Etwas OT: lässt sich auch der "RangeController" in fhem integrieren? Dieser scheint auch sehr vielseitig einsetzbar zu sein?
der range controller wird für die rollladen integration schon verwendet. ich hatte bisher noch keine idee wie man
ihn auch von hand per mapping konfigurieren kann da es recht umfangreich ist und es auch einige abhängigkeiten der parameter untereinander gibt.
Danke für die "Aufklärung"... :)
ZitatBei mir ist der Eintrag "mode" im Auswahlfeld "gDT" nicht vorhanden.
Kann man diesen gDT nur im Eingabefeld von fhem eingeben?
Zitat von: locodriver am 07 August 2022, 14:00:38
Bei mir ist der Eintrag "mode" im Auswahlfeld "gDT" nicht vorhanden.
Kann man diesen gDT nur im Eingabefeld von fhem eingeben?
Du kannst auch das userattr unter global erweitern, dann steht es auch als Auswahl im Dropdown zur Verfügung... 8)
Gruß, Joachim
@MadMax-FHEM: Danke, das hatte ich nicht auf dem "Schirm"...
Hallo,
ich hab folgendes probiert. Aber ohne Erfolg:
defmod Saugroboter_Archie_dummy dummy
attr Saugroboter_Archie_dummy alexaName Archie
attr Saugroboter_Archie_dummy genericDeviceType mode
attr Saugroboter_Archie_dummy homebridgeMapping ModeController:state,mode=state,values=Erdgerschoss;;Eingangsbereich;;Wohnzimmer;;Esszimmer;;Flur;;Couch;;Wohnbereich On=mode,cmdOn=on,cmdOff=off
attr Saugroboter_Archie_dummy room EG->Flur
attr Saugroboter_Archie_dummy setList state:on,off,Erdgeschoss,Eingangsbereich,Wohnzimmer,Esszimmer,Flur,Couch,Wohnbereich
attr Saugroboter_Archie_dummy webCmd state
setstate Saugroboter_Archie_dummy on
setstate Saugroboter_Archie_dummy 2022-11-22 17:51:08 state on
Ich habe einen Botvac D9 mit dem Botvac Modul laufen. Das funktioniert sehr gut.
Jetzt wollte ich das auch über Alexa probieren. Hierfür schien mir ModeController gut geeignet, denn ich würde ihnen halt dann den Dummy auf das jeweilige Zimmer setzen und das könnte die jeweilige Reinigung am Roboter triggern.
Leider schaltet Alexa den Dummy nur bei An und Aus bzw. in und Off
Warum ist das so?
Was einer Rat?
FHEM und Alexa-Fhem habe ich gestern aktualisiert. Ich verwende den Fhem-Connector.
Danke euch 8)
Aktuell kann ich nicht nachschauen was der modeController "kann" (und ob er in alexa-fhem implementiert ist)...
Generell gilt: man kann Alexa (auch mit homebridgeMapping) nichts "beibringen" was nicht verstanden wird. Das musst du bei Amazon nachschauen, Link im Wiki. Was dort nicht aufgeführt ist geht nicht.
Das homebridgeMapping passt "nur" Befehle bzw. Zustände zwischen Amazon und fhem an (mehr nicht)...
Gruß, Joachim
Ich habe mir gerade mit dem aktuellen fhem-alexa connector das Beispiel von justme in mein fhem kopiert.
In der App sehe ich das device und kann auch via drop down die verschiedenen Modi auswählen.
Mit der Sprach Steuerung funktioniert das allerdings nur sehr bedingt. Alexa ruft bei "Alexa Kion Start" immer das aktuelle Kino Program auf :-)
Ein Umbenennen in der AlexaApp auf Alarm hat schon mal dazu geführt, dass Start, Pause und Play funktionieren.
Sage ich "Alexa, Alarm stop" meldet sie zurück "Alarm unterstützt das nicht." (In der App kann ich stop einstellen)
Auch scheinen keine anderen Stati zu gehen als start, play, pause, stop.
Ein eingefügtes Manuell oder Automatik zeigt keine Wirkung. Das Gerät springt in der App dann auf Status Festlegen.
Mir ist noch aufgefallen, dass ich in Fhem im Dropdown für genericDeviceType "mode" nicht auswählen kann. In der Alexa App wird das Gerät als "Typ Sonstiges" angezeigt.
Das mit dem Sprechen ist "Übung", da muss man etwas probieren.
Habe auch festgestellt (typ media), dass sich das auch immer wieder mal ändert (also was ich sprechen muss)...
Auch ist Alexa ab und an (vermeintlich) "superschlau" und macht nicht wirklich was sie soll, obwohl exakt verstanden.
Also exakt das Gerät verstanden, trotzdem wird auf einem anderen Echo z.B. eine andere Musik gestartet, gestoppt (weil dort gerade was läuft) oder eben auch geantwortet: unterstützt das nicht...
Wenn ich dann exakt dasselbe noch mal sage klappt es (manchmal "trotzdem" ;) )...
Kurz: man kann nicht sagen was man selber will, sondern muss so sprechen, wie es Alexa will/versteht...
Das mit dem Attribut: entweder die Liste unter "global" (userattr) anpassen oder einfach per FhemWeb-cmd eingeben:
attr DeviceName genericDeviceType mode
Wichtig: das Attribut wird, wie auch homebridgeMapping, von verschiedenen Sprachsteuerungen genutzt. Nicht alles geht...
Gruß, Joachim