Über Telegram Messenger Raspberry Pi steuern

In diesem Tutorial wird das automatische Ausführen von Skripten auf Textbefehle via Telegram gezeigt, nachdem im vorherigen Tutorial die Installation auf dem Raspberry behandelt wurde. Dadurch kannst du bspw. den Status deines Pi’s von unterwegs mühelos abfragen oder Aktionen von der Ferne einfach über deinen Messenger ausführen.

Vorbereitung

Zunächst erstelle ich ein Skript, das meine Aktionen ausführt, bspw. möchte ich mein Pi herunterfahren, neustarten und die Uptime ausgeben können. Ich bevorzuge Python, aber natürlich ist jedes andere Skript auch möglich (z.B. bash).
Ich nenne mein Skript tg_actions.py.

sudo nano /home/pi/tg/tg_actions.py

Damit verschiedene Aktionen mit einem Skript ausführbar sein sollen, benutze ich Kommandozeilenargumente, sodass z.B. sudo python /home/pi/tg/tg_actions.py argument erkannt wird.

Die Liste ist beliebig erweiterbar, bspw. könnten auch die GPIO Pins ausgelesen werden

Telegram einrichten

Damit Telegram automatisch auf verschiedene Interaktionen (Empfangen von Texten/Bildern/etc.) reagieren kann, kann man ein Lua-Skript erstellen. Ein Beispielskript ist im Telegram Verzeichnis unter test.lua vorhanden. Ich werde diese Datei bearbeiten, da sie bereits vorgefertigte Funktionen zum Empfangen etc. hat.

sudo nano /home/pi/tg/test.lua

Da ich vorerst nur auf Textnachrichten reagieren möchte ist die Funktion on_msg_receive (msg) zu bearbeiten:

In den Zeilen 15, 22, 30, 36 und 39 rufe ich ein weiteres Skript auf. Dies ist nicht unbedingt notwendig; den alternativen Befehl habe ich in Zeile 14 geschrieben. Wer dennoch eine Antwort über ein Zusatzskript senden möchte, kann sich ein solches erstellen:

sudo nano ~/tg/send_script

Der Inhalt ist:

Damit beide Skripte entsprechende Rechte haben, vergeben wir diese:

sudo chmod +x ~/tg/send_script
sudo chmod +x ~/tg/tg_actions.py

Sollte dieses Skript bei jemandem nicht funktionieren, hat tazzie eine Alternative vorgestellt.

Achtung: Wichtig ist, dass die Nummer(n) der Sender mittels add_contact eingespeichert wurden, sonst kann keine automatische Antwort erfolgen.

Einige User berichten, dass es das lua Skript folgenden Fehler wirft: lua: /usr/share/lua/5.2/lgi/namespace.lua:149: Typelib file for namespace 'Notify' (any version) not found
Sollte das der Fall sein, muss der innere Teil von

-- Notification code {{{
...
-- }}}

aus der test.lua gelöscht werden.

 

Telegram starten

Das erstellte Skript muss nun mit dem Messenger gestartet werden, sodass es auf Nachrichten reagieren kann. Damit es im Hintergrund läuft kannst du es so starten:

screen -dmS TelegramCLI ~/tg/bin/telegram-cli -s ~/tg/test.lua -k ~/tg/tg-server.pub

Sollte ein Fehler erscheinen, musst du noch screen installieren, falls noch nicht getan:

sudo apt-get install screen

Hier mal ein Verlauf mit meinem Raspberry Pi.

 

Um es automatisch starten zu lassen, folge diesem Tutorial oder benutze Crontab:

crontab -e

An das Ende der Datei schreibst du folgende Zeile:

@reboot sleep 60 && screen -dmS TelegramCLI /home/pi/tg/bin/telegram-cli -s /home/pi/tg/test.lua -k /home/pi/tg/tg-server.pub

 

Für die, die alles im Lua Skript machen wollen, gibt es eine schöne Lua GPIO Erweiterung.

340 Kommentare

  1. Hallo !!!

    Hat sich seit der letzten Version was geändert ?
    Das bash-script funktioniert bei mir leider nicht.

    Git es eine Möglichkeit per Python eine Nachricht zu senden ?

    Antworten
    • Hi,
      hast du schon mit einer älteren Version versucht (auf Github manuell downloadbar)?
      Wenn das Bash Skript funktioniert, ist es möglich in Python dieses einzubinden und so auch über Python Nachrichten zu senden.

      Antworten
      • Hallo …. gerade mal geschaut aber leider keine alte Version gefunden. Vielleicht muß ich doch warten bis das Parameter -e implementiert wird oder irgendwo eine für die aktuelle Version funktionierende Möglichkeit auftaucht (vielleicht funktioniert es aber auch nur bei mir wieder nicht 🙁 ….)
        Aber danke erstmal