Alexa Hilfe: Dunstabzugshaube via RF-Bridge steuern

Begonnen von buzzy, 04 Dezember 2021, 12:26:28

Vorheriges Thema - Nächstes Thema

buzzy

Hallo liebe FHEM Gemeinde! :)

Ich habe meine Dunstabzugshaube - welche mit einer 433MHz Fernbedienung gesteuert - wird erfolgreich in FHEM integriert und suche nun nach einer Möglichkeit, die Steuerung auch mittels Alexa durchführen zu können.

Aktuell hat mein erstelltes MQTT_DEVICE drei webCmd's: toggle:plus:minus. Mit toggle wird die Lüftung an bzw. aus gestellt. mit plus/minus kann man dann die Geschwindigkeit in 4 Stufen rauf und runter regeln.
Das klappt alles wunderbar wenn ich es direkt in FHEM steuere, ich habe aber bisher noch keine Idee, wie ich das am besten auf Alexa mappe (genericDeviceType, homebridgeMapping usw.).

Ich wäre für kreative Ideen von euch sehr dankbar!  ;)

Mein Device ist aktuell wie folgt angelegt:

define KitchenHood_Fan MQTT_DEVICE
attr KitchenHood_Fan alexaName Dunstabzugshaube Lüfter
attr KitchenHood_Fan alexaRoom Küche
attr KitchenHood_Fan eventMap ,RfRaw AAB01B0308017202A83B602818180918090918181818090909091809091855;; RfRaw 0:toggle,RfRaw AAB01B0308018602943B062818180918090918181818090909091818090955;; RfRaw 0:plus,RfRaw AAB01B03080186028A3B062818180918090918181818090909091809180955;; RfRaw 0:minus
attr KitchenHood_Fan publishSet toggle plus minus sonoff-kitchen-bridge/cmnd/Backlog
attr KitchenHood_Fan room 03_Kitchen,Alexa,MQTT
attr KitchenHood_Fan stateFormat transmission-state
attr KitchenHood_Fan subscribeReading_mqtt_state sonoff-kitchen-bridge/tele/STATE
attr KitchenHood_Fan webCmd toggle:minus:plus


Falls eine mögliche Lösung das Ändern meines aktuell angelegten Devices erfordert wäre das für mich auch fein, Hauptsache ich kann am Ende folgendes mittels Sprache steuern:
Alexa, Lüfter an/aus
Alexa, Lüfter schneller/langsamer

Gruß,
buzzy


MadMax-FHEM

#1
Wichtig ist erst einmal zu verstehen wie das mit Alexa generell geht (nur um "Missverständnissen" vorzubeugen ;)  ):

erst mal muss Amazon unterstützen was du "willst": https://developer.amazon.com/en-US/docs/alexa/device-apis/list-of-interfaces.html

Weil nur das von den Echos/Amazon/Alexa "verstanden" wird. D.h. du musst es auch (in etwa) so sprechen (wollen).
Ich habe dort mal geschaut, ob es einen "Fan" gibt (wäre ja u.U. passend), konnte aber nichts entdecken...

Musst du halt mal "durchblättern" und schauen, ob es was gibt wo du mit leben kannst (also von dem was du sagen kannst/musst)...
Wenn du das hast, dann muss man halt sehen wie man das dann auf dein Device anwenden kann...

(ob da das eventMap "negativ reinspuckt": keine Ahnung aber da wird ja so einiges "verbogen" werden wir sehen ;) )

Achja: was du sprechen kannst etc. kannst du auch NICHT mittels homebridgeMapping "umbiegen" oder "erfinden"! (viel gelesener "Irrglaube" ;)  )

Damit wird nur angepasst, wenn ein Befehl der von Amazon übermittelt wird nicht auf den Schaltbefehl passt, den dein Device in fhem braucht/erwartet...
...und umgekehrt mit dem Status...

Daher ja: mapping ;)

Wenn du so gar nichts findest (was dich "glücklich" macht), "irgendwas mit Routinen" geht immer...

Also:
eine Routine: "Alexa mach den Lüfter schneller" -> setze einen bestimmten dimmwert bei einem "routine-dummy" -> notify reagiert und schaltet halt schneller (und prüft, ob noch scneller geht etc.)

eine Routine: "Alexa mach den Lüfter langsamer" -> setze einen ANDEREN dimmwert bei einem "routine-dummy" -> notify reagiert und schaltet halt langsamer (und prüft, ob noch langsamer geht etc.)

EDIT: da du hier ja "Lüfter" in der Routine hast, könnte es passieren, dass Alexa das nicht ganz vom "originalen" Gerät unterscheiden kann. Habe ich auch, manchmal erkennt Alexa/Amazon, dass ich genau dan Satz der Routine spreche und macht was ich will. Ein anderes Mal (evtl. "ungenau gesprochen oder so) erkennt Alexa eben die Routine nicht und "schweigt" oder, wenn es eben ein Gerät gibt das vom Namen passt/passen könnte (Alexa ist da oft sehr "erfinderisch" ;)  ), dann kann schon mal kommen: XXX unterstützt das nicht. Wenn man dann (deutlicher) noch mal (mit Nachdruck) den Satz der Routine raushaut geht es "plötzlich" ;) Wollte ich nur anmerken. Solltest du das mit der Routine umsetzen, dann eben drauf achten... Evtl. empfiehlt sich dann auch für an/aus je eine Routine zu machen, das eigentliche Gerät/Device ganz aus Alexa raus zu lassen (alexaName wieder weg) und den "pseudo-dummy/routine-dummy" (der ist dann genericDeviceType light, damit "dimmbar") einen ganz anderen Namen zu geben (meiner [zum "rumspielen"] heißt eben RoutinenDummy ;)  also auch in der App)... Was so halt nicht geht: in der App siehst du halt den Zustand des dummy und NICHT den des Lüfters! Aber den dummy kannst du ja für viele Dinge verwenden :) Der Routine ist es ja egal was sie tatsächlich tut, du hast kannst also so viele Routinen über diesen dummy "schalten", wie es dimm-Werte gibt ;)

Bei an/aus entweder 2 weitere Routinen oder eben versuchen das dann dem Device direkt beizubringen, z.B. genericDeviceType switch etc.
Das sollte auch bei deinem Device gehen...
Wobei ich "toggle" noch nicht umgesetzt habe ;)

Gruß, Joachim

P.S.: alexaRoom ist nur für den Custom Skill und bei Szenen (glaube ich) relevant! Ansonsten werden Räume etc. per Gruppen in der Alexa-App abgebildet...
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

buzzy

Vielen Dank für die detaillierte Antwort - Mega! :)
Ich würde das gerne mal mit der Alexa Routine in Kombination mit einem dimmbaren "routine-dummy" versuchen!

Hast Du eventuell ein dummy Beispiel für Alexa, welches ich als Einstieg nutzen kann?


MadMax-FHEM

Zitat von: buzzy am 04 Dezember 2021, 14:32:03
Hast Du eventuell ein dummy Beispiel für Alexa, welches ich als Einstieg nutzen kann?

Ja, denke schon...
Ich schau dann mal...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Here it comes:

zunächst der dummy (geht auch für mehrere Routinen [siehe oben]) in RAWDef:

defmod dmAlexaRoutinen dummy
attr dmAlexaRoutinen alexaName alexaRoutine
attr dmAlexaRoutinen comment 0 - nichts\
1 - check Wohnung
attr dmAlexaRoutinen genericDeviceType light
attr dmAlexaRoutinen homebridgeMapping Brightness=dim,cmd=dim On=state,valueOn=on,valueOff=off
attr dmAlexaRoutinen readingList dim
attr dmAlexaRoutinen room alexa
attr dmAlexaRoutinen setList on off dim

u.U. kann man auch was weglassen, egal so tut er bei mir :)

Dann eben ein (oder mehrere) notify (oder DOIF oder oder oder):

defmod nControl_dmRoutine_CheckApartmentStatus notify dmAlexaRoutinen:dim:.1 {my_CheckApartmentStatus()}


man kann, hatte ich vorher oder auf einem (nicht mehr verfügbaren) Testsystem, nat. auch ein notify wie folgt machen:

defmod nAlexaRoutinen notify dmAlexaRoutinen:dim:.* {my_CheckAndDo($EVENT)}


Und dann entweder direkt im notify oder eben in einer Sub prüfen, welcher Dim-Wert von Alexa kam und dann eben entsprechende fhem-Befehle (oder auch andere Sachen) absetzen...

Dann brauchst du halt noch eine oder mehrere Routinen.
Alexa-App -> Routinen: "Alexa mache dies oder das" -> setze alexaRoutine auf dim-Wert X

X muss halt zum notify bzw. zur "Auswertung" im notify passen, eh klar ;)

Viel Spaß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

buzzy

*bedankt* :)

Dann bastle ich mal los hier - Wetter ist ja eh zu nischt anderem zu gebrauchen gerade...

Melde mich, sobald die Dame aus der Lautsprecher auf mich hört - hoffentlich. ;)

Danke & Gruß,
buzzy

MadMax-FHEM

Viel Spaß/Erfolg!

Du kannst ja einfach mal den dummy anlegen und mittels set Alexa reload (sofern dein Alexa-Device Alexa heißt ;) ) und dann durch Suchen bei Amazon sehen was geht.

Dann solltest du zumindest schon mal den dummy per Sprache dimmen/ein-/ausschalten können :)

Wenn das geht, dann ist der Rest nur noch "Fleißarbeit"...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)