Amazon Echo Control Binding

  • Hi,

    ich stehe aktuell vor einem Problem bei dem ich nicht weiter komme.

    Und zwar versuche ich mit openhab und dem Amazon Echo Control Binding eine bluetooth verbindung aufzubauen.
    Am besten, wenn der Trigger geschaltet wird.
    Ich habe es via rule probiert:

    Code
    rule "ALEXA_Bluetooth"
    when
    	Item Steckdose_01 received update ON
    then
    	Echo_Living_Room_StartCommand.sendCommand('Bluetooth')
    end

    So klappt das allerdings nicht :(
    Ich weiß aber auch nicht ob der Befehl überhaupt stimmt.

    Kennt sich jemand damit aus ?

    Ziel soll es sein, das sich wenn die Bluetoothbox angeht auch damit verbindet, und wenn sie aus geht wieder trennt.
    Leider geht bluetooth ja nicht über eine Alexa Routine....

    Mein System:

    Spoiler anzeigen


    Server

    Wohnzimmer

    im Haus verteilt


    Cooler Master Elite 110
    ASRock J3455-ITX
    16GB DDR3L-1333
    3x WD green 3TB
    1x 60GB BOOT-SSD
    OMV 6.x
    TVHeadend 4.3.xx

    Phillips PUS8546
    Kodi 21 Beta (maven)

    diverse
    Raspberry Pi
    LibreElec 9.x


  • poste am besten beim nächsten mal immer die kompletten items die in der rule mitarbeiten, das macht es einfacher zu helfen.
    momentan weiss keiner was bei dir Echo_Living_Room_StartCommand für ein channel ist.

    für einen switch solltest du eine rule immer im "case format" bauen. so kannst du mit der rule ein und aus schalten.
    ausserdem solltest du für eine bluetoothverbindung (alexa mit bluetooth lautsprecher verbinden, so wie ich es verstanden habe) eine bluetooth mac mitsenden.
    dadurch kannst du mehrere bluetoothgeräte einbinden.
    als erstes einen eintrag in deiner items datei erstellen (channel anpassen nicht vergessen)

    Code
    String Bluetooth_Mac "Bluetooth MAC"  {channel="amazonechocontrol:echo:account1:echo3:bluetoothMAC"}


    mit diesem item kannst du einen string senden mit dem sich dann alexa verbindet, wenn du einen leeren befehl sendest trennt alexa die verbindung.
    in der doku des bindings steht zwar drin, dass eine mac gesendet werden soll, das ist aber mittlerweile nicht mehr so.

    verbinde deinen bluetooth lautsprecher manuell in der alexa app mit deinem echo gerät und im openhab [definition='1','0']log[/definition] wird der string für deinen lautsprecher erscheinen
    bspw: Bluetooth_Mac changed from to 410259143d6dffa407829c9f5b8ca9a8bf9528d9ff7b570a95aa205bbd231da5

    deine rule könnte dann so aussehen.

    jetzt verbindet sich deine alexa oder trennt sich, je nach status der steckdose.

  • Vielen Dank

    klappt wunderbar so. Allerdings habe ich im [definition='1','0']log[/definition] tatsächlich die MAC stehen gehabt, und nicht die lange Buchstaben/Zahlen Reihe.
    Aber mit der MAC in der Zeile geht es bei mir auch wunderbar.

    Mein System:

    Spoiler anzeigen


    Server

    Wohnzimmer

    im Haus verteilt


    Cooler Master Elite 110
    ASRock J3455-ITX
    16GB DDR3L-1333
    3x WD green 3TB
    1x 60GB BOOT-SSD
    OMV 6.x
    TVHeadend 4.3.xx

    Phillips PUS8546
    Kodi 21 Beta (maven)

    diverse
    Raspberry Pi
    LibreElec 9.x


  • Hätte auch mal eine Frage dazu! Es muss wohl möglich sein das ich mit dem Binding antworten auf Fragen bekommen kann. zB würde mich brennend interessieren wie irgendein Status ist.

    Nehmen wir an ich geh aus dem Haus und Frag Alexa noch ob irgendein Licht an ist oder ein Fenster offen. Sie antwortet nein oder zB Fenster OG1 offen. Es geht wohl mit TTS und irgendeinem Script aber hab es nicht ganz verstanden.

    Kennt sich damit jemand aus ?

    Support ME ! Buy me a Coffee :thumbup:


    Dont Touch ME

    LivingRoom: SilverStone Milo ML03 | Gigabyte B450 | Ryzen 3400G | 250GB NVME | 16GB DDR4-3200| Win10 64 bit | KODI 18 | Logitech Harmony Elite | SONOS Playbar + SUB
    BedRoom: PLAY:3
    Kitchen: PLAY:3
    BathRoom: Play:3

  • mit routinen kannst du die fragen abfangen und dann nach items in gruppen (bspw fenster, türen, lichter) über tts die entsprechenden kandidaten rausfiltern.
    - dummy mit alexa tag anlegen der in der gruppe fenster ist
    - routine in der alexa app anlegen, die bei der wunschfrage den dummy einschaltet
    - rule erstellen, die bei betätigen des dummys aktiviert wird

    Items:

    Code
    Switch  Fenster_Dummy  "Fenster Dummy"  (Fenster)  [ "Switchable" ]
    Group:Contact:OR(OPEN, CLOSED) Fenster  "Fenster [(%d)]"

    rules:

    die rule kann natürlich auch noch mit lichtern erweitert werden.

  • Und das tut einfach so mit Alexa_TTS.sendCommand("Achtung, folgende Fenster sind geöffnet. " + OffeneFenster) besonders + OffeneFenster sieht für mich komisch aus - OffeneFenster ist doch keine Variabel - woher soll Alexa das denn wissen ? Oder ist das richtig so ?! Wenn das tut würde ich es noch mit Lichtern machen dann hätte ich genau das was ich will ! Wäre mega

    Support ME ! Buy me a Coffee :thumbup:


    Dont Touch ME

    LivingRoom: SilverStone Milo ML03 | Gigabyte B450 | Ryzen 3400G | 250GB NVME | 16GB DDR4-3200| Win10 64 bit | KODI 18 | Logitech Harmony Elite | SONOS Playbar + SUB
    BedRoom: PLAY:3
    Kitchen: PLAY:3
    BathRoom: Play:3

  • ja klar ist das richtig so.
    "offene fenster" wird ja dort als wert definiert -> val OffeneFenster = Fenster.members.filter.
    es wird also geprüft welcher fensterkontakt in der gruppe "Fenster" auf OPEN ist, dann wird nach label der kontakte gefiltert um einen verständlichen wert angesagt zu bekommen.
    der wert wird dann zu alexa tts gesendet...

  • Für das konkrete nachfragen könnte man den Channel lastVoiceCommand nutzen, siehe
    OH2 - Alexa Control - LastVoiceCommand Frage

    Das versteh ich nicht ganz - wie würde da der selber Aufbau mit Fenster aussehen ?

    @horschte sorry val überlesen :D ! merci das teste ich ! Da es bei mir bisher nur um alle Fenster und "alle" Lichter gehen würde - wenn das klappt wäre ich schonmal Glücklich

    Support ME ! Buy me a Coffee :thumbup:


    Dont Touch ME

    LivingRoom: SilverStone Milo ML03 | Gigabyte B450 | Ryzen 3400G | 250GB NVME | 16GB DDR4-3200| Win10 64 bit | KODI 18 | Logitech Harmony Elite | SONOS Playbar + SUB
    BedRoom: PLAY:3
    Kitchen: PLAY:3
    BathRoom: Play:3

  • Das versteh ich nicht ganz - wie würde da der selber Aufbau mit Fenster aussehen ?

    item in der items datei erstellen (channel anpassen)

    String Alexa_last_voicecommand "Kommando" {channel="amazonechocontrol:echo:account1:xxxxxx:lastVoiceCommand"} 

    dann die rule dazu:

    in zeile 3 siehst du, auf was alexa reagieren würde...nämlich auf die frage "Alexa, welche Fenster sind offen"

  • @horschte sorry val überlesen ! merci das teste ich ! Da es bei mir bisher nur um alle Fenster und "alle" Lichter gehen würde - wenn das klappt wäre ich schonmal Glücklich

    wenn du lichter und fenster prüfen willst, dann kannst du das auch zusammenfassen.
    bspw "alexa, auf wiedersehen" -> falls fenster offen dann alexa tts mit hinweis welche offen sind-> falls alle fenster zu dann alle lichter ausschalten und alexa tts sprachfeedback "tschüss, ich schalte jetzt die lichter aus"

  • Sehr sehr interessant - mal sehen wann ich das diese Woche mal in Angriff nehmen kann- was wäre denn die bessere Methode ? LastVoiceCommand oder TTS - bzw was ist die dynamischere und aktueller oder sauberere Lösung ?

    Dann werde ich diese angehen

    Support ME ! Buy me a Coffee :thumbup:


    Dont Touch ME

    LivingRoom: SilverStone Milo ML03 | Gigabyte B450 | Ryzen 3400G | 250GB NVME | 16GB DDR4-3200| Win10 64 bit | KODI 18 | Logitech Harmony Elite | SONOS Playbar + SUB
    BedRoom: PLAY:3
    Kitchen: PLAY:3
    BathRoom: Play:3

  • last voice command und tts ist was unterschiedliches.
    last voice command wandelt sprache zu text, tts wandelt text zu sprache.
    für dich stellst sich die frage last voice command oder alexa routine.
    last voice command wäre theoretisch besser als eine alexa routine, allerdings kanns gut sein, dass alexa versucht bei lastvoicecommand das gerät zu steuern...was natürlich nicht geht. in dem fall hörst du dann "....gerät unterstützt das nicht... " zum anfang des sprachfeedbacks. dann nimmst du halt eine routine.

  • Ich hab es bei mir gerade mal implemntiert:

    Items:

    Code
    Group Amazon_Echos "Amazon Echos"
    String Echo_Kitchen_LastVoiceCommand    "Letztes Sprachkommando"    (Amazon_Echos)    {channel="amazonechocontrol:echo:xxx:lastVoiceCommand"}
    String Echo_Kitchen_TTS                 "Sprachausgabe"             (Amazon_Echos)    {channel="amazonechocontrol:echo:xxx:textToSpeech"}


    Rules:


    Funktioniert gut. Alexa sagt erst noch irgendwas wie "Bis dann" oder "Mach's gut" und danach kommt die TTS-Ausgabe von Openhab.

  • sehr geil - nun fehlt nur noch die Zeit dann wird das auch mal Umgesetzt !

    Muss ich bei mehreren Echos :

    String Echo_Kitchen_LastVoiceCommand "Letztes Sprachkommando" {channel="amazonechocontrol:echo:xxx:lastVoiceCommand"}
    String Echo_Kitchen_TTS "Sprachausgabe" {channel="amazonechocontrol:echo:xxx:textToSpeech"}

    alle angeben und in meiner Rule dann auch ? Weil ich weis ja nicht wann ich welchen Echo danach frag? !

    Support ME ! Buy me a Coffee :thumbup:


    Dont Touch ME

    LivingRoom: SilverStone Milo ML03 | Gigabyte B450 | Ryzen 3400G | 250GB NVME | 16GB DDR4-3200| Win10 64 bit | KODI 18 | Logitech Harmony Elite | SONOS Playbar + SUB
    BedRoom: PLAY:3
    Kitchen: PLAY:3
    BathRoom: Play:3

  • du kannst alle echos bzw den entsprechenden channel der echos nach der letzten änderung abfragen....bspw
    val zuletzt = Lastvoicecommand_Gruppe.members.sortBy[lastUpdate].last
    so könntest du das sprachfeedback nur auf der alexa wiedergeben, die du auch angesprochen hast.

    Gute Idee, hab mein Beispiel aktualisiert: Amazon Echo Control Binding

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!