Hallo,
ich versuche schon seit längerem unseren Saugroboter per Alexa zu schalten.
In Fhem klappt es ganz einfach über "set Saugroboter Flur" und er saugt den Flur. Ebenso für andere Räume: Er fährt dann hin und macht genau da sauber.
Jetzt hab ich naiv gedacht: Das müsste doch mit Alexa und genericDeviceType media gehen? Das hab ich auf mehreren Anläufen nicht hinbekommen. Zwischenzeitlich mit genericDeviceType mode probiert, aber auch hier nichts zu machen.
Was IMMER geht ist on/off setzen. Aber ich möchte ja am Ende sagen: "Alexa, sag Archie, er soll im Flur saugen" oder hilfsweise: "Alexa, schalte Archie auf Flur"
Hier ein DEV vom Saugroboter:
defmod Saugroboter_Archie_dummy dummy
attr Saugroboter_Archie_dummy alexaName Archie
attr Saugroboter_Archie_dummy genericDeviceType media
attr Saugroboter_Archie_dummy homebridgeMapping
#ModeController:state,mode=state,values=Erdgerschoss;;Eingangsbereich;;Wohnzimmer;;Esszimmer;;Flur;;Couch;;Wohnbereich On=mode,cmdOn=on,cmdOff=off\
#InputController:reading=state,cmd=state,values=Erdgeschoss;;Eingangsbereich;;Wohnzimmer;;Esszimmer;;Flur;;Couch;;Wohnbereich;;Test\
On=verb=schalte,valueOn=an;;ein,valueOff=aus,valueToggle=um\
ChannelController:reading=channel,cmd=channel\
InputController:reading=state,cmd=state,values=Erdgeschoss;;Eingangsbereich;;Wohnzimmer;;Esszimmer;;Flur;;Couch;;Wohnbereich;;Test\
PlaybackController:playback,values=play;;pause;;stop;;zurück;;vorwärts\
Volume:reading=volume,cmd=volume,minValue=0,maxValue=100,minStep=5 \
Mute:reading=mute,cmd=mute\
attr Saugroboter_Archie_dummy readingList channel playback volume mute
attr Saugroboter_Archie_dummy room EG->Flur
attr Saugroboter_Archie_dummy setList state:on,off,Erdgeschoss,Eingangsbereich,Wohnzimmer,Esszimmer,Flur,Couch,Wohnbereich,Test channel:Erdgeschoss,Eingangsbereich,Wohnzimmer,Esszimmer,Flur,Couch,Wohnbereich,Test playback:play,pause,stop,zurück,vorwärts volume:0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 mute:on,off
attr Saugroboter_Archie_dummy webCmd state
setstate Saugroboter_Archie_dummy Eingangsbereich
setstate Saugroboter_Archie_dummy 2022-12-10 13:10:08 channel Flur
setstate Saugroboter_Archie_dummy 2022-12-12 15:29:23 state Eingangsbereich
setstate Saugroboter_Archie_dummy 2022-12-09 16:15:16 today_Eingangsbereich 0
Weiß einer Rat?
Danke euch!
Du musst schauen, was denn Amazon für die einzelnen Controller-Typen zulässt.
Im Wiki sind Links zu den Controller-Typen und deren Möglichkeiten...
Was dort nicht aufgeführt ist, geht nicht!
Das kann auch mit einem homebridgeMapping nicht geändert werden!
homebridgeMapping (wie der Name sagt) mappt nur Zustände von fhem auf das was Amazon versteht/braucht und das was von Amazon kommt auf fhem-Format (that's it)...
EDIT: steht auch so im wiki
Zitat von: https://wiki.fhem.de/wiki/FHEM_Connector_f%C3%BCr_Amazon_Alexa
Anmerkung bzgl. genericDeviceType und homebridgeMapping:
diese Attribute werden von verschiedenen "Sprachsteuerungsmodulen" in fhem verwendet (homebridge [dort wurde es "erfunden"], alexa-fhem, gassistant, ...). Daher ist nicht jedes Mapping für alle "Dienste" verwendbar. Ausprobieren schadet aber nicht.
ebenso kann man mit diesen Attributen (homebridgeMapping wird gerne so "missbraucht") nichts erzwingen, was seitens Amazon/Alexa nicht unterstützt bzw. verstanden wird! D.h. zunächst ist zu prüfen, ob ein bestimmter (gewünschter) Sprachbefehl seitens Amazon/Alexa unterstützt wird! Aktuelles Beispiel (Stand Jan 2020): "Alexa, fahre den Rollo hoch/runter". Da ist Amazon/Alexa gerade dabei etwas zu tun. Bislang wird das nicht unterstützt, also ist das auch mit einem entsprechenden homebridgeMapping nicht zu erzwingen! Was unterstützt wird kann man bei Amazon nachlesen:
Inkl. Link zu Amazon wo man nachsehen kann https://developer.amazon.com/es-ES/docs/alexa/device-apis/list-of-interfaces.html
Und: für unterschiedliche Sprachen gehen unterschiedliche Dinge bzw. nicht immer alles in allen Sprachen, auch das gilt es zu beachten...
Was geht: Alexa Routinen
Also Routine:
wenn ich sage "Alexa, sag Archie, er soll im Flur saugen" -> schalte Sauger ein
Alternativ kannst statt den Sauger direkt zu steuern auch einen "Dimmer-dummy" auf einen bestimmten Dimmwert setzen am Ende der Routine.
Dann mittels notify/DOIF für verschiedene Dimmwerte unterschiedliche Dinge tun...
D.h. einen dummy für viele Routinen :)
Was noch geht: Custom Skill...
Gruß, Joachim
Danke für deine Antwort!
Den Satz "Was dort nicht aufgeführt ist, geht nicht!" hatte ich bereits mehrfach gelesen. Aber eben konkret das, was geht finde ich nicht, oder sehe den Wald vor lauter Bäumen nicht.
Zum Anderen muss es doch jemanden geben in der FHEM Community, der z.B. nen Fernseher erfolgreich mit Alexa auf bestimmte Kanäle schaltet? Und FHEM-seitig muss es dann egal sein, ob es tatsächlich ein Fernseher ist oder ein Dummy mit entsprechenden Readings.
Hier ist das, was ich gefunden habe im WIKI:
ZitatGeräte, deren Kanal sich umschalten lässt (ab alexa-fhem version 0.5.13)
Über genericDeviceType media
homebridgeMapping ChannelController:reading=<reading>,cmd=<cmd>
Erlaubte Werte siehe hier: https://developer.amazon.com/de/docs/device-apis/alexa-channelcontroller.html#changechannel
Und was ich auf der Amazon Alexa Dev Seite gefunden hab:
Reportable properties
The Alexa.ChannelController interface uses the channel property as the primary property. You identify that you support the property in your discovery response.
Channel property
The channel property specifies a channel by number, call sign, or affiliate call sign. The channel property value is an object.
The following example shows the channel property.
{
"name":"channel",
"value": {
"number": "9",
"callSign": "PBS",
"affiliateCallSign": "KCTS"
}
}
The following table shows the definition of the Channel object.
Property Description Type Required
number TV channel number, such as 256 or 13.1. String No
callSign Call sign of the channel, such as PBS. String No
affiliateCallSign Local affiliate call sign of the channel, such as KCTS. String No
uri URI of the channel, such as entity://provider/channel/12307. String No
Note: The Channel object doesn't require any of the fields. However, you must always specify at least one of channel.number, channel.callSign, channel.affiliateCallSign, channel.uri, or channelMetadata.name.
Aber wie bringe ich beides zusammen? Leider fehlt mir ein funktionierendes Szenario bzw. ein minimal working example.
Das mit den Routinen wird bestimmt gehen, aber dann ist die Logik gewissermaßen außerhalb FHEM und es sollte ja, wie im WIKI beschrieben irgendwie mit "channel" und oder "input" klappen.
Zitat
Zum Anderen muss es doch jemanden geben in der FHEM Community, der z.B. nen Fernseher erfolgreich mit Alexa auf bestimmte Kanäle schaltet? Und FHEM-seitig muss es dann egal sein, ob es tatsächlich ein Fernseher ist oder ein Dummy mit entsprechenden Readings.
Ja, fhem-seitig kann es auch ein dummy sein.
Habe ich so...
ABER: The channel property specifies a channel by number, call sign, or affiliate call sign. The channel property value is an object.
Also es geht:
Alexa schalte XY auf Kanal 1 (2, 3, ...)
Alexa schalte XY auf Kanal ZDF (wobei das schon sein könnte, dass es "das zweite" heißen muss: "call sign" -> Sendername / Und da legt halt Amazon fest was da "zulässig" ist/verstanden wird und es ist auch "interessant" was da oft in fhem ankommt. Daher habe ich das mit Sendernamen sein lassen, weil entweder der Sender nicht erkannt wird/wurde oder immer etwas anderes zurück kam: m.d.r oder m.d.r.sachsen oder oder oder)
Und sowas wie "Wohnzimmer" etc. sind halt keine Sender die Amazon erkennt.
Das ist gemeint: was es dort nicht gibt... ;)
Ebenso bei Input: HDMI1, HDMI2 usw. geht aber auch hier versteht Alexa halt (verm.) sowas wie "Wohnzimmer" eben nicht...
EDIT: müsste dir Amazon/Alexa schon als Antwort mitteilen, dass sie etwas nicht "erkannt" hat, oder? Also sobald sowas kommt, wie ich weiß nicht was ich tun soll oder ich finde/kenne keinen Sender "Wohnzimmer" o.ä. hat das nichts (wenig) mit fhem und alexa-fhem zu tun, sondern das wird eben schon seitens Amazon/Alexa "nicht erkannt"...
Also, entweder Custom Skill, dann kannst du selbst vorgeben was gesprochen werden soll, inkl. an bestimmten Stellen "Variablen" an fhem zu übergeben...
...oder eben über Routinen.
EDIT: ich bin auch nicht ganz sicher, ob das was du hier von Amazon zitiert hast aus dem Smart Home Skill Möglichkeiten stammt oder eine Beschreibung für die Umsetzung in einem Custom Skill ist...
Ich mache es über Routinen.
D.h. ich habe für jeden Raum eine Routine und gut.
Zitat
Das mit den Routinen wird bestimmt gehen, aber dann ist die Logik gewissermaßen außerhalb FHEM und es sollte ja, wie im WIKI beschrieben irgendwie mit "channel" und oder "input" klappen.
Geht generell, wie geschrieben habe ich ja in Nutzung aber halt eben mit "echten" Kanälen. Steht im Wiki auch, dass es für Staubsauger und mit dem Kanal "Wohnzimmer" gehen soll? (wo?)
Gruß, Joachim