Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - OpenHAB mit Spracherkennung über HABdroid

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

    - √ - OpenHAB mit Spracherkennung über HABdroid

    Hallo,

    habe soeben die Spracherkennung unter HABdroid (1.4.0) ausprobiert. Bin begeistert, wie einfach die Sache ist!
    Folgender Eintrag im Items-File

    Code:
    String VoiceCommand
    Und dann noch endsprechende Rules, z.B.:
    Code:
    ...
    rule "Esstischlampe einschalten"
            when
                    Item VoiceCommand received command Esstisch or
                    Item VoiceCommand received command esstisch
            then
                    if (Licht_EG_Esszimmer_Esstisch.state == OFF) {
                            Licht_EG_Esszimmer_Esstisch.sendCommand(ON)
                    } else {
                            Licht_EG_Esszimmer_Esstisch.sendCommand(OFF)
                    }
    end
    ...
    und schon geht das Licht über dem Esstisch an bzw. aus, sobald "Esstisch" gesprochen wird, je nachdem, ob es vorher aus oder an war.

    Nun wäre es natürlich noch schöner, wenn man sagen könnte, "Esstisch an" bzw. "Esstisch aus". Habdroid kann auch mit zwei übertragenen Wörtern umgehen und laut Log landen diese auch korrekt im VoiceCommand-Item nur leider haut's mit der Condition in der Rule nicht hin, da keine der folgenden Conditions funktioniert:

    Code:
    Item VoiceCommand received command Esstisch an
    Item VoiceCommand received command "Esstisch an"
    Item VoiceCommand received command 'Esstisch an'
    Ich befürchte fast, dass ein Command kein Leerzeichen enthalten darf. Oder gibt es da andere Möglichkeiten?

    Danke & Gruß,
    thoern

    #2
    Lass dir das empfangene Command doch mal anzeigen:
    Code:
    rule "test"
    
    when Item VoiceCommand received command then
    
    logInfo("rule","VoiceCommand received command " + receivedCommand)
    
    ...
    Holger

    Kommentar


      #3
      Hallo Holger,

      der loggt das sowieso mit. Hier ein Auszug aus dem events.log:

      Code:
      2013-12-29 14:31:43 - VoiceCommand received command Esstisch an
      Deshalb sag ich ja, dass es richtig ankommt.

      Gruß,
      thoern

      Kommentar


        #4
        und wenn du jetzt einfach nur auf ein Command wartest und in der Rule dann den Vergleich machst ? If bzw switch/case ?

        Holger

        Kommentar


          #5
          Zitat von HolgerW Beitrag anzeigen
          und wenn du jetzt einfach nur auf ein Command wartest und in der Rule dann den Vergleich machst ? If bzw switch/case ?

          Holger
          Hmm,

          genau das, sprich mit if bzw. switch/case zu unterscheiden, habe ich auch versucht, nur das seltsame ist, dass ohne explizite Nennung des Kommandos die Regel gar nicht ausgeführt wird. Also so etwas funktioniert leider nicht:

          Code:
          rule "test"  when 
                 Item VoiceCommand received command 
          then
          ....
          Warum auch immer, ich muss das Kommando tatsächlich aufführen, also so:
          Code:
          rule "test"  when 
                 Item VoiceCommand received command Esstisch
          then
          ....
          Gruß,
          thoern

          Kommentar


            #6
            Sicher das er die Rule nicht ausführt ? Dann wäre das evtl. ein Bug, da müssen sich andere dazu äußern.
            Hast du den IF mit equals getestet, also
            if (receivedCommand.equals("esstisch an")) ... ?

            Holger

            Kommentar


              #7
              Vermute auch, dass es ein Bug ist. Auch deine Regel wird nicht ausgeführt, auch hier nur, wenn explizit das Kommando genannt wird.


              Gruß,
              thoern

              Kommentar


                #8
                Versuch mal auf "Item VoiceCommand changed" abzufragen und dann mit .state den Wert auszulesen

                meine letzte Idee
                Holger

                Kommentar


                  #9
                  Hi,

                  Zitat von thoern Beitrag anzeigen
                  Vermute auch, dass es ein Bug ist. Auch deine Regel wird nicht ausgeführt, auch hier nur, wenn explizit das Kommando genannt wird.
                  Über diesen Bug war ich beim Spielen mit den VoiceCommands ebenso gestolpert - und habe ihn direkt gefixt: https://github.com/openhab/openhab/issues/651

                  Mit Snapshots seit dem 14.12. sollte es also funktionieren!

                  Grüße,
                  Kai

                  Kommentar


                    #10
                    Code:
                    rule "Couchlampe einschalten"
                         when
                                    Item VoiceCommand received command "Couch ein" or
                                    Item VoiceCommand received command "couch ein" or
                                    Item VoiceCommand received command "Sofa ein" or
                                    Item VoiceCommand received command "sofa ein" or
                                    Item VoiceCommand received command "Couch an" or
                                    Item VoiceCommand received command "couch an" or
                                    Item VoiceCommand received command "Sofa an" or
                                    Item VoiceCommand received command "sofa an"
                    then
                                    Light_GF_Living_Table.sendCommand(ON)
                    end
                    
                    rule "Couchlampe ausschalten"
                            when
                                    Item VoiceCommand received command "Couch aus" or
                                    Item VoiceCommand received command "couch aus" or
                                    Item VoiceCommand received command "Sofa aus" or
                                    Item VoiceCommand received command "sofa aus"
                    then
                                    Light_GF_Living_Table.sendCommand(OFF)
                    end
                    und im .item
                    Code:
                    String VoiceCommand
                    Bei mir kommt im Log
                    VoiceCommand received command Couch an

                    aber am "Licht verändert sich nichts, wo ist mein Denkfehler?

                    Danke frohes Neues und Gruß
                    Tom :-)

                    Kommentar


                      #11
                      Und das auf einem Snapshot seit dem 14.12. (s.o.)?

                      Kommentar


                        #12
                        Snapshot Build 551 oder 552 auf jeden Fall der in "Grün"

                        LG Tom

                        Kommentar


                          #13
                          Bevor wir hier alles durcheinander schmeißen, sollten wir erst einmal die Frage aus dem ersten Thread klären, nämlich, ob in einem Command überhaupt eine Leerzeichen enthalten sein darf. Wenn nein, ist das keine gültige Syntax:

                          Code:
                          Item VoiceCommand received command "Couch ein" or
                          Gruß,
                          thoern

                          Kommentar


                            #14
                            Zitat von kkreuzer Beitrag anzeigen

                            Mit Snapshots seit dem 14.12. sollte es also funktionieren!

                            Grüße,
                            Kai
                            Also sollte es wohl gehen thoern!

                            LG Tom

                            Kommentar


                              #15
                              Zitat von stone13 Beitrag anzeigen
                              Also sollte es wohl gehen thoern!

                              LG Tom
                              Was Kai behoben hat, war ein anderes (zweites) Problem, nämlich, dass ein Kommando explizit angegeben werden musste.
                              Die Frage, ob ein Kommando aus mehreren Wörtern bestehen darf - und damit ein Leerzeichen enthalten kann - wurde noch nicht geklärt.

                              Gruß,
                              thoern

                              Kommentar

                              Lädt...
                              X