Probleme mit einer Rule, Sprachsteuerung Alexa

Allgemeine Fragen zum Thema "Smart Home" und Entscheidungshilfen

Moderator: seppy

Antworten
pimp1310
Beiträge: 3
Registriert: 26. Feb 2020 17:47

Probleme mit einer Rule, Sprachsteuerung Alexa

Beitrag von pimp1310 »

Hallo,

ich habe folgendes Problem, und zwar habe ich im Wohnzimmer einen Echo und eine Kodi Installation, diese Steuer ich per Alexa um mir Livetv Sender zu starten.

das ganze geht auch wunderbar, hier mal der code :

Code: Alles auswählen

rule "schalte auf RTL"
when Item rtl received command
then TV_Kanal.sendCommand("RTL DEUTSCHLAND HD")
end
das item

Code: Alles auswählen

Switch rtl "rtl" ["Lighting"] 

jetzt wollte ich das ganze so erweitern das mein Kodi in der Küche auch per Sprache die Livetv Sender startet, natürlich ist in der Küche auch eine eigene Alexa vorhanden, also die gleiche situation wie im Wohnzimmer. dafür habe ich mir eine rule geschrieben, bzw die alte oben erweitert.

Code: Alles auswählen

rule "schalte auf prosieben" 
when Item prosieben received command 
then
    val currentEcho1 = Amazon_Echos.members.sortBy[lastUpdate].last
    if (currentEcho1 == Alexaechodot1_lastvoicecommand)
        {   TV_Kanal.sendCommand("Pro7 Deutschland HD") }
    if (currentEcho1 == Alexaechodot2_lastvoicecommand)
        {   TV_Kanal_kueche.sendCommand("Pro7 Deutschland HD") }
end

die items dazu


Code: Alles auswählen

Switch prosieben "Prosieben deutschland" (livetvsender) ["Lighting"]

Code: Alles auswählen

String TV_Kanal_kueche "Kanal [%s]" { channel="kodi:kodi:a298e530-5c4a-f18a-1b6b-958af78700ea:pvr-open-tv"}

Code: Alles auswählen

String TV_Kanal "Kanal [%s]" { channel="kodi:kodi:f3e8b3c5-c76c-5411-9fb9-94bb8de0b33a:pvr-open-tv"}

und die Group

Code: Alles auswählen

Group Amazon_Echos "Amazon Echos"
Group Amazon_Echosspeech "Amazon Echos Speech"
Group:Contact:OR(OPEN,CLOSED) Fenster      "Fenster [MAP(fenstersensoren.map):%s]"         <window>
String      Alexaechodot1_lastvoicecommand              "letzer Sprachbefehl"     (Amazon_Echos)      { channel="amazonechocontrol:echo:3e611610:G090XG0793060A9N:lastVoiceCommand" }
String      Alexaechodot3_lastvoicecommand              "letzer Sprachbefehl"          (Amazon_Echos)   { channel="amazonechocontrol:echo:3e611610:G090XG0793351UHL:lastVoiceCommand" }
String      Alexaechodot2_lastvoicecommand              "letzer Sprachbefehl"         (Amazon_Echos)    { channel="amazonechocontrol:echo:3e611610:G6G0XG08943404N0:lastVoiceCommand" }


das Problem ist aber das er egal welchen der beiden echos anspreche und sage

Code: Alles auswählen

schalte Prosieben Deutschland ein
, er immer nur den Befehl an

Code: Alles auswählen

TV_Kanal_kueche
sendet. er nimmt also nie den oberen teil der Rule immer nur dass untere .

Also muss da irgendwo ein Fehler sein, ich finde ihn aber einfach nicht. oder gibt es einen anderen weg?
ich vermute das es mit der Sortierung zu tun hat wo ich entscheide welche alexa angesprochen wurde.

Hoffe das hier jemand eine idee dazu hat :?

ibot1989
Beiträge: 99
Registriert: 30. Jul 2016 19:51
Wohnort: östlich von Hamburg, südlich von Lübeck, nördlich von Geesthacht

Re: Probleme mit einer Rule, Sprachsteuerung Alexa

Beitrag von ibot1989 »

Klingt sehr interessant die Idee.

Ich wusste bis zu deinem Post nicht, dass man die letzten Sprachbefehle auslesen kann pro Alex.

Nutz du das Alexa Control Binding? Welche Version?

Ich würde das dann bei mir mal versuchen einzurichten.

Gruß iBot

Benutzeravatar
udo1toni
Beiträge: 13930
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Probleme mit einer Rule, Sprachsteuerung Alexa

Beitrag von udo1toni »

Vermutlich greifst Du auf den falschen Wert zu.

Ich gehe davon aus, dass Du wissen willst, von welchem Gerät der Befehl kam.

Code: Alles auswählen

rule "schalte auf prosieben" 
when Item prosieben received command 
then
    val currentEcho1 = Amazon_Echos.members.sortBy[lastUpdate].last.name
    if (currentEcho1 == "Alexaechodot1_lastvoicecommand")
        {   TV_Kanal.sendCommand("Pro7 Deutschland HD") }
    if (currentEcho1 == "Alexaechodot2_lastvoicecommand")
        {   TV_Kanal_kueche.sendCommand("Pro7 Deutschland HD") }
end
Wobei ich inständig hoffe, dass diese Rule nur als Beispiel zu verstehen ist. Oder hast Du für jeden wählbaren Kanal ein eigenes Item?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten