FHEM Sprachsteuerung mit AMAD 2.6 und AutoVoice/Automagic

Begonnen von CoolTux, 11 August 2016, 14:15:31

Vorheriges Thema - Nächstes Thema

perseusarm

Bei mir wills einfach nicht funktionieren.
Jetzt hab ich alles schon auf ein minimum zurückgeschraubt (zur Fehlersuche) aber im fhem kommt nichts an.
Vielleicht könnt Ihr Euch das mal bitte ansehen.
Danke

CommandFilter im Trigger:
(schaltet|schalte|schalt)(das|die|den)(licht|steckdose)(an|aus)


fhemdevice = "null";
fhemalias = "null";

if(matches(avcomm, '.+(an|ein)$'))
{
value = "on";
}
if(matches(avcomm, '.+(aus)$'))
{
value = "off";
}

// Steckdosen schalten
    if(matches(avcomm, '(?i:.+(licht).+)'))
    {fhemdevice = "SD6";}
           
setcmd = "{fhemdevice} {value}";
fhemcmd = "set";



Wenn ich sage "OK Google, schalte das licht an" kommt die Meldung
received poosibble commands: schalte das licht an

Sonst passiert nichts.
Im reading receiveVoiceCommand der AMADCommBridge steht null
FHEM auf NUC, CUL866, HM-.*, Raspimatc, ...

CoolTux

Du musst erstmal schauen ob Dein Trigger überhaupt an springt. Dazu am besten auf das Trigger Oval klicken und das Plus etwas runter ziehen und los lassen, dann Condition auswählen und dort Debug. Wenn du das hast noch mal testen, da sollte sich dann ein Fenster öffnen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

perseusarm

Da finde ich nur die conditions, aber kein Debug. Auch bei den Actions gibts kein Debug. Hab auch mal gegoogelt aber auch nichts zu Debug in Automagic gefunden.
FHEM auf NUC, CUL866, HM-.*, Raspimatc, ...

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

perseusarm

Oh sorry, ja das war´s. Seit dem ich den Debug-Dialog drinnen hab gehts...
Blöderweise hab ich noch zwei drei andere Sachen gleichzeitig verstellt - wahrscheinlich habe ich damit meinen Fehler ausgemerzt.
Vielen vielen Dank für die schnelle Hilfe
FHEM auf NUC, CUL866, HM-.*, Raspimatc, ...

CoolTux

Dann lag es am ändern. Der Debug Dialog hat keinen Einfluss der ist nur gut zum testen ob getriggert wird oder ob Conditions entsprechend korrekt interpretiert werden.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TomLee

Hi,

mir kam gestern die Idee die Sprachsteuerung möglicherweise am Flurtablet zur Hauseingangstür zu verwenden. Mit  einem "Ich bin hier" bzw. "Ich bin da" im vorbeigehen, soll der dummy du_Homestatus on bzw. off geschaltet werden.

Mit Command Filter
(ich|) (bin|)

und ähnlichem wie

fhemdevice = "null";
fhemalias = "null";


if(matches(avcomm, '.+(hier|da|)$'))
{
value = "on";
}
if(matches(avcomm, '.+(weg|fort)$'))
{
value = "off";
}



// Licht/Beleuchtung schalten

if(matches(avcomm, '(?i:.+(ich).+)') or matches(avcomm, '(?i:.+(bin).+)'))
{


    if(matches(avcomm, '(?i:.+(ich).+)'))
    {
        if(matches(avcomm, '(?i:.+(bin).+)'))
        {
            fhemdevice = "du_Homestatus";
   
        }

       
    }


wird das nix, aber bekomme ich immerhin Tee angeboten    :)
Hättest dazu ne Idee wie man das realisieren könnte?

Grüße

Thomas


CoolTux

Er konnte kein Device zu ordnen. Ich denke es liegt hier dran

if(matches(avcomm, '(?i:.+(ich).+)'))


Ich bin zu Hause

Ich ist das erste Wort. Laut der Regex erwartet er aber davor noch etwas. Also wenn dann


if(matches(avcomm, '(?i:^(ich).+)'))


Ungetestet
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TomLee

So sieht jetzt der Code aus
Zitat// Licht/Beleuchtung schalten

if(matches(avcomm, '(?i:^(ich).+)') or matches(avcomm, '(?i:^(bin).+)'))
{

if(matches(avcomm, '(?i:^(ich).+)'))
   
    {
        if(matches(avcomm, '(?i:^(bin).+)'))
        {
            fhemdevice = "du_Homestate";
             
    fhemalias = "ich bin";
        }
  }


Im Debug Dialog ist die Condition true.  :D
Bei fhemdevice und fhemalias steht "null"    :(

CoolTux


// Licht/Beleuchtung schalten

if(matches(avcomm, '(?i:^(ich).+)') or matches(avcomm, '(?i:.+(bin).+)'))
{


    if(matches(avcomm, '(?i:^(ich).+)'))
    {
        if(matches(avcomm, '(?i:.+(bin).+)'))
        {
            fhemdevice = "du_Homestatus";
   
        }

       
    }
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TomLee

#85
Ups   ::)

Kaum macht mans richtig gehts. Hatte zwar noch Probleme irgendwie mit dem Namen des Dummys, nachdem ich ihn aber umbenannt habe in "du_ Homy" geht's nun.
Doch jetzt hab ich auf einmal das Problem das die Stimme in einer Endlosschleife mit sich selbst redet. Bei "Ich bin hier" bestätigt sie das sie auf on gesetzt hat , dann gehts immer weiter mit "Ich habe dich nicht verstanden soll ich dir...
Das gleiche beim ausschalten mit "Ich bin weg".
Das geht so ein paar mal dann kommt dieser Beep Ton von AutoVoice alle paar Sekunden. Erst nach einem de.- und dann wieder aktivieren von "Control Continiuous" ist dann wieder alles normal.
Kann man die Sprachausgabebestätigung  unterdrücken? 

Edit:
Hab gerade bemerkt 😊 die Lautstärke, wenn Expression "true" ist,  auf 0 zu stellen wäre eine Möglichkeit

Amenophis86

ich habe auch ein kleines Problem. Und zwar habe ich einen Dummy, welcher nicht mit den Werten "on / off" arbeitet, sondern mit "TV / normal / off".

Jetzt habe ich das Script wie folgt angepasst:


fhemdevice = "null";

if(matches(avcomm, '.+(an|ein)$'))
{
value="on";
}
if(matches(avcomm, '.+(aus)$'))
{
value="off";
}

if(matches(avcomm, '(?i:.+(licht).+'))
{
if(matches(avcomm, '(?i:.+(schlafzimmer).+'))
{
fhemdevice = "SZ.LED";

if(matches(avcomm, '(?i:.+(normal).+'))
{
  value="normal";
}
  if(matches(avcomm, '(?i:.+(tv).+'))
{
  value="TV";
}
  if(matches(avcomm, '(?i:.+(aus).+'))
{
  value="off";
}

}
}

setcmd ="{fhemdevice} {value}";
fhemcmd = "set";


Wenn ich jetzt sage "Schalte das Licht im Schlafzimmer auf normal" kommt beim Dummy immer "null" an. Gleiches bei "TV". Nur "aus" (=off) funktioniert.

Da noch andere Geräte im gleichen Flow geschaltet werden, habe ich das on/off oben drin stehen. Wieso erkennt er nicht, dass er value mit den Werten "TV/normal" ersetzen muss anstelle von on/off. Die Bedingung kommt doch viel später?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

CoolTux

Weil Deine Regex nicht stimmt. Du sagst das Wort normal oder Tv als letztes. Also muß Deine Regex auch so sein das nach dem Wort nichts mehr erwartet wird. Schau Dir oben an die die Regex für an und aus ausschaut.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Amenophis86

#88
Danke, werde es gleich mal versuchen. Mit diesen Regex tue ich mich noch sehr schwer. Sind das die gleichen, wie hier genannt: http://perldoc.perl.org/perlrequick.html also Perl Regex??

Edit:
funktioniert. Vielen Dank :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

CoolTux

Nein in diesem Fall sind es Java Regex. Automagic ist ja eine Java Anwendung.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net