Module: TALKTOME & TALKTOUSER - Sprachverarbeitung für Nutzerinteraktionen

Begonnen von SirUli, 21 Juni 2016, 22:21:13

Vorheriges Thema - Nächstes Thema

SirUli

Hi zusammen,

in den letzten Monaten habe ich mich immer mal wieder damit auseinander gesetzt wie ich mit meiner Heimautomation kommunizieren kann. Dabei hatte ich immer die Möglichkeit mit "ihr" zu sprechen (z.B. via WebViewControl oder AutoVoice) oder zu schreiben (TELEGRAM usw.) aber diese Daten nicht weiter vernünftig zu verarbeiten. Wenn man mal angefangen hat eine Unmenge an Notify-Devices aufzubauen, weiss man nach zwei-drei Monaten nicht mehr wie was funktioniert. Zudem: Meist denkt man sich was schönes aus wie "Temperatur Wohnzimmer" und dann kommt die Partnerin und meint "Ich frage aber: 'Wie warm ist es im Wohnzimmer'". An dieser Stelle möchte ich nun ansetzen. Meine Idee war es, die Chatbots - bekannt von Webseiten wie IKEA und co - auf für FHEM einzusetzen, um richtige Dialoge zu bauen.

Nach einiger Zeit der Suche bin ich auf RiveScript gestoßen, was ideal für meinen Anwendungsfall ist: Perl und leicht konfigurierbare Sprachverarbeitung mit Rückmeldungen.

Voraussetzungen & Installation
Siehe Wiki

Was ist derzeit noch ToDo?

  • Unterscheidung von Messages aus verschiedenen Quellen mit den entsprechenden Usern (siehe oben) - derzeit geht alles über ein TALKTOUSER Gerät
  • evtl. Integration mit ROOMMATE
  • Überarbeitung der Dokumentation

Feedback
So nun lasst mal hören was ihr dazu meint?

Viele Grüße,
Uli

JoWiemann

Hallo Uli,

vielen Dank für Deine Idee / Arbeit.

Nun der erste Wermutstropfen. Das Update wird mit folgendem Fehler beendet: Got 19253 bytes for FHEM/42_TALKTOUSER.pm, expected 21405

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

SirUli

Hi Jörg,

danke für die Rückmeldung - ich hatte in der tat das controls file nicht korrekt aktualisiert. Nun sollte es aber laufen!

Viele Grüße,
Uli

JoWiemann

Hallo Uli,

kann es ein, dass 42_TALKTOME.pm in folgende Definition fehlt:

use constant RS_ERR_MATCH => "ERR: No Reply Matched";
use constant RS_ERR_REPLY => "ERR: No Reply Found";

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

SirUli

Zitat von: JoWiemann am 22 Juni 2016, 20:06:54
kann es ein, dass 42_TALKTOME.pm in folgende Definition fehlt:
Hi Jörg,

wirft das einen Fehler bei dir? Ich habe diese Meldungen absichtlich nicht so gesetzt, damit diese änderbar sind - siehe aktuell Zeile 462:
if ($reply eq RS_ERR_MATCH) {
$reply = AttrVal($sourceDeviceName, "nomatch", "Found no match. To customize this message please set attribute 'nomatch' on $sourceDeviceName");
} elsif ($reply eq RS_ERR_REPLY) {
$reply = AttrVal($sourceDeviceName, "noreply", "Found no reply. To customize this message please set attribute 'noreply' on $sourceDeviceName");
}

So kann man via den Attributen "nomatch" und "noreply" die beiden Rückmeldungen ändern.

Viele Grüße,
Uli

JoWiemann

Hallo Uli,

bekomme ohne Deklaration folgenden Fehler:

Bareword "RS_ERR_REPLY" not allowed while "strict subs" in use at /opt/fhem/FHEM/42_TALKTOME.pm line 464.
Bareword "RS_ERR_MATCH" not allowed while "strict subs" in use at /opt/fhem/FHEM/42_TALKTOME.pm line 462.
2016.06.22 20:01:06 0: Bareword "RS_ERR_REPLY" not allowed while "strict subs" in use at /opt/fhem/FHEM/42_TALKTOME.pm line 454.

Bareword "RS_ERR_REPLY" not allowed while "strict subs" in use at /opt/fhem/FHEM/42_TALKTOME.pm line 464.
Bareword "RS_ERR_MATCH" not allowed while "strict subs" in use at /opt/fhem/FHEM/42_TALKTOME.pm line 462.
Bareword "RS_ERR_REPLY" not allowed while "strict subs" in use at /opt/fhem/FHEM/42_TALKTOME.pm line 454.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Zitat von: SirUli am 21 Juni 2016, 22:21:13
Nun kommt der wichtigste Teil - die Einbindung einer Quelle. Bei mir ist das nun Telegram, welches nun zwei zusätzliche Attribute via userAttr bekommen muss:
talktouserMonitorReading talktouserModSourceDev


Hallo Uli,

kannst Du das genauer beschreiben? attr Name_des_Telegram_Device userattr talktouserMonitorReading  und dann wie weiter?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

SirUli

Hi Jörg,

danke für das Feedback. Oben ist unter "Was heissen die Attribute?" dann kurz beschrieben was diese heissen, hilft das? Und ja, man muss diese mittels:

attr Name_des_Telegram_Device userattr talktouserMonitorReading talktouserModSourceDev


hinzufügen. Ich schaue mir gerade die Fehler bezüglich RS_ERR* an, aber noch finde ich nicht warum es bei dir nicht will, da diese von RiveScript exportiert werden. Siehe hier.

Bin noch am suchen.

Viele Grüße,
Uli

JoWiemann

Zitat von: SirUli am 22 Juni 2016, 20:45:36
Hi Jörg,

danke für das Feedback. Oben ist unter "Was heissen die Attribute?" dann kurz beschrieben was diese heissen, hilft das? Und ja, man muss diese mittels:

attr Name_des_Telegram_Device userattr talktouserMonitorReading talktouserModSourceDev


hinzufügen. Ich schaue mir gerade die Fehler bezüglich RS_ERR* an, aber noch finde ich nicht warum es bei dir nicht will, da diese von RiveScript exportiert werden. Siehe hier.

Bin noch am suchen.

Viele Grüße,
Uli

Hm, kann es daran liegen, dass ich sudo apt-get install librivescript-perl benutzt habe? Ich arbeite ungern mit CPAN, da habe ich mir schon mal Perl mit zerschossen. Die andere Frage ist, ob bei der erstmaligen Definition nach dem update RiveScript wirklich schon exportiert sind.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

SirUli

Hi Jörg

Zitat von: JoWiemann am 22 Juni 2016, 20:51:56
sudo apt-get install librivescript-perl

Kannst du mal checken ob du auf der Kommandozeile "rivescript" eingeben kannst? Und welche Version dort ausgegeben wird?

Viele Grüße,
Uli

JoWiemann

Hier das Ergebnis:


RiveScript Interpreter - Interactive Mode
-----------------------------------------
RiveScript Version: 1.26
        Reply Root: /usr/share/perl5/RiveScript/demo

You are now chatting with the RiveScript bot. Type a message and press Return to send it.
When finished, type '/quit' to exit the program. Type '/help' for other options.



Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

SirUli

Das erklärt das Problem
1.28  Aug 14 2012
  - FIXED: Typos in RiveScript::WD (Bug #77618)
- Added constants RS_ERR_MATCH and RS_ERR_REPLY.


Ich habe nur mit Version 2.0.0 getestet und in 1.42 ist leider ein zweiter wichtiger Fix eingeflossen, der ein Problem mit UTF-8-Zeichen löst

Viele Grüße,
Uli

JoWiemann

Ok, cpan ist durchgelaufen und zeigt keine Seiteneffekte. TALKTOME und RiveScript sind jetzt auch Freunde.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

SirUli

Zitat von: JoWiemann am 22 Juni 2016, 22:07:07
Ok, cpan ist durchgelaufen und zeigt keine Seiteneffekte. TALKTOME und RiveScript sind jetzt auch Freunde.
Sehr gut - danke, das ist auch gut zu wissen!

Ich bin gespannt ;)

Viele Grüße,
Uli

Esjay

Hallo zusammen,ich finde das Thema wirklich spannend, und klinke mich hier mal ein!

Ersteinmal vielen Dank für das erstellen des Moduls.
Mich würde beiläufig interessieren, wie lange es eigentlich dauert so etwas auf die Beine zu stellen?

Nun zum eigentlichen!
Könntet ihr mir kurz hilfestellung zu folgenden Punkten leisten?

ZitatDie Einrichtung von msg - das macht mir das Antworten in die diversen Kanäle sehr viel einfacher.
    Installation von RiveScript in der Version 2.0.1 (oder neuer, falls eine erscheinen sollte), am besten via CPAN.

Bedarf es denn für den ersten Punkt i-einen define oder ist durch die Hinweise im verlinkten Thema dies nur ein beiläufiger Hinweis deinerseits?
ZitatInstallation

Die Dateien werden ab dem 04.11.2015 per Update ausgeliefert.

Zu Punkt 2 wäre ich an der vorgehensweise der Installation interessiert.
Leider bin ich, was Programme über das Terminal zu installieren angeht, nicht mit dem nötigen Wissen ausgestattet.

Danke für eure Hilfe!

Grüße