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

AndreasR

Zitat von: Loredo am 21 Januar 2017, 11:16:25
Ich habe den Textzusatz nun für Audio und Screen Nachrichten deaktiviert, da ich davon ausgehe, dass die Weiterleitungshinweise dort auch nicht wirklich hilfreich sind.


Hallo Loredo,

Was bedeutet Textzusatz in diesem Zusammenhang?

Gruß

Andreas

Amenophis86

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...

Spezialtrick

Das Problem von mehrfach Posts tritt in Verbindung mit dem Posten über Tapatalk in letzter Zeit häufiger auf. ^^
FHEM - Debmatic - Zigbee2MQTT - Homekit

AndreasR

Zitat von: Spezialtrick am 22 Januar 2017, 13:06:47
Das Problem von mehrfach Posts tritt in Verbindung mit dem Posten über Tapatalk in letzter Zeit häufiger auf. ^^


JA - so wars - habe die 2 anderen gelöscht.

Andreas

FunkOdyssey

Ich lasse mir über folgende Funktion (Quelle: Forum) die Unwetterwarnungen per E-Mail zusenden.

sub getUWZDetails($) {
  my ($device) = @_;
  my $warnCount = ReadingsVal($device,"WarnCount", undef);
  my $retVal = "";
  return undef if(!$device or !defined($warnCount));
  for(my $i = 0; $i < $warnCount; $i++) {
    my $warnStart = strftime("%d.%m.%Y %H:%M", localtime(ReadingsVal($device,"Warn_".$i."_Start", undef)));
    my $warnEnd = strftime("%d.%m.%Y %H:%M", localtime(ReadingsVal($device,"Warn_".$i."_End", undef)));
    my $warnShortText = ReadingsVal($device,"Warn_".$i."_ShortText", undef);
    my $warnLongText = ReadingsVal($device,"Warn_".$i."_LongText", undef);
   
    $retVal .= "Beginn: $warnStart Ende: $warnEnd\n";
    $retVal .= "$warnShortText\n";
    $retVal .= "$warnLongText\n\n";
  }
  return $retVal;
}


Ich nutze folgenden CMD-Aufruf in msg:

{DebianMail('%DEVICE%','%TITLE%','%MSG%')}

Vor dem Einsatz des msg-Aufrufs wurden mir die E-Mails mit Zeilenumbrüchen im Mailer angezeigt. Nun werden die HTML-Tags "scheinbar" in HTML Entitäten umgewandelt.

Früher:

------MIME delimiter for sendEmail-585471.55124052
Content-Type: text/plain;
        charset="utf-8"
Content-Transfer-Encoding: 7bit

Beginn: 18.01.2017 14:10 Ende: 19.01.2017 12:00
Bis Do.-vormittag / -mittag örtlich Glatteisregen möglich
Bis Donnerstagvormittag und -mittag ist örtlich Glatteisregen möglich.



------MIME delimiter for sendEmail-585471.55124052--


Aktuell:

------MIME delimiter for sendEmail-839039.157218398
Content-Type: text/plain;
        charset="utf-8"
Content-Transfer-Encoding: 7bit

Beginn: 21.01.2017 16:00 Ende: 22.01.2017 10:00<br />Streckenweise bei läng. Aufklaren gefährliche Fahrbahnverhältnisse durch Reifglätte<br />Streckenweise muss nachts bei längerem Aufklaren mit gefährlichen Fahrbahnverhältnissen durch Reifglätte gerechnet werden.<br /><br />

------MIME delimiter for sendEmail-839039.157218398--


Hat jemand eine Idee wieso das nun anders ist?

Oder besser: Hat jemand eine Quelle, wie man einen Raspberry beibringt über /usr/bin/mail zu versenden? Dann hätte ich auch die Priorität klarer bei den E-Mails.

Loredo

Zitat von: FunkOdyssey am 23 Januar 2017, 09:46:33
Vor dem Einsatz des msg-Aufrufs wurden mir die E-Mails mit Zeilenumbrüchen im Mailer angezeigt. Nun werden die HTML-Tags "scheinbar" in HTML Entitäten umgewandelt.
[...]
Hat jemand eine Idee wieso das nun anders ist?

Bei höher oder niedriger priorisierten Mails muss diese als HTML Mail verschickt werden, damit Mailclients das Prioritäten-Feld im E-Mail Header korrekt auswerten.
Bei reinen Textmails ignorieren die meisten Clients das Attribut.
Nachrichten mit der Priorität 0 bleiben Plaintext.

Zitat von: FunkOdyssey am 23 Januar 2017, 09:46:33
Oder besser: Hat jemand eine Quelle, wie man einen Raspberry beibringt über /usr/bin/mail zu versenden? Dann hätte ich auch die Priorität klarer bei den E-Mails.

Nach Postfix googeln und lokalen Mailserver korrekt mit Smarthost einrichten.
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

FunkOdyssey

Zitat von: Loredo am 23 Januar 2017, 14:19:19
Bei höher oder niedriger priorisierten Mails muss diese als HTML Mail verschickt werden, damit Mailclients das Prioritäten-Feld im E-Mail Header korrekt auswerten.
Bei reinen Textmails ignorieren die meisten Clients das Attribut.
Nachrichten mit der Priorität 0 bleiben Plaintext.

Das ist mir bekannt. Aber unabhängig von der Priorität werden die Zeilenumbrüche \n durch "msg" entfernt.


Zitat von: Loredo am 23 Januar 2017, 14:19:19
Nach Postfix googeln und lokalen Mailserver korrekt mit Smarthost einrichten.

Danke für den Tipp.

Loredo

Zitat von: AndreasR am 22 Januar 2017, 12:23:49
Was bedeutet Textzusatz in diesem Zusammenhang?


Wenn eine Nachricht an ein FHEM Device geschickt wird, welches keine msgRecipient* oder msgContact* Attribute gesetzt hat, dann findet ein Fallback auf globalMsg statt. Dies wird im ersten Beitrag als "Catchall" beschrieben. Das bedeutet, dass Nachrichten im Titel ein "Fw: " vorangestellt wird und dem Nachrichtentext hinten ein Zusatz angefügt wird der erklärt, an welches FHEM Gerät die Nachricht ursprünglich geschickt wurde. Diese Funktion ist dafür gedacht, dass keine Nachrichten verloren gehen können und man weiß welches FHEM Device man vergessen hat mit einem msgContact* oder msgRecipient* Attribut zu versehen. Es ist nicht dafür gedacht, dass man es als Standard so verwendet. Wenn man so etwas möchte, dann gibt man einfach gar kein Empfänger-Device an. Das impliziert ebenfalls einen Fallback auf "globalMsg", löst aber die Catchall-Funktion nicht aus, weil gar kein Empfänger automatisch bedeutet, dass man etwas an globalMsg verschicken möchte.
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

Loredo

Zitat von: FunkOdyssey am 23 Januar 2017, 14:24:59
Das ist mir bekannt. Aber unabhängig von der Priorität werden die Zeilenumbrüche \n durch "msg" entfernt.


Nein, sie werden durch ein in HTML sichtbares <br /> ersetzt, da ansonsten die Zeilenumbrüche unsichtbar werden.
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

FunkOdyssey


AndreasR


@Loredo

Danke für Die Antwort - hat gleich einige andere Fragen geklärt.

Gruß
Andreas

FunkOdyssey

Zitat von: Loredo am 23 Januar 2017, 14:28:01

Nein, sie werden durch ein in HTML sichtbares <br /> ersetzt, da ansonsten die Zeilenumbrüche unsichtbar werden.

So, ich lass nicht locker. :-) Ich habe Postfix nun am Laufen und nun sehen meine E-Mail wie folgt aus:

Zeilenumbrüche wurden erstellt. Aber zusätzlich werden noch die br-Tags angezeigt.

Beginn: 23.01.2017 09:39 Ende: 27.01.2017 10:00<br />
In den nächsten Nächten mäßiger b. strenger Frost, -5 bis -10 Grad, stellw. darunter<br />
Bei zeitweiligem Aufklaren ist in windschwacher Situation in den nächsten Nächten mit mäßigem bis strengem Frost bei Tiefstwerten von -5 bis -10 Grad, stellenweise darunter, zu rechnen.<br />
<br />
Beginn: 23.01.2017 10:37 Ende: 27.01.2017 10:00<br />
In den nächsten Nächten strenger Frost, -10 bis -15 Grad, örtlich daruner<br />
In den nächsten Nächten ist besonders bei längerem Aufklaren sowie in windschwacher Situation mit strengem Frost bei Tiefstwerten zwischen -10 und -15 Grad, örtlich darunter, zu rechnen.<br />
<br />
Beginn: 25.01.2017 03:00 Ende: 25.01.2017 15:00<br />
Ab 1200 Meter: Einzelne Sturmböen bis etwa 80 km/h sind möglich<br />
Für Lagen oberhalb von 1200 Metern: Im Hochschwarzwald sind ab der Nacht um Mittwoch einzelne Sturmböen aus östlichen Richtungen bis etwa 80 km/h möglich. Am Mittwoch nachmittag lässt der auf Südost bis Süd drehende Wind rasch nach.<br />
<br />


Ich kann aber nirgends erkennen, ob die Mails nun als HTML-Mails verschickt werden.
Ich kann auch keinen Unterschied zwischen den verschiedenen Prioritäten feststellen.


JoeALLb

Sorry Leute, ich vermute ich stehe voll auf dem Schlauch!

versuche das Modul zu verstehen, aber irgendwo hackt es ordentlich!

Zu meinem System: Ich benutze ausschließlich Telegramm.
set telegramm msg test
set telegramm msg @xxxxx test

funktioniert bei mir! Beides

msg push TestNachricht
jedoch nicht. Natürlich habe ich auch viele alternative Schreibweisen versucht.

globalMsg sieht so aus, und natürlich bin ich unsicher, was genau bei msgContactPush und msgCmdPush
eingetragen gehört. Habe auch hier einiges versucht und im Forum 2 Beispiele gefunden, aber beide senden bei mir keinen Text.
defmod globalMsg msgConfig
attr globalMsg comment FHEM Global Configuration for command 'msg'
attr globalMsg group Global
attr globalMsg msgCmdPush telegramm
attr globalMsg msgContactPush telegramm
attr globalMsg room System
attr globalMsg stateFormat fhemMsgState
attr globalMsg verbose 2

setstate globalMsg 1
setstate globalMsg 2017-01-25 18:02:42 fhemMsgPush TestNachricht
setstate globalMsg 2017-01-25 18:02:42 fhemMsgPushGw  telegramm:OK
setstate globalMsg 2017-01-25 18:02:42 fhemMsgPushPrio 0
setstate globalMsg 2017-01-25 18:02:42 fhemMsgPushState 1
setstate globalMsg 2017-01-25 18:02:42 fhemMsgPushTitle -
setstate globalMsg 2017-01-25 18:02:42 fhemMsgState 1
setstate globalMsg 2017-01-25 18:02:42 fhemMsgStateTypes push:1



Ich benötige aktuell nur ein funktionierendes Telegram. Muss ich also nur den korrekten Eintrag für msgContactPush finden?
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DeeSPe

Zitat von: JoeALLb am 25 Januar 2017, 18:08:16
Sorry Leute, ich vermute ich stehe voll auf dem Schlauch!

versuche das Modul zu verstehen, aber irgendwo hackt es ordentlich!

Zu meinem System: Ich benutze ausschließlich Telegramm.
set telegramm msg test
set telegramm msg @xxxxx test

funktioniert bei mir! Beides

msg push TestNachricht
jedoch nicht. Natürlich habe ich auch viele alternative Schreibweisen versucht.

globalMsg sieht so aus, und natürlich bin ich unsicher, was genau bei msgContactPush und msgCmdPush
eingetragen gehört. Habe auch hier einiges versucht und im Forum 2 Beispiele gefunden, aber beide senden bei mir keinen Text.
defmod globalMsg msgConfig
attr globalMsg comment FHEM Global Configuration for command 'msg'
attr globalMsg group Global
attr globalMsg msgCmdPush telegramm
attr globalMsg msgContactPush telegramm
attr globalMsg room System
attr globalMsg stateFormat fhemMsgState
attr globalMsg verbose 2

setstate globalMsg 1
setstate globalMsg 2017-01-25 18:02:42 fhemMsgPush TestNachricht
setstate globalMsg 2017-01-25 18:02:42 fhemMsgPushGw  telegramm:OK
setstate globalMsg 2017-01-25 18:02:42 fhemMsgPushPrio 0
setstate globalMsg 2017-01-25 18:02:42 fhemMsgPushState 1
setstate globalMsg 2017-01-25 18:02:42 fhemMsgPushTitle -
setstate globalMsg 2017-01-25 18:02:42 fhemMsgState 1
setstate globalMsg 2017-01-25 18:02:42 fhemMsgStateTypes push:1



Ich benötige aktuell nur ein funktionierendes Telegram. Muss ich also nur den korrekten Eintrag für msgContactPush finden?


Der Kontakt ist falsch hinterlegt!
Ich hinterlege die so:
<NAME-TELEGRAMBOT>:@<ID-NR-DES-KONTAKT>

Gruß
Dan
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

Loredo

Zitat von: FunkOdyssey am 24 Januar 2017, 16:07:37
Ich kann aber nirgends erkennen, ob die Mails nun als HTML-Mails verschickt werden.
Ich kann auch keinen Unterschied zwischen den verschiedenen Prioritäten feststellen.


msg übergibt dir nur den Body Text im HTML-Format. Damit das vom Mailclient richtig interpretiert wird, muss das Script zum verschicken der Mails die Header richtig setzen.
Das kann dann z.B. so aussehen:




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'");; }



Ich glaube ich habe das noch nicht als Standard im Schema hinterlegt, weil ich auch warten wollte, ob sich hier aus Diskussionen ein geeigneter Default herauskristallisieren würde.
Wenn man die E-Mails mit Prioritäten möchte, dann macht es auch keinen wirklichen Sinn für Prio=0 ne Extrawurst zu braten. Daher wird für alle Prioritäten aktuell ein Leerzeichen umgewandelt.
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