Module: TALKTOME & TALKTOUSER - Sprachverarbeitung für Nutzerinteraktionen

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

Vorheriges Thema - Nächstes Thema

RoBra81


SirUli

Schaue ich mir an, danke dir! Hast du ein Beispiel was du da machst? Nur damit ich etwas ähnliches evtl. in das Template als Beispiel aufnehmen kann.

Viele Grüße, Uli

RoBra81

Hallo,

gern stelle ich meine Ergebnisse zur Verfügung, wenn ich soweit bin - gern würde ich aber vorher noch ein Problem lösen, um ein funktionierendes Beispiel zur Verfügung zu stellen: ich schaffe es nicht, einen FHEM-Befehl auszuführen.

Ich habe folgenden Eintrag in der rive-Datei:

  + test
  - <call>fhem set Test off</call>


Wenn ich test sende bekomme nur folgende Antwort und nichts passiert:

TALKTOME: No Answer received - that should not be happening. Check with your admin

Im TALKTOME.log steht

[13:7:16] RiveScript: Trying to match "test" against test (test)
[13:7:16] RiveScript: Found a match!
[13:7:16] RiveScript: Processing responses to this trigger.
[13:7:16] RiveScript: Reply: <call>fhem set Test off</call>


Im FHEM-Log finde ich trotz verbose 5 keinen Eintrag mit "TALKTOME_helpers_fhem"

Wo liegt mein Fehler?

Ronny

SirUli

Hi Ronny,

ich tippe, dass Rivescript in diesem Falle keine Rückmeldung sendet sondern nur das Script ausführt - möglicherweise stört er sich daran. Hast du es mal analog meines Beispiels angeschaut? Probieren würde ich also:
+ test
- Befehl abgesetzt <call>fhem set Test off</call>
^ Aktueller status: <call>readingsval Test state Error</call>


Du hattest verbose 5 aber auf das TALKTOME modul gesetzt oder? Dort wird der Befehl dann ausgeführt.

Viele Grüße,
Uli

RoBra81

Hallo Uli,

die fehlende Rückmeldung stört mich erstmal nicht, aber der Befehl wird leider im FHEM nicht ausgeführt. Nachdem ich eine weitere Log-Zeile eingebaut habe, stand auch was im Log (scheinbar funktioniert der hardcodierte Modulname in der Log-Zeile nicht), aber das FHEM-Device bliebt trotz off-Befehl eingeschaltet.

Ronny

SirUli

Hi Ronny,

good catch - das ist hardcodiert gewesen und wird daher dann ausgefiltert, sofern global nicht auf verbose 5 steht. Fixe ich.

Bezüglich der Rückmeldung stehe ich noch etwas im Wald. Ich habe die Zeilen mal bei mir rein
+ test
- Befehl abgesetzt <call>fhem set Test off</call>

und bekomme auch gleich ein Feedback:
2016.07.03 15:12:20 5: TALKTOME: called function TALKTOME_helpers_fhem with command: set Test off
2016.07.03 15:12:20 3: set Test off : Please define Test first
2016.07.03 15:12:20 5: TALKTOME_DispatchToInterpreter: reply is: Befehl abgesetzt Please define Test first
2016.07.03 15:12:20 5: TALKTOME_Write: Variable answer - Befehl abgesetzt Please define Test first (UTF8: 1 / Valid: 1)
2016.07.03 15:12:20 5: TALKTOME dispatch TALKTOUSER###TALKTOUSER_ULI###REPLY###TELEGRAMBOT_SUSI###TelegramBot###TELEGRAMBOT_SUSI:@IREPLACEDTHENUMBER###Befehl abgesetzt Please define Test first
2016.07.03 15:12:20 4: TALKTOUSER_Parse TALKTOME: Variable TALKTOUSER: TALKTOUSER / device: TALKTOUSER_ULI / answertype: REPLY / sourceDeviceName: TELEGRAMBOT_SUSI / sourceDeviceType: TelegramBot / modSourceDeviceName: TELEGRAMBOT_SUSI:@IREPLACEDTHENUMBER / answer: Befehl abgesetzt Please define Test first
2016.07.03 15:12:20 5: TALKTOUSER_Parse TALKTOME: Variable answer - Befehl abgesetzt Please define Test first (UTF8: )
2016.07.03 15:12:20 4: TALKTOUSER_Parse TALKTOME: Updating TELEGRAMBOT_SUSI with the reply
2016.07.03 15:12:20 5: msg @TELEGRAMBOT_SUSI:@IREPLACEDTHENUMBER 0 | | Befehl abgesetzt Please define Test first


Dann habe ich Test so definiert:
define Test dummy

Und bekomme:
2016.07.03 15:19:55 5: TALKTOME: called function TALKTOME_helpers_fhem with command: set Test off
2016.07.03 15:19:55 5: TALKTOME_DispatchToInterpreter: reply is: Befehl abgesetzt
2016.07.03 15:19:55 5: TALKTOME_Write: Variable answer - Befehl abgesetzt  (UTF8: 1 / Valid: 1)
2016.07.03 15:19:55 5: TALKTOME dispatch TALKTOUSER###TALKTOUSER_ULI###REPLY###TELEGRAMBOT_SUSI###TelegramBot###TELEGRAMBOT_SUSI:@IREPLACEDTHENUMBER###Befehl abgesetzt
2016.07.03 15:19:55 4: TALKTOUSER_Parse TALKTOME: Variable TALKTOUSER: TALKTOUSER / device: TALKTOUSER_ULI / answertype: REPLY / sourceDeviceName: TELEGRAMBOT_SUSI / sourceDeviceType: TelegramBot / modSourceDeviceName: TELEGRAMBOT_SUSI:@IREPLACEDTHENUMBER / answer: Befehl abgesetzt
2016.07.03 15:19:55 5: TALKTOUSER_Parse TALKTOME: Variable answer - Befehl abgesetzt  (UTF8: )
2016.07.03 15:19:55 4: TALKTOUSER_Parse TALKTOME: Updating TELEGRAMBOT_SUSI with the reply
2016.07.03 15:19:55 5: msg @TELEGRAMBOT_SUSI:@IREPLACEDTHENUMBER 0 | | Befehl abgesetzt


Und mein Dummy ist eingeschalten. Jetzt habe ich als Problem, dass ich es nicht nachvollziehen kann. Ich fixe mal das mit dem Log und baue noch ein paar mehr ausgaben ein, dann kann man das vielleicht besser sehen.

Viele Grüße,
Uli

SirUli

Hi Ronny,

Zitat von: RoBra81 am 03 Juli 2016, 15:06:52aber das FHEM-Device bliebt trotz off-Befehl eingeschaltet.

Fehler gefunden. Du hast da was ausgeklammert (falls du noch die Datei von oben verwendest). Zeile 188:
return #fhem($command);

Du kannst auch einfach ein update ausführen - ich habe nun die Perl funktion übernommen und mal einen einen eval block drum rum gepackt um das gegen fhem zu schirmen. Musst mal probieren - ich habe noch keinen Anwendungsfall dafür.

Viele Grüße,
Uli

RoBra81

Vielen Dank! Jetzt tut's! Jetzt kann ich auch ein erstes Beispiel posten:

Zunächst habe ich zwei subs in der myutils, um zum Einen alle eingeschalteten und zum Anderen alle ausgeschalteten Lampen zu suchen und für Telegram als Liste aufzuarbeiten (aus . wir _ und es wird ein / vorangestellt, damit es im Telegram anklickbar ist):

sub
chatBot_getLightsOn
{
  my @lights = devspec2array('.*\.LI\..*:FILTER=state!=off:FILTER=TYPE!=DOIF:FILTER=TYPE!=notify:FILTER=TYPE!=readingsProxy');;
  my $msg = "Es sind folgende Lichter eingeschaltet:\n \n";;
  my $room = "";
 
  if (@lights > 0 and defined($defs{$lights[0]})){
    foreach (@lights){
      if ($room ne AttrVal($_, "room", $_))
      {
        if ($room ne "")
        {
          $msg .= "/".$room."_Aus \n";
        }
        $room = AttrVal($_, "room", $_);
        $msg .= $room.": \n";
      }
      $_ =~ s/\./__/g;
      $msg .= "/".$_." \n";
    }
    if ($room ne "")
    {
      $msg .= "/".$room."_Aus \n";
    }
    $msg .= " \n/Alle_Aus
             \n/abbrechen
            ";;
  }else{
    $msg = "Es sind alle Lichter ausgeschaltet.";;
    $msg .= "\n/Hauptmenue
            ";;
  }
  return $msg;
}

sub
chatBot_getLightsOff
{
  my @lights = devspec2array('.*\.LI\..*:FILTER=state!=on:FILTER=TYPE!=DOIF:FILTER=TYPE!=notify:FILTER=TYPE!=readingsProxy');;
  my $msg = "Es sind folgende Lichter ausgeschaltet:\n \n";;
  my $room = "";
 
  if (@lights > 0 and defined($defs{$lights[0]})){
    foreach (@lights){
      if ($room ne AttrVal($_, "room", $_))
      {
        if ($room ne "")
        {
          $msg .= "/".$room."_Ein \n";
        }
        $room = AttrVal($_, "room", $_);
        $msg .= $room.": \n";
      }
      $_ =~ s/\./__/g;
      $msg .= "/".$_." \n";
    }
    if ($room ne "")
    {
      $msg .= "/".$room."_Ein \n";
    }
    $msg .= " \n/Alle_Ein
             \n/abbrechen
            ";;
  }else{
    $msg = "Es sind alle Lichter eingeschaltet.";;
    $msg .= "\n/Hauptmenue
            ";;
  }
  return $msg;
}


So wird zum Beipiel aus DG.wz.LI.Allgemein ein /DG_wz_LI_Allgemein (meine Geräte haben alle das Format ETAGE.raum.TYP.Beschreibung)

Dann habe ich folgende Inhalte in der .rive-Datei

! array levels  = eg og dg au
! array rooms   = ku ez ba fk sp ks wz bu sz
// Trick, um _ in Triggern verwenden zu können
! array spacer = __ _

+ was kannst du
- Standardkommandos:
^ /Licht_Aus
^ /Licht_An

/*****************************************************************************\
* FHEM Licht aus                                                            *
\*****************************************************************************/
+ licht(@spacer)aus
- <call>perl chatBot_getLightsOn</call>{topic=licht_aus}

> topic licht_aus

  + [*] (abbrechen|hauptmenue) [*]
  - Untermenü verlassen{topic=random}

  + (@levels)(@spacer)(@rooms)(@spacer)li(@spacer)(*)(@spacer)(*)
  - <set licht={uppercase}<star1>{/uppercase}.<star3>.LI.{formal}<star6>{/formal}_{formal}<star9>{/formal}>Schalte Licht <get licht> aus
  ^ <call>fhem set <get licht> off</call>

  + (@levels)(@spacer)(@rooms)(@spacer)li(@spacer)(*)
  - <set licht={uppercase}<star1>{/uppercase}.<star3>.LI.{formal}<star6>{/formal}>Schalte Licht <get licht> aus
  ^ <call>fhem set <get licht> off</call>

  + alle(@spacer)aus
  - Schalte alle Lichter aus
  ^ <call>fhem set .*\.LI\..*:FILTER=state!=off:FILTER=TYPE!=DOIF:FILTER=TYPE!=notify:FILTER=TYPE!=readingsProxy off</call>
 
  + (*)(@spacer)(*)(@spacer)aus
  - <set room={formal}<star1>{/formal}_{formal}<star4>{/formal}>Schalte Licht in <get room> aus
  ^ <call>fhem set .*\.LI\..*:FILTER=state!=off:FILTER=TYPE!=DOIF:FILTER=TYPE!=notify:FILTER=TYPE!=readingsProxy:FILTER=room=<get room> off</call>
 
  + (*)(@spacer)aus
  - <set room={formal}<star1>{/formal}>Schalte Licht in <get room> aus
  ^ <call>fhem set .*\.LI\..*:FILTER=state!=off:FILTER=TYPE!=DOIF:FILTER=TYPE!=notify:FILTER=TYPE!=readingsProxy:FILTER=room=<get room> off</call> 
 
< topic

/*****************************************************************************\
* FHEM Licht an                                                             *
\*****************************************************************************/
+ licht(@spacer)an
- <call>perl chatBot_getLightsOff</call>{topic=licht_an}

> topic licht_an

  + [*] (abbrechen|hauptmenue) [*]
  - Untermenü verlassen{topic=random}

  + (@levels)(@spacer)(@rooms)(@spacer)li(@spacer)(*)(@spacer)(*)
  - <set licht={uppercase}<star1>{/uppercase}.<star3>.LI.{formal}<star6>{/formal}_{formal}<star9>{/formal}>Schalte Licht <get licht> ein
  ^ <call>fhem set <get licht> on</call>

  + (@levels)(@spacer)(@rooms)(@spacer)li(@spacer)(*)
  - <set licht={uppercase}<star1>{/uppercase}.<star3>.LI.{formal}<star6>{/formal}>Schalte Licht <get licht> ein
  ^ <call>fhem set <get licht> on</call>
 
  + alle(@spacer)ein
  - Schalte alle Lichter ein
  ^ <call>fhem set .*\.LI\..*:FILTER=state!=on:FILTER=TYPE!=DOIF:FILTER=TYPE!=notify:FILTER=TYPE!=readingsProxy on</call>
 
  + (*)(@spacer)(*)(@spacer)ein
  - <set room={formal}<star1>{/formal}_{formal}<star4>{/formal}>Schalte Licht in <get room> ein
  ^ <call>fhem set .*\.LI\..*:FILTER=state!=on:FILTER=TYPE!=DOIF:FILTER=TYPE!=notify:FILTER=TYPE!=readingsProxy:FILTER=room=<get room> on</call>
 
  + (*)(@spacer)ein
  - <set room={formal}<star1>{/formal}>Schalte Licht in <get room> ein
  ^ <call>fhem set .*\.LI\..*:FILTER=state!=on:FILTER=TYPE!=DOIF:FILTER=TYPE!=notify:FILTER=TYPE!=readingsProxy:FILTER=room=<get room> on</call>
 
< topic



Damit kann ich nun einzelne oder alle Lichter eines Raumes ein bzw. ausschalten...

Daraus resultiert folgender beispielhafter Chat-Verlauf:

Ronny, [03.07.16 22:20]
was kannst du

FHEM, [03.07.16 22:20]
Standardkommandos:
/Licht_Aus
/Licht_An

Ronny, [03.07.16 22:20]
/Licht_An

FHEM, [03.07.16 22:20]
Es sind folgende Lichter ausgeschaltet:

Aussenwelt:
/AU__ho__LI__Markise
/AU__ho__LI__Terrasse
/Aussenwelt_Ein
Buero:
/DG__bu__LI__Flur
/DG__bu__LI__Schornstein
/DG__bu__LI__Schreibtisch
/Buero_Ein
Schlafzimmer:
/DG__sz__LI__Hinten_Halogen
/DG__sz__LI__Hinten_Led
/DG__sz__LI__Kleiderschrank
/DG__sz__LI__Vorn
/Schlafzimmer_Ein
Esszimmer:
/OG__ez__LI__Allgemein
/OG__ez__LI__Bogen
/OG__ez__LI__Esstisch
/OG__ez__LI__Vitrine
/Esszimmer_Ein
Flur_Kinder:
/OG__fk__LI__Allgemein
/Flur_Kinder_Ein
Hausflur:
/OG__hf__LI__Schuhschrank
/OG__hf__LI__Treppe
/Hausflur_Ein
Kinderschlafzimmer:
/OG__ks__LI__Allgemein
/OG__ks__LI__Bett
/OG__ks__LI__Sterne
/Kinderschlafzimmer_Ein
Kueche:
/OG__ku__LI__Besenschrank
/OG__ku__LI__Kuechenschrank
/OG__ku__LI__Kuechenzeile
/OG__ku__LI__Kuehlschrank
/OG__ku__LI__Theke
/Kueche_Ein
Spielzimmer_Kinder:
/OG__sp__LI__Baggerheck_Schreibtisch
/OG__sp__LI__Baggerschaufel_Podest
/Spielzimmer_Kinder_Ein
Treppe:
/OG__tr__LI__Handlauf_Fenster
/Treppe_Ein

/Alle_Ein

/abbrechen

Ronny, [03.07.16 22:20]
/Buero_Ein

FHEM, [03.07.16 22:20]
Schalte Licht in Buero ein

Ronny, [03.07.16 22:20]
abbrechen

FHEM, [03.07.16 22:20]
Untermenü verlassen

Ronny, [03.07.16 22:20]
Licht_aus

FHEM, [03.07.16 22:20]
Es sind folgende Lichter eingeschaltet:

Buero:
/DG__bu__LI__Flur
/DG__bu__LI__Schornstein
/DG__bu__LI__Schreibtisch
/Buero_Aus
Wohnzimmer:
/DG__wz__LI__Allgemein
/Wohnzimmer_Aus

/Alle_Aus

/abbrechen

Ronny, [03.07.16 22:20]
/DG__bu__LI__Schornstein

FHEM, [03.07.16 22:20]
Schalte Licht DG.bu.LI.Schornstein aus

Ronny, [03.07.16 22:20]
/Buero_Aus

FHEM, [03.07.16 22:20]
Schalte Licht in Buero aus

Ronny, [03.07.16 22:20]
abbrechen

FHEM, [03.07.16 22:20]
Untermenü verlassen


Ronny

SirUli

Das sieht ja cool aus :D Ich verlinke das mal im ersten Beitrag. Merci für die detaillierte Beschreibung!

Viele Grüße,
Uli

RoBra81

Guten Morgen,

ich hätte einen weiteren Wunsch (bestimmt nicht der letzte  ;)): wäre es möglich, dass man in einer der nächsten Versionen anstelle des Dateinamens einen Ordner angeben kann, in welchen das "Brain" liegt? Ich würde gern die einzelnen Funktionen (Licht, Heizung, ...) in separaten Dateien pflegen - das würde es auch erleichtern, mal ein Wiki mit Beispielen für die Funktionen anzulegen...

Ronny

SirUli

Moin Ronny, klar sollte sich machen lassen. Gibt ja von der Bibliothek schon eine Funktion dazu. Baue ich die Tage ein :)

Viele Grüsse, Uli


Sent from my iPhone using Tapatalk

RoBra81

So, ich habe jetzt eine Lichtsteuerung mit (mehr oder weniger) natürlicher Sprache gebaut und dabei einen neuen Wunsch (bzw. vielleicht geht's ja schon und ich seh's nicht):

Hier der Auszug aus der rive-Datei:

! person badezimmer = OG.ba.
! person buero = DG.bu.
! person esszimmer = OG.ez.
! person flur_kinder = OG.fk.
! person hausflur = OG.hf.
! person kinderschlafzimmer = OG.ks.
! person kueche = OG.ku.
! person schlafzimmer = DG.sz.
! person spielzimmer_kinder = OG.sp.
! person treppe = OG.tr.
! person unten_kueche = EG.uk.
! person unten_stube = EG.st.
! person waschhaus = EG.wh.
! person wohnzimmer = DG.wz.

! sub büro = buero
! sub bad = badezimmer
! sub flur kinder = flur_kinder
! sub kinderflur = flur_kinder
! sub spielzimmer kinder = spielzimmer_kinder
! sub spielzimmer = spielzimmer_kinder
! sub kinderspielzimmer = spielzimmer_kinder
! sub kinderzimmer = spielzimmer_kinder
! sub kueche unten = unte_kueche
// Deckenlicht heißt bei mir meistens "Allgemein"
! sub decke = allgemein


/*****************************************************************************\
* FHEM Befehle                                                               *
\*****************************************************************************/
! array schaltenaliaseinschalten = an|on|ein
! array schaltenaliasausschalten = aus|off
! array schaltenaliasartikel   = der|die|das
! array schaltenaliasfuellwoerter = schalte|mach
! array schaltenaliasorte     = in|am|auf|an|im|auf dem
! array schaltenaliashoeflich     = bitte
! array roomsfull                   = badezimmer|buero|esszimmer|flur_kinder|hausflur|kinderschlafzimmer|kueche|schlafzimmer|spielzimmer_kinder|treppe|unten_kueche|unten_stube|waschhaus|wohnzimmer

// einzelnes Licht ein- bzw. ausschalten
// Bsp: [Bitte] schalte das Licht im Wohnzimmer an der Decke (ein|aus)
+ [@schaltenaliashoeflich] [@schaltenaliasfuellwoerter] [@schaltenaliashoeflich] [@schaltenaliasartikel] licht [@schaltenaliasorte] (@roomsfull) [@schaltenaliasorte] [@schaltenaliasartikel] _ (@schaltenaliaseinschalten)
- <set light={person}<star1>{/person}LI.{formal}<star2>{/formal}>Schalte Licht <get light> ein
^ <call>fhem set <get light> on</call>

+ [@schaltenaliashoeflich] [@schaltenaliasfuellwoerter] [@schaltenaliashoeflich] [@schaltenaliasartikel] licht [@schaltenaliasorte] (@roomsfull) [@schaltenaliasorte] [@schaltenaliasartikel] _ (@schaltenaliasausschalten)
- <set light={person}<star1>{/person}LI.{formal}<star2>{/formal}>Schalte Licht <get light> aus
^ <call>fhem set <get light> off</call>

// einzelnes Licht ein- bzw. ausschalten - anderer Satzbau
// Bsp: [Bitte] schalte das Licht an der Decke im Wohnzimmer (ein|aus)
+ [@schaltenaliashoeflich] [@schaltenaliasfuellwoerter] [@schaltenaliashoeflich] [@schaltenaliasartikel] licht [@schaltenaliasorte] [@schaltenaliasartikel] _ [@schaltenaliasorte] (@roomsfull) (@schaltenaliaseinschalten)
- <set light={person}<star2>{/person}LI.{formal}<star1>{/formal}>Schalte Licht <get light> ein
^ <call>fhem set <get light> on</call>

+ [@schaltenaliashoeflich] [@schaltenaliasfuellwoerter] [@schaltenaliashoeflich] [@schaltenaliasartikel] licht [@schaltenaliasorte] [@schaltenaliasartikel] _ [@schaltenaliasorte] (@roomsfull) (@schaltenaliasausschalten)
- <set light={person}<star2>{/person}LI.{formal}<star1>{/formal}>Schalte Licht <get light> aus
^ <call>fhem set <get light> off</call>

// einzelnes Licht mit zweiteiligem Namen ein- bzw. ausschalten
// Bsp: [Bitte] schalte das Licht im Schlafzimmer hinten halogen (ein|aus)
+ [@schaltenaliashoeflich] [@schaltenaliasfuellwoerter] [@schaltenaliashoeflich] [@schaltenaliasartikel] licht [@schaltenaliasorte] [@schaltenaliasartikel] zwei worte _ _ [@schaltenaliasorte] (@roomsfull) (@schaltenaliaseinschalten)
- <set light={person}<star3>{/person}LI.{formal}<star1>{/formal}_{formal}<star2>{/formal}>Schalte Licht <get light> ein
^ <call>fhem set <get light> on</call>

+ [@schaltenaliashoeflich] [@schaltenaliasfuellwoerter] [@schaltenaliashoeflich] [@schaltenaliasartikel] licht [@schaltenaliasorte] [@schaltenaliasartikel] zwei worte _ _ [@schaltenaliasorte] (@roomsfull) (@schaltenaliasausschalten)
- <set light={person}<star3>{/person}LI.{formal}<star1>{/formal}_{formal}<star2>{/formal}>Schalte Licht <get light> aus
^ <call>fhem set <get light> off</call>

// Licht in einem Zimmer ein- bzw. ausschalten
// Bsp: [Bitte] schalte das Licht im Schlafzimmer (ein|aus)
+ [@schaltenaliashoeflich] [@schaltenaliasfuellwoerter] [@schaltenaliashoeflich] [@schaltenaliasartikel] licht [@schaltenaliasorte] (@roomsfull) (@schaltenaliaseinschalten)
- <set light={person}<star>{/person}LI.>Licht {formal}<star>{/formal} wird eingeschaltet
^ <call>fhem set <get light>.* on</call>

+ [@schaltenaliashoeflich] [@schaltenaliasfuellwoerter] [@schaltenaliashoeflich] [@schaltenaliasartikel] licht [@schaltenaliasorte] (@roomsfull) (@schaltenaliasausschalten)
- <set light={person}<star>{/person}LI.>Licht {formal}<star>{/formal} wird ausgeschaltet
^ <call>fhem set <get light>.* off</call>



Das funktioniert mit Telegram, ist aber eigentlich nicht dafür gebaut. Die eigentliche Idee dahinter ist, hierfür die Spracheingabe von AMAD zu nutzen: die AMADCommBridge bekommt den Sprachbefehl, führt ihn aus und antwortet (achtung, hier kommt mein Wunsch:) per Sprachnachricht auf das Gerät, das den Befehl gesendet hat. Ich bräuchte also die Möglichkeit, die Antwort nicht per text (oder push) zu senden, sondern per audio (tts). msg kann das bereits, aber ich weiß nicht, ob dein Modul das bereits unterstützt und ich es nicht finde, oder ob das tatsächlich noch umgesetzt werden muss...

Ronny

SirUli

Hi Ronny,

prinzipiell nutzt mein Modul nur msg um Befehle zurück zu senden. In der TALKTOUSER steht diese Zeile:
fhem("msg $device $msgPriority $msgTitle $msgMessage");

Mein Verständnis wäre, dass das msg Modul dann sich ansieht, was der default Pfad für das gewünschte Gerät wäre und diesen dann wählt. Allerdings sehe ich hier auch, dass default "text" als Receiver vergeben wird, falls nicht explizit was anderes gewählt wird. Hätte vermutet, dass man am Zieldevice was setzen kann - das muss ich mir nochmal genau ansehen. Du hast aber recht - aktuell geht es nicht über eine Konfiguration an meinem Modul(en).

Viele Grüße,
Uli

RoBra81

Hallo Uli,

ich habe mal ein bisschen getestet: Ich kann nun über AMAD mit FHEM sprechen und die Lichter werden auch geschaltet  ;D
Leider gibt es mMn kein Attribut am Device um msg-Nachrichten von Text auf Audio umzuleiten (zumal AMAD auch Text unterstützen würde) - ich bekomme also keine Antwort auf's Handy...

Ronny

RoBra81

Hallo Uli,

ich hoffe, dass es in deinem Sinne ist: da ich die Tage meine Beispiele veröffentlichen will, habe ich mit deinen Infos mal ein Wiki angelegt: http://www.fhemwiki.de/wiki/TALKTOME_%26_TALKTOUSER_-_Sprachverarbeitung_f%C3%BCr_Nutzerinteraktionen

Ronny