Autor Thema: Neuer FHEM Befehl "msg" für Benachrichtigungen (Push,Mail,Audio,Light,Screen)  (Gelesen 82681 mal)

Offline FHEm2005

  • Sr. Member
  • ****
  • Beiträge: 583
    • Squeezebox mit RFID-Karten steuern
So, jetzt habe ich 27 Seiten in in zwei langen Tagen "durchgeackert" und hoffe, dass mich niemand ob meiner Fragen erschlägt.

Ich arbeite das Beispiel aus dem Wiki MsgDialog durch und versuche es möglichst nah das Beispiel meta_Dialog nachzuarbeiten. Mein Problem besteht darin, dass das notify auf des Schlüsselwort 'start' nur höchst mangelhaft bis gar nicht anspricht. Ich glaube, dass die Auflösung der Eingabe und die Umsetzung als Befehl irgendwie fehlerhaft ist. Deshalb habe ich mal im ersten Aufschlag die Meldungen im Eventmonitor mit verbose=5 für die beteiligten Module hier angehängt. Ich erkenne zwar die Warnung, kann sie aber wegen mangelhafter Perl-Kenntnisse nicht deuten.
2018.05.28 17:24:23 5 : msgConfig msgConfig: called function msgConfig_Notify()
2018.05.28 17:24:23 4 : msg Eberhard: Received push message from VillaLuehl: start
2018.05.28 17:24:23 5 : msgDialog (msg_Wz_Heizung) - entering msgDialog_Notify
2018.05.28 17:24:23 4 : msgDialog (msg_Wz_Heizung) triggered by "Eberhard fhemMsgRcvPush: start"
2018.05.28 17:24:23 5 : msgDialog (msg_Wz_Heizung) entering msgDialog_progress recipients: Eberhard message: start force: 0
2018.05.28 17:24:23 5 : msgDialog (msg_Wz_Heizung) - entering msgDialog_evalSpecials
2018-05-28 17:24:23 msgDialog msg_Wz_Heizung Eberhard_history:
2018-05-28 17:24:23 msgDialog msg_Wz_Heizung Eberhard: start
2018.05.28 17:24:23 4 : msgDialog (msg_Wz_Heizung) - return from command "deletereading TYPE=msgDialog Eberhard_history": Deleted reading Eberhard_history for device msg_Wz_Heizung
2018.05.28 17:24:23 1 : PERL WARNING: Use of uninitialized value in split at (eval 28421) line 1.
2018.05.28 17:24:23 3 : eval: {return('(' . join(') (', sort(split(' ', fhem('get TYPE=msgDialog:FILTER=NAME!=msg_Wz_Heizung:FILTER=allowed=.*(Eberhard|everyone).* trigger'))), 'abbrechen') . ') ')}
2018.05.28 17:24:23 5 : msg: found types=push
2018.05.28 17:24:23 5 : msg: found recipient=@Eberhard
2018.05.28 17:24:23 5 : msg: found title=FHEM
2018.05.28 17:24:23 5 : msg Eberhard: Checking for available routes (triggered by type push)
2018.05.28 17:24:23 5 : msg Eberhard: screen route check result: ROUTE_UNAVAILABLE
2018.05.28 17:24:23 5 : msg Eberhard: light route check result: ROUTE_UNAVAILABLE
2018.05.28 17:24:23 5 : msg Eberhard: audio route check result: ROUTE_UNAVAILABLE
2018.05.28 17:24:23 5 : msg Eberhard: push route check result: ROUTE_AVAILABLE
2018.05.28 17:24:23 5 : msg Eberhard: mail route check result: ROUTE_UNAVAILABLE
2018.05.28 17:24:23 4 : msg Eberhard: Available routes: screen=0 light=0 audio=0 text=1 push=1 mail=0
2018.05.28 17:24:23 5 : msg Eberhard: Trying to send message via gateway VillaLuehl to recipient @123456789
2018.05.28 17:24:23 5 : msg Eberhard: Determined default title:
2018.05.28 17:24:23 5 : msg Eberhard: msgSchema: replacing %RECIPIENT% and $RECIPIENT by ''
2018.05.28 17:24:23 5 : msg Eberhard: msgSchema: replacing %TelegramBot_MTYPE% and $TelegramBot_MTYPE by 'message'
2018.05.28 17:24:23 5 : msg Eberhard: push route command (fhem): set VillaLuehl message @123456789 : (abbrechen) Ich kann folgendes für dich tun:
2018.05.28 17:24:23 3 : msg Eberhard: ID=1527521063.1763.1 TYPE=push ROUTE=VillaLuehl RECIPIENT=@123456789 STATUS=OK PRIORITY=0 TITLE='FHEM' MSG=': (abbrechen) Ich kann folgendes für dich tun:'
2018-05-28 17:24:23 ROOMMATE Eberhard fhemMsgRcvPush: start
2018-05-28 17:24:23 ROOMMATE Eberhard fhemMsgRcvPushGw: VillaLuehl
2018-05-28 17:24:23 ROOMMATE Eberhard fhemMsgPush: : (abbrechen) Ich kann folgendes für dich tun:
2018-05-28 17:24:23 ROOMMATE Eberhard fhemMsgPushTitle: FHEM
2018-05-28 17:24:23 ROOMMATE Eberhard fhemMsgPushPrio: 0
2018-05-28 17:24:23 ROOMMATE Eberhard fhemMsgPushGw: VillaLuehl:@123456789:OK
2018-05-28 17:24:23 ROOMMATE Eberhard fhemMsgPushState: 1
2018-05-28 17:24:23 ROOMMATE Eberhard fhemMsgStateTypes: push:1
2018-05-28 17:24:23 ROOMMATE Eberhard fhemMsgState: 1
2018-05-28 17:24:23 TelegramBot VillaLuehl msgText: start

2018.05.28 17:24:59 5 : msgDialog (msg_Wz_Heizung) - entering msgDialog_Notify

Nach dem 'start' kommt die Meldung
: (abbrechen)
Ich kann folgendes für dich tun:


Das Modul ist fürwahr nichts für Normalos, da muss der Vorname schon Nerd lauten  ;)

Gruß Eberhard

Ich korrigiere: nach 'start' kommt die meldung:
: Klammer auf ) (abbrechen)
Ich kann folgendes für dich tun:

Da kommt mir immer der Smilie dazwischen bei Doppelpunkt Klammer auf :(
« Letzte Änderung: 29 Mai 2018, 15:49:15 von FHEm2005 »
FHEM auf RaspPi 3 mit CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge und Tradfri-Bridge

Offline FHEm2005

  • Sr. Member
  • ****
  • Beiträge: 583
    • Squeezebox mit RFID-Karten steuern
Die Fehlersuche gestaltet sich schwierig.

Im Eventmonitor stehen die zwei Zeilen:
2018.05.30 08:21:16 1 : PERL WARNING: Use of uninitialized value in split at (eval 49794) line 1.
2018.05.30 08:21:16 3 : eval: {return('(' . join(') (', sort{lc($a) cmp lc($b)} (split(' ', fhem('get TYPE=msgDialog:FILTER=NAME!=msg_Wz_Heizung:FILTER=allowed=.*(Eberhard|everyone).* trigger', 1)))) . ') (abbrechen) ')}
Wenn ich den Teil  TYPE=msgDialog:FILTER=NAME!=msg_Wz_Heizung:FILTER=allowed=.*(Eberhard|everyone).* durch msg_Wz_Heizung ersetze also nur get msg_WZ_Heizung trigger an fhem sende, funktioniert alles bestens. Das bedeutet der Fehler muss in diesem Teil liegen.

Der Teil TYPE=msgDialog:FILTER=NAME!= wird m.E. richtig aufgelöst und zwei Zeilen tiefer findet er den recipient:
2018.05.30 08:21:16 5 : msg: found types=push
2018.05.30 08:21:16 5 : msg: found recipient=@Eberhard
Eberhard ist der ROOMMATE bei mir. Dort steht im attr msgContactPush @VillaLuehl:123456789 . Ist hier etwas falsch geschrieben?

Die große Frage ist: Welcher Wert ist nicht initialisiert? Wer kann helfen?
Gruß Eberhard
FHEM auf RaspPi 3 mit CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge und Tradfri-Bridge

Offline binford6000

  • Full Member
  • ***
  • Beiträge: 422
  • 🏠⚙️🛠📱
Hallo Eberhard,
Zitat
Wenn ich den Teil  TYPE=msgDialog:FILTER=NAME!=msg_Wz_Heizung:FILTER=allowed=.*(Eberhard|everyone).* durch msg_Wz_Heizung ersetze also nur get msg_WZ_Heizung trigger an fhem sende, funktioniert alles bestens. Das bedeutet der Fehler muss in diesem Teil liegen.
Lass doch mal das "!" bei NAME weg:
TYPE=msgDialog:FILTER=NAME=msg_Wz_Heizung:FILTER=allowed=.*(Eberhard|everyone).*VG Sebastian

PS: Auch auf die Gefahr hin dass ich mich wiederhole: Falscher Thread. Poste doch lieber im passenden:
https://forum.fhem.de/index.php/topic,77297
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 FHEm2005

  • Sr. Member
  • ****
  • Beiträge: 583
    • Squeezebox mit RFID-Karten steuern
Hallo Sebastian,

ersteinmal Danke! Hat geholfen. Das ist ein Fehler im Wiki!
Ich war wegen dem Thema "Sprachsteuerung " verunsichert. Ich habe immer noch ein kleines Problem, soll ich damit bereits umziehen?

Gruß Eberhard
FHEM auf RaspPi 3 mit CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge und Tradfri-Bridge

Offline Quantum

  • New Member
  • *
  • Beiträge: 43
Hallo,

mthilfe des msg Moduls versuche ich mit dem Befehl (enthalten im Attribut msgCmdMail):

Zitat
{ my $d='%DEVICE%'; my $title='%TITLE%'; my $msg='%MSG%'; system("echo '$msg' | /usr/bin/mailx -s '$title' -S ttycharset=UTF-8 -S sendcharsets=UTF-8 -S encoding=8bit '$d'"); }

Text EMails zu versenden. Dies funktioniert auch sehr gut, solange in der Nachricht keine Zeilenumbrüche vorhanden sind. Sind Zeilenumbrüche enthalten, ergibt sich folgendes im Log:

Zitat
2018.06.07 22:43:59 3: msg text @rr_XXXXX Hallo
duda : mail@XXXXXXXX.de: Unknown command {, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command system("echo, try help.
Unknown command }, try help.

Ich denke, das hat etwas mit der Maskierung zu tun, sodass das Kommando falsch interpretiert wird. Hab auch schon verschiedenste Maskierungen ausprobiert, leider ohne Erfolg.
Würde mich über Unterstützung freuen.

Freundliche Grüße
Quantum
« Letzte Änderung: 07 Juni 2018, 23:13:16 von Quantum »

Offline FunkOdyssey

  • Hero Member
  • *****
  • Beiträge: 1295
Erledigt. Bitte unten lesen.


Ich habe in Pushover ein zweites Device in Betrieb genommen.

Wenn ich folgenden Befehl ausführe, so habe ich bei Klaus den "gamelan"-Sound. Bei Maria aber den PushOver-Default-Ton.


(msg push @rr_Klaus,@rr_Maria |FHEM| Beschattung aktiv. Pushover_SOUND=gamelan)
Folgende Attribute habe ich in den Residents-Geräten angelegt.

rr_Klaus => msgContactPush => pushOver:KlausHandy
rr_Maria => msgContactPush => pushOver:MariaHandy

Kennt jemand dieses Problem und hat dafür ne Lösung?



Kommando zurück. Mein Fehler.
Ich habe zwar das neue Push-Device für rr_Maria geändert, aber gar nicht darüber nachgedacht, dass ich die Sounds auch noch bei den "msg push"-Befehlen zuordnen muss. Da es vorher zwei verschiedene Push-Apps waren, gab es für rr_Maria den Parameter noch nicht.
« Letzte Änderung: 05 Juli 2018, 10:03:52 von FunkOdyssey »

Offline docb

  • Sr. Member
  • ****
  • Beiträge: 524
Hi, ich bin auch auf der Suche nach der Lösung für diese Problem - aber wurde hier nicht fündig. Kann jemand helfen?
Ich habe nun den ganzen Thread von vorn bis hinten durchgelesen, komme aber nicht zu einer Lösung.
Mit
msg Das ist eine Nachrichtkann ich eine Nachricht per Jabber versenden.
Nun hätte ich gerne Zeilenumbrüche in der Nachricht. Intuitiv habe ich dann schon
msg Das ist die erste Zeile! \nDas ist die zweite Zeileversucht. Aber es erfolgt kein Zeilenumbruch.
Wie muss ich das anstellen?

Viele Grüße
doc
I love FHEM!

Offline l2r

  • Sr. Member
  • ****
  • Beiträge: 536
wie muss denn der Befehl für Jabber aussehen wenn du ohne msg an Jabber senden möchtest?

Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

Online plin

  • Developer
  • Full Member
  • ****
  • Beiträge: 344
Dafür gibt es bereits den msg-Befehl. Auf der ToDo steht die Erweiterung um eine Nachrichten Queue.

Hi Julian,

hast Du schon eine Idee wann das Queueing-Feature verfügbar sein wird? Ich hätte Bedarf.

Ciao,
Peter

Offline rcmcronny

  • New Member
  • *
  • Beiträge: 35
Hi Julian,

ich baue auch aktuell alles um auf "msg" und muss sagen, anspruchsvolle Lernkurve aber feht gut ;)

Für screen habe ich eine Neutrino Box, die kann text folgendermaßen ansteuern (ich habs derzeit simpel gehalten,

msgCmdScreen         set %DEVICE% showText %MSG%
msgCmdScreenHigh     set %DEVICE% showtextwithbutton %MSG%
msgCmdScreenLow      set %DEVICE% showText %MSG%

Das zeigt eine Nachricht auf dem TV an, bei High mit einem Bestätigen Button.
Vielleicht kannst du das ja ins Schema mit aufnehmen ?

Ronny