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

Offline FHEm2005

  • Sr. Member
  • ****
  • Beiträge: 604
    • 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: 604
    • 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

Online binford6000

  • Sr. Member
  • ****
  • Beiträge: 606
  • 🏠⚙️🛠📱
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.9 auf RPi3, IOserver für alle CULs mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + Nanoleaf Aurora,  SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking

Offline FHEm2005

  • Sr. Member
  • ****
  • Beiträge: 604
    • 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: 1385
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: 532
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: 547
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.

Offline plin

  • Developer
  • Full Member
  • ****
  • Beiträge: 347
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: 40
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

Offline Dr_Prune

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

verstehe ich richtig: unter

attr globalmsg msgContactAudio
lässt sich jeweils nur ein Audio-Gerät definieren?

Habe das bisher mit Text2Speech am Laufen, feine Sache. Aber jetzt haben die Kinder ein Sonos bekommen. Und denen würden wir gerne zurufen lassen, wenn es Essen gibt ;-)

Alexander
« Letzte Änderung: 20 Oktober 2018, 11:12:25 von Dr_Prune »

Offline l2r

  • Sr. Member
  • ****
  • Beiträge: 547
hi,

wenn du das resident-Modul verwendest und für deine Kinder einen Roommate vergeben hast, kannst du die Audio-Device für jedes kind in den Attributen setzen. Oder du schickst die Audio-Nachricht direkt an die Sonos
msg audio @Sonos_Bedroom |Hint|Abendessen.

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

Offline Dr_Prune

  • New Member
  • *
  • Beiträge: 17
Danke, Michael.

Das klappt. Bedeutet aber, dass bei den universellen Durchsagen jetzt immer zwei Befehle fällig werden. Einmal für Analog-Out über das in globalMsg definierte TTS Device und einmal per separatem msg @Sonos_Player.

Das ist nicht wesentlich eleganter als mit einem separaten set Sonos_Player speak, ohne Umweg über msg.

Vielleicht ist das eine Anregung für Loredo:

Wäre toll, wenn msg, das für die zentrale Abwicklung von Benachrichtigungen über unterschiedlichste Devices und Ausgabewege so hervorragend funktioniert, mehrere Audiodevices parallel unterstützt und transparent nebeneinander verwaltet.

Grüße
Alexander

Offline l2r

  • Sr. Member
  • ****
  • Beiträge: 547
ähm die wiedergabe an mehrere Geräte ist jetzt schon integriert?!

es ist sogar so elegant gelöst, das man das abhängig vom Status bzw Aufenthaltsort des ROOMates machen kann...

Beispiel:

der Roommate rr_Michael hat folgendes gesetzt:

attr rr_Michael msgContactAudio Sonos_Bad,Sonos_Kueche
wenn ich jetzt

msg audio @rr_Michael Testdurchsage ausführe, dann wird das auf allen Sonos-Geräte wiedergegeben, aber nur wenn rr_Michael nicht abwesend oder gone ist..., wenn rr_Michael nicht zuhause ist, dann wird die audio-Nachricht auf push Weitergeleitet, sofern definiert.

das ganze kann man dann noch auf die Spitze treiben indem man msgRoom_<Raumname> definiert und da dann die passenden Audio-Devices hinterlegt. Dann wird die Audioausgabe nur auf den Geräten wiedergegeben, die in dem Raum stehen, wo sich rr_Michael befindet... (ich hoffe ich habe das jetzt richtig zusammengefasst. Das ist bei mir auch schon ein bisschen her, wo ich das alles eingerichtet habe... und ich habe da auch ein bisschen für gebraucht um alles zu schnallen)

Gruß Michael
« Letzte Änderung: 23 Oktober 2018, 09:25:09 von l2r »
Wissen ist Macht.
Ich weiß nix.
Macht nix.

Offline Dr_Prune

  • New Member
  • *
  • Beiträge: 17
Das habe ich schon verstanden. Und das funktioniert hier auch.

Um so logischer wäre es aus meiner Sicht aber auch, wenn man unter globalmsg zwei oder mehr msgContactAudio Geräte definieren könnte.

Die Durchsagen für Alle sollen ja gerade nicht an einen bestimmten Resident|ResidentGroup oder einen bestimmten Raum gehen. Da ist es von der Befehlsökonomie her einfach ungünstig, wenn man mehrere msg an unterschiedliche Adressaten schicken muss.

Vielleicht bin ich aber auch der einzige, der neben Sonos noch TTS (und im Schlafzimmer SB_Player) benutzt.

Grüße
Alexander