Neuer FHEM Befehl "msg" für Benachrichtigungen (Push,Mail,Audio,Light,Screen)

Begonnen von Loredo, 13 August 2015, 19:31:07

Vorheriges Thema - Nächstes Thema

l2r

hi,


du kannst doch 2 Empfänger, durch Komma getrennt, angeben?!

attr globalMsg msgContactAudio Sonos_1,Sonos_2

und dann mit

msg audio <Audionachricht>

deine Ausgabe an die Devices schicken...

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

Dr_Prune

Ich glaube, das geht nur, wenn beide Empfänger vom selben Typ sind. In deinem Beispiel SONOSPLAYER.

Bei mir sind es aber zwei unterschiedliche Typen, SONOSPLAYER und Text2Speech. Ich kann die Devices mit Komma getrennt bei msgContactAudio eintragen.

Für das Attribut msgCmdAudio scheint aber nur jeweils ein Befehl akzeptiert zu werden.

Da stand für Text2Speech bisher

set raspiTTS tts %TITLE% %MSG%

Wenn ich jetzt für den neuen Sonos ergänze

set %DEVICE% Speak %VOLUME% %LANG% |%TITLE%| %MSGSHRT%,set raspiTTS tts %TITLE% %MSG%

wird eine Nachricht ,,msg audio..." nur auf dem Sonos abgespielt. Wenn ich die Reihenfolge der Befehle tausche, nur auf dem TTS-Device.

Das Problem ist also nicht, glaube ich, dass msg nicht mehrere Audio-Geräte adressieren kann, sondern dass es mehrere unterschiedliche Audio-Devices nicht transparent mit ihren jeweiligen Befehlen anspricht.

Grüße
Alexandrr

l2r

wo fummelst du rum?

sowohl für Sonos als auch für TTS gibts ja bereits ein schema.

Wenn du im globalMSG-Device

get globalMsg routeCmd audio
ausführst, dann siehst du die Befehle die ausgeführt werden...

und msg erkennt von welchem Typ deine Ausgabedevices sind und führt dann die passenden Befehle aus. Das ist ja gerade der Vorteil von msg, dass man sich keine Gedanken mehr um Syntax usw machen muss.

Ich habe zum Beispiel ein Device vom Typ FULLY und eins vom Typ SONOS.
Diese beiden trage ich beim Attribut msgContactAudio im globalMsg ein. Mehr nicht!!!

dann kann ich einfach sagen:
msg audio test

und schon wird die Audionachricht test auf meinen beiden Devices ausgegeben, da ich ja im MSG-Befehl kein spezifisches Device angegeben habe und er somit auf den default für Audio zurückgreift, welcher
ja vorher im globalMsg definiert wurde.

also bei dem Schemata brauchst du nix rumfummeln, das geht alles bereits per default.
das msgCmdAudio attribut kannst du wieder löschen. - da er so deinen gesetzten Befehl verwendet, ohne in die msgSchema zu schauen.

Poste bitte mal ein list von deinem globalMsg

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

Dr_Prune

Danke, das war der Fehler, Michael!

Hab das msgCmdAudio attribut gelöscht, jetzt läuft der Laden.

;D

Super

UweUwe

Benachrichtigung über Raumfeld Lautsprecher oder über Alexa?
Ich bin auf der Suche nach einer Audio-Ausgabemöglichkeit für mein FHEM System für 2 Anwendungsmöglichkeiten:
1. Abhängig von einem Event möchte ich eine Sprachnachricht ausgeben z.B. "Alarmanlage scharf geschalten".
2. Im Alarmfall möchte ich meine Raumfeld Lautsprecher aus dem Standby hochholen und "Heavy Metal Musil abspielen".
Mit Sonos sollte dies problemlos sein, leider Raumfeld(Teufel).
Die mp3 Dose von Homematic kenne ich..  És stehen ja überall Lautsprecher rum im Haus. Noch einen, als sperates System, mit Batterien?
Kann ich über euer Modul hier was machen?



l2r

wenn du deine Raumfeld über FHEM steuern kannst, dann könntest du für deine Raumfeld ein eingenes msg-Schema erstellen und dann über den msg-Befehl ansprechen.

Steuern würde ich das ganze mit nem DOIF. Für die Heavy-Metal Musik brauchst du nicht unbedingt den msg-Befehl.

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

UweUwe

Hallo,

ich tue mich sehr schwer mit der Verwendung vom msg / msgconfig. Ich habe die Wikis durchgearbeitet. Folgende "Text-Nachrichtensysteme" funktionieren bei mir als Standalonesysteme und verwende ich:
Debian, teleBot und Pushover. Als Audiosystem habe ich mySip bzw. t2Speech.
telebot habe ich als msgContactPush eingerichtet.
msg test schickt auch an meinen Telegramm Account eine Nachricht. Das funktioniert
msg @pushmsg test sendet eine Nachricht an meinen Pushover account . Das funktioniert.
Welche attr. muss ich jetzt setzen, um eine email (Debian) an eine emailadresse mit Namen Hans.Klaus@t-online.de zu schicken? msg @DEBIANMAIL |Hans.Klaus.t-online.de msg tuts leider nicht.

Noch eine Verständisfrage:
Es gibt eine globale Definition der Attribute für msg. Dies ist die globalMsg.
  Dort definiere ich mit msgType ... welche MessageType ich verschicken möchte: text, audio, etc.
  Dort definiere ich mit msgContactPush, welchen Push Dienst ich verwenden möchte  teleBot, Pushover
  Dort definiere ich mit msgCmdMail, welchen Email Dienst ich verwenden möchte: Debian ...

Diese attr zieht nur, wenn in dem sendenden device oder dem "Sendebefehl" selbst nicht anderes definiert ist.
Sendebefehl schlägt hier noch attr in der  Devicespezifikation.           
hier noch ein list des globalMsg       
Internals:
   FUUID      5c6d216d-f33f-64ff-88bb-a05d2d1ea0531502
   NAME       globalMsg
   NOTIFYDEV  TYPE=(Jabber|TelegramBot|yowsup)
   NR         219
   NTFY_ORDER 50-globalMsg
   STATE      0
   TYPE       msgConfig
   READINGS:
     2019-03-07 18:32:31   fhemMsgPush     @DebianMail|Klaus.Peter@t-online.de
     2019-03-07 18:32:31   fhemMsgPushGw    teleBot:ERROR
     2019-03-07 18:32:31   fhemMsgPushPrio 0
     2019-03-07 18:32:31   fhemMsgPushState 0
     2019-03-07 18:32:31   fhemMsgPushTitle -
     2019-03-07 18:32:31   fhemMsgState    0
     2019-03-07 18:32:31   fhemMsgStateTypes push:0 forwards:text>push
Attributes:
   DbLogExclude .*
   alias      Zentrales Device zum Verschicken von Nachrichten
   comment    FHEM Global Configuration for command 'msg'
   group      Global
   icon       message_mail_open
   msgCmdMail {DebianMail('%DEVICE%','%TITLE%','%MSG%')}
   msgContactPush teleBot
   msgType    text
   room       GERAETE
   stateFormat fhemMsgState
   verbose    3


                 








Schlimbo

Hallo Loredo,
spricht etwas dagegen die Zeile 1957 in "75_MSG.pm" wie in meinen Post beschrieben anzupassen?
Zitat von: Schlimbo am 13 Februar 2018, 21:35:00
Habe testweise die Zeile
eval $cmd;
mal mit
AnalyzeCommand(undef,$cmd);
ersetzt, damit funktioniert es auch mit Umlauten.
Ohne diese Änderung habe ich nach wie vor Probleme mit den Umlauten:
https://forum.fhem.de/index.php/topic,39983.msg764689.html#msg764689

zu AnalyzeCommand:
https://wiki.fhem.de/wiki/DevelopmentModuleAPI

Loredo

Danke für die Erinnerung! Habe ich kurz getestet und in abgewandelter Form eingecheckt.


Außerdem wurde die Abhängigkeit von JSON zugunsten von JSON::PP geändert, welches seit Perl 5.14 direkt mitgeliefert wird.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Jens_B

Hallo Zusammen,
ich habe in Zusammenhang mit msg folgende Frage:

Kann ich mit dem
attr msgRecipientMail
was unter den jeweiligen Devices steht auch mehrere Devices eintragen?
also so:

attr msgRecipientMail Jens,Susi

Wobei die Devices "Jens" und "Susi" roommates device sind unter denen per "attr msgContactMail" jeweils die Mailadresse hinterlegt ist.

Ich würde gern aus dem Residents Device per
attr msgRecipientMail Jens,Susi

auf die beiden anderen Devices verweisen.
Das hätte den Vorteil, das man eben zentral unter den jeweiligen Roommates die Mailadresse pflegen kann.

Da mein Homemode Modul eine Alarmmeldung über mail verschickt per "@RESIDENTS" wäre das schön, die Mailadressen nur im jeweiligen ROOMMATE Device zu hinterlegen und nicht schon im RESIDENTS Modul.

Gruß
Jens


RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

Diggewuff

Hallo,
gibt es eine Möglichkeit, eine Nachricht an alle außer einen Resident zu adressieren?

fhem("msg push @rgr_Bewohner:FILTER=NAME!=rr_$alias |Departure| $alias hat die Wohnung verlassen!");

So in der art?

Loredo

Nein aber du kannst das entsprechende Reading aus dem rgr_Bewohner Device dafür nehmen, dafür sind sie da.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Diggewuff

Zitat von: Loredo am 01 August 2019, 15:15:36
Nein aber du kannst das entsprechende Reading aus dem rgr_Bewohner Device dafür nehmen, dafür sind sie da.

Welches Reading meinst du?

Ich möchte eine Nachricht an alle Residents außer einen adressieren.

Das war noch eine Idee:
msg push @i:NAME~rr_.*:FILTER=i:NAME!=rr_Sarah  |Test| Nachricht
funktioniert allerdings leider auch nicht. Vermutlich weil die Adressaten durch Pipes (|) voneinander getrennt übergeben werden müssen.
Hat jemand einen Tip für mich?

Diggewuff

Wenn ich eine Pushnachricht mit Zeilenumbrüchen habe
msg push erste zeile <br> zwieite zeile
kann diese nicht als Audionachricht
msg audio erste zeile <br> zwieite zeile
ausgegeben werden.
Es wäre klasse, wenn ein Zeilenumbruch zum Beispiel als Redepause ähnlich wie 2-3 punke " . . . " interpretiert würde.

Escapete Zeilenumbrüche im code, wie sie in längeren skripten zur lesbarkeit hilfreich führen ebenfalls dazu das Audionachrichten nicht mehr funktiuonieren.
Funktioniert:
fhem("msg push \@rgr_Bewohner \
|Frau Schnitzler| \
Der Staubsauger wurde unterbrochen! <br>\
Er fährt in $abbruchverzoegerung min zur Basis zurück."\
);

Funktioniert nicht:
fhem("msg audio \
Der Staubsauger wurde unterbrochen! . . . \
Er fährt in $abbruchverzoegerung min zur Basis zurück.\
");

Funktioniert:
fhem("msg audio Der Staubsauger wurde unterbrochen! . . . Er fährt in $abbruchverzoegerung min zur Basis zurück.");

Diggewuff

Bitte entschuldigt den Spam. Ich stoße grade auf die ein oder andere Schwierigkeit da ich versuche alle Nachrichten auf msg umzustellen.
Perl code wird innerhalb des msg Befehls nicht interpretiert. Mache ich da irgendwas falsch?
msg push @rr_Joscha 2 |Batterie Warnung| {fhem("get mon_Batterie default")}