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: JoeALLb am 25 Januar 2017, 18:08:16

attr globalMsg msgCmdPush telegramm



Das hier solltest du auch löschen, wenn du kein eigenes Schema hinterlegen möchtest. In dieser Form ist es hier verkehrt.
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

JoeALLb

Zitat von: DeeSPe am 25 Januar 2017, 19:13:51
Der Kontakt ist falsch hinterlegt!
Dan

Hallo Dan,
danke für die Antwort.
Das hatte ich auch versucht, ohne Erfolg.
Anbei das attr, wie ich versuche deinen Ratschlag zu befolgen.
attr globalMsg msgContactPush telegram:@1234565432

Wenn ich
set relegramm msg @1234565432 Testnachricht
nutze, geht es.

Das bedeutet vermutlich hier nicht viel, oder?
reading fhemMsgPushGw telegram:@1234565432 :OK
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

JoeALLb

Das war es!
Sorry, hab diese Nachricht war erst da, während ich meine Nachricht geschrieben habe!!
Vielen Dank, jetzt funktioniert es!
Zitat von: Loredo am 25 Januar 2017, 19:27:17

Das hier solltest du auch löschen, wenn du kein eigenes Schema hinterlegen möchtest. In dieser Form ist es hier verkehrt.
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

FunkOdyssey

Zitat von: Loredo am 25 Januar 2017, 19:24:27

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.

Und ich suche mich dumm und dusselig. Ich habe alle Dateien nach Content-Type abgesucht und mich auch gewundert, warum in der msgSchema.pm nichts dergleichen gefunden habe. :-)

Die Zeilenumbrüche der Unwetterwarnungen funktionieren nun auch. Das Thema "Priorität" hatte ich ein wenig überschätze. Meine Mailer (GMail, iPhone, etc.) zeigen keine Unterschiede an.

Vielleicht könntest du die CMDs in das Schema aufnehmen.

Und viele Dank für deine Hilfe.

Loredo

Zitat von: FunkOdyssey am 26 Januar 2017, 11:56:47
Das Thema "Priorität" hatte ich ein wenig überschätze. Meine Mailer (GMail, iPhone, etc.) zeigen keine Unterschiede an.

Vielleicht könntest du die CMDs in das Schema aufnehmen.


Das ist einer der Gründe, weshalb das noch nicht im Schema so drin ist, denn ich hatte noch keine Zeit zu recherchieren welche Clients mit welchen Headern arbeiten. Lt Standard sollten es die beiden hier enthaltenen sein, was aber wie du feststellst eben nicht ganz funktioniert.
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

Ich habe gerade eine aktualisierte Version eingecheckt, die ReplaceSetMagic unterstützt.
Was das bedeutet, steht hier: https://fhem.de/commandref_DE.html#set

ZitatAb featurelevel 5.7 ersetzt das set und setreading Befehl

       
  • [device:reading] mit dem Wert des Readings für device, falls sowohl device, als auch Reading existiert, und nicht leer ist.
  • [device:reading:d] wie ohne :d, aber alles nicht-numerische wird entfernt, siehe ReadingsNum
  • {(perlExpression)} mit dem Ergebnis der perlExpression. $DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt.
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

l2r

hi,

ich hab nochmal eine Frage. Kann sein, dass die schon mal gestellt wurde, ich hab aber so auf Anhieb nichts gefunden:

verwende ich die Sprachausgabe der Sonos über den Befehl:
set Sonos_Michael Speak 2 de test
ist alles gut und die Ansage kommt.

nutze ich
msg audio @Sonos_Michael test
kommt auch die Ansage, allerdings erhalte ich im Log folgende Fehlermeldung:
msg Sonos_Michael: ID=1485864054.9446.1 TYPE=audio ROUTE=Sonos_Michael STATUS=OK PRIORITY=0 TITLE='Announcement' MSG='test'
Use of uninitialized value in concatenation (.) or string at ./FHEM/00_SONOS.pm line 4241.


mache ich da noch etwas falsch?
Am Schema habe ich nicht rumgefuscht

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

Loredo

Nein. Das ist ein Fehler in Sonos Modul, was Reinerlein beheben müsste.


Gruß

Julian
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

SlrG

Vielen Dank für dieses tolle Modul. Nach einem Hinweis von @MadMax-FHEM habe ich nun msg im Einsatz und möchte gerne eine Push Nachricht per Telegram an Residents mit dem Status home senden.

Ich habe ein device Residents mit dem Namen Bewohner.
Ich habe ein device Roommate mit dem Namen Michael.
Der Status von Michael ist home.
Michael hat ein Attribut msgContactPush mit dem Inhalt TB:@Michael_XXXX.
Das ist der Name des Kontakts im Telegram Bot.

Im Device des Telegram Bot ist das Attribut defaultPeer mit dem Inhalt #FHEM belegt.
Das ist eine Gruppe, in der alle Kontakte sind.

Was funktioniert, sind
msg Test -> Test geht an alle in der Gruppe #FHEM unabhängig vom Status.
msg @FHEM Test -> Test geht an alle in der Gruppe #FHEM unabhängig vom Status, nur nicht über den defaultPeer.
msg @Michael Test -> Test geht an den Telegram Kontakt Michael_XXXX

Ich habe das Attribut msgContactPush von Michael auch mit dem Inhalt TB:@@Michael_XXXX  probiert, wie es Loredo im Thread vorschreibt.
Dann bekomme ich aber im Telegram Bot die Meldung:
NonBlockingGet: returned FAILED peer not found :@Michael_XXX:
Mit einem einzelnen @ im Attribut klappt es.

Was nun aber nicht funktioniert ist:
msg @[Bewohner:residentsHomeDevs] Test
Im Telegram Bot bekomme ich die Meldung:
NonBlockingGet: returned FAILED peer not found :Michael:

Was mache ich falsch?

Loredo

Wenn du das Verbose-Level von Markus auf 5 setzt, dann steht im Logfile welcher Befehl an TelegramBot übergeben wird und du kannst herauslesen, was dort anders ankommt.


Grundsätzlich sollte im Reading Bewohner:residentsHomeDevs der FHEM Gerätename stehen (leider hast du es genauso genannt wie den Vornamen, was es schwierig macht den geschriebenen Vornamen vom Gerätenamen zu unterscheiden). [Bewohner:residentsHomeDevs] wird automatisch durch Michael ersetzt, weshalb das Ergebnis dann genau der Befehl ist, den du oben händisch ausgeführt hast.
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

Schlimbo

Hi Loredo,
das XBMC Modul wurde abgekündigt, das nachfolge Modul heißt jetzt KODI.
https://forum.fhem.de/index.php/topic,66299.0.html
Könntest du dies bitte in das msgSchema mit aufnehmen ?
Gruß Schlimbo

l2r

kurzes Update zu meinem Problem von oben:

die Announcement.mp3 war in meinem SonosSpeak-Ordner nicht vorhanden. Die hab ich eingefügt, dann war ruhe!

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

SlrG

@Loredo:

Sorry, dass ich nochmal nerve. Ich habe jetzt nochmal meine residents und roommates angepasst, damit sie Deinen Beispielen ähnlicher sind.

Jetzt sieht das so aus:
Ich habe ein device Residents mit dem Namen rgr_bewohner.
Ich habe ein device Roommate mit dem Namen rr_michael.
Der Status von rr_michael ist home.
rr_michael hat ein Attribut msgContactPush mit dem Inhalt TB:@Michael_XXXX.
Das ist der Name des Kontakts im Telegram Bot.

Im Device des Telegram Bot ist das Attribut defaultPeer mit dem Inhalt #FHEM belegt.
Das ist eine Gruppe, in der alle Kontakte sind.

Was funktioniert, sind
msg Test -> Test geht an alle in der Gruppe #FHEM unabhängig vom Status.
msg @FHEM Test -> Test geht an alle in der Gruppe #FHEM unabhängig vom Status, nur nicht über den defaultPeer.
msg @rr_michael Test -> Test geht an den Telegram Kontakt Michael_XXXX

Ich habe das Attribut msgContactPush von Michael auch mit dem Inhalt TB:@@Michael_XXXX  probiert, wie Du es im Thread vorschreibst.
Dann bekomme ich aber im Telegram Bot die Meldung:
NonBlockingGet: returned FAILED peer not found :@Michael_XXX:
Mit einem einzelnen @ im Attribut klappt es. Das hat sich also trotz der besseren Device Benennung nicht geändert!

Was weiterhin nicht funktioniert ist:
msg @[rgr_bewohner:residentsHomeDevs] Test
Im Telegram Bot bekomme ich die Meldung:
NonBlockingGet: returned FAILED peer not found :rr_michael:

Jetzt steht in residentsHomeDevs also der FHEM device Name. Aber der wird 1:1 an Telegram durchgereicht und das kann damit natürlich nichts anfangen. Es fehlt die Umsetzung des device Namen in den Telegram Kontaktnamen. :(
Jetzt bin ich wieder ratlos, was ich falsch mache.

Was meinst Du mit "Verbose-Level von Markus auf 5"?


Loredo

Zitat von: SlrG am 03 Februar 2017, 20:47:24
Was meinst Du mit "Verbose-Level von Markus auf 5"?

Da du es jetzt wohl umbenannt hast, geht es jetzt um das FHEM Device rr_Michael. Dort das Attribut verbose=5 setzen und mal im Logfile beobachten, was dort steht. Dabei steht auch der Befehl, der dann über Telegramm abgesetzt wird. Darüber lassen sich Rückschlüsse ziehen, was du falsch gesetzt hast.

Bei mir steht da dann sowas hier:


2017.02.05 14:46:37.906 5: msg rr_Julian: push route command (fhem): set TB message @XYZ Test


Wenn ich diesen Befehl "set TB message @XYZ Test" manuell absetzte, bekomme ich auch die Meldung wie du. Daraus lässt sich folgern: Ich habe nicht den richtigen Adressaten für TelegramBot angegeben.
Der Fehler ist also beim TelegramBot Modul zu suchen. Was bei mir funktioniert:


set TB message @@XYZ Test


Wenn ich also dann als Attribut msgContactPush entsprechend "TB:@@XYZ" schreibe, funktioniert es wie es soll.
Im TelegramBot Device steht dabei im Reading "Contact": 123456789:Julian_Musterman:@XYZ.

Wie das genau zusammenhängt und warum man da mal 2 @-Zeichen braucht und mal nur einen oder wann man die Nummer nimmt und wann den Vor/Nachnamen - keine Ahnung... ist für mich genauso verwirrend.
TelegramBot bietet leider sehr viele und unübersichtliche Möglichkeiten den Adressaten anzugeben. Wie man das am klügsten macht fragst du besser in einem separaten Thread zu TelegramBot.

Ansonsten hat DeeSPe vorher ja schon geschrieben, dass er es bei sich so hinterlegt:

Zitat von: DeeSPe am 25 Januar 2017, 19:13:51Ich hinterlege die so:
<NAME-TELEGRAMBOT>:@<ID-NR-DES-KONTAKT>

Es gibt also nicht DIE eine richtige Antwort. Man muss wohl verstehen, wie das TelegramBot Modul arbeitet.
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: Schlimbo am 03 Februar 2017, 17:08:28
das XBMC Modul wurde abgekündigt, das nachfolge Modul heißt jetzt KODI.
https://forum.fhem.de/index.php/topic,66299.0.html
Könntest du dies bitte in das msgSchema mit aufnehmen ?


Habe ich hinzugefügt.
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