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

rageltus

Hi,

ich verstehe irgendwie die konfiguration nicht bzw. wie ich das modul benutze. Ich würde gerne via jabber eine nachricht verschicken. Ein device mit dem Name jabber habe ich und auch via einer myUtils methode funktioniert alles (sendMejabberMessage(text)) und auch mit dem Device. würde gerne das msg modul / command nutzen. was muss ich jetzt genau tun?

danke + gruß
Raspberry 3,HM-USB, SIGNALDuino 433, nanoCUL 868 SlowRF, Homematic, IKEA Tradfri Beleuchtung, FHEMApp

Loredo

Zitat von: rageltus am 14 März 2017, 20:43:45
ich verstehe irgendwie die konfiguration nicht bzw. wie ich das modul benutze. Ich würde gerne via jabber eine nachricht verschicken. Ein device mit dem Name jabber habe ich und auch via einer myUtils methode funktioniert alles (sendMejabberMessage(text)) und auch mit dem Device. würde gerne das msg modul / command nutzen. was muss ich jetzt genau tun?


Du musst den Jabber Empfängernamen in einem Attribut msgContactPush bei einem beliebigen FHEM Device hinterlegen und kannst dann so eine Nachricht schicken:


msg @FHEMDeviceName Dies ist die Nachricht
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 ein Update für den msg-Befehl eingecheckt.
Damit hält Support für parseParams() Einzug. Das hat verschiedene Auswirkungen:


1. Die vormals als "Advanced Options" betitelten Optionen nennen sich ab sofort "User Parameters".

2. Die umständliche Notation der User Parameter über O[{}] am Ende der Nachricht kann entfallen und stattdessen kann direkt mit key=value Angaben im Nachrichtentext gearbeitet werden. Die alte Notation bleibt vorerst aus Kompatibilitätsgründen erhalten.

3. Alle Parameter des msg-Befehls können jetzt auch alternativ als key=value Paare angegeben werden, eine Mischung beider Notationen ist möglich. Gültige Keys sind: msgType, msgRcpt, msgPrio, msgTitle

4. Wenn man in seinem Nachrichtentext key=value Angaben verschicken will und das nicht als User Parameter erkannt werden soll, muss der Nachrichtentext selbst ebenfalls als User Parameter übergeben werden: msg msgText='Dies ist mein Text mit key=value darin'

5. Wenn ein Gateway Modul parseParams unterstützt, dann werden alle User Parameter, die dem msg-Befehl übergeben worden sind, an das Modul durchgereicht (ist bei Pushover z.B. der Fall). Um bei gleichzeitiger Verwendung verschiedener Nachrichtenmodule eine Überlappung zu vermeiden, können Keys mit dem Namen des Moduls gefolgt von einem Unterstrich als Präfix übergeben werden. Dieses Präfix wird dann abgeschnitten, so dass das richtige Zielmodul dann seinen Parameter so erhalten kann, wie es das braucht.

6. Mit Punkt 5 werden die im Schema bisher vorhandenen modulspezifischen Platzhalter obsolete (zumindest für Module mit parseParams Support). Sie bleiben aber vorerst noch darin enthalten, um Abwärtskompatibilität zu bewahren.
Hier ein Vergleich:

Vorher:

msg push @Pushover1 1 |Titel| Dies ist eine wichtige Nachricht. O[{"Pushover_SOUND":"siren"}]


Nachher:


# msg-Befehl kümmert sich um den Parameter; Funktioniert mit jedem Modul, hängt vom definierten msg-Schema ab (entweder aus der Default Vorlage oder aus den msgCmd* Attributen)
msg push @Pushover1 1 |Bitte beachten| Dies ist eine wichtige Nachricht. Pushover_SOUND=siren





Weitere Beispiele:

# User Parameter 'sound' wird direkt ans Pushover Modul durchgereicht
msg push @Pushover1 1 |Bitte beachten| Dies ist eine wichtige Nachricht. Pushover_sound=siren

# Das hier geht auch, aber "sound" könnte mit anderen Modulen überlappen, die "siren" dann nicht verstehen
msg push @Pushover1 1 |Bitte beachten| Dies ist eine wichtige Nachricht. sound=siren

# Priorität als User Parameter
msg push @Pushover1 |Bitte beachten| Dies ist eine wichtige Nachricht. msgPrio=1

# der Titel wird als User Parameter übergeben
msg push @Pushover1 1 Dies ist eine wichtige Nachricht msgTitle='Bitte beachten'

# Type als User Parameter
msg @Pushover1 1 Dies ist eine wichtige Nachricht. msgType=push

# Empfänger als User Parameter
msg push 1 Dies ist eine wichtige Nachricht. msgRcpt=@Pushover1

# Text als User Parameter
msg push @Pushover1 1 msgText='Dies ist eine wichtige Nachricht.'

# Alles über User Parameter
msg msgType=push msgRcpt=@Pushover1 msgPrio=1 msgText='Dies ist eine wichtige Nachricht.'








Für msg relevante Module mit parseParams Support:

       
  • ENIGMA2
  • Pushover
  • Pushsafer
Für msg relevante Module ohne parseParams Support:

       
  • AMAD
  • SB_PLAYER
  • SONOSPLAYER
  • Text2Speech
  • HUEDevice
  • Fhemapppush
  • Jabber
  • Pushbullet
  • PushNotifier
  • TelegramBot
  • yowsup
  • KODI
  • XBMC
  • PostMe
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

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,

seit dem letzten Update bekomme ich bei Priorität 2
msg push 2 test

folgende Fehlermeldung:

ERROR: Could not find any general Mail contact. Please specify a destination device or set attributes in general msg configuration device globalMsg : msgContactMail | msgRecipientMail | msgRecipient

liegt daran dass ich Mail nicht konfiguriert hatte. Bis zum letzten Update hatte er hingenommen dass mail nicht konfiguriert war und keinen Fehler ausgespuckt.
Grundsätzlich aber richtiges Verhalten, wenn ich das richtig verstanden habe, da Prio 2 ja auf allen Kanälen rausgehauen wird, oder?

Also habe ich sendmail nach der Anleitung aus dem WIKI installiert https://wiki.fhem.de/wiki/E-Mail_senden inkl 99_MyUtils-Funktion.

Diese funktion habe ich dann im globalMsg-Device bekannt gemacht:
attr globalMsg msgCmdMail {DebianMail('%DEVICE%','%TITLE%','%MSG%')}

Wenn ich nun eine mail über den direkten Funktionsaufruf schicke, ist alles gut. Auch über den msg-Befehl kommt die Mail an (habe unter msgContactMail eine Mailadresse eingetragen). Allerdings habe ich im Log noch eine Fehlermeldung:


2017.03.29 11:13:19 1: sendEmail RCP: test@test.de
2017.03.29 11:13:19 1: sendEmail Subject: L2R-FHEM Hinweis
2017.03.29 11:13:19 1: sendEmail Text: test
2017.03.29 11:13:19 1: sendEmail Anhang:
2017.03.29 11:13:21 1: sendEmail returned: Mar 29 11:13:21 pi-fhem sendEmail[4322]: Email was sent successfully!
2017.03.29 11:13:21 3: msg globalMsg: ID=1490778799.68928.1 TYPE=mail ROUTE=test@test.de STATUS=OK PRIORITY=0 TITLE='L2R-FHEM Hinweis' MSG='test'
2017.03.29 11:13:25 1: Error: >test@test.de< has no TYPE, but following keys: ><


die ersten 5 Zeilen sind Logausgaben von der MailFunktion, die letzten beiden stammen von msg.

darf ich bei msgContactMail keine Mailadresse eintragen? Falls nicht, wie muss ich das dann konfigurieren?

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

Loredo

Zitat von: l2r am 29 März 2017, 11:16:35
seit dem letzten Update bekomme ich bei Priorität 2
msg push 2 test

folgende Fehlermeldung:

ERROR: Could not find any general Mail contact. Please specify a destination device or set attributes in general msg configuration device globalMsg : msgContactMail | msgRecipientMail | msgRecipient


Das sollte mit dem heutigen Update behoben sein.


Zitat von: l2r am 29 März 2017, 11:16:35
Auch über den msg-Befehl kommt die Mail an (habe unter msgContactMail eine Mailadresse eingetragen). Allerdings habe ich im Log noch eine Fehlermeldung:


2017.03.29 11:13:19 1: sendEmail RCP: test@test.de
2017.03.29 11:13:19 1: sendEmail Subject: L2R-FHEM Hinweis
2017.03.29 11:13:19 1: sendEmail Text: test
2017.03.29 11:13:19 1: sendEmail Anhang:
2017.03.29 11:13:21 1: sendEmail returned: Mar 29 11:13:21 pi-fhem sendEmail[4322]: Email was sent successfully!
2017.03.29 11:13:21 3: msg globalMsg: ID=1490778799.68928.1 TYPE=mail ROUTE=test@test.de STATUS=OK PRIORITY=0 TITLE='L2R-FHEM Hinweis' MSG='test'
2017.03.29 11:13:25 1: Error: >test@test.de< has no TYPE, but following keys: ><


die ersten 5 Zeilen sind Logausgaben von der MailFunktion, die letzten beiden stammen von msg.

darf ich bei msgContactMail keine Mailadresse eintragen?


Du sollst sogar  ;)
Irgendwie scheint Perl beim reinen überprüfen, ob ein Hash mit dem Namen der E-Mail Adresse vorhanden ist automatisch dort einen leeren Hash anzulegen, was FHEM seit einiger Zeit dann auch entsprechend meldet, da somit quasi ein komplett leeres FHEM Device angelegt wird. Ich muss mal genauer schauen, wie man das verhindern kann.
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: l2r am 29 März 2017, 11:16:35
Allerdings habe ich im Log noch eine Fehlermeldung:


2017.03.29 11:13:25 1: Error: >test@test.de< has no TYPE, but following keys: ><



Ich konnte den Fehler finden und habe ihn entsprechend korrigiert.

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

Amenophis86

Ok, ich verzweifle absolut und muss jetzt doch fragen.

- Ich habe Pushover als Device in FHEM angelegt, das heißt auch Pushover.
- Mein Handy heißt bei Pushover HA_Ede
- ich habe einen Roommate rr_Etienne
- ich habe msg angelegt

wie muss ich es nun machen, dass ich eine Nachricht mittels msg über Pushover nur an mein Handy schicke?

- bei globalMsg habe ich bereits msgcmdPush mit "Pushover" belegt (hatte auch mal mit :USERKey noch gearbeitet, hat auch nix gebracht)
- bei rr_Etienne habe ich bei msgContactPush folgende Dinge versucht: "HA_Ede" / "Pushover:HA_Ede" / "Pushover:@HA_Ede" / "Pushover:@@HA_Ede"

die Nachricht habe ich wie folgt versucht zu senden:

msg rr_Etienne Test
msg @rr_Etienne Test


und nie kam sie nur bei mir, oder generell nicht an. Im Log steht immer bei Status ok:


2017.04.02 13:21:59 3: msg rr_Etienne: ID=1491132119.6691.1 TYPE=push ROUTE=Pushover RECIPIENT=@@HA_Ede STATUS=OK PRIORITY=0 TITLE='' MSG='Test3'
2017.04.02 13:22:47 3: msg rr_Etienne: ID=1491132167.89592.1 TYPE=push ROUTE=Pushover RECIPIENT=@HA_Ede STATUS=OK PRIORITY=0 TITLE='' MSG='Test4'
2017.04.02 13:24:15 3: msg rr_Etienne: ID=1491132255.23546.1 TYPE=push ROUTE=Pushover RECIPIENT=@HA_Ede STATUS=OK PRIORITY=0 TITLE='' MSG='Test5'
2017.04.02 13:24:47 3: msg rr_Etienne: ID=1491132287.72375.1 TYPE=push ROUTE=Pushover RECIPIENT=HA_Ede STATUS=OK PRIORITY=0 TITLE='' MSG='Test6'
2017.04.02 13:37:55 3: msg rr_Etienne: ID=1491133075.59593.1 TYPE=push ROUTE=Pushover RECIPIENT=HA_Ede STATUS=OK PRIORITY=0 TITLE='' MSG='Test8'


Was mache ich falsch?
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...

Loredo


attr rr_Etienne msgContactPush Pushover:HA_Ede
msg @rr_Etienne Test


oder


attr rr_Etienne msgContactPush Pushover:USERKEY:HA_Ede
msg @rr_Etienne Test


Wenn du beim Pushover das Attribut verbose=4 setzt, dann siehst du die Zeile, die an Pushover geschickt wird. Dort ist dann &device=HA_Ede enthalten.



2017.04.02 18:17:13.991 4: Pushover Pushover: REQ messages.json/&message=test&device=HA_Ede&token=aABCDEF&user=uGHIJKLMN


Sofern dann trotzdem die Nachricht an alle Geräte geschickt wird, liegt ein Fehler beim Pushover Dienst vor oder dein Gerät heißt bei Pushover unter der User-ID nicht HA_Ede.
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

Amenophis86

genau so hatte ich es gemacht. Und scheinbar kommt beim Pushover nix an, weil auch mit verbose 5 sehe ich keine Reaktion vom Pushovermodul. Es scheint, dass msg die Daten nicht an Pushover über gibt. Wobei das Modul "Pushover" heißt, habe es extra nochmal gecheckt eben.

Edit:
Direkt aus dem Pushover lässt sich auch alles versenden, nur die Verbindung von Resident zu Pushover scheint nicht zu klappen. Beides nochmal getestet und das Pushover Device nochmal umbenannt zum Test. Bleibt dabei, bei Pushover kommt nix an.
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...

Amenophis86

Über
attr globalmsg msgcontactPush Pushover
kommt bei allen die Nachricht an, die ich mit
msg Test
versende. Ich sehe einfach den Fehler nicht.

Edit:
Ich fresse einen Besen. Ich habe kein Plan warum es jetzt geht. Ich habe einfach nochmal im rr_Etienne ein anderes Handy genommen und getestet, da kam es an. Dann habe ich es wieder auf
Pushover:HA_Ede
umgestellt und es geht auf einmal. Ich habe NULL Plan warum. Hauptsache es geht. Danke für die "Hilfe" :D
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...

Loredo


Du scheinst das Konzept noch nicht ganz verstanden zu haben.Wenn du explizit an ein Device etwas senden willst, musst du es mit einem @ vorne dran übergeben. Sonst kann es nicht erkannt werden.


Sucht nach msgContactPush oder msgContactMail am Device vom Typ msgConfig (heißt standardmäßig globalMsg, wenn man es nicht umbenannt hat):

msg Test



Sucht nach msgContactPush oder msgContactMail unter rr_Etienne. Wenn dort nichts gefunden wird fällt es auf globalMsg zurück und sucht dort:

msg @rr_Etienne Test



msgContact* hat generell das Format:


  DEVICE:SubDevice:TerminalDevice


DEVICE ist der FHEM Gerätename für das Gateway.
SubDevice und TerminalDevice sind optional oder je nach Ziel-Gateway auch notwendig. Deren Format hängt entscheidend davon ab, wie es das Ziel-Gateway erwartet.
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

Amenophis86

Konzept habe ich verstanden, deswegen hatte der Fehler keinen Sinn gemacht. Es war defakto so, dass msg nichts ans Pushover Modul gegeben hat, wenn es direkt an den Roommate gehen sollte. Erst nachdem ist testweise im gleichen Resident mal ein anderes Handy als Ziel angegeben hatte. Danach habe ich es wieder auf HA_Ede geändert und dann kamen auch die Nachrichten an. Keine Ahnung wieso dann erst. Die Nachrichten an alle mittels

msg Test kamen die ganze Zeit schon an.
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...

Loredo

Zitat von: Amenophis86 am 02 April 2017, 19:05:41
Es war defakto so, dass msg nichts ans Pushover Modul gegeben hat, wenn es direkt an den Roommate gehen sollte. Erst nachdem ist testweise im gleichen Resident mal ein anderes Handy als Ziel angegeben hatte. Danach habe ich es wieder auf HA_Ede geändert und dann kamen auch die Nachrichten an. Keine Ahnung wieso dann erst. Die Nachrichten an alle mittels


Das klingt schon irgendwie nach Voodoo, kann es aber bekanntermaßen nicht sein.  ;)
Wenn du verbose=5 beim ROOMMATE Device setzt, dann kriegst du auch genau erklärt, was der msg-Befehl tut und wie der generierte Befehl aussieht.
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

Amenophis86

Zitat von: Loredo am 02 April 2017, 22:27:06
Das klingt schon irgendwie nach Voodoo, kann es aber bekanntermaßen nicht sein.  ;)

gebe ich dir zu 100% recht und bin auch vom Glauben abgefallen, als es plötzlich funktionierte :D Habe allerdings immer noch nicht herausfinden können was genau der Fehler war. Solange er nicht wieder auftritt soll es mir recht sein. Und reproduzieren zum prüfen schaffe ich es nicht. Vermutlich habe ich irgendwo was falsch gemacht und kann es nicht mehr sagen. Aber wie gesagt, Hauptsache es klappt jetzt und vielen Dank für die Hilfe hier und in den ganzen anderen Themen bezüglich meiner Fragen. Bin jetzt schon begeistert von msg und Resident :)
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...