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

duke

Zitat von: Amenophis86 am 22 Juni 2017, 06:20:42
Hab mal im Thread hier gesucht. Versuch mal beim rr_xx das attr so zu setzen telegramBot:@@Andreas und dann eine Nachricht mittels msg rr_xx test zu verschicken.

Vielen Dank für den Hinweis!

Mit msgContactPush -> telegramBot:@Andreas im Roomate-device rr_Andreas hat es dann geklappt.

Wenn es über das Attribut des Roommates funktioniert, wieso funktioniert dann "msg @telegramBot:@Andreas test" nicht über die Kommandozeile?

Offtopic: Wie hast du denn konkret diesen Thread durchsucht, ich habe nämlich fieberhaft nach der Funktion gesucht, bevor ich hier meine Frage gepostet habe.

Amenophis86

Die Suche oben rechts, also das Input Fenster, sucht nur deine aktuelle Ebene im Forum und unterhalb dieser.
Die Suche über den Link Suche durchsucht das komplette Forum.

Warum der Befehl nicht geht kann ich auswendig nicht sagen, müsste ich jetzt auch nachlesen und die Frage ist, wie deine Einstellungen zum Zeitpunkt des Befehls waren.
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...

DeeSPe

Zitat von: duke am 22 Juni 2017, 23:24:26
Vielen Dank für den Hinweis!

Mit msgContactPush -> telegramBot:@Andreas im Roomate-device rr_Andreas hat es dann geklappt.

Wenn es über das Attribut des Roommates funktioniert, wieso funktioniert dann "msg @telegramBot:@Andreas test" nicht über die Kommandozeile?

Offtopic: Wie hast du denn konkret diesen Thread durchsucht, ich habe nämlich fieberhaft nach der Funktion gesucht, bevor ich hier meine Frage gepostet habe.

Wenn bei rr_Andreas das Attribut msgContactPush gesetzt ist, schickst Du ihm Nachrichten mit "msg @rr_Andreas Das ist ein Test".

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

tomspatz

Moin
auch ich probiere mich in das msg. Habe allerdings Probleme mit Mail. Konfiguriert ist DebianMail wie Inder WiKi.
Zusätzlich habe ich:
attr globalMsg msgCmdMail {DebianMail('%DEVICE%','%TITLE%','%MSG%')}

Grundsätzlich funktioniert das auch, doch es gibt eine Fehlermeldung im Log.
Beim Aufruf mit:
msg mail @rr_Tom |test Titel| Nachricht

2017.07.10 12:35:25 1: sendEmail RCP: mail@empfänger.domain
2017.07.10 12:35:25 1: sendEmail Subject: test Titel
2017.07.10 12:35:25 1: sendEmail Text: Nachricht
2017.07.10 12:35:25 1: PERL WARNING: Use of uninitialized value $attach in concatenation (.) or string at ./FHEM/99_myUtils.pm line 101.
2017.07.10 12:35:25 1: stacktrace:
2017.07.10 12:35:25 1:     main::__ANON__                      called by ./FHEM/99_myUtils.pm (101)
2017.07.10 12:35:25 1:     main::DebianMail                    called by (eval 787325) (1)
2017.07.10 12:35:25 1:     (eval)                              called by ./FHEM/75_MSG.pm (1979)
2017.07.10 12:35:25 1:     main::CommandMsg                    called by fhem.pl (1157)
2017.07.10 12:35:25 1:     main::AnalyzeCommand                called by fhem.pl (1021)
2017.07.10 12:35:25 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2468)
2017.07.10 12:35:25 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (904)
2017.07.10 12:35:25 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (547)
2017.07.10 12:35:25 1:     main::FW_Read                       called by fhem.pl (3412)
2017.07.10 12:35:25 1:     main::CallFn                        called by fhem.pl (686)
2017.07.10 12:35:25 1: sendEmail Anhang:
2017.07.10 12:35:25 1: PERL WARNING: Use of uninitialized value $attach in concatenation (.) or string at ./FHEM/99_myUtils.pm line 103.
2017.07.10 12:35:25 1: stacktrace:
2017.07.10 12:35:25 1:     main::__ANON__                      called by ./FHEM/99_myUtils.pm (103)
2017.07.10 12:35:25 1:     main::DebianMail                    called by (eval 787325) (1)
2017.07.10 12:35:25 1:     (eval)                              called by ./FHEM/75_MSG.pm (1979)
2017.07.10 12:35:25 1:     main::CommandMsg                    called by fhem.pl (1157)
2017.07.10 12:35:25 1:     main::AnalyzeCommand                called by fhem.pl (1021)
2017.07.10 12:35:25 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2468)
2017.07.10 12:35:25 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (904)
2017.07.10 12:35:25 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (547)
2017.07.10 12:35:25 1:     main::FW_Read                       called by fhem.pl (3412)
2017.07.10 12:35:25 1:     main::CallFn                        called by fhem.pl (686)
2017.07.10 12:35:26 1: sendEmail returned: Jul 10 12:35:26 spooky-srv02 sendEmail[20869]: Email was sent successfully!

Ich verstehe das es an dem NICHT vorhandenen Anhang liegt, denn wenn ich es so aufrufe:
{ DebianMail('mail@empfänger.domain,'Test','Test-Text','');; }

Gibt es die Fehlermeldung nicht.
Kann mir da jemand auf die Sprünge helfen.

LG
Tom

mumpitzstuff

In dem ersten Fall ist der Parameter undef und im zweiten setzt du den zu '', was nicht undef ist, sondern ein leerer String. Das könntest du vielleicht in deiner DebianMail Funktion einfach abfangen und dann aus undef ein '' machen?!?

tomspatz

Steinigt mich nicht aber:
ZitatStandardmäßig wird für Push das Pushover Modul sowie für E-Mail system() per /usr/bin/mail verwendet.

Bedeutet das "mein" DebianMail gar nicht dafür gedacht ist?

Habe soeben noch probiert aber das will leider auch nicht:
attr globalMsg msgCmdMail { my $dev='%DEVICE%';; system("echo '%MSG%' | /usr/bin/sendEmail -s '%TITLE%' -a 'MIME-Version: 1.0' -a 'Content-Type: text/html;; charset=UTF-8' '$dev'");; }

LG
Tom

mumpitzstuff

Ich hatte jetzt eher die Vermutung, dass die Funktion DebianMail in deiner 99_myUtils.pm definiert ist. Und dort solltest du einfach abfangen wenn der Parameter 4 undef ist und dann parameter 4 zu einem '' machen. Aber das ist nur eine Vermutung, keine Ahnung ob ich da richtig liege.

Phiolin

Ich hätte einen Verbesserungsvorschlag zur Benachrichtigung mehrerer anwesender Bewohner (via RESIDENTS "residentsHomeDevs") über Audio.
An einigen Stellen verwende ich aktuell Konstrukte wie

msg audio @[rgr_Bewohner:residentsHomeDevs] ....

um alle anwesenden Bewohner per Audio (via SONOS) über Dinge zu benachrichtigen.
Halten sich nun zufällig 2 Bewohner im gleichen Raum auf (location Reading identisch), wird auf dem dazugehörigen SONOS Device die Meldung immer doppelt abgespielt - halt für jeden Bewohner im Raum 1 mal.
Könnte man hier eine Prüfung einbauen, um bei mehreren Bewohnern an der gleichen location (Raum) die Ausgabe dann nur einmalig an das Wiedergabegerät zu schicken? Könnte ja per Attribut an/abschaltbar sein, für Fälle wo das vielleicht doch in dieser Form gewünscht ist.

l2r

hi Julian,

falls du das einbauen solltest, dann wäre es super wenn du auch eben die msgSchema anpassen würdest:

Zitat von: l2r am 13 Juni 2017, 08:33:23
möchtest du den DeviceTyp AMADDevice auch noch in das msgSchema aufnehmen? Ist analog zu AMAD. Oder willst du damit warten, bis AMADDevice offiziell eingecheckt ist?


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

Amenophis86

@Phiolin:
Ich weiß ja nicht, wie du den Befehl aufrufst, aber bau doch einfach selbst vorher ein IF Prüfung ein, dass es nur einmal gesendet wird, wenn die Räume gleich sind.
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

Wo muss ich denn verbose auf 2 stellen, dass ich im Log nicht immer die Meldung über eine gesendet Nachricht erhalte? Gerade bei UWZ Meldungen mit langem Text ist das Log soweit nach rechts ausgedehnt, dass es mich total nervt. Beim Device "global msg" habe ich das schon gemacht, aber das scheint nicht zu klappen.

Übrigens gibt es immer noch keinen Eintrag in der CommandRef ;)
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...

l2r

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

Amenophis86

bei mir steht globalmsg auch auf verbose 2, aber im Log kommen trotzdem die Meldungen:
017.08.25 09:59:46 3: msg rr_Etienne: ID=xxx TYPE=push ROUTE=Pushover RECIPIENT=HA_Etienne STATUS=OK PRIORITY=0 TITLE='' MSG='Die Waschmaschine ist fertig.'
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...

l2r

verstanden,

dann musst du das Device an das gesendet wird auf Verbose 2 stellen, in deinem Fall rr_Etienne

Gruß Michael

P.S.: ich hatte es nur mit msg test also ohne angegebenen Empfänger probiert und dann wird globasMsg adressiert.

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

Amenophis86

Der Roomemate soll dafür verantwortlich sein? Auf die Idee bin ich noch gar nicht gekommen dann muss ich das mal versuchen. Danke
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...