Talk2Fhem: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 83: Zeile 83:


Beispiel:
Beispiel:
  garage (\S*) = set dev_garage $1
  Garage\S* (\S*) = set dev_garage $1


Der Satz: "Mach die Garage auf" ergibt dann als FHEM Kommando
Der Satz: "Mach die Garage auf" ergibt dann als FHEM Kommando

Version vom 1. Januar 2018, 17:26 Uhr

Talk2Fhem
Zweck / Funktion
Das Modul stellt eine Verbindung zwischen natürlicher Sprache und FHEM Befehlen her
Allgemein
Typ undefiniert
Details
Dokumentation ModUndef
Support (Forum) Unterstützende Dienste
Modulname 39_Talk2Fhem.pm
Ersteller Oliver Georgi
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


IN BEARBEITUNG

Diese Seite beschreibt die Funktionsweise und Konfiguration des Moduls 39_Talk2Fhem.pm

Voraussetzungen

Es ist sehr zu empfehlen, für die Konfiguration des Moduls, im Webfrontend von FHEM die Syntaxhervorhebung zu aktivieren. Die Aktivierung des erweiterten Editors ist hier Konfiguration#Syntaxhervorhebung beschrieben.

Kenntnisse im Bereich Regulärer Ausdrücke (RegExp) in Perl sind hilfreich, aber nicht zwingend erforderlich.

Allgemeines

Das Modul Talk2Fhem stellt eine Verbindung zwischen natürlicher Sprache und FHEM Befehlen her. Die Konfiguration erfolgt dabei über das FHEM Webfrontend.

Bei der Analyse der Sprachbefehle erfolgt keine grammatikalische Analyse, sondern es wird auf definierte Schlüsselwörter reagiert. Das Modul erkennt von sich aus diverse Zeit- und Datumsangaben und löst bei Bedarf zu diesen Zeiten die FHEM Kommandos aus.

Funktionsweise

Die Zerlegung des Sprachbefehls erfolgt in mehreren Schritten.

  1. Aufteilen des Sprachbefehls in einzelne Kommandos bei dem Wort UND
  2. Erkennen von Zeit- und Datumsangaben und entfernen für die weitere Verarbeitung
  3. Entfernung von unnötiger Wörter
  4. Vergleich mit den definierten Schlüsselwörten
  5. Konvertieren in ein FHEM Kommando
  6. Zeitgebundenen auslösen des FHEM Kommandos

Anwendung

Installation

Solange das Modul noch nicht offiziell aufgenommen wurde, muss die Datei 39_Talk2Fhem.pm manuell in das Verzeichnis FHEM/ kopiert werden. Siehe Forumsbeitrag. [1]

Define

define talk Talk2Fhem

Zum testen der Konfiguration ist es Ratsam erst mal das Attribut disable auf 1 zu setzen. Hierbei wird die Auslösung der FHEM Kommandos unterdrückt.

attr talk disable 1

Konfiguration

Die Konfiguration des Moduls wird hauptsächlich über die Definition (DEF) vorgenommen. Eine Konfiguration beginnt immer mit der Definition der gesuchten Schlüsselwörtern gefolgt von einem Gleichheitszeichen (siehe Randnotiz). Diese werden Anhand von Regulären Ausdrücken (RegExp) beschrieben. Also z.B.:

garage auf =

Das bededutet, sobald die Wörter in der Reihenfolge "garage" und "auf" erkannt werden, wird der Kommandoteil der Konfiguration ausgeführt. Groß- und Kleinschreibung wird grundsätzlich ignoriert.

Info green.pngWichtig

Vor und nach dem Gleichheitszeichen muss mindestens ein Trennzeichen vorhanden sein

  • Vor dem "=" mindestens ein Leer- oder Tabulatorzeichen
  • Nach dem "=" können zusätzlich auch Zeilenumbrüche eingefügt werden

Der Kommandoteil folgt dem Gleichheitszeichen (siehe Randnotiz). Und kann auf folgende Arten vorliegen.

  • FHEM Kommando
  • { Perl Befehl }
  • ( erweiterte Talk2Fhem Befehlskonfiguration )
Übersicht
<regexp> = <command>

Im ganzen könnte die Konfiguration dann so aussehen:

garage\S* auf = set dev_garage open

\S* Siehe hierzu "Häufig Verwendete RegExp".

Bei dem vorherigen Beispiel, würde der FHEM Befehl "set garage open" bei allen folgenden Sprachbefehlen ausgeführt werden.

Mach bitte die Garage auf
Das haus soll das Garagentor aufmachen
Garagentür in 5 Minuten auf
Die Garagen soll in einer Stunde aufgemacht werden

Klammerüberführung

Es ist nicht notwendig für jeden Zustand oder jedes Gerät eine eigene Konfigurationzeile zu erzeugen. Hierfür gibt es die Möglichkeit, wie bei Regulären Ausdrücken üblich, Klammern "( )" im <regex>-Teil zu erfassen. Dies erfolgt über die Standartvariablen $1, $2, ..., $n. "n" steht hier für die Position der Klammer. Zusätzlich gibt es in Talk2Fhem die Möglichkeit die Klammern zu modifizieren.

Soll die Garage auf und zugemacht werden, lässt sich folgendermaßen beschreiben.

Beispiel:

Garage\S* (\S*) = set dev_garage $1

Der Satz: "Mach die Garage auf" ergibt dann als FHEM Kommando

set dev_garage auf

Klammermodifikation

Da es in den meißten Fällen nicht gewünscht ist, nur das gefunde Wort in das FHEM Kommando zu überführen, lässt sich zusätzlich das gefundene Wort modifizieren.

Variante 1: Richtung

Hier kann die Klammer hauptsächlich auf Ihren Richtung hin modifiziert werden.

Definition
$n{ value => modification, value2 => mod2, ..., valuen => modn }

value kann eines der folgenden Wörtern enthalten:

  • true sind alle Wörter die eine positive Richtung enthalten. Wie z.B. auf, ein, hoch, an, usw.
  • false sind alle Wörter die eine negative Richtung enthalten. Wie z.B. ab, aus, runter, zu, usw.
  • integer Wort enthält eine Zahl
  • empty Wort enthält eine Leere Zeichenkette
  • /<regexp>/ Wort entspricht der <regexp> ###TODO###
  • else Falls keines der Fälle zutrifft

modification enthält das einzufügende Wort.

Beispiel
garage (\S*) = set dev_garage $1{true=>open,false=>close}

Die Sätze:

mach die Garage auf
bitte Garage schließen 

ergeben hierbei dann

set dev_garage open
set dev_garage close

Attribute

Anwendungsbeispiele

Links