Seite 1 von 3

Push-Service mit Telegram-Messenger

Verfasst: Fr 6. Apr 2018, 00:49
von Sven
Hallo Zusammen,

ich habe heute mal eine ganz einfache Möglichkeit gefunden, den Push-Service von Robonect mit dem Messenger "Telegram" zu nutzen.
Telegram bietet einen kostenlosen Bot an mit dem man z.B. per PHP Nachrichten an ein Handy senden kann. Hier ist z.B. eine gute Anleitung dafür:

https://webdesign.weisshart.de/blog/201 ... artphones/

Wenn Ihr dann einen eigenen Telegram-API-Token und eine ChatID erstellt habt, könnt Ihr z.B. mit einem PHP-Skript über die cUrl-Funktion PUSH-Nachrichten von Robonect in "Echtzeit" aufs Handy bekommen.
Hier ein einfaches Beispiel:

Code: Alles auswählen

<?php

ob_start(); 
var_dump($_GET); 
$nachricht = ob_get_contents(); 
ob_end_clean(); 

$ch = curl_init("https://api.telegram.org/bot<TOKEN>/sendMessage?"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'chat_id=<ChatID>&text='.$nachricht);
curl_setopt($ch, CURLOPT_POST, 1); 
curl_exec($ch); 
curl_close($ch); 

?>
Wenn dieses PHP-Skript von Robonect über den Push-Service aufgerufen wird, bekommt Ihr die Rohdaten (das Array über GET) als Telegramnachricht geschickt. Das ist jetzt nur ein einfaches Beispiel. Jetzt müsste man nur noch die Daten die von Robonect per GET an das Skript gesendet werden aufarbeiten und daraus eine einfach lesbare Textnachricht machen. Auch ein Passwortschutz wäre zu empfehlen. Aber das ist doch schon mal ein Anfang....

Viele Grüße aus Schleswig-Holstein,
Sven

Re: Push-Service mit Telegram-Messenger

Verfasst: Fr 6. Apr 2018, 13:47
von Sven
Ich habe nun das PHP-Skript noch etwas verfeinert. Jetzt schickt mir "Robonect" lesbare Nachrichten:

Bild

Code: Alles auswählen

<?php

$nachricht="";

switch ($_GET['status']) {
    case "1":  $nachricht="Ich parke...\n\r"; break;
    case "2":  $nachricht="Ich mähe...\n\r"; break;
    case "3":  $nachricht="Ich suche die Ladestation...\n\r"; break;
    case "4":  $nachricht="Ich werde geladen... :-)\n\r"; break;
    case "5":  $nachricht="Ich fahre raus um in den manuellen Modus zu wechseln...\n\r"; break;
    case "7":  $nachricht="Hilfe!!! Ich habe ein Problem :-(\n\r"; break;
    case "8":  $nachricht="Ich finde kein Schleifensignal???\n\r"; break;
    case "16":  $nachricht="Ich wurde abgeschaltet!\n\r"; break;
    case "17":  $nachricht="Ich schlafen jetzt....\n\r"; break;
    }
    
    
    
    
if ($_GET['errmsg']!="") {
	                                 $datum = date ("d.m.y", $_GET['errtime']);
	                                 $uhrzeit = date ("H:i:s", $_GET['errtime']);
	                                 $nachricht = $nachricht."\n\rMein Problem: ".$_GET['errmsg']."\n\rEs trat am ".$datum." um ".$uhrzeit." auf.\n\r";
	                                 
	                             }
	                                 
	
	
switch ($_GET['mode']) {
    case "0":  $nachricht= $nachricht."\n\rIch befinde mich im Automatik-Modus.\n\r"; break;
    case "1":  $nachricht= $nachricht."\n\rIch befinde mich im manuellen Modus.\n\r"; break;
    case "2":  $nachricht= $nachricht."\n\rIch befinde mich im HOME-Modus.\n\r"; break;
                                                }
    
$nachricht= $nachricht."\n\rMein Ladezustand beträgt: ".$_GET['battery']."%\n\rIch empfange das WLAN mit: ".$_GET['signal']."db\n\r";

$nachricht = utf8_encode ( $nachricht );


$ch = curl_init("https://api.telegram.org/bot<TOKEN>/sendMessage?"); // cURL ínitialisieren
curl_setopt($ch, CURLOPT_HEADER, 0); // Header soll nicht in Ausgabe enthalten sein
curl_setopt($ch, CURLOPT_POSTFIELDS, 'chat_id=<ChatID>&text='.$nachricht);
curl_setopt($ch, CURLOPT_POST, 1); // POST-Request wird abgesetzt
curl_exec($ch); // Ausführen
curl_close($ch); // Objekt schließen und Ressourcen freigeben

?>


Re: Push-Service mit Telegram-Messenger

Verfasst: Fr 6. Apr 2018, 13:54
von Sven
....ich kann scheinbar den Beitrag nicht bearbeiten....
:oops: Ups... ich kann Beiträge doch bearbeiten...sorry :oops:


Ich habe noch ein kleinen Fehler entdeckt...
Damit Datum und Uhrzeit einer Fehlermeldung auch stimmt müssen noch 2 Stunden abgezogen werden:

Code: Alles auswählen


$datum = date ("d.m.y", $_GET['errtime']-7200);
$uhrzeit = date ("H:i:s", $_GET['errtime']-7200);


Re: Push-Service mit Telegram-Messenger

Verfasst: Di 10. Apr 2018, 20:34
von Jan
Hallo,

ich habe versucht den Push Service via Telegram zu installieren scheitere aber dadran das bei Weisshart Anleitung im Punkt 4

Das als Antwort bekomme
{
"ok": true,
"result": []
}

Wäre es möglich mir das zu helfen den Push Service ein zurichten?

Danke

Gruß

Jan
Sven hat geschrieben: Fr 6. Apr 2018, 00:49 Hallo Zusammen,

ich habe heute mal eine ganz einfache Möglichkeit gefunden, den Push-Service von Robonect mit dem Messenger "Telegram" zu nutzen.
Telegram bietet einen kostenlosen Bot an mit dem man z.B. per PHP Nachrichten an ein Handy senden kann. Hier ist z.B. eine gute Anleitung dafür:

https://webdesign.weisshart.de/blog/201 ... artphones/

Wenn Ihr dann einen eigenen Telegram-API-Token und eine ChatID erstellt habt, könnt Ihr z.B. mit einem PHP-Skript über die cUrl-Funktion PUSH-Nachrichten von Robonect in "Echtzeit" aufs Handy bekommen.
Hier ein einfaches Beispiel:

Code: Alles auswählen

<?php

ob_start(); 
var_dump($_GET); 
$nachricht = ob_get_contents(); 
ob_end_clean(); 

$ch = curl_init("https://api.telegram.org/bot<TOKEN>/sendMessage?"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'chat_id=<ChatID>&text='.$nachricht);
curl_setopt($ch, CURLOPT_POST, 1); 
curl_exec($ch); 
curl_close($ch); 

?>
Wenn dieses PHP-Skript von Robonect über den Push-Service aufgerufen wird, bekommt Ihr die Rohdaten (das Array über GET) als Telegramnachricht geschickt. Das ist jetzt nur ein einfaches Beispiel. Jetzt müsste man nur noch die Daten die von Robonect per GET an das Skript gesendet werden aufarbeiten und daraus eine einfach lesbare Textnachricht machen. Auch ein Passwortschutz wäre zu empfehlen. Aber das ist doch schon mal ein Anfang....

Viele Grüße aus Schleswig-Holstein,
Sven

Re: Push-Service mit Telegram-Messenger

Verfasst: Mi 11. Apr 2018, 07:30
von pirni
Schick gelöst.

Bei mir läuft der Telegram Service "inHouse" auf einem RaspberryPi. Ist mir so irgendwie lieber.

Re: Push-Service mit Telegram-Messenger

Verfasst: Mi 18. Apr 2018, 12:34
von reamind
Hi,

ich nutze den Push-Service mit Pushover.
Unabhängig davon bekomme ich immer nur die Nachricht: "Ich schlafe jetzt...", egal ob er anfängt zu mähen, zu laden usw.

Das Script habe ich von oben kopiert, nur den Push-Service von Telegram zu Pushover geändert

Code: Alles auswählen

<?php

$nachricht="";

switch ($_GET['status']) {
    case "1":  $nachricht="Ich parke...\n\r";
    case "2":  $nachricht="Ich mähe...\n\r";
    case "3":  $nachricht="Ich suche die Ladestation...\n\r";
    case "4":  $nachricht="Ich werde geladen... :-)\n\r";
    case "5":  $nachricht="Ich fahre raus um in den manuellen Modus zu wechseln...\n\r";
    case "7":  $nachricht="Hilfe!!! Ich habe ein Problem :-(\n\r";
    case "8":  $nachricht="Ich finde kein Schleifensignal???\n\r";
    case "16":  $nachricht="Ich wurde abgeschaltet!\n\r";
    case "17":  $nachricht="Ich schlafe jetzt....\n\r";
    }
    
if ($_GET['errmsg']!="") {
	                                 $datum = date ("d.m.y", $_GET['errtime']);
	                                 $uhrzeit = date ("H:i:s", $_GET['errtime']);
	                                 $nachricht = $nachricht."\n\rMein Problem: ".$_GET['errmsg']."\n\rEs trat am ".$datum." um ".$uhrzeit." auf.\n\r";
	                                 
	                             }
	                                 
	
	
switch ($_GET['mode']) {
    case "0":  $nachricht= $nachricht."\n\rIch befinde mich im Automatik-Modus.\n\r";
    case "1":  $nachricht= $nachricht."\n\rIch befinde mich im manuellen Modus.\n\r";
    case "2":  $nachricht= $nachricht."\n\rIch befinde mich im HOME-Modus.\n\r";
                                                }
    
$nachricht= $nachricht."\n\rMein Ladezustand beträgt: ".$_GET['battery']."%\n\rIch empfange das WLAN mit: ".$_GET['signal']."db\n\r";

$nachricht = utf8_encode ( $nachricht );

#Pushover#

?>

Hat jemand eine Idee woran es liegt?

Danke!

Re: Push-Service mit Telegram-Messenger

Verfasst: Mi 18. Apr 2018, 15:45
von pirni
Dann stimmt wohl was mit der $Status variable nicht.
Wenn Du manuell via webseite abfragst, stimmt dann der übermittelte Stastuscode?
Müsste igendwie so gehen:
http://MAEHER-IP/json?cmd=status

Also z.b. "2" für mähen.

Da würe ich erstmal ansetzen

Re: Push-Service mit Telegram-Messenger

Verfasst: Mi 18. Apr 2018, 17:34
von reamind
Der Status sieht eigentlich soweit OK aus und ändert sich auch

<?xml version="1.0" encoding="UTF-8"?>

-<robonect>

<name>Mein Automower</name>

<id>0731F1</id>


-<Status>

<Status>1</Status>

<stopped>false</stopped>

<duration>7</duration>

<mode>0</mode>

<battery>100</battery>

<hours>217</hours>

</Status>


-<Timer>

<Status>2</Status>


-<next>

<date>2018-04-19</date>

<time>08:00:00</time>

<unix>1524124800</unix>

</next>

</Timer>


-<wlan>

<signal>-86</signal>

</wlan>


-<Health>

<temperature>30</temperature>

<humidity>39</humidity>

</Health>


-<clock>

<date>2018-04-18</date>

<time>17:22:28</time>

<unix>1524072148</unix>

</clock>

<successful>true</successful>

</robonect>

Re: Push-Service mit Telegram-Messenger

Verfasst: Do 19. Apr 2018, 11:14
von pirni
Ok dann stimmt halt irgendwas im Script nicht.

Lass dir mal gezielt die Variable $_GET['status'] ausgeben . Da muss dann halt ne Zahl drin stehen.
Diese soll ja mit dem entsprechenden Text, was es bedeutet, ausgetauscht werden.
Wenn das echoen der Zahl tut, stimmt was mit dem Switch Array nicht.

Vielleicht kann der Erbauer des Files mehr dazu sagen ;)

Re: Push-Service mit Telegram-Messenger

Verfasst: Do 19. Apr 2018, 17:59
von BoyHitsCar
Hmm wo muss ich denn das php hinlegen? Direkt auf robonect oder brauch ich nen webserver.
Telegram per api nutz ich auf der homematic, funzt super