Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - OpenHAB mit Spracherkennung über HABdroid

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

    #31
    Hi,

    gehen bei euch denn auch die Umlaut? Ich versuche es gerade mit Snapshot 591 und dem aktuellen Habdroid und bekomme im Toast das richtige erkannt, aber im Log
    Code:
    20:46:30.290 INFO  runtime.busevents[:22] - VoiceCommand received command K�chen Licht
    also das Ü als Sonderzeichen.

    Meine Rule ist UTF-8 codiert.
    Wo kann hier der Fehler sein?

    EDIT: Wenn das Rule-File ISO8859-2 codiert ist, dann funktioniert es.

    Danke & Gruß
    Sascha

    Kommentar


      #32
      Das ist genau der Fehler, den ich auch feststelle...
      Danke für den Edit-Tipp mit der Formatierung.
      Aber sollte das nicht auch mit UTF-8 klappen? Umlaute sind da doch kein Problem?!?

      Michael

      Kommentar


        #33
        Ahh, das mit dem Zeichensatz ist ein guter Tipp. Werde ich bei Gelegenheit auch noch testen.

        Zitat von maddog Beitrag anzeigen
        Aber sollte das nicht auch mit UTF-8 klappen? Umlaute sind da doch kein Problem?!?

        Michael
        Naja, der ISO8859-2 kennt ja die deutschen Umlaute auch. Problematisch wird es halt, wenn die jeweiligen Komponenten (Habdroid, Openhab, Rule-Files, ggf.Webserver, etc.) unterschieldliche Zeichensätze verwenden und / oder keine richtige Konvertierung stattfindet...

        Mit Zeichensätzen kann man richtig Spaß haben....

        Gruß,
        thoern

        Kommentar


          #34
          Befehle mit Leerzeichen

          Hallo,

          habe gerade durch Zufall diesen Beitrag entdeckt. Ich habe meine Sprachbefehle wie folgt in nur einer einzigen Rule untergebracht:

          Code:
          rule "Voicecontrol"
          	when
          		Item VoiceCommand received command
          	then
          		
          		if(receivedCommand=="DVD Lampe einschalten" ||
          		   receivedCommand=="DVD Lampe an"){
          		Licht_DVDLampe.sendCommand(ON)  }
                  
                          if(receivedCommand=="DVD Lampe ausschalten" ||
          		   receivedCommand=="DVD Lampe aus") {
          		Licht_DVDLampe.sendCommand(OFF) }
                  
                          if(receivedCommand=="Chrome Lampe einschalten" ||
          		   receivedCommand=="Chrome Lampe an") {
          		Licht_Chromelampe.sendCommand(ON) }
                  
                          if(receivedCommand=="Chrome Lampe ausschalten" ||
          		   receivedCommand=="Chrome Lampe aus") {
          		Licht_Chromelampe.sendCommand(OFF) }
          		
          		if(receivedCommand=="Ikea Lampe einschalten" ||
          		   receivedCommand=="Ikea Lampe an") {
          		Licht_IKEALampe.sendCommand(ON) }  
          
          		if(receivedCommand=="Ikea Lampe ausschalten" ||
          		   receivedCommand=="Ikea Lampe aus") {
          		Licht_IKEALampe.sendCommand(OFF) }
          		
          		if(receivedCommand=="alle Lampen einschalten" ||
          		   receivedCommand=="alle Lampen an") {
          		Licht_DVDLampe.sendCommand(ON)
          		Licht_Chromelampe.sendCommand(ON)
          		Licht_IKEALampe.sendCommand(ON) }
          
          		if(receivedCommand=="alle Lampen ausschalten" ||
          		   receivedCommand=="alle Lampen aus") {
          		Licht_DVDLampe.sendCommand(OFF)
          		Licht_Chromelampe.sendCommand(OFF)
          		Licht_IKEALampe.sendCommand(OFF) }
                  end
          Funktioniert absolut fehlerfrei :-)

          Kommentar


            #35
            Hi,

            es gibtvielleicht einenoch elegantere Methode. Ich habe es wie folgt implementiert (war ein Tipp von Kai):
            Code:
            rule "Voice control"
            when
                Item VoiceCommand received command
            then
                val txt = receivedCommand.toString.toLowerCase
            //Wohnzimmer
                if(txt.contains("front") || txt.contains("fernseh")) {
                    if(txt.contains("ein")) sendCommand(WandlichtWohnzimmerFront, ON) else 
                    if(txt.contains("start")) sendCommand(WandlichtWohnzimmerFront, INCREASE) else
                    if(txt.contains("an")) sendCommand(WandlichtWohnzimmerFront, ON) else
                    if(txt.contains("aus")) sendCommand(WandlichtWohnzimmerFront, OFF) else
                    if(txt.contains("stop")) sendCommand(WandlichtWohnzimmerFront, STOP) else
                    if(txt.contains("heller")) sendCommand(WandlichtWohnzimmerFront, INCREASE) else
                    if(txt.contains("dunkler")) sendCommand(WandlichtWohnzimmerFront, DECREASE) 
                } else if(txt.contains("treppe") || txt.contains("back") || txt.contains("rück")) {
                    if(txt.contains("ein")) sendCommand(WandlichtWohnzimmerBack, ON) else
                    if(txt.contains("start")) sendCommand(WandlichtWohnzimmerBack, INCREASE) else
                    if(txt.contains("an")) sendCommand(WandlichtWohnzimmerBack, ON) else
                    if(txt.contains("aus")) sendCommand(WandlichtWohnzimmerBack, OFF) else
                    if(txt.contains("stop")) sendCommand(WandlichtWohnzimmerBack, STOP) else
                    if(txt.contains("heller")) sendCommand(WandlichtWohnzimmerBack, INCREASE) else
                    if(txt.contains("dunkler")) sendCommand(WandlichtWohnzimmerBack, DECREASE) 
                }  else if(txt.contains("decke")) {
                    if(txt.contains("ein")) sendCommand(DeckenlichtWohnzimmerSchalten, ON) else
                    if(txt.contains("start")) sendCommand(DeckenlichtWohnzimmerSchalten, ON) else
                    if(txt.contains("an")) sendCommand(DeckenlichtWohnzimmerSchalten, ON) else
                    if(txt.contains("aus")) sendCommand(DeckenlichtWohnzimmerSchalten, OFF) else
                    if(txt.contains("stop")) sendCommand(DeckenlichtWohnzimmerSchalten, OFF)
            
            //Balkon
                } else if(txt.contains("balkon") && txt.contains("licht")) {
                    if(txt.contains("ein") || txt.contains("start") || txt.contains("an")) sendCommand(LichtBalkonSchalten, ON) else
                    if(txt.contains("aus") || txt.contains("stop")) sendCommand(LichtBalkonSchalten, OFF)
            //Esszimmer
                } else if(txt.contains("ess")) {
                    if(txt.contains("ein")) sendCommand(DeckenlichtEsszimmerSchalten, ON) else
                    if(txt.contains("start")) sendCommand(DeckenlichtEsszimmerSchalten, ON) else
                    if(txt.contains("an")) sendCommand(DeckenlichtEsszimmerSchalten, ON) else
                    if(txt.contains("aus")) sendCommand(DeckenlichtEsszimmerSchalten, OFF) else
                    if(txt.contains("stop")) sendCommand(DeckenlichtEsszimmerSchalten, OFF)
            //Küche
                } else if(txt.contains("küche")) {
                    if(txt.contains("ambiente") || txt.contains("boden")) {
                        if(txt.contains("ein")) sendCommand(LEDKuecheSchalten, ON) else
                        if(txt.contains("start")) sendCommand(LEDKuecheSchalten, ON) else
                        if(txt.contains("an")) sendCommand(LEDKuecheSchalten, ON) else
                        if(txt.contains("aus")) sendCommand(LEDKuecheSchalten, OFF) else
                        if(txt.contains("stop")) sendCommand(LEDKuecheSchalten, OFF)
                    } else if(txt.contains("licht") || txt.contains("decke") || txt.contains("leuchte")) {
                        if(txt.contains("ein")) sendCommand(DeckenlichtKueche, ON) else
                        if(txt.contains("start")) sendCommand(DeckenlichtKueche, ON) else
                        if(txt.contains("an")) sendCommand(DeckenlichtKueche, ON) else
                        if(txt.contains("aus")) sendCommand(DeckenlichtKueche, OFF) else
                        if(txt.contains("stop")) sendCommand(DeckenlichtKueche, OFF)
                    }
            //Schlafzimmer
                } else if(txt.contains("schlafzimmer")) {
                    if(txt.contains("ambiente") || txt.contains("boden")) {
                        if(txt.contains("ein") || txt.contains("start") || txt.contains("an")) sendCommand(LEDSchlafzimmerSchalten, ON) else
                        if(txt.contains("aus") || txt.contains("stop")) sendCommand(LEDSchlafzimmerSchalten, OFF) 
                    } else if(txt.contains("licht") || txt.contains("decke") || txt.contains("leuchte")) {
                        if(txt.contains("ein") || txt.contains("start") || txt.contains("an")) sendCommand(DeckenlichtSchlafzimmerSchalten, ON) else
                        if(txt.contains("aus") || txt.contains("stop")) sendCommand(DeckenlichtSchlafzimmerSchalten, OFF) 
                    }
            //Bad
                } else if(txt.contains("bad")) {
                    if(txt.contains("wanne")) {
                        if(txt.contains("ein") || txt.contains("start") || txt.contains("an")) sendCommand(WannenlichtBad, ON) else
                        if(txt.contains("aus") || txt.contains("stop")) sendCommand(WannenlichtBad, OFF) 
                    } else if(txt.contains("decke")) {
                        if(txt.contains("ein") || txt.contains("start") || txt.contains("an")) sendCommand(DeckenlichtBad, ON) else
                        if(txt.contains("aus") || txt.contains("stop")) sendCommand(DeckenlichtBad, OFF) 
                    }
            //Galerie
                }  else if(txt.contains("galerie")) {
                    if(txt.contains("licht")) {
                        if(txt.contains("ein")) sendCommand(DeckenlichtGalerie, ON) else
                        if(txt.contains("start")) sendCommand(DeckenlichtGalerie, INCREASE) else
                        if(txt.contains("an")) sendCommand(DeckenlichtGalerie, ON) else
                        if(txt.contains("aus")) sendCommand(DeckenlichtGalerie, OFF) else
                        if(txt.contains("stop")) sendCommand(DeckenlichtGalerie, STOP) else
                        if(txt.contains("heller")) sendCommand(DeckenlichtGalerie, INCREASE) else
                        if(txt.contains("dunkler")) sendCommand(DeckenlichtGalerie, DECREASE) 
                    } else if(txt.contains("computer")) {
                        if(txt.contains("ein")) sendCommand(GalerieComputerSchalten, ON) else
                        if(txt.contains("an")) sendCommand(GalerieComputerSchalten, ON) else
                        if(txt.contains("aus")) sendCommand(GalerieComputerSchalten, OFF) 
                    } else if(txt.contains("drucker")) {
                        if(txt.contains("ein")) sendCommand(DruckerSchalten, ON) else
                        if(txt.contains("an")) sendCommand(DruckerSchalten, ON) else
                        if(txt.contains("aus")) sendCommand(DruckerSchalten, OFF) 
                    } else if(txt.contains("steckdose")) {
                        if(txt.contains("ein")) sendCommand(GalerieSteckdoseSuedSchalten, ON) else
                        if(txt.contains("an")) sendCommand(GalerieSteckdoseSuedSchalten, ON) else
                        if(txt.contains("aus")) sendCommand(GalerieSteckdoseSuedSchalten, OFF) 
                    }
            //Szenen
                } else         
                    if(txt.contains("schatten")) SzenennummerRollo.sendCommand(3) else
                    if(txt.contains("ambiente")) SzenennummerPanel.sendCommand(5) else
                    if(txt.contains("film")) SzenennummerPanel.sendCommand(6) else
                    if(txt.contains("fernseh")) SzenennummerPanel.sendCommand(6) else
                    if(txt.contains("lichter")) AlleLichter.sendCommand(OFF) else
                    if(txt.contains("nacht")) SzenennummerPanel.sendCommand(7)
                  else if(txt.contains("szene")) {
                    if(txt.contains("schatten")) SzenennummerRollo.sendCommand(3) else
                    if(txt.contains("auf")) SzenennummerRollo.sendCommand(2) else
                    if(txt.contains("zu")) SzenennummerRollo.sendCommand(0) else
                    if(txt.contains("ambiente")) SzenennummerPanel.sendCommand(5) else
                    if(txt.contains("film")) SzenennummerPanel.sendCommand(6) else
                    if(txt.contains("fernseh")) SzenennummerPanel.sendCommand(6) else
                    if(txt.contains("alles aus")) AllesAus.sendCommand(OFF) else
                    if(txt.contains("lichter")) AlleLichter.sendCommand(OFF) else
                    if(txt.contains("nacht")) SzenennummerPanel.sendCommand(7)
            //WLAN
                } else if(txt.contains("wlan")) {    
                    if(txt.contains("ein")) sendCommand(WLAN, ON) else
                    if(txt.contains("an")) sendCommand(WLAN, ON) else
                    if(txt.contains("aus")) sendCommand(WLAN, OFF) 
            //Rollo    
                } else if(txt.contains("rollo") || txt.contains("jalousie")) {
                    if(txt.contains("hoch") || txt.contains("auf") || txt.contains("öffnen")) {
                        if(txt.contains("wohnzimmer")) sendCommand(RolloWZgemeinsam, UP) else
                        if(txt.contains("rechts")) sendCommand(RolloWohnzimmerRechts, UP) else
                        if(txt.contains("links")) sendCommand(RolloWohnzimmerLinks, UP) else
                        if(txt.contains("gästezimmer")) sendCommand(RolloGaestezimmer, UP) else
                        if(txt.contains("schlafzimmer")) sendCommand(RolloSchlafzimmer, UP) else
                        if(txt.contains("bad")) sendCommand(RolloBad, UP) else
                        if(txt.contains("küche")) sendCommand(RolloKueche, UP) else
                        if(txt.contains("galerie")) sendCommand(RolloGalerie, UP) else {
                            sendCommand(RolloWZgemeinsam, UP)
                            sendCommand(RolloSZBADGZgemeinsam, UP)
                        }
                    } else if(txt.contains("runter") || txt.contains("ab") || txt.contains("schließen")) {
                        if(txt.contains("wohnzimmer")) sendCommand(RolloWZgemeinsam, DOWN) else
                        if(txt.contains("rechts")) sendCommand(RolloWohnzimmerRechts, DOWN) else
                        if(txt.contains("links")) sendCommand(RolloWohnzimmerLinks, DOWN) else
                        if(txt.contains("gästezimmer")) sendCommand(RolloGaestezimmer, DOWN) else
                        if(txt.contains("schlafzimmer")) sendCommand(RolloSchlafzimmer, DOWN) else
                        if(txt.contains("bad")) sendCommand(RolloBad, DOWN) else
                        if(txt.contains("küche")) sendCommand(RolloKueche, DOWN) else
                        if(txt.contains("galerie")) sendCommand(RolloGalerie, DOWN) else {
                            sendCommand(RolloWZgemeinsam, DOWN)
                            sendCommand(RolloSZBADGZgemeinsam, DOWN)
                        }
                    }  else if(txt.contains("stop")) {
                        if(txt.contains("wohnzimmer")) sendCommand(RolloWZgemeinsam, STOP) else
                        if(txt.contains("rechts")) sendCommand(RolloWohnzimmerRechts, STOP) else
                        if(txt.contains("links")) sendCommand(RolloWohnzimmerLinks, STOP) else
                        if(txt.contains("gästezimmer")) sendCommand(RolloGaestezimmer, STOP) else
                        if(txt.contains("schlafzimmer")) sendCommand(RolloSchlafzimmer, STOP) else
                        if(txt.contains("bad")) sendCommand(RolloBad, STOP) else
                        if(txt.contains("küche")) sendCommand(RolloKueche, STOP) else
                        if(txt.contains("galerie")) sendCommand(RolloGalerie, STOP) else {
                            sendCommand(RolloWZgemeinsam, STOP)
                            sendCommand(RolloSZBADGZgemeinsam, STOP)
                        }
                    }
                } else if(txt.contains("markise")) {
                    if(txt.contains("hoch") || txt.contains("auf") || txt.contains("öffnen")) sendCommand(Markise, UP) else
                    if(txt.contains("runter") || txt.contains("ab") || txt.contains("schließen")) sendCommand(Markise, DOWN) else
                    if(txt.contains("stop")) sendCommand(Markise, STOP)
                        
                //Musik    
                } else if(txt.contains("musik")) {
                    if(txt.contains("ein") || txt.contains("an") ||txt.contains("start")) {
                        if(txt.contains("wohnzimmer")) sendCommand(sq_wohnen_power, ON) else
                        if(txt.contains("gästezimmer")) sendCommand(sq_gaeste_power, ON) else
                        if(txt.contains("schlafzimmer")) sendCommand(sq_schlafen_power, ON) else
                        if(txt.contains("galerie")) sendCommand(sq_galerie_power, ON) else
                        if(txt.contains("bad")) sendCommand(MusikBadSchalten, ON) else
            //            if(txt.contains("wc")) sendCommand(MusikWCSchalten, ON) else
                        if(txt.contains("balkon")) sendCommand(MusikBalkonSchalten, ON) else {
                            sendCommand(sq_wohnen_power, ON)
                        }
             
                    } else if(txt.contains("aus") || txt.contains("stop")) {
                        if(txt.contains("wohnzimmer")) sendCommand(sq_wohnen_power, OFF) else
                        if(txt.contains("gästezimmer")) sendCommand(sq_gaeste_power, OFF) else
                        if(txt.contains("schlafzimmer")) sendCommand(sq_schlafen_power, OFF) else
                        if(txt.contains("galerie")) sendCommand(sq_galerie_power, OFF) else
                        if(txt.contains("bad")) sendCommand(MusikBadSchalten, OFF) else
            //            if(txt.contains("wc")) sendCommand(MusikWCSchalten, OFF) else
                        if(txt.contains("balkon")) sendCommand(MusikBalkonSchalten, OFF) else {
                            sendCommand(sq_wohnen_power, OFF)
                            sendCommand(sq_schlafen_power, OFF)
                        }
             
                    }
            //Lüftung    
                } else if(txt.contains("lüften") || txt.contains("luft")) {
                    if(txt.contains("1")) sendCommand(LueftungStufe1, ON) else
                    if(txt.contains("2")) sendCommand(LueftungStufe2, ON) else
                    if(txt.contains("3")) sendCommand(LueftungStufe3, ON) else
                    if(txt.contains("hoch")) sendCommand(LueftungWeiterschalten, ON) else
                    if(txt.contains("runter")) sendCommand(LueftungWeiterschalten, OFF) else
                    if(txt.contains("auf")) sendCommand(LueftungWeiterschalten, ON) else
                    if(txt.contains("ab")) sendCommand(LueftungWeiterschalten, OFF) 
                }
                
            end
            Mit dieser Variante werden einfach Schlüsselwörter eingefangen und der Satzbau ist egal. Du kannst also sagen:
            "Licht Esszimmer aus"
            da bei mir im Esszimmer nur das Licht geschaltet werden kann, reicht auch "Esszimmer aus"
            Die höfliche Variante würde auch erkannt: "bitte schalte das Licht im Esszimmer aus".
            Selbst "Essen aus" würde erkannt

            Viele Grüße
            Michael

            Kommentar


              #36
              Wow, deine Lösung gefällt mir noch besser. Da hab ich ja wieder einiges vor mir, wenn ich meine Voice Commands anpassen möchte ;-)

              Danke Michael

              Kommentar


                #37
                Ja, die Lösung ist vom Stahler ist cool. Werd ich bei mir auch mal so anpassen, auch wenn das Voice-Zeugs nur so ein Gimmick ist.

                Habt ihr eigentlich Erfahrung mit Umlauten? Funktionieren Kommandos wie "Türe öffnen" inzwischen zuverlässig?

                Gruß,
                Thomas

                Kommentar


                  #38
                  Zitat von staehler Beitrag anzeigen
                  Hi,

                  es gibtvielleicht einenoch elegantere Methode. Ich habe es wie folgt implementiert (war ein Tipp von Kai):
                  [...]

                  Mit dieser Variante werden einfach Schlüsselwörter eingefangen und der Satzbau ist egal. Du kannst also sagen:
                  "Licht Esszimmer aus"
                  da bei mir im Esszimmer nur das Licht geschaltet werden kann, reicht auch "Esszimmer aus"
                  Die höfliche Variante würde auch erkannt: "bitte schalte das Licht im Esszimmer aus".
                  Selbst "Essen aus" würde erkannt

                  Viele Grüße
                  Michael
                  2+ !! Geil! :-) Direkt mal kopiert und eingebaut!

                  Das ist was schönes fürs oh-wiki! Der WAF Faktor steigt auch extrem ;-)

                  Super gemacht Michael! Danke!

                  Kommentar


                    #39
                    Zitat von thoern Beitrag anzeigen
                    Ja, die Lösung ist vom Stahler ist cool. Werd ich bei mir auch mal so anpassen, auch wenn das Voice-Zeugs nur so ein Gimmick ist.

                    Habt ihr eigentlich Erfahrung mit Umlauten? Funktionieren Kommandos wie "Türe öffnen" inzwischen zuverlässig?

                    Gruß,
                    Thomas
                    Hi Thomas,

                    ja, die Umlaute funktionieren prima. Hab OH 1.5 im Einsatz.

                    Viele Grüße
                    Staehler

                    Kommentar


                      #40
                      Hei,

                      da ich mich 'demnächst (tm)' mit der Thematik Sprachsteuerung auseinandersetzen möchte, frage ich mich gerade, ob es einen Weg gibt, dafür zu sorgen, dass HABdroid auch bei gesperrtem/ausgeschaltetem Screen auf die VoiceCommands reagiert - am liebsten nach Google-Manier (wobei das entgegen der Werbung ja momentan mit deutscher Spracheinstellung gar nicht funktioniert - egal), also "OK HABdroid..."

                      Wunderbar wäre dann noch als Rückmeldung "Ja, mein Herr und Meister?" statt eines schnöden Pling ;-)

                      Kommentar


                        #41
                        Ja, das wäre wirklich ziemlich cool.

                        Kommentar


                          #42
                          Zitat von udo1toni Beitrag anzeigen
                          Hei,

                          da ich mich 'demnächst (tm)' mit der Thematik Sprachsteuerung auseinandersetzen möchte, frage ich mich gerade, ob es einen Weg gibt, dafür zu sorgen, dass HABdroid auch bei gesperrtem/ausgeschaltetem Screen auf die VoiceCommands reagiert - am liebsten nach Google-Manier (wobei das entgegen der Werbung ja momentan mit deutscher Spracheinstellung gar nicht funktioniert - egal), also "OK HABdroid..."

                          Wunderbar wäre dann noch als Rückmeldung "Ja, mein Herr und Meister?" statt eines schnöden Pling ;-)
                          Gibt es hierzu zufällig schon was neues? ;D

                          Kommentar


                            #43
                            Zitat von Shinedown Beitrag anzeigen

                            Gibt es hierzu zufällig schon was neues? ;D
                            Ok, inzwischen hab ich das ganze mit der App Tasker selbst hinbekommen.

                            Kommentar


                              #44
                              Zitat von Shinedown Beitrag anzeigen

                              Ok, inzwischen hab ich das ganze mit der App Tasker selbst hinbekommen.

                              Verrätst du uns auch wie du das gemacht hast?

                              Gruß, Sigi

                              Kommentar


                                #45
                                Zitat von sihui Beitrag anzeigen


                                Verrätst du uns auch wie du das gemacht hast?

                                Gruß, Sigi
                                Das ganze lässt sich mit Tasker und über verschiedene Ansätze realisieren, bzw. erhält man so eine Übergangslösung.
                                Das das Device einfach ununterbrochen "mithört" ist schlicht aus Gründen der Akkulaufzeit unmöglich - bei manchen Devices lässt sich ein eigenes Triggerword festlegen (das ist schonmal gut), andere, günstigere Androidgeräte lassen sich überhaupt nicht per "Ok Google" oder einem benutzerdefinierten Triggerword ansprechen.

                                Hat man ein Device, dass sich per "OK Google" ansprechen lässt, braucht man eigentlich nur noch Tasker und das Tasker Plugin AutoVoice (hier kann ein Custom Triggerword festgelegt werden). Danach kann man über Tasker die Sprache empfangen und im nächsten Schritt per HTTP GET an ein StringItem VoiceCommand in OpenHab senden.
                                HTTP Get kann in Tasker dabei z.B. wie folgt konfiguriert werden:
                                - Server:Port
                                - Pfad: CMD
                                - Attribute: VoiceCommand=%VOICE

                                Das StringItem in Openhab, das den erkannten Text erhält, kann dann über die Methode von staehler (siehe oben) ausgewertet werden.

                                ----> Hier gibt es mit Tasker wirklich unzählige Möglichkeiten das Ganze zu realisieren, wahrscheinlich könnte man auch einfach bei einem bestimmten Sprachkommando (z.B. "OK Smarthome") das Device wecken lssen, die Openhab App starten, und dann einen Klick auf die Spracheingabe in der App simulieren.



                                Wenn man kein Device mit Sprachchip hat (also keine Hotword-Erkennung), kann man sich mit Tasker auch anderweitig behelfen. Beispiel:
                                Beim Schütteln des Geräts soll Tasker das Gerät aufwecken, auf den Homescreen wechseln und einen Klick auf das openhab Widget simulieren
                                In Tasker: input tap X Y
                                ...wobei hier X Y für die Zeigerposition steht (kann über die Android Entwicklertools angezeigt werden)


                                Kommentar

                                Lädt...
                                X