Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Projekt Sprachsteuerung mit mac / vis Widget / Chrome

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Projekt Sprachsteuerung mit mac / vis Widget / Chrome

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      pix last edited by

      Hallo,

      in http://forum.iobroker.net/viewtopic.php?f=24&t=3737 wird über die Sprachsteuerung mit Amazon Alexa gesprochen. Eigentlich nicht schlecht, aber ich will kein weiteres Gerät dafür in die Wohnung stellen.

      Deshalb habe ich nach einer Lösung für die Spracheingabe ohne Knopfdruck mit Bordmitteln von ioBroker gesucht.

      <u>Ist-Zustand:</u>

      mac mini im Wohnzimmer (ioBroker Server, kein Monitor angeschlossen, Wartung über Screensharing vom iMac im Arbeitszimmer, USB Webcam angeschlossen

      Wandtablet im Flur (iPad Air mit Mobile Safari Browser zur Steuerung und Sprachausgabe)

      iPhones

      <u>Wunsch:</u>

      Sprachsteuerung vor allem im Wohnzimmer. Im Flur kann man das Tablet verwenden. Die Küche ist kaum automatisiert (außer Sonos).

      Ich habe lange mit der Spracheingabe via Siri und homekit (-Adapter) herumprobiert, kam aber zu keinem guten Ergebnis. Die Befehle sind festgelegt, die Verbindung trennt sich immer wieder, die Steuerung ist alles in allem unzuverlässig und die gesprochene Antwort kommt nur aus dem ursprünglichen (iOS) Eingabegerät.

      Die Lösung war Bluefox neues Speech2Text-Widget in VIS. Leider funktioniert das nich in (Mobile) Safari, da Apple keine Mikrofon-Eingaben im Browser zulässt. Man bräuchte eine App dazu. Doch Google Chrome funktioniert da bestens. Ich haben den Browser so konfiguriert, dass nur Webseiten vom localhost für Mikrofon-Eingaben zugelassen sind (Chrome/Einstellungen/Erweiterte Einstellungen/Mikrofon).

      Da der ioBroker-Server (mac mini) schon im Wohnzimmer steht und an eine USB-Webcam angeschlossen ist (XEOMA Videoüberwachung), konnte ich deren Mikrofon zur Spracheingabe verwenden.

      Schließlich habe ich für VIS ein eigenes Projekt zur Sprachsteuerung erstellt. Eine schlichte View mit nur zwei Widgets.

      • Spracheingabe Widget

      • HTML Widget mit HTML Metabefehl refresh

      Der Refresh ist nötig, da auch das Widget (konfiguriert auf "hört immer zu") gelegentlich leider nicht mehr zuhört. Deshalb läd die Seite alle 120s neu.

      Die Sprachbefehle (mit Schlüsselwort) landen natürlich alle im text2command-Adapter und werden dort ausgewertet. Ein sehr praktischer Adapter, leider noch etwas unübersichtlich.

      Teils werden Informationen abgefragt, teils Aktionen gestartet. Um Aktionen zu starten nutze ich ausgiebig die scriptEnabled Funktion des Javascript-Adapters. Um zB die Rollläden zu schließen, starte ich ein Skript, das die Befehle ausführt. Die direkte Eingabe des Ziellevels im Homepilot-Adapter funktioniert nicht, vom Skript aus geht es.

      Für die Ausgabe der billigsten Tankstelle wird ebenfalls ein Skript gestartet und nach Ablauf wieder auf inaktiv gesetzt. Denn die Ausgabe des Skriptes soll nicht nur den Namen, sondern auch den Preis enthalten. Das sind zwei Werte, die der text2command-Adapter in der Antwort nicht zulässt. Weiterhin kann man auch dynamische Antworten (abhängig zB von Zeit und oder Wetter zusammensetzen)

      Alle Sprachausgaben erfolgen auf dem Wandtablet im Flur.

      <u>Ausblick:</u>

      Es sind doch einige Skripte und Kommandos, die zusammenkommen. Wenn ich noch Licht (pro Raum, pro Lampe) mit einbaue, kann es unübersichtlich werden. Daher ist eine gute Organisation und Benennung wichtig.

      Um die Sprachsteuerung auch aus der Küche zu starten bräuchte ich dort ein Eingabegerät. Vielleicht reicht ein Raspi mit dem Browser und einem Mikrofon aus. Durch die Verwendung eines zweiten Widgets mit anderem Schlüsselwort könnte man das Ziel der Eingabe auf eine weitere Text2Command Instanz lenken und diese schließlich auf eine andere Sayit-Instanz (Sonos in der Küche).

      Pro Raum eine Eingabe-Hardware könnte auch die Eingabe vereinfachen. In der Küche stehend kann ich dann "Licht an" sagen, statt "Küche Licht an".

      <u>Hier ein paar Screenshots und Skriptbeispiele:</u>

      ! 261_skripte.jpg 261_bildschirmfoto_2016-10-11_um_16.16.14.jpg
      HTML-Widget mit Reload:

      [{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":true,"g_css_border":true,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"html":"\nView lädt alle 120s neu"},"style":{"left":"7px","top":"115px","border-width":"3px","border-style":"dashed","border-color":"yellow","border-radius":"20px","color":"yellow","padding":"20px","width":"auto","height":"auto"},"widgetSet":"basic"}]
      

      Skript billigste Tankstelle

      /* Billigste Tankstelle mit Preis ausgeben
      >! ACHTUNG: Bei Änderung des Namens in Text->Kommandos Adapter Namen anpassen
      >! Skript wird durch text2command-Adapter aktiviert
      >! setzt tankerkoenig-Adapter voraus
      erstellt 11.10.2016
      */
      >! // Sprachausgabe bauen
      function aktion () {
          nachricht = 'Den günstigsten Diesel gibt es in der ' 
                    + getState("tankerkoenig.0.stations.cheapest.diesel.name"/*Name*/).val + ' für ' 
                    + getState("tankerkoenig.0.stations.cheapest.diesel.short"/*Günstigste Diesel Tankstelle short*/).val + ' Euro';
          setState("sayit.0.tts.text"/*Text to speech*/, nachricht);
      }
      >! // bei Skriptstart ausführen
      aktion();
      // selbständig Skript wieder anhalten
      setStateDelayed('javascript.' + instance +  '.scriptEnabled.' + name.slice(10), false, 5*1000);
      >! ````
      
      Vielleicht hilft der Thread mit ein paar Ideen bei der Umsetzung einer eigenen Lösung. Bitte spart nicht mit Feedback!
      
      Dank an Bluefox für den tollen text2command-Adapter und das super Widget!
      
      Gruß
      
      Pix
      1 Reply Last reply Reply Quote 0
      • OstfrieseUnterwegs
        OstfrieseUnterwegs last edited by

        Das ist ein interessanter Ansatz. In dem Alexa Thread kamen Bedenken auf, dass ein Tablet oder anderes Gerät nicht besonders gut reagiert, wenn man nicht direkt davor steht. Wie ist das denn bei Dir, wenn im WZ der Fernseher an ist oder andere Hintergrundgeräusche oder Gespräche da sind? ("Seid mal alle leise, ich will mit meinem Haus sprechen" :lol: )

        Klarer Vorteil Deiner Lösung ist, dass man keine Cloud braucht und dass Du insgesamt eine bessere Kontrolle über das System hast.

        1 Reply Last reply Reply Quote 0
        • P
          pix last edited by

          Von unterwegs:

          Wenn aus dem Fernseher mein Schlüsselwort kommt, wirds lustig.

          Ich würde gern die Ansage "ich verstehe xxxx nicht" durch einen Ton ersetzen (Basso oder Mööp), denn die Wiederholung des falschen Befehls führt zu einer Schleife.

          Leider startet der text2command Adapter manchmal mehrmals. Dann geht gar nix mehr.

          Werde mal sehen, ob ein besseres Mikro die Verständigung noch weiter verbessert.

          Unsicher bin ich, ob nicht die Engine trotzdem die gesprochenen Befehle zur Erkennung durch die Cloud schickt. Die Erkennung ist schon ziemlich hoch (tippe auf 80%). Ganz offline wär mir am liebsten. Wenn das ein Raspi kann würde ich ihn als Slave einsetzen und ihm den Internetzugang sperren. Pro Raum einen Raspi.

          Pix

          1 Reply Last reply Reply Quote 0
          • B
            BlueBook last edited by

            Hi Pix,

            danke für die ausführliche Schilderung.

            Ich bin z.Z. auch am überlegen in die Richtung zu gehen.

            Bevor ich dies angehe, aber zwei Fragen dazu:

            • 1 1/2 Jahre später - ist es immer noch der Weg, den man gehen sollte oder gibt es inzwischen Andere?

            • Wie sind Deine Erfahrungen? Nutzt Du es noch? Gab es größere Probleme?

            Gruß

            BB

            1 Reply Last reply Reply Quote 0
            • P
              pix last edited by

              Hallo BlueBook,

              dieser Thread ist recht langsam unterwegs, aber er ist unterwegs 😄

              Erstmal: Welchen Weg man gehen sollte, sollte jeder selbst entscheiden.

              Ich habe mich lange gegen die Hardware Sprachassistenten ausgesprochen, da ich Datenschutzbedenken hatte. Allerdings habe ich meine Meinung geändert, als mir klar wurde, dass ich mit meinem iPhone ständig einen Sprachassistenten mit mir herumtrage. Er kann sogar viel mehr als ein Echo oder ein Google Home. Es ist immer dabei und hat auch noch zwei Kameras, GPS, Beschleunigungssensoren, etc. Natürlich kann ich das Smartphone abschalten, wenn ich meine Ruhe will. Aber selbst das ist keine 100% sichere Lösung. Die Sprachassisten für zu Hause (zumindest Google Home und Alexa) kann mann leicht vom Strom trennen. Dann ist Ruhe. Für "Smarthomer" sollte das auch fernsteuerbar mit Zwischenstecker realisierbar sein.

              Fazit: Ich habe nun zwei Echo Dots in meiner Wohnung (Küche und Wohnzimmer). Sie sind vor allem in Verbindung mit Sonos für die Musik zuständig. Und natürlich nutze ich auch den ioBroker Skill, war aber mit den Eigenarten von Alexa nicht so zufrieden. Das System erwartet ein bestimmtes Muster in der Grammatik und kann auch nicht alle Vokabeln. Über den Umweg IFTTT habe dann auch einen Google Home (Flur) angebunden. Den gab es mal richtig günstig (mit Gutscheinen für 18€), da konnte ich nichts falsch machen. Google ist sehr viel "gelassener" bei der Spracherkennung. Ausserdem lässt sich der Google Home in Sayit-Adapter direkt als Ausgabegerät auswählen.

              Jetzt hat Alexa nachgezogen. Dank apollon's Arbeit (und natürlich soef's Vorarbeit) ist auch auf Echos die Sprachausgabe möglich. Überhaupt ermöglich der neue Alexa2 Adapter viele neue Möglichkeiten. Ich kann weiterhin meine Text2Command-Einstellungen verwenden. Oder ich nutze den Umstand, dass der Adapter den Standort des Echos in der Wohnung kennt, von dem das letzte Kommando kam. So kann man sich zB die Raumangabe bei Kommandos an mit Echos versorgten Räumen sparen. Statt in der Küche zu sagen "schalte das Licht in der Küche an" reicht nun ein "Licht an". Sage ich das im Wohnzimmer, geht nur dort das Licht an. Die Verlockung ist groß, in jeden Raum so ein Ding zu stellen…

              Es ist gut zu wissen, dass die im Eröffnungsthread beschriebene Möglichkeit funktioniert, zumindest auf verbreiteten Betriebssystemen und bei gutem Mikrofon. So kann man Sprachsteuerung unabhängig von amazon realisieren. Allerdings sollte man wirklich direkt vor dem Mikrofon sprechen.

              Gruß

              Pix

              1 Reply Last reply Reply Quote 1
              • Mappy
                Mappy last edited by

                Hi !

                Weiß jemand wie man bei dem Alexa2 Adapter auch Alexa sagen kann, dass sie zwischen den Sätzen zb. eine Sekunde Pause lässt. ?

                Danke

                1 Reply Last reply Reply Quote 0
                • dslraser
                  dslraser Forum Testing Most Active last edited by

                  @Mappy:

                  Hi !

                  Weiß jemand wie man bei dem Alexa2 Adapter auch Alexa sagen kann, dass sie zwischen den Sätzen zb. eine Sekunde Pause lässt. ?

                  Danke ` ne Sekunde weiß ich nicht, aber ein simples Komma also , lässt sie kurz "pausieren"

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  829
                  Online

                  31.7k
                  Users

                  79.8k
                  Topics

                  1.3m
                  Posts

                  5
                  7
                  2882
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo