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

Loredo

Zitat von: darkness am 02 Oktober 2017, 12:31:15
Ja, danke. Habe ich bisher nicht gesehen  :o

Bekomme bei der Spracheausgabe nur immer "und de" angesagt. Muss nachher noch mal gucken.


Hm, möglicherweise muss das Semikolon maskiert werden, probier mal das Attribut msgCmdAudio beim AMADDevice so zu setzen (muss man als userattr hinzufügen bzw. "einblenden", ansonsten kann man es auch global beim Device globalMsg ändern, dann ist das aber das Kommando für alle Audio Devices, nicht nur für AMADDevice) und schau, ob es dann geht:


set %DEVICE% ttsMsg &%LANG%;; %MSGSHRT%




@l2r: Ggf. war es auch keine gute Idee die Notation so zu wählen, weil ein ; beim Set Kommando evtl als neues Set Kommando interpretiert wird. Somit wäre auch klar, weshalb darkness nur diesen Textteil angesagt bekommt. Bestimmt gibt es im Log da dann eine Fehlermeldung wie "unknown command <der eigentliche text>". Am flexibelsten wärst auch du, wenn du parseParams nach dem Beispiel wie beim msg-Befehl implementiertest.
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

igami

Zitat von: Loredo am 02 Oktober 2017, 12:23:33
Ja, indem du als Parameter Jabber_MTYPE=muc mit angibst.[/font]

Könntest du das auch noch für TelegramBot einbauen, dass man dann queryInline Nachrichten senden kann.
Müsste dann, wenn ich das richtig verstanden haben, so aussehen:

        'TelegramBot' => {
            'Normal'        => 'set %DEVICE% %TelegramBot_MTYPE% %RECIPIENT% %MSG%',
            'High'          => 'set %DEVICE% %TelegramBot_MTYPE% %RECIPIENT% %MSG%',
            'Low'           => 'set %DEVICE% %TelegramBot_MTYPE% %RECIPIENT% %MSG%',
            'defaultValues' => {
                'Normal' => {
                    'RECIPIENT' => '',
                    'TelegramBot_MTYPE' => 'message',
                },
                'High' => {
                    'RECIPIENT' => '',
                    'TelegramBot_MTYPE' => 'message',
                },
                'Low' => {
                    'RECIPIENT' => '',
                    'TelegramBot_MTYPE' => 'message',
                },
            },
        },

Dann könnte man sich auch noch einen cmdalias sparen :)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

darkness


Amenophis86

Und so ein Eintrag in der CommandRef mit den ganzen Sachen wäre echt schön :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

drhirn

Zitat von: Loredo am 02 Oktober 2017, 12:23:33Ja, indem du als Parameter Jabber_MTYPE=muc mit angibst.

Ich danke!

msg push Jabber_MTYPE=muc @JabberClient:raum@conference.jabber.xy Hier die Nachricht

igami

Hier noch ein kleiner Patch, damit auch Zeilenumbrüche funktionieren, wenn man einen MTYPE angibt :)

Index: FHEM/75_MSG.pm
===================================================================
--- FHEM/75_MSG.pm (Revision 15200)
+++ FHEM/75_MSG.pm (Arbeitskopie)
@@ -133,7 +133,7 @@
     ### extract message details
     ###

-    my ( $msgA, $params ) = parseParams($msg);
+    my ( $msgA, $params ) = parseParams($msg, "[^\\S\\n]", " ");

     # only use output from parseParams when
     # parameters where found


Ansonsten funktioniert das mit dem TelegramBot nun auch wunderbar.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

DeeSPe

Ich habe seit kurzem das Problem dass bei "msg audio/screen" offenbar kein UTF8 mehr verwendet wird.
"msg audio" sind bei mir Sonos Devices und "msg screen" ein LG-WebOS-TV.
Benutze ich die nativen Setter der Devices funktioniert es wie gewünscht.
Sobald ich msg verwende wird teilweise Kauderwelsch angesagt/-gezeigt.

Meine Attribute für globalMsg sehen so aus:
   msgCmdAudio {my $vol=%PRIORITY%>2?90:%PRIORITY%>0?80:SpeakVolume("%DEVICE%");fhem "set %DEVICE% Speak $vol de |%TITLE%| %MSG%"}
   msgCmdScreen {fhem "set %DEVICE% screenMsg %MSG%"}
   msgContactAudio wz_Sonos
   msgContactScreen wz_LGTV
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

l2r

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

FunkOdyssey

Ich habe derzeit Postfix auf dem RasPi installiert, auf dem auf FHEM läuft.
Nun will ich aber auf Docker wechseln und würde einen eigenen MailRelay-Container bevorzugen.
Hat jemand eine Idee, wie bzw. wo ich das umkonfigurieren muss.

Aktuelle routeCmd:

attr globalMsg msgCmdMail { my $dev='%DEVICE%';; system("echo '%MSG%' | /usr/bin/mail -s '%TITLE%' -a 'MIME-Version: 1.0' -a 'Content-Type: text/html;; charset=UTF-8' '$dev'");; }
attr globalMsg msgCmdMailHigh { my $dev='%DEVICE%';; system("echo '%MSG%' | /usr/bin/mail -s '%TITLE%' -a 'MIME-Version: 1.0' -a 'Content-Type: text/html;; charset=UTF-8' -a 'X-Priority: 1 (Highest)' -a 'X-MSMail-Priority: High' -a 'Importance: high' '$dev'");; }
attr globalMsg msgCmdMailLow { my $dev='%DEVICE%';; system("echo '%MSG%' | /usr/bin/mail -s '%TITLE%' -a 'MIME-Version: 1.0' -a 'Content-Type: text/html;; charset=UTF-8' -a 'X-Priority: 5 (Lowest)' -a 'X-MSMail-Priority: Low' -a 'Importance: low' '$dev'");; }


Wie weise ich dem Modul an, einen anderen Server zu nutzen?

Danke

l2r

alles was du in der Klammer nach system( hast ist ja die Syntax von Postfix.

Sprich wenn du das auf der Linuzx-Konsole so eingibst, dann schickst du auch eine Mail weg. Musst natürlich die Platzhalter ersetzen.

Das ganze würde ich jetzt auf der Linux-Konsole so anpassen, bis das der Syntax von Docker(kenne ich persönlich nicht) entspricht und die Mail rausgeht. Anschließend die neue Syntax in den Attributen einfügen und mit den Platzhaltern von msg versehen.

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

Amenophis86

Wenn ich bei manchen Nachrichten Pushover und bei anderen Telegram nutzen möchte für den msg Befehl für den gleichen Roommate, wie kann ich dann unterscheiden mit was die Nachricht gesendet werden soll. Type kann ja nur Push und da kommt es darauf an, was beim Roommate hinterlegt wurde als Standard. Also gibt es etwas in Form von xy=Pushover xy=TelegramBot was ich der Nachricht mitgebe?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

kjmEjfu

Hat mal jemand ein Beispiel durch das sich msgCmdAudioShort und msgCmdAudioShortPrio besser verstehen lässt?
Irgendwie werde ich da weder aus commandref noch Wiki schlau zu.
Was wird da unterschiedlich ausgeführt?

Und, zusätzliche Frage, wenn ich auf Audio (in dem Fall Sonos) etwas mit Emergency-Prio (also Prio > 1) ausgeben lasse, dann werden die Einstellungen von "normal" genutzt (also u.a.  'VOLUME' => 38), oder? Wenn ich aber Emergency-Audiomeldungen gerne sehr laut haben möchte, dann müsste ich was tun?

Danke schon mal :-)
Migriere derzeit zu Home Assistant

l2r

hi,

die Lautstärke kannst du als Option mitgeben:

msg audio @Sonos_Bedroom |Hint| Gute Nacht! O[{"VOLUME":"8"}]

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

kjmEjfu

Zitat von: l2r am 15 Januar 2018, 15:17:07
die Lautstärke kannst du als Option mitgeben:

msg audio @Sonos_Bedroom |Hint| Gute Nacht! O[{"VOLUME":"8"}]

ja, die Option kenne ich.
Praktischer fände ich es aber trotzdem, wenn die sich automatisch aus der Prio ergibt. Ist ja bei den Push-Nachrichten i.d.R. auch hinterlegt, dass die automatisch "nerviger" auf dem Device ankommen. Würde dann einfach nur helfen eine mögliche Fehlerquelle zu eliminieren.
Migriere derzeit zu Home Assistant

THEM

Hallo,

ich versuche gerade folgendes zu realisieren:

Alle messages in meiner config sollen normalerweise an einen Empfänger gesendet werden.

So wie ich es verstanden habe, ist dann das Attribut mit dem entsprechenden Empfänger zu setzen.

attr globalMsg msgContactPush TelegramBot@@DefaultTelegramName

Ohne die Angabe eines Empfängers (attr globalMsg msgContactPush TelegramBot) wird der am TelegramBot-Device angegebene defaultPeer angesprochen.

attr TelegramBot defaultPeer DefaultTelegramName

Es wäre anstatt des DefaultTelegramName auch möglich hier die MsgPeerId zu setzen.

Das klappt soweit auch alles. Jetzt zu meinem Ziel:

An einem anderen device (zweitesdevice) möchte ich diesen Empfänger durch einen anderen Wert überschreiben.

Dazu habe dann folgendes Attribut gesetzt:

attr zweitesdevice msgContactPush TelegramBot@@ZweiterTelegramName

Im zweiten Schritt soll sogar eine Telegramm-Gruppe angesprochen werden. Dazu habe ich das Attribut wie folgt gesetzt:

attr zweitesdevice msgContactPush TelegramBot@@#TelegramGruppe

Beides habe ich ausprobiert und musste leider feststellen, dass weiterhin an den global gesetzten Empfänger gesendet wird.

Was mache ich falsch? Ist das anders gedacht?

Würde mich über eine genauere Beschreibung von Redefinitionen des Empfängers an bestimmten devices sehr freuen.

Danke