Autor Thema: Push-Mitteilungen via Telegram direkt von einer Synology Diskstation  (Gelesen 1327 mal)

Offline Tyllux

  • New Member
  • *
  • Beiträge: 16
Auf die Vorzüge von direkten Push-Mitteilungen bei Events muss ich nicht näher eingehen. ;)

Die Diskstations von Synology bieten von Haus aus leider keine Möglichkeit Status-Mitteilungen per Push zu versenden. Über den Telegram Bot kann dies aber recht einfach nachgerüstet werden (alternativ ist es auch mit anderen Diensten wie Pushover möglich). Natürlich könnte dies auch per Anbindung der DS an FHEM realisiert werden - wenngleich es auch komplizierter wäre. Ich habe mir für meine Synology Diskstation eine direkte Einbindung des Telegram Messengers gewünscht. Daher landet dieser Beitrag auch im Bereich "Off Topic".

Benötigt wird:

- das funktionale Paket "Web Station" auf der DiskStation (mind. ab DSM > 6.x.x ist dies ein Paket, zuvor war es im DSM implementiert und via den erweiterten Einstellungen aktivierbar)
- den Bot-Token
- eine Chat ID
- den unten angegebenen PHP-Code in einer Datei auf der DS
- diesen Code-Einzeiler: http://localhost/telegram.php?user=1&pass=1&phone=010&body=Hello World&bot_token=DURCH_TOKEN_ERSETZEN&chat_id=DURCH_CHAT_ID_ERSETZEN

Ich setze voraus, dass Ihr euren Bot-Token und die gewünschte Chat ID kennt oder selbst erarbeitet (unterstütze aber gern bei Rückfragen).

Sofern bzw. sobald "Web Station" auf der DS aktiv ist, sollte in der Applikation "File Station" auch ein Ordner namens "Web" vorhanden sein. In diesem erstellt ihr die Datei "telegram.php" mit folgendem Inhalt:

<?php
header
("Content-Type: text/html; charset=utf-8");

define('BOT_TOKEN'$_GET["bot_token"]);
define('API_URL''https://api.telegram.org/bot'.BOT_TOKEN.'/');
 
// grab the chatID
$chatID $_GET["chat_id"];
 
// compose reply
$reply =  sendMessage();
 
// send reply
$sendto API_URL."sendmessage?chat_id=".$chatID."&text=".$reply;
file_get_contents($sendto);
 
function 
sendMessage(){
$message urlencode($_GET["body"]);
return 
$message;
}
?>

Nun ruft in der Systemsteuerung den Punkt "Benachrichtigungen" auf, dort dann "SMS". Aktiviert diesen Punkt und wählt "Neuen SMS-Serviceanbieter hinzufügen". Wählt einen passenden Namen, z.B. "Telegram" und fügt den o.a. Code-Einzeiler ein. Vergesst nicht DURCH_TOKEN_ERSETZEN und DURCH_CHAT_ID_ERSETZEN mit euren Angaben zu ersetzen.

Nach einem Klick auf "Weiter" müssen Kategorien für inhaltliche Werte gewählt werden, dies ist IMHO selbsterklärend. Als Benutzername und Passwort gebt einfach jeweils eine "1" ein.

Fertig! Via "Test-SMS senden" solltet ihr jetzt die Nachricht "Test Message from .." und künftig die Ereignisse eurer DS via Telegram Bot erhalten.
« Letzte Änderung: 04 Juli 2016, 22:34:43 von Tyllux »

Offline hoods

  • New Member
  • *
  • Beiträge: 39
Hallo Tyllux,

ich habe seit einiger Zeit einen Bot laufen und nutze diesen um FHEM Nachrichten zu erhalten. Auf unseren Android Handys kommen die Status Meldungen an und soweit funktioniert alles.
Telegram auch auf der Synology nutzen zu können wäre super, denn dann brauche ich Pushover gar nicht mehr. Allerdings klappt es trotz deiner Anleitung nicht mit dem Nachrichten Versand. Wenn ich versuche eine Test-SMS über die Synology Admin Oberfläche zu versenden, passiert einfach nichts.

Weisst Du wo die relevant Logs liegen könnten? Unter /var/log habe ich keine passenden Logeinträge gefunden.

Meine URL sieht aktuell so aus:
http://localhost/telegram.php?user=1&pass=1&phone=010&body=HelloWorld&bot_token=1111111111:AAFdkhdsODLHFz987970AHD-D4lflhlFHLA&chat_id=@meinBot
/volume1/web/telegram.php hat aktuell zu Testzwecken folgende Berechtigungen:
-rwxrwxrwx  1 root root   451 Jul  9 23:36 telegram.php

1. bei der aktuellen DSM Version ist https standardmäßig aktiviert und ich kanns scheinbar im GUI auch nicht mehr deaktivieren. Nutzt Du http oder https?
2. bot_token ist durch meinen tatsächlichen Token ersetzt
3. lt. API Doku muss chat_id meinem Botnamen inkl. @ davor entsprechen. Trotzdem habe ich versucht über
https://api.telegram.org/bot1111111111:AAFdkhdsODLHFz987970AHD-D4lflhlFHLA/getUpdates

die chat_id herauszufinden aber die Antwort ist leer:
{"ok":true,"result":[]}
Ich komme gerade irgendwie nicht weiter oder habe einen Denkfehler. Hast Du einen Tipp für mich?

Viele Grüße,
hoods

RPi2, FHEM 5.7, HMUSB, Jeelink, NanoCUL, Selbstbau Stick auf Arduino Basis für Radermacher Fernotron System, Benning WR über HTTPMOD

Offline Tyllux

  • New Member
  • *
  • Beiträge: 16
Hi, ich sehe da in der Tat schon einen Fehler bzgl. der Chat ID in deinem Punkt 3. Dein Bot Token hat damit nichts zu tun; du kannst die Chat ID, die du verwenden möchtest auch einfach im Telegram Modul in FHEM kopieren. Habe da heut Abend noch ein, zwei Tipps - aber gerade ist erst Planschbecken mit Junior angesagt. ;)
« Letzte Änderung: 04 Januar 2017, 20:09:54 von Tyllux »

Offline Tyllux

  • New Member
  • *
  • Beiträge: 16
Hi,

hier der in der SMS-URL von mir verwendete (anonymisierte) Code:

http://localhost/telegram.php?user=1&pass=1&phone=010&body=Hello World&bot_token=987654321:AABBccDDeeFFggHHIIJJ-kkLLmmnn_OOpp&chat_id=-12345678
Ich verwende in meinen Konfigurationen keine Chat-Namen, sondern immer die dem Namen zugehörige Nummer. Nicht wundern, dass im Code oben vor der Nummer bei der Chat ID ein "-" steht, das ist bei Gruppen so korrekt. Bei normalen Benutzern entsprechend ohne. Ebenso wird in der URL kein @ benötigt.

Diese Nummern findest du auch in FHEM im Telegram Bot Modul unter Readings / Contacts.

Damit du mit der URL

https://api.telegram.org/bot<YourBOTToken>/getUpdates
mehr und relevante Informationen erhältst, musst du beim Aufruf dieser URL auch etwa gleichzeitig in den Chat etwas schreiben! Einfach testen, manchmal braucht es diverse Anläufe, solange erscheint nur das reguläre "{"ok":true,"result":[]}".

Im DSM / Benachrichtigungen / SMS habe ich unter "Vorrangige Telefonnummer" übrigens eine fiktive Rufnummer eingetragen.

Meine Diskstation läuft übrigens ebenfalls per default mit https.

Ich hoffe das hilft etwas weiter.
« Letzte Änderung: 04 Januar 2017, 20:08:50 von Tyllux »

Offline hoods

  • New Member
  • *
  • Beiträge: 39
Es klappt nun. Der Trick ist, einen bestehenden Benutzer aus dem FHEM teleBot reading Contacts für die chat_id zu nehmen.

Vielen Dank für die Tipps!

Gruß Sven
RPi2, FHEM 5.7, HMUSB, Jeelink, NanoCUL, Selbstbau Stick auf Arduino Basis für Radermacher Fernotron System, Benning WR über HTTPMOD

Offline juergen012

  • Full Member
  • ***
  • Beiträge: 164
Hallo, habe mit einigen Schwierigkeiten die Telegram Benachrichtigung auf meiner Synology installiert..
Klappt jetzt einwandfrei SUPER!!!

Beste Grüße
Jürgen K.

Offline gelbwichtel

  • Jr. Member
  • **
  • Beiträge: 72
Antw:Push-Mitteilungen via Telegram direkt von einer Synology Diskstation
« Antwort #6 am: 11 Februar 2017, 15:54:49 »
Hi,
also irgendwie bekomme ich keine TestSms´zu Teleebot aus der Syologie raus. Fehler bekomme ich aber auch nicht.
Aus FHEM raus habe ich keine Probleme was zu senden.

Meine Internals sehen so aus: (Codes hier ge-Xt)
CFGFN   ./FHEM/my02Telebot.cfg
DEF       37***301:AAGNTZPjTWr***Mdy-hYLr***CY
FAILS    0
NAME    telebot2
Token    37***301:AAGNTZPjTWr***Mdy-hYLr***CY
UPDATER 0
URL      https://api.telegram.org/bot37***301:AAGNTZPjTWr***Mdy-hYLr***CY/
me       37***301:SynoNas:@SYNOxxxxxt
sentMsgPeerId    32109****

Attributes
cmdRestrictedPeer    32109****
defaultPeer              32109****
pollingTimeout         120
die SMS Definition auf der DS216 wie folgt

http://localhost/telegram.php?user=1&pass=1&phone=010&body=Hello World&bot_token=37***301:AAGNTZPjTWr***Mdy-hYLr***CY
&chat_id=32109****

Ein direkt über linux abgesetzter curl-Aufruf schickt mir den Text, genauso wie FHEM, aber irgendwie will das Ding nicht aus der Synology raus

curl -X  POST 'https://api.telegram.org/bot37***301:AAGNTZPjTWr***Mdy-hYLr***CY/sendMessage?chat_id=32109****&text="testtext"'
Mir drängt sich der Verdacht auf, dass die telegram.php erst gar nicht ausgeführt wird. Denn auch, wenn ich diese lösche bzw. umbenenne, meldet mir ein Send Test-SMS, dass eine SMS verschickt worden sei. Aktuell im EInsatz ist die DSM 6.0.2-8451 Update 9.

Vielleicht hat jemand ja eine Idee, woran es liegen könnte.
Danke

« Letzte Änderung: 12 Februar 2017, 16:37:30 von gelbwichtel »
cu
gelbwichtel

RPi + CSM (21 Max HT, 4 WT, 2 FKT, MaxLan), RPi + COC (FS20 ST4, S8M, S4M, TFK, RPT,  SM8), AVR-Net-IO (Ethersex, 20  x 1w DS18B20)

Offline gelbwichtel

  • Jr. Member
  • **
  • Beiträge: 72
Antw:Push-Mitteilungen via Telegram direkt von einer Synology Diskstation
« Antwort #7 am: 12 Februar 2017, 20:47:30 »
So nach langen Hin und Her hab ich es nun hinbekommen. Aber nicht über das Php-Skript, sondern direkt.

Meine finale Lösung in der Synology ist nun:

SMS-URL
https://api.telegram.org/bot371*******mCY/sendMessage?chat_id=598**2109&text=Hello+World&user=1&pass=1&phone=010

Dann die einzelnen Kategorien wie folgt festgelegt:

chat_id=598**2109     Sonstiges
text=Hello+World     Nachrichteninhalt
user=1     Benutzer
pass=1     Passwort
phone=010Telefonnummer

und Senden der Test-SMS funktioniert.

Falls irgendjemand mal hier noch was dazu sagen kann, weshalb der php-Aufruf nicht funktioniert, würde ich mich freuen. Denn das fuxt mich schon. Vielleicht liegt es ja an der DSM.

cu
gelbwichtel

RPi + CSM (21 Max HT, 4 WT, 2 FKT, MaxLan), RPi + COC (FS20 ST4, S8M, S4M, TFK, RPT,  SM8), AVR-Net-IO (Ethersex, 20  x 1w DS18B20)

Offline Tyllux

  • New Member
  • *
  • Beiträge: 16
Antw:Push-Mitteilungen via Telegram direkt von einer Synology Diskstation
« Antwort #8 am: 24 Februar 2017, 13:34:27 »
Mh,

klingt ein bissl als wäre die Datei entweder nicht an der richtigen Stelle oder hätte nicht die richtigen Berechtigungen ..

Wenn du die IP/URL deiner DiskStation direkt (unter Port 80) aufrufst - also der Ordner auf den "Web" i.d.R. verweist und dann /telegram.php anhängst - gibt es da ein Ergebnis? Zeigt sich überhaupt die Demo-Webseite (nicht die DSM-Verwaltung) bei direkten Aufruf der IP/URL?

In meinem Fall kommt das (korrekte) Echo:

Warning: file_get_contents(https://api.telegram.org/bot/sendmessage?chat_id=&text=): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /volume1/web/telegram.php on line 15

Teste auch mal den Aufruf der index.html - wenn das klappt  und die telegram.php sicher am richtigen Platz ist, sollte es mutmaßlich an den Berechtigungen liegen..

Offline gelbwichtel

  • Jr. Member
  • **
  • Beiträge: 72
Antw:Push-Mitteilungen via Telegram direkt von einer Synology Diskstation
« Antwort #9 am: 27 Februar 2017, 23:32:28 »
Vielen Dank Tyllux,
mit deinen Tips konnte ich jetzt auch dein Verfahren zum SMS-Versand einsetzen.
Frag mich nur nicht, was es jetzt im Endeffekt wirklich war. Irgendwas war scheinbar nicht aktiviert.
Rechteprobleme waren es jedenfalls nicht und die Dateien lagen auch an der richtigen Stelle.
Muss wohl am Server gelegen haben.
Jedenfalls haben wir jetzt mal 2 Aufrufmöglichkeiten für den SMS Versand.
Nachmal 1000 Dank. Wieder was dazugelernt.
cu
gelbwichtel

RPi + CSM (21 Max HT, 4 WT, 2 FKT, MaxLan), RPi + COC (FS20 ST4, S8M, S4M, TFK, RPT,  SM8), AVR-Net-IO (Ethersex, 20  x 1w DS18B20)