FHEM Sprachsteuerung mit AMAD 2.6 und AutoVoice/Automagic

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

Vorheriges Thema - Nächstes Thema

Amenophis86

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

Kein Problem.
Wie zufrieden seit Ihr denn so mit dieser Art der Sprachsteuerung?
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,

wollt mich nochmal bedanken, bei mir läufts nun auch. Lag wohl an einer } zu viel im Script. Nach paar Tagen jetzt stell ich fest das abends die Spracherkennung noch funktioniert, am nächsten Morgen muss ich aber Autovoice einmal de und dann wieder aktivieren damit die Erkennung wieder läuft.
Auch stell ich mir die Frage wie gut  das bei dir im Flur mit dem Handy in der Decke funktioniert. Wie hast das positioniert (Lage,Einbausituation).
Mein Tablet hab ich nun nach monatelanger Vorbereitung endlich flächenbündig in der Wand angebracht und dabei nicht  beachtet das das Mikrofon genau auf der anderen Seite des Edelstahl-Rahmens befindet (wo ich extra Löcher für Audio vorgesehen habe s. Bild im Anhang). Ich bild  mir ein das nun durch den Hohlraum hinter dem Tablet  die Spracherkennung nun mehr Probleme mit dem erkennen des ersten Wort - stelle,  mache oder schalte - hat. Der Rest wird dann wieder gut verstanden. Auch Nebengeräusche mein ich werden dadurch verstärkt.
Wie hast das mit dem Handy in der Decke realisiert ? Da muss ja auch ein Hohlraum sein und dann noch oben in der Decke (Entfernung)? Oder einfach nen Mikro reingesteckt und das nur aus der Decke schauen gelassen?
Apropos Mikro. War hier ja auch schon kurz Thema das das Problem mit kein Audio dann vorhanden ist. Nach nem Tag drüber schlafen geht mir da nun ein Bluetooth Headset durch den Kopf. Laut den Einstellungen, Sprache und Eingabe-Verbesserte Google Dienste sollte das doch irgendwie unterstützt werden. Spracherkennung auf Knopfdruck😊.Meinst sowas ist realisierbar.

Amenophis86

Zitat von: CoolTux am 12 Dezember 2016, 19:52:29
Wie zufrieden seit Ihr denn so mit dieser Art der Sprachsteuerung?

Ich habe jetzt erst damit angefangen. Bisher bin ich eigentlich sehr zufrieden. Was mich noch bisschen stört ist, dass Google manchmal denkt, dass ich was gesagt habe, obwohl es nicht so war. Aber es ist eine kosten günstige Alternative zu Alexa etc. Natürlich auch mit schlechterer Raum Abdeckung des Mikros, aber zum Testen schon mal ne geile Sache. Vielen Dank dafür :)
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

Zitat von: TomLee am 12 Dezember 2016, 23:43:58
Hi,

wollt mich nochmal bedanken, bei mir läufts nun auch. Lag wohl an einer } zu viel im Script. Nach paar Tagen jetzt stell ich fest das abends die Spracherkennung noch funktioniert, am nächsten Morgen muss ich aber Autovoice einmal de und dann wieder aktivieren damit die Erkennung wieder läuft.
Auch stell ich mir die Frage wie gut  das bei dir im Flur mit dem Handy in der Decke funktioniert. Wie hast das positioniert (Lage,Einbausituation).
Mein Tablet hab ich nun nach monatelanger Vorbereitung endlich flächenbündig in der Wand angebracht und dabei nicht  beachtet das das Mikrofon genau auf der anderen Seite des Edelstahl-Rahmens befindet (wo ich extra Löcher für Audio vorgesehen habe s. Bild im Anhang). Ich bild  mir ein das nun durch den Hohlraum hinter dem Tablet  die Spracherkennung nun mehr Probleme mit dem erkennen des ersten Wort - stelle,  mache oder schalte - hat. Der Rest wird dann wieder gut verstanden. Auch Nebengeräusche mein ich werden dadurch verstärkt.
Wie hast das mit dem Handy in der Decke realisiert ? Da muss ja auch ein Hohlraum sein und dann noch oben in der Decke (Entfernung)? Oder einfach nen Mikro reingesteckt und das nur aus der Decke schauen gelassen?
Apropos Mikro. War hier ja auch schon kurz Thema das das Problem mit kein Audio dann vorhanden ist. Nach nem Tag drüber schlafen geht mir da nun ein Bluetooth Headset durch den Kopf. Laut den Einstellungen, Sprache und Eingabe-Verbesserte Google Dienste sollte das doch irgendwie unterstützt werden. Spracherkennung auf Knopfdruck😊.Meinst sowas ist realisierbar.

Im Flur ist ein Teil der Decke angehängt. Dadrauf habe ich die ganze Technik und das Handy. Daher klappt das super mit der Sprache.

Wenns ein Knopf sein soll kann man auch über AMAD die Sprachsteuerung aktivieren.
set Tablet activateVoiceInput
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

Esjay

Zitat von: CoolTux am 12 Dezember 2016, 19:52:29
Kein Problem.
Wie zufrieden seit Ihr denn so mit dieser Art der Sprachsteuerung?
Hallo CoolTux,
vielen Dank für deine Arbeit. Ich bin gerade dabei mich mit dem Thema zu beschäftigen. Ich habe es gestern auch schon hinbekommen die ein oder andere Steckdose zu schalten. Das einzige was mich noch ein wenig stört, ist die Tatsache, dass jedesmal ein neues Browserfenster aufgeht, wenn man Google Now benutzt. Ich weiß, dass es da angeblich eine Option(ich glaube du hattest mal etwas von Voiceonly gesagt) in Autovoice gibt, jedoch scheint diese i-wie bei mir nicht zu funktionieren.Ebenfalls bin sehr auf die Entwicklung  gespannt, die sich wohl nächstes Jahr mit "Google Home" in Kombinaion mit "Actions on Google" und "Fhem" auftut.Aber das ist OT.

Nochmals danke,dass du deine Arbeit teilst.

Grüße


Amenophis86

Zitat von: Esjay am 13 Dezember 2016, 12:59:46
Das einzige was mich noch ein wenig stört, ist die Tatsache, dass jedesmal ein neues Browserfenster aufgeht, wenn man Google Now benutzt. Ich weiß, dass es da angeblich eine Option(ich glaube du hattest mal etwas von Voiceonly gesagt) in Autovoice gibt, jedoch scheint diese i-wie bei mir nicht zu funktionieren.

Gleiches bei mir. Er wechselt nach erkannten Kommando zwar zurück auf die App, welche vorher im Vordergrund war, aber im Hintergrund bleibt bei mir für jedes Kommando eine Google Browser App offen. Die kann man leider auch nicht mit einem extra Flow killen, zumindest habe ich noch nicht raus gefunden wie. Die o.g. Option ist bei mir eingestellt.
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

Das Problem habe ich auch. Leider gibt es da wohl keine Möglichkeit das automatisch zu schließen.
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

Gibt auch keine einfach mal alle offenen Apps zu schließen, hab zumindest noch keine gesehen. Mmmh ärgerlich.
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...

Esjay

Hallo zusammen ich muss nochmal kurz nachfragen.
Ich habe den Flow Steckdosen schalten jetzt folgendend geändert.

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


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



// Steckdosen schalten

if(matches(avcomm, '(?i:.+(tablet).+)'))
{
    if(matches(avcomm, '(?i:.+(steckdose).+)'))
    {
        if(matches(avcomm, '(?i:.+(wohnzimmer).+)'))
        {
            fhemdevice ="Hyperion";
        }

       
    }

    }



// Licht/Beleuchtung schalten

if(matches(avcomm, '(?i:.+(licht).+)') or matches(avcomm, '(?i:.+(beleuchtung).+)'))
{


    if(matches(avcomm, '(?i:.+(wohnzimmer).+)'))
    {
        if(matches(avcomm, '(?i:.+(licht im wohnzimmer).+)'))
        {
            fhemdevice = "structureLichtWohnzimmer";
            fhemalias = "das Licht im Wohnzimmer";
        }

        if(matches(avcomm, '(?i:.+(esstisch).+)'))
        {
            fhemdevice = "LichtSchalterWohnzimmer_zweierDeckenLampe_Sw";
            fhemalias = "das Deckenlicht am Esstisch";
        }

        if(matches(avcomm, '(?i:.+(dreier).+)'))
        {
            fhemdevice = "LichtSchalterWohnzimmer_dreierDeckenLampe_Sw";
            fhemalias = "das Deckenlicht der Dreierlampe";
        }

        if(matches(avcomm, '(?i:.+(deckenlampe).+)'))
        {
            fhemdevice = "LichtSchalterWohnzimmer_.*.DeckenLampe_Sw";
        }
    }



    if(matches(avcomm, '(?i:.+(badezimmer).+)'))
    {
        if(matches(avcomm, '(?i:.+(licht im badezimmer).+)'))
        {
            fhemdevice = "structureLichtBadezimmer";
            fhemalias = "das Licht im Badezimmer";
        }

        if(matches(avcomm, '(?i:.+(deckenlampe).+)'))
        {
            fhemdevice = "LichtSchalterBadDeckenLampe_Sw";
            fhemalias = "das Deckenlicht im Badezimmer";
        }
    }



    if(matches(avcomm, '(?i:.+(flur).+)'))
    {
        if(matches(avcomm, '(?i:.+(licht im flur).+)'))
        {
            fhemdevice = "structureLichtFlur";
            fhemalias = "das Licht im Flur";
        }

        if(matches(avcomm, '(?i:.+(deckenlampe).+)'))
        {
            fhemdevice = "LichtSchalterFlurDeckenLampen_Sw";
            fhemalias = "das Deckenlicht im Flur";
        }
    }



    if(matches(avcomm, '(?i:.+(küche).+)'))
    {
        if(matches(avcomm, '(?i:.+(licht in der küche).+)'))
        {
            fhemdevice = "structureLichtKueche";
            fhemalias = "das Licht in der Küche";
        }

        if(matches(avcomm, '(?i:.+(deckenlampe).+)'))
        {
            fhemdevice = "LichtSchalterKuecheDeckenLampe_Sw";
            fhemalias = "das Deckenlicht in der Küche";
        }
    }



    if(matches(avcomm, '(?i:.+(isabel|isabels).+)'))
    {
        if(matches(avcomm, '(?i:.+(licht im zimmer).+)'))
        {
            fhemdevice = "structureLichtKinZimIsabel";
            fhemalias = "das Licht im Zimmer von Isabel";
        }

        if(matches(avcomm, '(?i:.+(deckenlampe).+)'))
        {
            fhemdevice = "LichtSchalterIsabelDeckenLampe_Sw";
            fhemalias = "das Deckenlicht in Isas Zimmer";
        }
    }



    if(matches(avcomm, '(?i:.+(schlafzimmer).+)') or matches(avcomm, '(?i:.+(steven|stephen|stevens|stephens).+)'))
    {
        if(matches(avcomm, '.+(an|ein)$'))
        {
            value = "pct 50";
        }

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



        if(matches(avcomm, '(?i:.+(schlafzimmer).+)'))
        {
            if(matches(avcomm, '(?i:.+(licht im Schlafzimmer).+)'))
            {
                fhemdevice = "structureLichtSchlafzimmer";
                fhemalias = "das Licht im Schlafzimmer";
            }

            if(matches(avcomm, '(?i:.+(deckenlampe).+)'))
            {
                fhemdevice = "LichtDimmerSchlafzimmerDeckenLampe_Sw";
            }
        }



        if(matches(avcomm, '(?i:.+(steven|stephen|stevens|stephens).+)'))
        {
            if(matches(avcomm, '(?i:.+(licht im zimmer).+)'))
            {
                fhemdevice = "structureFensterKinZimSteven";
                fhemalias = "das Licht in Stevens Zimmer";
            }

            if(matches(avcomm, '(?i:.+(deckenlampe).+)'))
            {
                fhemdevice = "LichtDimmerStevenDeckenLampe_Sw";
            }
        }
    }



    if(matches(avcomm, '(?i:.+(beleuchtung).+)'))
    {
        fhemdevice = "lightScenenLicht_Media scene";
        fhemalias = "null";

        if(matches(avcomm, '(?i:.+(beleuchtung 7).+)'))
        {
            value = "Twilight_7_Wohnzimmer";
        }

        if(matches(avcomm, '(?i:.+(beleuchtung 7 mit flur).+)'))
        {
            value = "Twilight_7_WohnzimmerFlur";
        }

        if(matches(avcomm, '(?i:.+(beleuchtung 8).+)'))
        {
            value = "Twilight_8_Wohnzimmer";
        }

        if(matches(avcomm, '(?i:.+(beleuchtung 8 mit flur).+)'))
        {
            value = "Twilight_8_WohnzimmerFlur";
        }

        if(matches(avcomm, '(?i:.+(beleuchtung 10).+)') or matches(avcomm, '(?i:.+(beleuchtung x).+)'))
        {
            value = "Twilight_10_Wohnzimmer";
        }

        if(matches(avcomm, '(?i:.+(beleuchtung 10 mit flur).+)') or matches(avcomm, '(?i:.+(beleuchtung x mit flur).+)'))
        {
            value = "Twilight_10_WohnzimmerFlur";
        }

        if(matches(avcomm, '(?i:.+(beleuchtung aus)$)'))
        {
            value = "Licht_alles_aus";
        }

        if(matches(avcomm, '(?i:.+(romantisches licht)$)'))
        {
            value = "Romantik_WohnzimmerFlur";
        }

        if(matches(avcomm, '(?i:.+(kühles licht)$)'))
        {
            value = "KuehleAbendStimmung";
        }

        if(matches(avcomm, '(?i:.+(blaues licht)$)'))
        {
            value = "BlueLightShine";
        }
    }



    if(matches(avcomm, '(?i:.+(beleuchtungsautomatik).+)') or matches(avcomm, '(?i:.+(lichtautomatik).+)'))
    {
        if(matches(avcomm, '(?i:.+(flur).+)'))
        {
            fhemdevice = "LED_StreifenSelectTwilightDummy";
            fhemalias = "die Beleuchtungsautomatik für den Flur";
        } else {

            fhemdevice = "autoBeleuchtungDummy";
            fhemalias = "die Beleuchtungsautomatik";
        }
    }
}


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


Ich habe den hinteren Teil jetzt zur Sicherheit mal dran gelassen.
Es geht nur um folgenden Teil.

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


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



// Steckdosen schalten

if(matches(avcomm, '(?i:.+(tablet).+)'))
{
    if(matches(avcomm, '(?i:.+(steckdose).+)'))
    {
        if(matches(avcomm, '(?i:.+(wohnzimmer).+)'))
        {
            fhemdevice ="Hyperion";
        }

       
    }

    }

Nach meinem Verständnis müsste doch nun bei dem Satz
schalte die Tablet Steckdose im Wohnzimmer an

die Steckdose Hyperion eingeschaltet werden oder ?

Bitte nicht auf die Sinnhaftigkeit des Zusammenhangs zwischen Tablet und Hyperion achten.

Danke


CoolTux

Jepp genau so sollte es sein.
Wobei ich den Aufbau meiner Logik nach anders machen würde. Erst Steckdose dann Raum dann welche Steckdose abfragen.
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

Esjay

Zitat von: CoolTux am 14 Dezember 2016, 20:13:25
Jepp genau so sollte es sein.
Wobei ich den Aufbau meiner Logik nach anders machen würde. Erst Steckdose dann Raum dann welche Steckdose abfragen.

Komisch,er triggert nicht mal,obwohl "receive possible command schalte die Tablet Steckdose im Wohnzimmer an" auf dem Display erscheint.

Muss ich noch i-etwas in Autovoice ändern? In den Flows ändern man ja nur das Script, und das global_fhemdevice richtig?

CoolTux

Wie sieht denn Dein Trigger aus? Was hast du als Worte da stehen worauf er anspringen soll?
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

Esjay

Du meinst jetzt den Command Filter in Autovoice?

Da habe ich ersteinmal das drinnen stehen lassen, was du eingetragen hast. Sprich --> (schaltet|schalte|schalt) usw..

Muss denn dort auch noch etwas angepasst werden? Ich hatte es so verstanden,dass nur das Script und das globale_fhemdevice angepasst werden muss.

CoolTux

#104
Also dann sollte der Flow auch triggern wenn Du schalte sagst.
Alles was im Trigger steht muß am Anfang so gesagt werden.

schalte das Licht
oder
schalte die Steckdose

Du sagst aber Schalte das Tablet. Also machst Du hinter

(Licht|Steckdose) noch Tablet (Licht|Steckdose|Tablet)

Oder Du sagst Schalte die Steckdose vom Tablet im Wohnzimmer
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