Autor Thema: msgDialog: Instant Messaging als FHEM Interface  (Gelesen 38927 mal)

Offline ErzGabriel

  • Full Member
  • ***
  • Beiträge: 252
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #30 am: 02 Oktober 2017, 18:38:14 »
Nein, ist nicht die aktuellste Version. Ist Version 5.6 mit ein paar PM-Dateien geupdatet.

Offline binford6000

  • Full Member
  • ***
  • Beiträge: 423
  • 🏠⚙️🛠📱
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #31 am: 02 Oktober 2017, 19:58:24 »
Hi, habe meinen ersten kleinen lauffähigen Dialog gebaut. Nur wird das "Menü" - also "Einschalten, "Ausschalten" und "abbrechen" nur als normale Textnachricht angezeigt. Bei Eingabe von "Einschalten", "Ausschalten" oder "abbrechen" wird der Dialog korrekt ausgeführt und landet danach wieder im Hauptmenü. Woran kann das liegen?

{"Flur":{
  "message": [
    "(Einschalten)",
    "(Ausschalten)",
    "(abbrechen)"
  ],
  "Einschalten":{
  "commands": "set fl_sw_1 on",
  "message":[
    "(%me%) ",
    "Die Lampe im Flur wurde eingeschaltet."
  ]
  },
  "Ausschalten":{
  "commands": "set fl_sw_1 off",
  "message":[
    "(%me%) ",
    "Die Lampe im Flur wurde ausgeschaltet."
  ]
  }
 }
}
VG Sebastian
FHEM 5.8 auf RPi3, IOserver für alle CULs + EnOcean mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + INNR + Nanoleaf Aurora, AmazonDASH, GTAG, SONOS, SIRD, ENIGMA2, YAMAHA_AVR, KODI, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking

Online igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2520
  • RTFM
    • commandref
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #32 am: 03 Oktober 2017, 01:01:39 »
ParseParams ist noch nicht sooo alt, da ist dann ein Update fällig.


Zu einem Keyboard Gehört auch immer eine  normale Nachricht.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Usertreffen im Kreis Gütersloh! Nächster Termin am 29. September.

MAINTAINER: archetype, Heating_Control, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap, RandomTimer, Twilight, WeekdayTimer
ToDo: Babel, FluxLED, HABridgeUpdater, iSpindel

Offline ErzGabriel

  • Full Member
  • ***
  • Beiträge: 252
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #33 am: 03 Oktober 2017, 07:58:55 »
Schade, dann kann ich es nicht nutzen, weil ein Update mache ich nicht.
Beim letzten Versuch des Updates auf die aktuelle Version lief meine Ha_bridge nicht mehr und ich habe sie auch nicht mehr zum laufen bekommen.
Danke für Deine Hilfe.

Online igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2520
  • RTFM
    • commandref
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #34 am: 03 Oktober 2017, 08:38:19 »
Du könntest in fhem.pl die sub updaten
sub parseParams($;$$);
sub
parseParams($;$$)
{
  my($cmd, $separator, $joiner) = @_;
  $separator = ' ' if(!$separator);
  $joiner = $separator if(!$joiner); # needed if separator is a regexp
  my(@a, %h);

  my @params;
  if( ref($cmd) eq 'ARRAY' ) {
    @params = @{$cmd};
  } else {
    @params = split($separator, $cmd);
  }

  while (@params) {
    my $param = shift(@params);
    next if($param eq "");
    my ($key, $value) = split( '=', $param, 2 );

    if( !defined( $value ) ) {
      $value = $key;
      $key = undef;

    # the key can not start with a { -> it must be a perl expression # vim:}
    } elsif( $key =~ m/^\s*{/ ) { # for vim: }
      $value = $param;
      $key = undef;
    }

    #collect all parts until the closing ' or "
    while( $param && $value =~ m/^('|")/ && $value !~ m/$1$/ ) {
      my $next = shift(@params);
      last if( !defined($next) );
      $value .= $joiner . $next;
    }
    #remove matching ' or " from the start and end
    if( $value =~ m/^('|")/ && $value =~ m/$1$/ ) {
      $value =~ s/^.(.*).$/$1/;
    }

    #collect all parts until opening { and closing } are matched
    if( $value =~ m/^\s*{/ ) { # } for match
      my $count = 0;
      for my $i (0..length($value)-1) {
        my $c = substr($value, $i, 1);
        ++$count if( $c eq '{' );
        --$count if( $c eq '}' );
      }

      while( $param && $count != 0 ) {
        my $next = shift(@params);
        last if( !defined($next) );
        $value .= $joiner . $next;

        for my $i (0..length($next)-1) {
          my $c = substr($next, $i, 1);
          ++$count if( $c eq '{' );
          --$count if( $c eq '}' );
        }
      }
    }

    if( defined($key) ) {
      $h{$key} = $value;
    } else {
      push @a, $value;
    }

  }
  return(\@a, \%h);
}
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Usertreffen im Kreis Gütersloh! Nächster Termin am 29. September.

MAINTAINER: archetype, Heating_Control, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap, RandomTimer, Twilight, WeekdayTimer
ToDo: Babel, FluxLED, HABridgeUpdater, iSpindel
Hilfreich Hilfreich x 1 Liste anzeigen

Offline ErzGabriel

  • Full Member
  • ***
  • Beiträge: 252
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #35 am: 03 Oktober 2017, 09:17:51 »
Hat geklappt. Danke.

Online igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2520
  • RTFM
    • commandref
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #36 am: 03 Oktober 2017, 09:49:27 »
Hi, habe meinen ersten kleinen lauffähigen Dialog gebaut. Nur wird das "Menü" - also "Einschalten, "Ausschalten" und "abbrechen" nur als normale Textnachricht angezeigt. Bei Eingabe von "Einschalten", "Ausschalten" oder "abbrechen" wird der Dialog korrekt ausgeführt und landet danach wieder im Hauptmenü. Woran kann das liegen?

{"Flur":{
  "message": [
    "(Einschalten)",
    "(Ausschalten)",
    "(abbrechen)"
  ],
  "Einschalten":{
  "commands": "set fl_sw_1 on",
  "message":[
    "(%me%) ",
    "Die Lampe im Flur wurde eingeschaltet."
  ]
  },
  "Ausschalten":{
  "commands": "set fl_sw_1 off",
  "message":[
    "(%me%) ",
    "Die Lampe im Flur wurde ausgeschaltet."
  ]
  }
 }
}
VG Sebastian
Du könntest für fl_sw_1 auch noch einen Platzhalter, z.B. %actor%, ersetzen, dann ist es nachher einfacher wenn man den Dialog für andere Räume kopierst ;)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Usertreffen im Kreis Gütersloh! Nächster Termin am 29. September.

MAINTAINER: archetype, Heating_Control, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap, RandomTimer, Twilight, WeekdayTimer
ToDo: Babel, FluxLED, HABridgeUpdater, iSpindel

Offline binford6000

  • Full Member
  • ***
  • Beiträge: 423
  • 🏠⚙️🛠📱
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #37 am: 03 Oktober 2017, 10:57:01 »
Zitat
Du könntest für fl_sw_1 auch noch einen Platzhalter, z.B. %actor%, ersetzen, dann ist es nachher einfacher wenn man den Dialog für andere Räume kopierst ;)
Hab ich schon gesehen, aber eins nach dem anderen...  ;) Die bedingte Anzeige steht auch auf dem ToDo:
"{return('(Einschalten) ') if(ReadingsVal('%controlUnit%', 'state', '') eq off')}",
Zitat
Zu einem Keyboard Gehört auch immer eine  normale Nachricht.
Hab jetzt eine normale Nachricht dazugeschrieben und schwupps funktionierts  :)
{"Flur":{
  "message": [
    "(Einschalten) ",
    "(Ausschalten) ",
    "(abbrechen) ",
    "Bitte auswählen:"
  ],
Danke und noch einen schönen Feiertag!
FHEM 5.8 auf RPi3, IOserver für alle CULs + EnOcean mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + INNR + Nanoleaf Aurora, AmazonDASH, GTAG, SONOS, SIRD, ENIGMA2, YAMAHA_AVR, KODI, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking

Offline ErzGabriel

  • Full Member
  • ***
  • Beiträge: 252
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #38 am: 03 Oktober 2017, 11:57:16 »
Ich bräuchte nochmals Hilfe, bin zu blöde den Fehler zu finden.
Wollte als Test erstmal den Waschmaschinen Dialog anlegen.
define Waschmaschine_Dialog msgDialog {}Klappt ohne Probleme.

Füge ich dann den Code in die def ein, kommt folgendes beim speichern:
Usage: define <name> msgDialog {JSON}

illegal backslash escape sequence in string, at character offset 714 (before "\\) ",\n        "Das...") at ./FHEM/76_msgDialog.pm line 85.

Und da will mir nicht in den Kopf warum, habe mir den Thread mittlerweile mehrmals durch gelesen aber ich sehe meinen Fehler nicht.
Habe die Zeile:
attr myMsgConfig evalSpecials me=kanaan\
TelegramBot=TelegramBot
mit meinen Daten angepasst.

Offline binford6000

  • Full Member
  • ***
  • Beiträge: 423
  • 🏠⚙️🛠📱
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #39 am: 03 Oktober 2017, 12:00:40 »
attr myMsgConfig evalSpecials me=kanaan\Hast Du auch den Backslash entfernt? Da bin ich auch drübergestolpert...
Sieht bei mir zB. so aus:
me=Q
TelegramBot=fhemBot
VG Sebastian
FHEM 5.8 auf RPi3, IOserver für alle CULs + EnOcean mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + INNR + Nanoleaf Aurora, AmazonDASH, GTAG, SONOS, SIRD, ENIGMA2, YAMAHA_AVR, KODI, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking

Online igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2520
  • RTFM
    • commandref
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #40 am: 03 Oktober 2017, 12:07:04 »
Habe die Zeile:
attr myMsgConfig evalSpecials me=kanaan\
TelegramBot=TelegramBot
mit meinen Daten angepasst.
Sind ja auch zwei Zeilen und der \ steht in der Raw definition für den Zeilenumbruch ;)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Usertreffen im Kreis Gütersloh! Nächster Termin am 29. September.

MAINTAINER: archetype, Heating_Control, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap, RandomTimer, Twilight, WeekdayTimer
ToDo: Babel, FluxLED, HABridgeUpdater, iSpindel

Offline ErzGabriel

  • Full Member
  • ***
  • Beiträge: 252
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #41 am: 03 Oktober 2017, 13:05:53 »
Alles klar, gleiche Stelle gefallen, der Backslash.  ::)

Danke euch.

Offline ErzGabriel

  • Full Member
  • ***
  • Beiträge: 252
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #42 am: 03 Oktober 2017, 17:12:44 »
Hi.
Leute, ich stell mich zu dämlich an. Ich habe die ersten Dialoge definiert aber kriege vom Bot keine Antwort.
In myMsgConfig:
evalSpecials me=Marcus
TelegramBot=Jarvis_RPibot

In Residents rr_Marcus
msgContactPush Jarvis:@Jarvis_RPibot
Zum testen habe ich den Dialog Waschmaschine übernommen. Schicke ich jetzt per Telegram an den Bot: Waschmaschine, wird der Text in Fhem angezeigt aber vom Bot kommt keine Antwort.
Ich habe jetzt auch sämtliche Kombinationen ausprobiert, die mir einfallen, ich wüsste nicht mehr, wo jetzt noch was falsch ist.
Sorry, aber ich bräuchte nochmal Eure Hilfe.

Online igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2520
  • RTFM
    • commandref
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #43 am: 03 Oktober 2017, 17:17:29 »
Hi.
Leute, ich stell mich zu dämlich an. Ich habe die ersten Dialoge definiert aber kriege vom Bot keine Antwort.
In myMsgConfig:
evalSpecials me=Marcus
TelegramBot=Jarvis_RPibot

In Residents rr_Marcus
msgContactPush Jarvis:@Jarvis_RPibot
Zum testen habe ich den Dialog Waschmaschine übernommen. Schicke ich jetzt per Telegram an den Bot: Waschmaschine, wird der Text in Fhem angezeigt aber vom Bot kommt keine Antwort.
Ich habe jetzt auch sämtliche Kombinationen ausprobiert, die mir einfallen, ich wüsste nicht mehr, wo jetzt noch was falsch ist.
Sorry, aber ich bräuchte nochmal Eure Hilfe.
das msgContactPush Attribut ist falsch definiert.
Es muss sein
msgContactPush Jarvis_RPibot:@<PeerId>
Dann sollte im rr_Marcus auch ein neues Reading auftauchen in dem deine Nachricht steht.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Usertreffen im Kreis Gütersloh! Nächster Termin am 29. September.

MAINTAINER: archetype, Heating_Control, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap, RandomTimer, Twilight, WeekdayTimer
ToDo: Babel, FluxLED, HABridgeUpdater, iSpindel

Offline ErzGabriel

  • Full Member
  • ***
  • Beiträge: 252
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #44 am: 03 Oktober 2017, 20:02:55 »
Habe es jetzt mit Jarvis_RPibot und Jarvis probiert, keines bringt den gewünschten Erfolg.
Die me Zeile im Bot, sieht wie folgt aus:
me 428936987:Jarvis:@Jarvis_RPibot
Vermute, das ich da noch was falsch mache.