Ankündigung

Einklappen
Keine Ankündigung bisher.

Variablen für VoiceCommand

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Variablen für VoiceCommand

    Hallo,

    ich möchte per VoiceCommand ein Licht dimmen. Schalten funktioniert prima:
    Code:
    rule "Licht Bad einschalten"
    when
        Item VoiceCommand received command 
    then
        if(receivedCommand=="licht bad ein" || receivedCommand=="licht bad an") {
            DeckenlichtBad.sendCommand(ON)
        }
    end
    
    rule "Licht Bad ausschalten"
    when
        Item VoiceCommand received command 
    then
        if(receivedCommand=="licht bad aus") {
            DeckenlichtBad.sendCommand(OFF)
        }
    end
    Für's Dimmen sollte ein Befehl möglich sein, wie Licht 60% dimmen, aber wie bekomme ich das als Rule abgebildet, ohne für jeden Dimmschritt eine Rule zu erstellen.
    Es sollte sowas möglich sein, wie:
    Code:
    if(receivedCommand=="licht bad !VARIABLE!") {
            DeckenlichtBadDimmen.sendCommand(!VARIABLE!)
    }
    Geht das irgendwie?

    Viele Grüße
    Michael

    #2
    Servus Stähler,

    hab zwar keine Lösung, aber der Thread interessiert mich auch. Ich hänge mich deshalb mal als Nassauer mit dran
    Wäre natürlich auch für Rollos / Jalousien cool, diese per VoiceCommand zu verfahren - wobei eigentlich würden hier ja 10%-Schritte reichen. Ich glaub, ich werde das mal ausprobieren...

    Mit Grüßen vom Berch!
    Thomas

    Kommentar


      #3
      Ich versuche mal eine mögliche Lösung, ist allerdings ungetestet:

      Code:
      var String command = VoiceCommand.state.toString
      if(command.startsWith("licht bad ")) {
          var String itemCommand = command.replace("licht bad ","")
          DeckenlichtBadDimmen.sendCommand(itemCommand)
      }
      Der Königsweg wären an dieser Stelle wohl Reguläre Ausdrücke, ich weiß aber nicht ob die in den Rules unterstützt werden.
      Gruß
      Tobias

      Kommentar


        #4
        Der Königsweg wären an dieser Stelle wohl Reguläre Ausdrücke, ich weiß aber nicht ob die in den Rules unterstützt werden.
        Ich werde Deine Rule mal testen. Aber wie Du schon sagst, der Königweg wäre eine flexible Spracherkennung.
        So sollte z.B. eine Erkennung wie "Fernseher im Wohnzimmer bitte ausschalten" einfach auf Substings triggern und die Aktion "Fernseher Wohnzimmer aus" ausführen.
        Das würde vermutlich doe Google Engine auch besser verstehen, denn ein Befehl, wie "Musik aus" resultiert oft in "Musikhaus" ;-)

        Kurz: ein flexibles Regelwerk für Befehlserkennung wäre sehr schick und dem WAF sehr zuträglich ;-)

        Kommentar


          #5
          Ich halte ein Binding für eine gute Lösung, da dann z. B. auch natürliche Chats/Mails möglich wären. Das Binding könnte zum Beispiel auf die Labeltexte der Items ein Scoring machen und dann loslegen.

          Gibt es nicht Java Libraries für sowas?

          Sascha

          Kommentar


            #6
            Es gibt eine Android Software (AIVC), welche solch eine flexible Sprachsteuerung ermöglicht (via HTTP-Requests). Theoretisch geht das auch, aber bei vielen Items wird die Konfiguration etwas zu umständlich und vor allem muss ich dann eine neue App am Handy starten. Schöner wäre das schon per HABDroid.
            Vielleicht besteht da ja Interesse ein entsprechendes Binding oder Impementierung zu entwickeln?

            Ich kann sowas leider nicht, aber Ideen könnte ich ggf. beisteuern.

            Kommentar


              #7
              Code:
              var String command = VoiceCommand.state.toString
              if(command.startsWith("licht bad ")) {
                  var String itemCommand = command.replace("licht bad ","")
                  DeckenlichtBadDimmen.sendCommand(itemCommand)
              }
              Hat auf Anhieb funktioniert. Danke!

              Dennoch wäre eine flexiblere Lösung langfristig schöner, da diese eine natürliche Sprache besser unterstützen könnte.

              Kommentar


                #8
                Habe gerade für eine kleine Philips Hue + Sonos Demo folgende Testregel aufgesetzt:
                Code:
                rule "Voice control"
                when
                	Item VoiceCommand received command
                then
                	val txt = receivedCommand.toString.toLowerCase
                	if(txt.contains("licht") || txt.contains("lampe")) {
                		if(txt.contains("rot")) Light_Table.sendCommand("0,100,100") else
                		if(txt.contains("grün")) Light_Table.sendCommand("120,100,100") else
                		if(txt.contains("blau")) Light_Table.sendCommand("240,100,100") else
                		if(txt.contains("aus")) Light_Table.send(OFF) else
                		if(txt.contains("an")) Light_Table.send(ON)
                	} else if(txt.contains("bett")) {
                		Pause.send(ON)
                		Light_Table.sendCommand("0,0,10")
                		say("Gute Nacht!")		
                	} else if(txt.contains("essen")) {
                		Light_Table.sendCommand("30,30,80")
                		Play.send(ON)
                		Volume.sendCommand(20)
                		say("Guten Appetit!")		
                	} else {
                		if(txt.contains("aus")) Pause.send(ON) else
                		if(txt.contains("stop")) Pause.send(ON) else
                		if(txt.contains("start")) Play.send(ON) else
                		if(txt.contains("spiel")) Play.send(ON) else
                		if(txt.contains("nächst")) Next.send(ON) else
                		if(txt.contains("vorher")) Previous.send(ON) else
                		if(txt.contains("vor")) Next.send(ON) else
                		if(txt.contains("zurück")) Previous.send(ON)
                
                		if(txt.contains("lauter")) Volume.sendCommand(INCREASE)
                		if(txt.contains("leiser")) Volume.sendCommand(DECREASE)
                	}
                end
                Das funktioniert erstaunlich gut und ich kann fast beliebige Sätze in natürlicher Sprache sagen. Da sieht man, wie redundant Sprache an sich ist

                Direkte Prozentwerte kann ich damit nicht anspringen, aber mit ON/OFF/INC/DEC lässt sich das schon recht gut nutzen. Vielleicht kann man ja auch Worte wie "etwas"/"leicht" auswerten und dann ein "Bitte die Lampe leicht einschalten" auf 50% mappen.

                Wenn man mehr machen will, sollte man natürlich nicht mit diesen if/else-Strukturen weitermachen, das war nur für die schnelle Demo. Da müsste man mal über eine passende Datenstruktur nachdenken, wie man das ablegen kann und das dann ggf. direkt über ein eigenes Add-on realisieren.

                Grüße,
                Kai

                Kommentar


                  #9
                  Cool, danke für das Beispiel. Damit werde ich auch mal rumspielen :-)

                  Kai, Dein Beispiel wäre doch was für das Wiki, oder?

                  Wie bekommst Du das mit dem Umlauten hin, wie in Deinem Beispiel "nächst". Bei mir bekommt OH keine Umlaute sondern "Klötzchen"-Buchstaben, die natürlich nicht matchen. Daher ist die Küche derzeit noch ohne VoiceCommand ;-) OH läuft bei mir noch auf Linux auf'm Raspi.

                  Kommentar


                    #10
                    Zitat von staehler Beitrag anzeigen
                    Kai, Dein Beispiel wäre doch was für das Wiki, oder?
                    Nee, ist nämlich deutsch
                    Wenn Du die Muße hast, darfst Du es aber gerne klauen und ins Samples-Wiki stellen!

                    Zitat von staehler Beitrag anzeigen
                    Wie bekommst Du das mit dem Umlauten hin
                    Klappt bei mir problemlos - aber es kann sein, dass das erst im aktuellen Snapshot von HABDroid drin ist und nicht in der Releaseversion. Versuch's mal damit.

                    Grüße,
                    Kai

                    Kommentar


                      #11
                      Danke für das Beispiel !
                      Mein aktuelles Highlight ist allerdings ins HABdroid "staubsaugen" zu rufen und der Roomba Staubsaugroboter beginnt seine Arbeit

                      Holger

                      Kommentar


                        #12
                        Irgendwann kommt noch einer auf die Idee, die Frau mit openHAB auszusteuern....

                        Kommentar

                        Lädt...
                        X