Notification Forwarder zum Weiterleiten von DSM-Benachrichtigungen

Status
Für weitere Antworten geschlossen.

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
that is a mistake in my script, please wait for a new version or you fix it yourself:

  • be sure that there are no outstanding notifications (e.g. device not reachable)
  • log into your ds via telnet or ssh and use user root with password from admin
  • navigate to /var/packages/net_notifier/target/bin/
  • open notifyd with a suitable editor (e.g vi, pico, nano, mcedit)
  • search for text "https://api.prowlapp.com/publicapi/add"
  • a few rows under this text you see a line with "'body' => {"
remove all "uri_escape()" and change the following code
Rich (BBCode):
'body' => {
               'apikey' => $password,
               'application' => uri_escape($app_name),
               'event' => uri_escape($nfmessage[0]),
               'description' => uri_escape(strftime("%Y-%m-%d %H:%M:%S", localtime($notify->{'time'}))."\n".$nfmessage[1]),
               'priority' => $nfmessage[4]
}
to this code
Rich (BBCode):
'body' => {
               'apikey' => $password,
               'application' => $app_name,
               'event' => $nfmessage[0],
               'description' => strftime("%Y-%m-%d %H:%M:%S", localtime($notify->{'time'}))."\n".$nfmessage[1],
               'priority' => $nfmessage[4]
}

save the file and test the protocol.
 

wolfster

Benutzer
Mitglied seit
06. Sep 2013
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe soeben den Notification Forwarder installiert. Erstmal vielen Dank für deine tolle Leistung, macht einen sehr guten Eindruck und echt nützlich!!

Ich nutze Pushover und bekomme bei der Einrichtung immer folgenden Fehler:

Screenshot 2013-10-14 17.13.27.jpg

Ich habe den Application Key schon mehrmals reinkopiert, der sollte also passen. Muss ich bei Hostname vll. noch was bestimmtes eintragen? Ich habe da einfach mal Pushover reingeschrieben da die Notifications ja über das Internet geleitet werden und nicht eine bestimmte IP....


Danke,

wolfster
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
In das Feld "Hostname/IP oder Name" kannst bei Pushover einen beliebigen Namen reinschreiben, das wird bei Pushover nicht benutzt. Schau mal ob sich im Feld "Benutzer:passwort" ausversehen Leerzeichen vor oder hinter dem enthaltenen Wert eingeschlichen haben. In das Feld muss der API-token und der user/group-key getrennt durch ein : eingetragen werden, Beispiel: API-token:user-key. Den API-token siehst nach dem Login bei pushover.net im Dashboard, den user-key bei Klick auf die von dir erstellte App.

Das ganze steht noch mal in Kurzform auf der 1. Seite dieses Threads.
 

wolfster

Benutzer
Mitglied seit
06. Sep 2013
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Vielen Dank für die schnelle Antwort, war natürlich mal wieder ein Anwenderfehler. Ich hatte nur den User-Key eingetragen und keine App erstellt. War mir nicht im Klaren, dass man das machen muss. Bei Growl braucht man ja auch nur den User Key, daher bin ich fälschlicherweise davon ausgegangen, dass es hier nicht anders wäre.

Jetzt funktioniert es und fürs nächste mal weiß ich bescheid...

Vielen Dank für die super Hilfe und den Notification Forwarder an sich!

wolfster
 

dvdr

Benutzer
Mitglied seit
02. Nov 2013
Beiträge
36
Punkte für Reaktionen
0
Punkte
6
Hallo
ich habe Probleme, die Benachrichtigung mit dem mobilen Browser (iPad) einzurichten. Es ist immer Growl voreingestellt, ich kann das durch Klick darauf nicht ändern, demnach auch nicht Prowl auswählen. Ebenfalls nicht editierbar ist das Feld Username:.... (das immer auch hinter dem Doppelpunkt stehen mag...), nur der Klick aus Host/IP.... und Username bringt mir ein editierbares Feld....
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Hast du es es schon mal mit einem anderen Browser auf einem anderen Gerät versucht. Evtl. klappt die Auswahl nur nur nicht wegen dem Touch. Ich kann dies mal auf meinem Tablett testen, ist aber kein iPad.
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Das liegt daran, dass man zum Editieren eines Feldes einen Doppelklick darauf ausführen muss. Da jeder mir bekannte Browser auf Touchdevices bei einem Doppelklick den Ausschnitt zoomt, kann das nicht funktionieren. Evtl. kannst es hinbekommen, wenn du mit 2 Fingern gleichzeitig einen Doppelklick ausführst.

In einer der nächsten Versionen werde ich das Design des Notification forwarder eh ändern und dann wird kein Doppelklick mehr nötig sein. Musst wohl leider vorerst deine Einstellungen auf einem PC mit Maus durchführen.
 

glimmling

Benutzer
Mitglied seit
10. Aug 2009
Beiträge
70
Punkte für Reaktionen
0
Punkte
0
Hallo mal wieder,

ich hätte eine kleine Bitte für das nächste Update.
Bei Autoremote als Client hat sich was verändert. Wenn das Empfangsgerät während dem Zeitpunkt des Sendens vom Notification Forwarder nicht online ist, kommt die Nachricht nicht ohne weiteres an. Da das WiFi bei meinem Handy und Tablet so eingestellt ist, dass es bei mehrminüter Nichtnutzung in den Schlafmodus geht, verpasse ich somit viele Benachrichtigungen.

Es gibt jedoch einen Parameter bei Autoremote, um eine Nachricht über einen definierten Zeitraum "am leben" zu erhalten. Das ist der ttl (time to live) -Parameter. Zum Beispiel würde ttl=86400 diesen Zeitraum auf einen Tag setzen. Die Zahl hinter dem Gleichzeichen ist die Anzahl der Sekunden.

Beim Senden einer Nachricht mit dem Browser oder Curl würde das dann so aussehen:
Rich (BBCode):
http://autoremotejoaomgcd.appspot.com/sendmessage?key=geheimerschluessel&ttl=86400&message=Hallo

Kannst du den TTL-Parameter evt. berücksichtigen? Ein Tag wäre meiner Meinung nach ein guter Zeitraum, falls man mal länger nicht online ist.

Dann hätte ich da noch eine Frage. Und zwar haben einige der Clients ja auch die Möglichkeit ihrerseits auf Benachrichtigungen zu antworten.
Wenn mir nun der Notification Forwarder zum Beispiel eine Benachrichtigung an Autoremote sendet, dass für dieses oder jenes Paket im DSM ein Update bereitsteht, könnte ich mit Autoremote über SSH einen Befehl an die Diskstation senden, das Paket zu aktualisieren (ohne Umweg über die Weboberfläche). Wäre es den überhaupt über das CLI möglich ein Paket zu updaten und ähnliches zu machen? Wenn ja, ist das irgendwo dokumentiert?

Vielen Dank!
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Das mit dem ttl kann ich einbauen, keine grosse Sache. In einer späteren Version, wird auch dies konfigurierbar sein.

Bei dem Update eines Paketes werden vom User oft noch Eingaben verlangt, die ein Update per CLI verhindern. Aber auch, wenn du z.B. ein Paket erwischst, welches Quickinstall unterstützt, so muss man sich dennoch erst per CLI im DSM anmelden. Dies ist zwar mit einigen Zeilen Code möglich, erfordert aber immer die Eingabe von Username und Passwort. Es sei denn, du möchtest die Logindaten auf einem Gerät im Klartext speichern, was ich mir aber nicht vorstellen kann.
 

glimmling

Benutzer
Mitglied seit
10. Aug 2009
Beiträge
70
Punkte für Reaktionen
0
Punkte
0
Danke schon mal für das nächste Update mit TTL! :)

Das mit den Paketen ist jetzt nicht so wichtig, auch wenn es vom Handy fast unmöglich ist, etwas im Desktop-DSM einzustellen. Ich hoffe, Synology baut die Funktionen für Updates einfach in die mobile DSM-Oberfläche ein, oder in die DSFinder-App.
 

sven_s

Benutzer
Mitglied seit
15. Dez 2013
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
that is a mistake in my script, please wait for a new version or you fix it yourself:

  • be sure that there are no outstanding notifications (e.g. device not reachable)
  • log into your ds via telnet or ssh and use user root with password from admin
  • navigate to /var/packages/net_notifier/target/bin/
  • open notifyd with a suitable editor (e.g vi, pico, nano, mcedit)
  • search for text "https://api.prowlapp.com/publicapi/add"
  • a few rows under this text you see a line with "'body' => {"
remove all "uri_escape()" and change the following code
Rich (BBCode):
'body' => {
               'apikey' => $password,
               'application' => uri_escape($app_name),
               'event' => uri_escape($nfmessage[0]),
               'description' => uri_escape(strftime("%Y-%m-%d %H:%M:%S", localtime($notify->{'time'}))."\n".$nfmessage[1]),
               'priority' => $nfmessage[4]
}
to this code
Rich (BBCode):
'body' => {
               'apikey' => $password,
               'application' => $app_name,
               'event' => $nfmessage[0],
               'description' => strftime("%Y-%m-%d %H:%M:%S", localtime($notify->{'time'}))."\n".$nfmessage[1],
               'priority' => $nfmessage[4]
}

save the file and test the protocol.

In my case, that did not fix the problem.

I fixed the problem by removing the uri_escape comands from the notify-cli file.

HTH, Sven
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
In my case, that did not fix the problem.

I fixed the problem by removing the uri_escape comands from the notify-cli file.

HTH, Sven
Yes, there are also the same protocol entrys with the same wrong placed uri_escape()'s.
 

OleS

Benutzer
Mitglied seit
27. Mai 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Moin,
ich versuche mich gerade am notification forwarder, um die Nachrichten meiner DS413 an einen VDR zu senden. Versuche ich es per
Rich (BBCode):
/volume1/@appstore/net_notifier/bin/notify-cli -i 10.205.1.150:6419 -c SVDRP -p key -t Test -m "Testnachricht"
kommt die Nachricht am VDR an.

Mit folgender Konfiguration im Frontend bekomme ich selbst die Testnachricht nicht angezeigt.

Unbenannt.jpg

Es kommt lediglich die Nachricht "Test connection successfull established!" in der GUI vom forwarder.

Cheers,
Ole
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Besteht das Fehlverhalten noch, kann mir das ehrlich gesagt nicht erklären, wieso das mit dem CMD-Tool funktioniert und dem Daemon nicht? Hab es grad nochmal mit meinem VDR getestet und die Meldung erscheint auch auf dem TV.

Ein Passwort ist für SVDRP nicht notwendig, in der GUI kannst irgendwas reinschreiben.
 

OleS

Benutzer
Mitglied seit
27. Mai 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo QTip,

das Problem besteht immer noch. Ich kann am Daemon konfigurieren, was ich will,
am VDR kommt nichts an - weder im OSD, noch im syslog. Kann es sein, das der
Port 6419 beim Daemon nicht korrekt angegeben wird? Lauscht dein VDR evtl.
noch auf dem alten (pre 1.7) SVDRP-Port 2001?

Cheers,
Ole
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Nene, mein VDR (EasyVDR 1.0) lauscht auch schon auf dem 6419. Hast du noch ein anderes Gerät, was du mit dem Notification forwarder testen kannst (Handy, XBMC)?

Übrigens kannst du eine Testmeldung einfach mit --test als Parameter durchführen, das ersetzt -t und -m. Mit der Option --debug siehst dann halt noch ein wenig mehr an Kommunikationsmeldungen.

  • killall notifyd
  • wechsel in das Verzeichnis /usr/syno/bin
  • öffne mit einem geeignetem Editor die Datei "synodsmnotify" und ändere die Zeile 60 in "# system($nfcmd." &");"
  • Datei sichern und schließen
  • wechsel in das Verzeichnis /volume1/@appstore/net_notifier/bin
  • öffne mit einem geeignetem Editor die Datei "notifyd" und ändere den Wert in Zeile 53 von "my $debug = 0;" auf "my $debug = 1;"
  • Datei sichern und schließen
  • eine Testmeldung an SVDRP senden
  • starte ./notifyd und schau dir den Output an, evtl. kannst du den hier posten
  • zum Schluss die Änderungen wieder rückgäng machen
 

OleS

Benutzer
Mitglied seit
27. Mai 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Momentan habe ich nur diesen VDR zur Verfügung. Nach den Änderungen habe ich per GUI
eine Testnachricht gesendet, welche nicht am VDR ankam.

DS413> ./notifyd
start
-----
*************************** 10.205.1.150:6419 - ID 0 ***************************
Notificatons for user: admin

no notifications
remaining: 0
check_interval: 300


Per CMD-Line geht's nach wie vor. Hier das LOG vom VDR nach der Nachricht per CMD-Line:

Feb 21 15:35:13 htpc vdr: [1459] connect from 10.205.1.149, port 44183 - accepted
Feb 21 15:35:13 htpc vdr: [1459] SVDRP message: 'Test connection: The connection to host '10.205.1.150:6419' with protocol 'SVDRP' was successful!'
Feb 21 15:35:13 htpc vdr: [1459] info: Test connection: The connection to host '10.205.1.150:6419' with protocol 'SVDRP' was successful!
Feb 21 15:35:13 htpc vdr: [7465] Text2Skin: message display update thread started (pid=1459, tid=7465, prio=high)
Feb 21 15:35:13 htpc vdr: [1459] lost connection to SVDRP client
Feb 21 15:35:13 htpc vdr: [1459] closing SVDRP connection
Feb 21 15:35:17 htpc vdr: [7465] Text2Skin: message display update thread ended (pid=1459, tid=7465)
Feb 21 15:35:17 htpc vdr: [graphTFT] OsdClear


Cheers,
Ole
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Sorry, du musst natürlich eine Meldung für den admin provozieren, damit der Daemon auch etwas neues findet.
Die Testfunktion geht an dem Daemon vorbei direkt über das CMD-Line Tool. Das bedeutet, wenn die manuelle CMD-Line Aufruf funktioniert, dann muss etwas zwischen Testscript und CMD-Line Tool nicht stimmen.
 

OleS

Benutzer
Mitglied seit
27. Mai 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Ok, habe ich gemacht. Hier der Output vom notifyd-Aufruf:

DS413> ./notifyd
start
-----
*************************** 10.205.1.150:6419 - ID 0 ***************************
Notificatons for user: admin

protocol: SVDRP - last not sent notification: 1393096780
Notify-time: 1393096780
Title: PackageCenter
Message:
2014-02-22 20:19:40
Python is successfully installed.
Hex: 50 79 74 68 6f 6e 20 69 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 69 6e 73 74 61 6c 6c 65 64 2e 20 20

#: Opening svdrp_connect()...
#: Creating socket... OK.
#: Reading VDR response... OK.
#: Checking response validity... OK.
#: Closing svdrp_connect()...

lastsend: 1393096780
lastmessage: OK

remaining: 0
check_interval: 300


Und was soll ich sagen: die Nachricht kam am VDR an!

Feb 22 20:20:05 htpc vdr: [16228] connect from 10.205.1.149, port 38642 - accepted
Feb 22 20:20:05 htpc vdr: [16228] SVDRP message: 'PackageCenter@DS413: 2014-02-22 20:19:40 - Python is successfully installed.'
Feb 22 20:20:05 htpc vdr: [16228] info: PackageCenter@DS413: 2014-02-22 20:19:40 - Python is successfully installed.
Feb 22 20:20:05 htpc vdr: [17056] Text2Skin: message display update thread started (pid=16228, tid=17056, prio=high)
Feb 22 20:20:05 htpc vdr: [16228] lost connection to SVDRP client
Feb 22 20:20:05 htpc vdr: [16228] closing SVDRP connection


Dann passt wohl wirklich nur der Testaufruf in der GUI nicht.

Cheers,
Ole
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
OK, danke für den Output, ich werde das mit der Testconnection überprüfen.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat