• Erste Schritte
  • Hardware & GPIO
  • Projekte
  • Software
    • Webserver
  • Arduino & ESP8266
  • Hausautomatisierung
  • Sonstiges
    • News
Facebook Twitter YouTube
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
  • Einstieg
    • Erste Schritte
      • Raspberry Pi 3 Einstieg - Starter KitWas brauche und wie starte ich? – Raspberry Pi Einstieg
    • Einrichtung
      • microsd_karte_menuRaspbian Betriebssystem auf eine SD Karte flashen – Einfach & Schnell
      • wlanbluetooth_menuWLAN und Bluetooth einrichten – Raspberry Pi 4
      • wifi_menuWLAN Stick installieren und einrichten – Alternative
      • bash_menuSSH Zugriff einrichten via Putty – Kommandozeilen Zugriff
      • rdp_menuRemotedesktop Verbindung aufbauen – Fernsteuerung
    • Einsteiger Projekte
      • Sinnvolles Raspberry Pi Zubehör
      • 15 Raspberry Pi Projekte für Anfänger
      • Ampelschaltung mit GPIOs
      • GPIOs mit Port Expander erweitern
      • Elektronischer Würfel
      • 13 tolle Projekte für Kinder und Jugendliche
      • Roboter selber bauen
      • In Visual Studio Code mit C++ programmieren
      • Wünsch dir ein Tutorial
    • Programmieren lernen
      • Teil 1: Einführung
      • Teil 2: GPIOs steuern
      • Teil 3: GUI erstellen
      • Teil 4: PWM
      • C# GUI Apps entwickeln
  • Hardware & GPIO
    • 50 der wichtigsten Raspberry Pi Sensoren und Module – Aufgelistet mit Links zu den TutorialsRaspberry Pi Sensoren
    • Beliebte Tutorials
      • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorLuftfeuchtigkeit und Temperatur messen
      • Raspberry Pi WS2801B RGB LED Streifen anschließen und steuernWS2801 RGB LED Streifen anschließen und steuern
      • Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433Mhz)Funksteckdosen (433MHz) steuern
      • Raspberry Pi Relais ModulRaspberry Pi: Relais-Schalter per GPIO steuern
      • Raspberry Pi Servo MotorRaspberry Pi Servo Motor Steuerung
      • Amazon-Alexa-deutsch-auf-dem-Raspberry-Pi-installierenAmazon Alexa (Deutsch) auf dem installieren
      • Entfernung messen mit Ultraschallsensor HC-SR04 – Raspberry PiEntfernung messen mit Ultraschallsensor HC-SR04
      • 71-M-PU7vML.-S3L1500-Raspberry Pi’s über 433 MHz Funk kommunizieren
      • Raspberry Pi PIR Motion SensorBewegungsmelder PIR anschließen und steuern
      • Raspberry Pi USB Boot per Stick oder SSD Festplatte einrichtenUSB Boot per Stick oder SSD Festplatte
      • Analog
        • Raspberry Pi MCP3008 ADCMCP3008: Am Raspberry Pi analoge Signale auslesen
        • Raspberry Pi Gas Sensor MQ-2Raspberry Pi Gas Sensor (MQ-X) konfigurieren und auslesen
        • Raspberry Pi PulsmesserRaspberry Pi Pulsmesser: Herzfrequenz messen
        • Joystick am Raspberry Pi benutzen (mit MCP3008)Joystick am Raspberry Pi benutzen (mit MCP3008)
        • infrarot sharp distance senserInfrarot Abstandsmessung mit dem Raspberry Pi
        • Raspberry Pi Drehregler - Rotary EncoderKY040 Drehregler als Lautstärkeregler für den Raspberry Pi
        • Easpberry Pi Soil SensorBodenfeuchtigkeit mit dem Raspberry Pi messen
        • Raspberry Pi KeypadRaspberry Pi Keypad anschließen – Codeschloss
        • Raspberry Pi door sensorÜberwachung von Fenstern und Türen mit dem Raspberry Pi und Reed-Relais
        • Raspberry Pi Fotowiderstand HelligkeitssensorFotowiderstand (Helligkeitssensor) am Raspberry Pi
        • Raspberry Pi Waage selber bauen (mit Gewichtssensor HX711)Raspberry Pi Waage selber bauen (mit Gewichtssensor HX711)
      • Funk
        • 71-M-PU7vML.-S3L1500-Raspberry Pi’s über 433 MHz Funk kommunizieren lassen
        • Remote Control Raspberry Pi 433Mhz Radio TransmitterRaspberry Pi mit 433Mhz Funksender fernsteuern
        • Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433MHz) steuern
        • Raspberry Pi MiFlora - Xiaomi Pflanzensensor in OpenHAB einbindenMiFlora – Xiaomi Pflanzensensor ins Smart Home einbinden
        • Raspberry Pi RFID RC522 TüröffnerRaspberry Pi RFID RC522 Tags auslesen (NFC)
        • Funkkommunikation zwischen Raspberry Pi's und Arduinos (2.4 GHz)Funkkommunikation (2.4 GHz): Arduino & Raspberry Pi
        • Raspberry Pi Radio ReceiverRaspberry Pi als Radioempfänger benutzen
        • Raspberry Pi Xbox 360 Wireless ControllerRaspberry Pi mittels Xbox 360 Controller steuern
        • Raspberry Pi GSM Modul - Huawei Internet SticksRaspberry Pi GSM Modul – Mobiles Internet
        • Raspberry Pi Bluetooth DatentransferRaspberry Pi Bluetooth Datentransfer zum Smartphone
      • Infrarot & Laser
        • Raspberry Pi Infrarot FernbedienungRaspberry Pi: Per IR Remote Befehle ausführen
        • infrarot sharp distance senserInfrarot Abstandsmessung mit dem Raspberry Pi
        • Raspberry Pi Laser Lichtschranke für weite DistanzenRaspberry Pi Laser Lichtschranke für weite Distanzen
        • Infrarot Raspberry Pi FernbedienungInfrarot Steuerung einrichten
        • Raspberry Pi Infrarot Lichtschranke bauen und Geschwindigkeit messenRaspberry Pi Infrarot Lichtschranke bauen
        • Raspberry Pi Fotowiderstand HelligkeitssensorFotowiderstand (Helligkeitssensor) am Raspberry Pi
      • Temperatur & Navigation
        • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorRaspberry Pi: Luftfeuchtigkeit und Temperatur messen
        • Measuring Temperature with a Raspberry Pi Temperature Sensor (1-Wire)Raspberry Pi Temperatursensor (1-Wire): Temperatur messen
        • Raspberry Pi BMP180 SensorRaspberry Pi und I2C Luftdrucksensor BMP180
        • Raspberry Pi RTC Real Time ClockReal Time Clock Modul steuern
        • Rotation und Beschleunigung mit dem Raspberry Pi messenRotation und Beschleunigung mit dem Raspberry Pi messen
        • Raspberry Pi GPS ModulRaspberry Pi GPS Ortungs- / Navigationsgerät bauen
        • Raspberry Pi Kompass selber bauenRaspberry Pi Kompass selber bauen (HMC5883L)
        • Kontaktlosen Infrarot-Temperatursensor MLX90614 am Raspberry Pi auslesenMLX90614 – Kontaktlos Temperaturen messen
      • Displays
        • Raspberrry Pi HD44780 I2CHD44780 LCD Display per I2C ansteuern
        • Raspbery Pi LCD DisplayRaspberry Pi LCD Display: 16×2 Zeichen anzeigen
        • DisplayTipps & Tricks zum offiziellen 7″ Raspberry Pi Touchscreen
        • Raspberry Pi TouchscreenTestbericht zum 7″ Raspberry Pi Touchscreen Display
        • LCD Touch Display (3.2″) am Raspberry PiLCD Touch Display (3.2″) am Raspberry Pi
        • tft lcd touch displayRaspberry Pi LCD Touch Display Teil 2 – Anpassungen
        • Raspberry Pi LED MAX7219 Dot Matrix – ProjektübersichtRaspberry Pi LED Matrix – Projektübersicht
        • Raspberry Pi 7 Segment Anzeige Kathode mit MAX7219Raspberry Pi: 7 Segment Anzeigen mit MAX7219 steuern (Kathode)
        • 7 Segment Anzeige (Anode) mit MAX7219 MAX7221 und Raspberry Pi7 Segment Anzeige mit MAX7219 am Raspberry Pi (Anode)
        • Raspberry Pi Tablet Raspad TestberichtRaspberry Pi Tablet „Sunfounder RasPad“ Testbericht
      • Motoren & Sonstige
        • Raspberry Pi Stepper Motor Control with L293D / ULN2003ARaspberry Pi Schrittmotor ansteuern
        • Raspberry Pi Servo MotorRaspberry Pi Servo Motor Steuerung
        • Raspberry Pi PCA9685 mehrere Servos gleichzeitig steuernMehrere Servo Motoren per Raspberry Pi steuern
        • Raspberry Pi PIR Motion SensorBewegungsmelder PIR anschließen und steuern
        • How to use a Raspberry Pi Fingerprint Sensor for AuthenticationRaspberry Pi Fingerprint Sensor zur Authentifizierung nutzen
        • Raspberry Pi Akku AdapterRaspberry Pi mit Akkus/Batterien betreiben
        • Entfernung messen mit Ultraschallsensor HC-SR04 – Raspberry PiEntfernung messen mit Ultraschallsensor HC-SR04
        • Raspberry Pi WS2801B RGB LED Streifen anschließen und steuernWS2801 RGB LED Streifen anschließen und steuern
        • Raspberry Pi WS2812 RGB LED StripWS2812 RGB LED Streifen per Raspberry Pi steuern
        • Raspberry Pi Überwachungskamera LivestreamÜberwachungskamera Livestream einrichten
        • NoIRAufnahmen mit dem offiziellen Kamera Modul
        • Raspberry Pi Zero - establishing an Ethernet connection (ENC28J60)Raspberry Pi Zero – Ethernet Verbindung
  • Software
    • Webserver Installation
      • apache2_menu25Teil 1 – Apache2
      • php_menu25Teil 2 – PHP 5
      • mysql_menu25Teil 3 – MySQL
      • phpmyadmin_menu25Teil 4 – phpMyAdmin
      • ftp_menu25Teil 5 – FTP Server
      • dns_menu25Teil 6 – DNS Server via No-IP
      • home_menu25Homeverzeichnis ändern
      • share_25Samba Server: Dateien im Netzwerk teilen
      • nodejs_menu25Node.js Webserver installieren und GPIOs schalten
      • ssl_menu25SSL Zertifikat kostenlos mit Let’s Encrypt
      • wordpress_25Eigenen WordPress-Server einrichten
      • cloud-25Nextcloud auf dem Raspberry Pi installieren
    • Entertainment
      • led_menu25Raspberry Pi Ambilight für alle Geräte mit OSMC selber bauen
      • amazon_menu25Amazon Alexa (Deutsch) auf dem Raspberry Pi installieren
      • controller_25Raspberry Pi RetroPie – Spielekonsole selber bauen
      • kodi_menu25Mediencenter Raspbmc als SmartTV mit dem Raspberry Pi
      • android_25Android TV Box zum selber bauen
      • apple-2316234_640Raspberry Pi als AirPlay-Empfänger
      • jukebox_menu25Raspberry Pi als Jukebox (Spotify, Soundcloud, TuneIn, uvm.)
      • steam_25Steam Spiele streamen
      • minecraft_menu25Raspberry Pi Minecraft Server
      • youtube_25YouTube Live Streaming einrichten
      • qr-code-tutorials-raspberrypi.de_25Raspberry Pi QR / Barcode Scanner
    • Fernsteuerung
      • rdp_menuRaspberry Pi Remotedesktop Verbindung
      • ssh_menu25SSH Zugriff einrichten via Putty (Windows)
      • vnc_menu25Raspberry Pi mittels VNC fernsteuern
      • welcome_menu25SSH Terminal Begrüßung ändern
      • telegram1_menu25Telegram Messenger auf dem RaspberryPi
      • telegram2_menu25Mit Telegram Messenger Raspberry Pi steuern
      • bluet_menu25Raspberry Pi Bluetooth Datentransfer zum Smartphone
      • alexa_voice_25Eigenen Raspberry Pi Alexa Skill bauen
      • microphone_25Sprachsteuerung selber bauen
      • mqtt_25MQTT Broker/Client Funkkommunikation
      • mail_25Vom Raspberry Pi Emails senden
      • twitter_25Per Twitter Bot Nachrichten posten
    • Weitere
      • loggen_menu25Sensordaten mit ThingSpeak loggen und auswerten
      • mysql_datalogger25Per lokaler MySQL Datenbank zum Raspberry Pi Datenlogger
      • opencv_menu25OpenCV auf dem Raspberry Pi installieren
      • arduino_menu30tWiringPi installieren & Pinbelegung (Raspberry Pi)
      • radio_menu25Raspberry Pi als Radio Sendestation
      • win10_menu25Windows 10 IoT auf dem Raspberry Pi installieren
      • printer_25Drucker einrichten und per Knopfdruck Bilder drucken
      • gsm_menu25Raspberry Pi GSM Modul – Mobiles Internet (LTE, 3G, UMTS)
      • autostart_menu25Autostart: Programm automatisch starten lassen
      • machine-learning-25Raspberry Pi Machine Learning erlernen
  • Projekte
      • roboter_menu30tRoboter
        • Raspberry Pi Roboter ProjektRaspberry Pi Roboter Projektübersicht
        • Raspberry Pi Roboter Bausatz fertigTeil 1: Zusammenbau
        • Raspberry Pi Roboter - Linien folgenTeil 2: Linien folgen lassen
        • Raspberry Pi Roboter per Infrarot Fernbedienung steuernTeil 3: Per Infrarot Fernbedienung steuern
        • Raspberry Pi Roboter: Ultraschall AutopilotTeil 4: Automatisch Hindernissen ausweichen
        • Raspberry Pi Roboter der eigenen Stimme folgen lassenTeil 5: Der eigenen Stimme folgen lassen
        • Raspberry Pi Roboter mit Xbox 360 Controller fernsteuernTeil 6: Mit Xbox 360 Controller Roboter fernsteuern
        • Raspberry Pi Robot Arm 6DOF6-Gelenkigen Roboter Arm am Raspberry Pi betreiben (6 DOF)
      • led_menu30LED Matrix
        • Raspberry Pi LED MAX7219 Dot Matrix – ProjektübersichtMAX7219 LED Matrix – Projektübersicht
        • 8×8 LED Dot Matrix Parts8×8 LED Matrix – Zusammenbau und Installation
        • Raspberry Pi Bibliothek für mehrzeilige m x n MAX7219 LED MatrizenBibliothek für mehrzeilige m x n MAX7219 LED Matrizen
        • Graphiken auf mehrzeiligen Raspberry Pi LED Matrizen zeichnenGraphiken auf mehrzeiligen Raspberry Pi LED Matrizen zeichnen
        • Pong auf MAX7219 Matrizen spielen (mit Joystick) – Raspberry PiPong auf MAX7219 Matrizen spielen (mit Joystick)
        • Snake auf Raspberry Pi MAX7219 Matrizen spielenSnake auf Raspberry Pi MAX7219 Matrizen spielen
        • 7 Segment Anzeige (Anode) mit MAX7219 MAX7221 und Raspberry Pi7 Segment Anzeige (Anode) mit MAX7219/MAX7221
        • Raspberry Pi 7 Segment Anzeige Kathode mit MAX7219Raspberry Pi: 7 Segment Anzeigen mit MAX7219 steuern (Kathode)
      • wetterstation_menu30Wetterstation
        • Raspberry Pi Wetterstation mit OpenHAB 2 bauenEigene Raspberry Pi Wetterstation mit OpenHAB 2 bauen
        • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorLuftfeuchtigkeit und Temperatur messen
        • raspberry_pi_thingspeak_daten_loggenSensordaten mit ThingSpeak loggen und auswerten
        • Raspberry Pi BMP180 SensorRaspberry Pi und I2C Luftdrucksensor BMP180
        • Measuring Temperature with a Raspberry Pi Temperature Sensor (1-Wire)Raspberry Pi Temperatursensor (1-Wire): Temperatur messen
        • ESP8266 NodeMCU Außenposten-Wetterstation für den Raspberry PiESP8266 Wetterstation Außenposten für den Raspberry Pi
        • Raspberry Pi Gas Sensor MQ-2Raspberry Pi Gas Sensor (MQ-X) konfigurieren und auslesen
      • arduino_menu30tArduino & ESP8266
        • ESP8266 Microcontroller BoardEinführung & Programmierung des ESP8266 NodeMCU Boards
        • Raspberry Pi + ESP8266 NodeMCU: Per WLAN Daten sendenRaspberry Pi + ESP8266 NodeMCU: Per WLAN Daten senden
        • ESP8266 NodeMCU Außenposten-Wetterstation für den Raspberry PiESP8266 Wetterstation Außenposten für den Raspberry Pi
        • Mit dem NodeMCU ESP8266 433MHz Funksteckdosen steuernMit dem NodeMCU ESP8266 433MHz Funksteckdosen steuern
        • ESP8266 NodeMCU HD44780 LCD Display per I2C steuernNodeMCU ESP8266: HD44780 LCD Display per I2C steuern
        • ESP8266 Grafikdisplay: Am SSD1306 OLED per I2C Bilder & Text anzeigen
        • ESP8266 Google Maps API RoutenplanerESP8266 Google Maps API Routenplaner auf LCD anzeigen
        • 2000px-Arduino_Logo.svgRaspberry Pi und Arduino – Einführung
        • arduino unoArduino und Raspberry Pi miteinander kommunizieren lassen
        • Funkkommunikation zwischen Raspberry Pi's und Arduinos (2.4 GHz)Funkkommunikation zwischen Raspberry Pi’s und Arduinos (2.4 GHz)
        • NodeMCU: ESP8266 mit Solarpanel und Akku mit Strom versorgenNodeMCU: ESP8266 mit Solarzelle und Akku mit Strom versorgen
        • ESP8266 Access Point: Günstigen Wlan Repeater selber bauenESP8266 Access Point: Günstigen Wlan Repeater selber bauen
      • Mini Projekte
        • Raspberry Pi Gewächshaus automatisch selber bauenAutomatisches Raspberry Pi Gewächshaus selber bauen
        • Eigene Raspberry Pi Gartenbewässerung mit Webseite bauenEigene Gartenbewässerung mit Webseite bauen
        • Raspberry Pi Radio StationRaspberry Pi als Radio Sendestation verwenden
        • Raspberry Pi Radio ReceiverRaspberry Pi als Radioempfänger benutzen (Autoradio, Car PC)
        • spotify-logo-primary-horizontal-dark-background-rgbRaspberry Pi als Jukebox (Spotify, Soundcloud, TuneIn, uvm.) – Online Radio
        • Raspberry Pi RetroPie Guide - SNES Classic Spielekonsole selber bauenRaspberry Pi RetroPie Guide – SNES Spielekonsole bauen
        • Android + Raspberry Pi: Funksteckdosen App BedienungRaspberry Pi + Android/iOS: Funksteckdosen per App schalten
        • Indirekte Deckenbeleuchtung selber bauen mit farbigem LED LichtIndirekte Deckenbeleuchtung selber bauen mit farbigem LED Licht
  • Sonstiges
    • Wünsch dir ein Tutorial
    • News
    • Reviews
      • Pi Cap – Kapazitives Raspberry Pi Erweiterungsboard
      • Raspberry Pi Tablet „Sunfounder RasPad“ – Testbericht & Einrichtung
      • Testbericht zum 7″ Raspberry Pi Touchscreen Display
      • CrowPi 2 Testbericht: Laptop & Lern-Kit für Kinder
      • Daten auf dem Wio Terminal LCD Screen anzeigen
    • Raspberry Pi Zero
      • Offizielles 5$ Raspberry Pi Zero Modul vorgestellt
      • Raspberry Pi Zero – Ethernet Verbindung herstellen (ENC28J60)
      • Raspberry Pi: WS2801 RGB LED Streifen anschließen und steuern
  • Hausautomation
    • OpenHAB
      • steckdose_25Sonoff S20 Wifi Steckdose steuern
      • wireless_25Funksteckdosen (433 MHz) schalten
      • schalter_25Relais steuern (Rollladen, Lichter, etc.)
      • wetterstation_menu30Wetterstation mit OpenHAB 2 bauen
      • ws28_25WS28xx RGB LED Streifen steuern
      • touchscreen_25Touchscreen Panel bei Näherung aktivieren
      • mqtt_25MQTT Datenabfrage: Raspberry Pi an ESP8266
      • spotify_25Remote Spotify Player im Smart Home
      • heizung_25eQ-3 Thermostat im Smart Home
    • Einführung
      • Raspberry Pi Smart Home OpenHAB installierenOpenHAB installieren & konfigurieren
      • Home Assistant auf dem Raspberry Pi – Erste Schritte
    • ESP8266 NodeMCU
      • esp8266_25Einführung & Programmierung
      • arduino_25ESP8266: Arduino IDE installieren
      • lcd_25NodeMCU HD44780 LCD
      • battery_25Batteriebetrieb via Deep-Sleep
      • wifi_menuPer WLAN Daten senden
      • wetterstation_menu30Wetterstation Außenposten
      • maps_25Google Maps Routenplaner
      • wireless_25NodeMCU Funksteckdosen steuern
      • mail_25Vom NodeMCU Emails versenden
      • rgb_25WS2812B LEDs am Smartphone steuern
      • solar_25ESP8266 Stromversorgung mit Solarzelle
    • Überwachung
      • Aufnahmen mit dem offiziellen Kamera Modul des Raspberry Pi
      • Raspberry Pi: Überwachungskamera Livestream einrichten
      • mailbox_25Briefkasten Sensor – Email Benachrichtigung bei neuer Post
      • Raspberry Pi Überwachungskamera mit Webcam betreiben
      • Überwachung von Fenstern und Türen mit dem Raspberry Pi und Reed-Relais
      • ESP32 Cam Livestream Tutorial für Kamera Modul
    • Raspberry Pi + Android: Benachrichtigungen von Bewegungsmelder
    • Raspberry Pi + Android/iOS: Funksteckdosen per App schalten
    • Raspberry Pi + Android: Schwenkbarer Kamera-Livestream
      • Smart Home
        • Amazon Alexa (Deutsch) auf dem Raspberry Pi installieren
        • Raspberry Pi Funksteckdosen (433MHz) steuern – Tutorial
        • Raspberry Pi Sprachsteuerung selber bauen (Hausautomatisierung)
  • Englisch
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
Home»Projekte»Über Telegram Messenger Raspberry Pi steuern

Über Telegram Messenger Raspberry Pi steuern

Facebook Twitter LinkedIn Tumblr Email Reddit
Raspberry Pi Telegram Messenger
Teilen
Facebook Twitter LinkedIn Email Tumblr Reddit Telegram WhatsApp

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.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/python
 
import sys
import os
from datetime import timedelta
 
if sys.argv[1] == "shutdown":
    print "Das System wird heruntergefahren"
    os.system("shutdown now")
elif sys.argv[1] == "reboot":
    print "Das System wird neugestartet"
    os.system("shutdown -r now")
elif sys.argv[1] == "uptime":
    with open('/proc/uptime', 'r') as f:
        uptime_seconds = float(f.readline().split()[0])
        uptime_string = str(timedelta(seconds = uptime_seconds))
        print(uptime_string[:-7])
#else:
#falls kein Argument zutrifft

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:

Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
function on_msg_receive (msg)
    if started == 0 then
        return
    end
    if msg.out then
        return
    end
 
    --Damit der "Gelesen Haken" erscheint
    if msg.text then
        mark_read (msg.from.print_name, ok_cb, false)
    end
 
    --Ggf. nur eine Rufnummer zulassen:
    if msg.from.print_name ~= 'Kontakt_Name' then
        os.execute("/home/pi/tg/send_script " .. msg.from.print_name .. " 'Ungueltige Nr.'")
        return
    end
    if (string.lower(msg.text) == 'uptime') then
        local handle = io.popen("sudo python /home/pi/tg/tg_actions.py uptime")
        local res = handle:read("*a")
        handle:close()
        os.execute("/home/pi/tg/send_script ".. msg.from.print_name .." '"..res.."' ")
        --Alternativ:
        --send_msg (msg.from.print_name, res)
        return
    elseif (string.lower(msg.text) == 'shutdown') then
        local handle = io.popen("sudo python /home/pi/tg/tg_actions.py shutdown")
        local res = handle:read("*a")
        os.execute("/home/pi/tg/send_script "..msg.from.print_name.." '"..res.."' ")
        handle:close()
        return
    elseif (string.lower(msg.text) == 'reboot') then
        local handle = io.popen("sudo python /home/pi/tg/tg_actions.py reboot")
        local res = handle:read("*a")
        handle:close()
        os.execute("/home/pi/tg/send_script ".. msg.from.print_name .." '"..res.."' ")
        return
    else
        os.execute("/home/pi/tg/send_script ".. msg.from.print_name .." 'Fehler' ")
    end
 
end

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:

Shell
1
2
#!/bin/bash
/home/pi/tg/bin/telegram-cli -k /home/pi/tg/tg-server.pub -W -e "msg $1 $2"

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.

.lua messenger python skript sms ersatz steuern telegram whatsapp
Teilen Facebook Twitter Pinterest LinkedIn Tumblr Email
Vorheriger BeitragRaspberry Pi Fernbedienung: Infrarot Steuerung einrichten
Nächster Beitrag 8×8 LED Dot Matrix – Zusammenbau und Installation (Raspberry Pi)

Ähnliche Beiträge

Smart Home: Notifications per Telegram Bot verschicken (Home Assistant)

Mit der Raspberry Pi REST API via Python alle GPIOs steuern

Supercomputer: Wir bauen ein Raspberry Pi Kubernetes Cluster

Raspberry Pi: Java 11 mit Spring Boot installieren und GPIOs steuern

340 Kommentare

  1. tazzie am 18. September 2014 14:29

    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
    • Admin am 18. September 2014 15:11

      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
      • tazzie am 18. September 2014 18:44

        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

      • Admin am 18. September 2014 19:57

        Hallo,
        hast du das vorherige Tutorial durchlaufen? Hat dort alles geklappt?
        Was für eine Fehlermeldung bekommst du denn, wenn du das Skript startest?

      • tazzie am 19. September 2014 9:24

        Hallo !
        Das telegram-cli ansich funktioniert, d.h. ich kann manuell Nachrichten versenden.
        Nun muss ich aber gleich noch bemerken, dass ich Liniux-Laie bin.
        Meine Verfahrensweise:

        #!/bin/bash
        /home/pi/tg/bin/telegram-cli -k /home/pi/tg/tg-server.pub <[warn] Epoll ADD(1) on fd 0 failed. Old events were 0; read change was 1 (add); write change was 0 (none): Operation not permitted
        >

        und das war´s dann.

        Gruß tazzie

      • Admin am 19. September 2014 13:20

        Hallo,
        sind die Pfade richtig? Bzw. hast du in der Zwischenzeit deine Nummer geändert oder sonstige Einstellungen verändert? TG speichert das alles in einem versteckten Ordner, was zu Komplikationen führen kann.

        Versuch mal in Zeile 3 anstatt deines Codes, diesen:
        msg $1 $2
        Und starte anschließend mit sudo bash new1.sh

    • Tom am 9. April 2017 12:19

      „Hast du auch alles schön eingerückt?“
      bei mir ging das aktion script auch nicht
      alles per tab richtig eingerückt und schon geht es

      Antworten
  2. tazzie am 20. September 2014 0:15

    Hallo !!

    Nein, eigentlich habe ich nichts geändert.
    Die Ordner stimmen auch, ich kann ja beim direkten starten von ./telegram-cli auch Nachrichten versenden.
    Ich habe jetzt nochmal versucht wie du empfohlen hast, das Script wieder in msg $1 $2 geändert.
    Ich denke mal jetzt habe ich auch so ziemlich jede Kombination durch.
    Könnte es vielleicht doch an dem STDIN liegen ? Irgendwo im Netzt hatte ich auch schonmal eine Variante mit EOF gesehen. Habe es getestet, aber geht leider auch nicht.
    Hast du denn die aktuelle Version von Telegram (V1.0.3) ?
    Gruß tazzie

    Antworten
    • Admin am 20. September 2014 0:36

      Ich habe das Tutorial für Version 1.0 geschrieben, aber es sollte auch für die aktuelle funktionieren.
      Funktioniert bei dir das .lua Skript? Dort habe ich eine alternative Methode angegeben ( send_msg (msg.from.print_name, res) ).
      Ansonsten könntest du, wenn du über ./telegram-cli direkt versenden kannst, die Eingabe natürlich auch über ein Python Skript weiter geben.

      Die Pfade und Dateinamen stimmen aber alle?

      Antworten
      • tazzie am 20. September 2014 22:31

        Hallo !

        mh..da stehe ich jetzt etwas „auf dem Schlauch“ ?!

        Ich habe mich jetzt auf GitHub Seite nochmal umgesehen unter den Issues….dort habe ich eine Möglichkeit gefunden.

        Version:

        eine Bash-Datei erstellt mit (telegramsenden.sh):

        #!/bin/bash
        (echo "msg user#12345678 $1"; echo "quit") | /home/pi/tg/bin/telegram-cli -k /home/pi/tg/tg-server.pub -W

        (die Nummer nach „user#“ muss natürlich stimmen ! aus user_info + Kontaktname !)

        eine Python-Datei erstellt mit (testpython.py):

        #!usr/bin/env
        import os
        os.system("bash /home/pi/telegramsenden.sh Test")

        Aufruf zum testen im Raspberry:

        python testpython.py

        dann geht die Nachricht auch raus.

        Vielleicht ein „unsauberer“ Weg, aber wenn es klappt 😉

        Eventuell hilft es ja anderen weiter.

        Vielen Dank nochmals.

        Weitere Vorschläge natürlich Willkommen !!!!

      • Admin am 20. September 2014 23:58

        Danke für das posten, vielleicht hilft es anderen die das selbe Problem haben 🙂

      • Gerald am 8. Januar 2015 18:10

        Das Beispiel funktioniert auch bei mir.
        Mein Programm muß ich wegen der GPIO-Nutzung allerdings mit sudo starten.
        Damit ändert sich der Pfad von
        I: config dir=[/home/pi/.config/telegram-cli]
        in
        I: config dir=[/root/.telegram-cli]
        Telephone number (with ‚+‘ sign): *** Can not send code

        Gibt es auch mit sudo eine Möglichkeit, oder muß ich mein Programm auf wiringPi umstellen?

      • Felix am 8. Januar 2015 18:28

        Wenn sich der Config Ordner ändert könntest du die telegram_CLI mit sudo starten und deinen Account einrichten. Dann sollten die Einstellungen auch dort gespeichert sein (Achtung: [noch] nicht getestet).
        Ansonsten kannst du (ohne sudo) Telegram starten und aus der lua-Datei ein (Bash-)Skript aufrufen, welches wiederum deinen eigentlichen Code mit sudo aufruft.

      • Gerald am 9. Januar 2015 19:42

        danke für den Tipp, das hat funktioniert !
        sudo bin/telegram-cli -k tg-server.pub
        hier wird noch einmal die Telefonnummer eingegeben
        sudo python telegramsenden.py
        sendet dann die Nachricht über telegramsenden.sh

  3. APFMH am 24. Oktober 2014 18:09

    So, bin auch hier deiner Anleitung gefolgt.
    Mit dem Befehl lässt sich direkt aus der Konsole eine Nachricht verschicken:
    pi@raspberrypi ~ $ echo ‚msg user#XXXX blubb‘ |./tg/bin/telegram-cli -k tg/tg-server.pub

    Jetzt bin ich dabei das Lua Skript mit dem Antworten auf ein bestimmten Befehl einzurichten:

    pi@raspberrypi ~ $ ./tg/bin/telegram-cli /tg/telegram -s ~/tg/test.lua -k tg/tg-server.pub
    Telegram-cli version 1.0.6, Copyright (C) 2013-2014 Vitaly Valtman
    Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show_license' for details.
    I: config dir=[/home/pi/.telegram-cli]
    HI, this is lua script
     *** lua: /home/pi/tg/test.lua:60: module 'lgi' not found:
    	no field package.preload['lgi']
    	no file '/usr/local/share/lua/5.2/lgi.lua'
    	no file '/usr/local/share/lua/5.2/lgi/init.lua'
    	no file '/usr/local/lib/lua/5.2/lgi.lua'
    	no file '/usr/local/lib/lua/5.2/lgi/init.lua'
    	no file './lgi.lua'
    	no file '/usr/share/lua/5.2/lgi.lua'
    	no file '/usr/share/lua/5.2/lgi/init.lua'
    	no file './lgi.lua'
    	no file '/usr/local/lib/lua/5.2/lgi.so'
    	no file '/usr/lib/arm-linux-gnueabihf/lua/5.2/lgi.so'
    	no file '/usr/lib/lua/5.2/lgi.so'
    	no file '/usr/local/lib/lua/5.2/loadall.so'
    	no file './lgi.so'
    pi@raspberrypi ~ $

    Noch tut sich da gar nichts. Irgendwas am test.lua scheint nicht zu passen, habe es nach der Anleitung oben angepasst.

    Gruß und schon mal danke für die Hilfe.

    Antworten
    • Admin am 24. Oktober 2014 18:22

      Hi,
      also das Problem scheint an der Lua Version zu liegen (5.2), hier hat jemand ein ähnliches Problem und konnte es lösen, in dem er die lua Version 5.1 installierte.

      Versuch es mal damit:
      sudo apt-get install lua5.1 liblua5.1-0-dev

      Antworten
      • APFMH am 24. Oktober 2014 18:35

        Da stand auch das man das ganze mit folgendem Befehl beheben kann:
        sudo apt-get install lua-lgi

        Die Fehlermeldung ist jetzt weg, dafür habe ich eine neue:
        pi@raspberrypi ~ $ ./tg/bin/telegram-cli /tg/telegram -s ~/tg/test.lua -k tg/tg-server.pub
        Telegram-cli version 1.0.6, Copyright (C) 2013-2014 Vitaly Valtman
        Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license‘.
        This is free software, and you are welcome to redistribute it
        under certain conditions; type `show_license‘ for details.
        I: config dir=[/home/pi/.telegram-cli]
        HI, this is lua script
        *** lua: /usr/share/lua/5.2/lgi/init.lua:51: Typelib file for namespace ‚GLib‘, version ‚2.0‘ not found
        pi@raspberrypi ~ $

      • Admin am 24. Oktober 2014 18:52

        lass mal den Punkt und das Slash weg und schreib stattdessen, /home/pi/tg/..
        Der Fehler ist wahrscheinlich wegen dem falschen Pfad: (I: config dir=[/home/pi/.telegram-cli])

      • APFMH am 24. Oktober 2014 18:55

        Keine Änderung. 🙁
        pi@raspberrypi ~ $ /home/pi/tg/bin/telegram-cli /home/pi/tg/telegram -s /home/pi/tg/test.lua -k /home/pi/tg/tg-server.pub
        Telegram-cli version 1.0.6, Copyright (C) 2013-2014 Vitaly Valtman
        Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license‘.
        This is free software, and you are welcome to redistribute it
        under certain conditions; type `show_license‘ for details.
        I: config dir=[/home/pi/.telegram-cli]
        HI, this is lua script
        *** lua: /usr/share/lua/5.2/lgi/init.lua:51: Typelib file for namespace ‚GLib‘, version ‚2.0‘ not found
        pi@raspberrypi ~ $

      • Admin am 24. Oktober 2014 21:25

        Hmm, vermutlich gibt es ein/mehrer Funktionen in der vorherigen Version nicht, die gebraucht werden.
        Ich werde mich nochmal erkundigen, woran das liegen kann. In der Zwischenzeit kannst du dein Problem ja dem Entwickler posten: https://github.com/vysheng/tg/issues

  4. APFMH am 26. Oktober 2014 11:25

    Habe das ganze mal beim Entwickler gemeldet, siehe hier:
    https://github.com/vysheng/tg/issues/299

    Antworten
    • APFMH am 26. Oktober 2014 15:09

      Hast du eine Ahnung, was der Entwickler gerade von mir hören möchte?

      Antworten
      • Admin am 26. Oktober 2014 15:11

        Schreib ihm doch, dass du mit der ursprünglichen lua Version Probleme hattest und daher eine andere installiert hast, wonach der Fehler jetzt geworfen wird.

    • SNert am 10. Dezember 2014 13:44

      Hallo APFMH,

      hast du das Problem gelöst bekommen?
      Ich habe gerade das selbe. Komme einfach nicht weiter.

      Antworten
  5. Nils am 28. Oktober 2014 15:38

    Super Anleitung das einzige was nicht möchte ist der Uptime Befehl der nicht möchte, bei den anderen Befehlen kommen zwar Fehler z.b. beim shutdown:

    [15:33] xxxxx >>> Shoutdown
    >
    Broadcast message from root@raspberrypi (pts/0) (Tue Oct 28 15:34:38 2014):
    The system is going down to maintenance mode NOW!
    ./send_script: Zeile 2: Syntaxfehler beim unerwarteten Wort `newline‘
    ./send_script: Zeile 2: `/root/tg/bin/telegram-cli -k /root/tg/tg-server.pub<'

    nehme ich das "<"weg geht es gar nicht erst.

    Hat jemand zufällig die Lösung für das Problem?

    Gruß Nils

    Antworten
    • Admin am 28. Oktober 2014 18:35

      Dankeschön 🙂
      was mir auffällt: der Befehl heißt shutdown (ohne ou)
      ich werde mir die neue Version gleich mal ansehen und schauen, woran es liegen könnte.

      LG
      Felix

      Antworten
      • Nils am 28. Oktober 2014 19:56

        Ja der Befehl shutdown wurde auch von mir so an und eingeben in der Cli erscheint er halt so.

        Funktionieren tut er aber wie er soll nur halt der Uptime nicht.

      • Admin am 28. Oktober 2014 21:49

        Also ich habe es gerade nochmal mit der neuen Version getestet, aber bei mir gibt es keinen Fehler. Hast du das Skript eins zu eins kopiert?

      • Nils am 28. Oktober 2014 22:09

        ja deswegen verwundert es mich ja, ich werde das noch einmal versuchen und schauen Feedback folgt.

        Lg

        Nils

  6. Nils am 28. Oktober 2014 23:24

    Also gleiche Vorgehensweise und wieder Funktioniert der eine Befehl und mein Pi antwortet mir auch nicht so wie es deiner machen tut.

    Hast du da ne Lösung parat kann dir auch sonst mal die Dateien als Inhalt anhängen.

    Lg Nils

    Antworten
    • Admin am 29. Oktober 2014 0:15

      ja das wäre gut, wenn du das Skript als Datei mal anhängen könntest, dann teste ich es mal und geb dir Bescheid.

      Antworten
  7. Nils am 29. Oktober 2014 0:50

    send script

    #!/bin/bash
    /root/tg/bin/telegram-cli -k /root/tg/tg-server.pub<
    msg $1 $2
    quit
    STDIN

    test.lua

    started = 0
    our_id = 0
    
    function vardump(value, depth, key)
      local linePrefix = ""
      local spaces = ""
      
      if key ~= nil then
        linePrefix = "["..key.."] = "
      end
      
      if depth == nil then
        depth = 0
      else
        depth = depth + 1
        for i=1, depth do spaces = spaces .. "  " end
      end
      
      if type(value) == 'table' then
        mTable = getmetatable(value)
        if mTable == nil then
          print(spaces ..linePrefix.."(table) ")
        else
          print(spaces .."(metatable) ")
            value = mTable
        end		
        for tableKey, tableValue in pairs(value) do
          vardump(tableValue, depth, tableKey)
        end
      elseif type(value)	== 'function' or 
          type(value)	== 'thread' or 
          type(value)	== 'userdata' or
          value		== nil
      then
        print(spaces..tostring(value))
      else
        print(spaces..linePrefix.."("..type(value)..") "..tostring(value))
      end
    end
    
    print ("HI, this is lua script")
    
    function ok_cb(extra, success, result)
    end
    
    function on_msg_receive (msg)
      if started == 0 then
        return
      end
      if msg.out then
        return
      end
      do_notify (get_title (msg.from, msg.to), msg.text)
    
      if (msg.text == 'ping') then
        if (msg.to.id == our_id) then
          send_msg (msg.from.print_name, 'pong', ok_cb, false)
        else
          send_msg (msg.to.print_name, 'pong', ok_cb, false)
        end
        return
      end
      if (msg.text == 'PING') then
        if (msg.to.id == our_id) then
          fwd_msg (msg.from.print_name, msg.id)
        else
          fwd_msg (msg.to.print_name, msg.id)
        end
        return
      end
    end
    
    function on_our_id (id)
      our_id = id
    end
    
    function on_user_update (user, what)
      --vardump (user)
    end
    
    function on_chat_update (chat, what)
      --vardump (chat)
    end
    
    function on_secret_chat_update (schat, what)
      --vardump (schat)
    end
    
    function on_get_difference_end ()
    end
    
    function cron()
      -- do something
      postpone (cron, false, 1.0)
    end
    
    function on_binlog_replay_end ()
      started = 1
      postpone (cron, false, 1.0)
    end
    
    function on_msg_receive (msg)
      --Damit der "Gelesen Haken" erscheint
      mark_read (msg.from.print_name)
     
      if (msg.from.phone == nil) then return end
     
      --Ggf. nur eine Rufnummer zulassen:
      if (msg.from.phone ~= '49176xxxxxxx' ) then
        os.execute("./script user#".. msg.from.id .." 'Ungültige Nr.'")
        return
      end
     
      if (string.lower(msg.text) == 'uptime') then
        local handle = io.popen("python ~/tg_actions.py uptime")
        local res = handle:read("*a")
        handle:close()
        os.execute("./send_script user#".. msg.from.id .." '"..res.."'")
        --Alternativ:
        --send_msg (msg.from.print_name, res)
        return
     
      elseif (string.lower(msg.text) == 'shutdown') then
        local handle = io.popen("sudo python ~/tg_actions.py shutdown")
        local res = handle:read("*a")
        handle:close()
        os.execute("./send_script user#"..msg.from.id.." '"..res.."'")
        return
     
      elseif (string.lower(msg.text) == 'reboot') then
        local handle = io.popen("sudo python ~/tg_actions.py reboot")
        local res = handle:read("*a")
        handle:close()
        os.execute("./send_script user#".. msg.from.id .." '"..res.."'")
        return
      else
        os.execute("./send_script user#".. msg.from.id .." 'Fehler' ")
      end
     
    end
    
    tg_actions.py
    #!/usr/bin/python
     
    import sys
    import os
    from datetime import timedelta
     
    if sys.argv[1] == "shutdown":
            print "Das System wird heruntergefahren"
            os.system("shutdown now")
    elif sys.argv[1] == "reboot":
            print "Das System wird neugestartet"
            os.system("shutdown -r now")
    elif sys.argv[1] == "uptime":
            with open('/proc/uptime', 'r') as f:
                uptime_seconds = float(f.readline().split()[0])
                uptime_string = str(timedelta(seconds = uptime_seconds))
            print(uptime_string[:-7])
    #else:
            #falls kein Argument zutrifft

    Die Nummer hab ich aus Sicherheitsgründen verfremdet.

    Lg Nils

    Antworten
    • Admin am 29. Oktober 2014 18:27

      ok also einen Fehler habe ich gefunden: Die neuste Version lässt keine Nummereingabe mehr zu, d.h. man kann nur noch an hinzugefügte Kontakte schreiben (lassen).
      Ich werde schauen wie man das am besten einbaut und aktualisiere den Post dann.

      Edit: Ich habe alle Skripte angepasst. Nun sollte es funktionieren.
      Wichtig ist, dass du deine Nummer als Kontakt eingespeichert hast.

      Antworten
  8. Nils am 30. Oktober 2014 13:19

    hmm eigentlich hatte ich mich selbst bzw die Nummer vorher als Kontakt aufgenommen.
    Naja vielleicht hab ich beim Aufnehmen einen Fehler gemacht .
    Kann ja noch noch einmal versuchen den Kontakt aufzunehmen und dir dann ein Feedback schreiben.

    Lg Nils

    Antworten
    • Admin am 30. Oktober 2014 14:48

      ich habe die Skripte alle überarbeitet und angepasst, also falls du das vorherige benutzt, aktualisiere es mal auf die neue Version.

      Antworten
  9. Andreas am 20. November 2014 22:32

    Das doofe an dem send_script ist, dass eine neue Instanz von telegram-cli mit der gleichen Config gestartet wird. Das mag der gar net. Dann kriegt die alte Instanz nämlich keine Updates mehr. Also lieber direkt über lua antworten (vermutlich) oder eben ein zweites Profil mit anderer Authentifizierung anlegen.

    Antworten
  10. Andreas am 21. November 2014 0:21

    Und für Nachrichten senden sieht der Befehl mittlerweile auch anders aus, nämlich

    send_msg (msg.from.print_name, ‚text‘, ok_cb, false)

    Antworten
  11. Andi am 15. Dezember 2014 12:29

    Hallo zusammen,
    folgendes musste ich änderm bis es lief:

    if (msg.from.phone ~= ‚49176xxxxxxxx‘ ) then
    os.execute(„./send_script „.. msg.from.print_name ..“ ‚Ungültige Nr.'“) —> in

    if (msg.from.print_name ~= ‚Kontakt Name‘ ) then
    os.execute(„./send_script „.. msg.from.print_name ..“ ‚Ungueltige Nr.'“) / Umlaute kann telegram nicht versenden
    ———————————————————–
    local handle = io.popen(„python ~/tg_actions.py uptime“) —->
    local handle = io.popen(„sudo python tg_actions.py uptime“)

    Des Weiteren kann ich aus dem Handynetz noch keine Nachrichten empfangen, ich muss noch ein Port am Router freigeben. Weiss aber noch nicht welcher. Könnt Ihr mir hier weiter helfen ?

    Gruß
    Andi

    Antworten
  12. Tom am 16. Dezember 2014 12:15

    Hallo ich habe die scripte vo oben übernommen und ich bekomme häckchen auf dem Handy also der pi scheint nachrichten zu bekommen problem ist er antowrtet nicht und in der tg-CLI kann ich mit „msg Tom Test “ kein nahcrichten eingang auf dem handy sehen.

    beim start(„./tg/bin/telegram-cli /tg/telegram -s ~/tg/test.lua -k tg/tg-server.pub“) kommt folgendes:
    ./tg/bin/telegram-cli /tg/telegram -s ~/tg/test.lua -k tg/tg-server.pub
    change_user_group: can’t find the user telegramd to switch to
    Telegram-cli version 1.1.1, Copyright (C) 2013-2014 Vitaly Valtman
    Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license‘.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show_license‘ for details.
    I: config dir=[/root/.telegram-cli]
    *** lua: attempt to call a nil value
    *** lua: attempt to call a nil value
    *** lua: attempt to call a nil value

    …

    Woran kann es liegen ? zu beginn konnte ich noch nachrichten senden jetzt nicht mehr?
    Bitte Hilfe
    DANKE
    Tom

    Antworten
    • Felix am 16. Dezember 2014 12:30

      Hi,
      erstmal ist der Aufruf nicht ganz richtig. Es müsste heißen: “./tg/bin/telegram-cli -s ~/tg/test.lua -k ~/tg/tg-server.pub” (Falls der Ordner tg/ im Homeverzeichnis ist)
      Die Fehlermeldung sagt nur, dass (3 mal) eine Variable, die aufgerufen wurde nicht gefunden wurde/nicht existiert.
      Hast du „Tom“ als Kontakt hinzugefügt?

      Antworten
      • Tom am 16. Dezember 2014 12:34

        Dnke für die atwort.

        Ja meine Nummer ist gespeichert wenn ich in die CLI wechsel sehe ich auch Tom is online,is typing…

        Hast du eine Idee welche variablen nicht gefunden werden?

      • Felix am 16. Dezember 2014 12:36

        Hast du etwas an dem Skript geändert? Wenn ja müsste ich da mal rüber schauen. Möglich ist aber auch, dass durch den falschen Aufruf der Fehler zustande kommt, was ich aber weniger glaube. Du kannst es dennoch mal ausprobieren.

        LG
        Felix

      • tom am 16. Dezember 2014 13:24

        Das wäre sehr nett ich schicke heute nachmittag mal das ganze lua script und den screenbefehl villeicht findestdu den fehler;)

  13. Tom am 16. Dezember 2014 13:14

    Danke 😀
    ich habe de befehl geändert läuft jetzt wieder ein stüclk weiter
    leider kommt jetzt diese Meldung
    pi@MyHimbeere ~ $ ./tg/bin/telegram-cli -s ~/tg/test.lua -k ~/tg/tg-server.pub

    Fehler:
    *** lua: /home/pi/tg/test.lua:210: unexpected symbol near char(226)

    Im test.lua Script steht an der stelle folgendes:

    if (msg.from.phone ~= ‚4912345678910‘ ) then

    os.execute(„./send_script user#“.. msg.from.id ..“ ‚Ungueltige Nr.'“)

    return

    end

    if (string.lower(msg.text) == ‚uptime‘) then

    wo durch ist der fehler begründet?:D
    Danke für die Hilfe
    Tom

    Antworten
    • Felix am 16. Dezember 2014 13:39

      Die Version hat sich ja u.a. geändert, es heißt nun if ( msg.from.print_name ~= 'Kontakt Name') then ...
      Aber schick am besten das ganze Skript, dann kann ich mir das mal genauer ansehen.

      Antworten
      • Tom am 16. Dezember 2014 19:08

        ...

        und aufgerufen wird telegram mit
        screen -dmS TelegramCLI /home/pi/tg/bin/telegram-cli -s /home/pi/tg/test.lua -k home/pi/tg/tg-server.pub

      • Tom am 16. Dezember 2014 20:29

        aber wenn ich in den Screen wechsel kommt:
        *** lua: attempt to call a nil value
        *** lua: attempt to call a nil value
        und das
        sh: 1: ./send_script: not found
        warum wird das nicht gefunde?:D

      • Felix am 18. Dezember 2014 22:49

        Ist das send_script im selben Ordner (~/tg/) ?

      • Felix am 18. Dezember 2014 22:53

        Die wichgitste Zeile ist diese:
        if msg.from.print_name ~= 'Kontakt Name' then
        Man kann nicht mehr auf die Nummer prüfen, sondern nur noch auf den Name (aus der Kontaktliste).

        PS: Habe deinen Code mal gekürzt.

  14. Micha am 16. Dezember 2014 14:27

    Hallo,

    habe alles nach der Anleitung gemacht. Aber ich bekomme nur einen Haken wenn ich den pi per Telegram anspreche. Das bedeutet doch das die Nachricht gesendet wurde, aber nicht gelesen. oder?

    Der Pi reagiert auch auf keinen Befehl.
    Ich kann mir aber manuel von dem Pi aus schreiben.

    Was mache ich verkehrt???

    lg

    Antworten
    • Felix am 16. Dezember 2014 14:29

      Ich werde mir das demnächst anschauen. Anscheinend wurde die telegram-cli Bibliothek wieder verändert.

      Antworten
      • Micha am 16. Dezember 2014 22:05

        Danke.

        Freut mich!

        Toller support

    • Felix am 18. Dezember 2014 22:45

      Hi Micha,
      ich hatte die letzten Tage viel zu tun, daher erst jetzt die Antwort:
      Ich habe die neuste Version des Messengers gerade nochmal auf einem blanken RaspianOS getestet und die Skripte an bestimmten Stellen angepasst. Kannst du es nochmal von Anfang versuchen (habe auch die Pfade angepasst, sodass nun alle Skripte im ~/tg/ Ordner sind) und mir Rückmeldung geben?

      LG Felix

      Antworten
  15. Mike am 18. Dezember 2014 16:59

    Hey,

    irgendwie funktioniert das crontab nicht.

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

    In der Konsole und ohne @reboot funktioniert der befehl aber

    gruss

    Antworten
    • Felix am 18. Dezember 2014 22:02

      Hi,
      du kannst es mal damit probieren, das muss auf jeden Fall klappen: Link

      Antworten
      • tom am 18. Dezember 2014 22:45

        Kann mir bitte einmal jemand die drei aktuelle Versionen der Skripte geben ich bekomm das mit den oberen nicht hin 🙁
        DANKE

      • Felix am 18. Dezember 2014 22:47

        Hi Tom,
        ich habe es soeben getestet und alles aktualisiert (sollte nun wieder alles mit der neuen Version kompatibel sein).

      • tom am 18. Dezember 2014 22:55

        Ok das ist sehr Nett von dir!:D
        Werde ich gleich am Wochenende ausprobieren 😀
        Und mich dann nochmal mit einem statusbericht melden!:D
        Vielen Dank
        Tom

      • Felix am 18. Dezember 2014 22:56

        Alles klar, wir werden das Problem schon finden 🙂

      • Mike am 18. Dezember 2014 23:07

        danke, aber meine Fähigkeiten reichen glaube nicht aus um aus

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

        ein script in der Art zu bauen.

        Fehlermeldung:

        update-rc.d: using dependency based boot sequencing
        insserv: warning: script 'telegram' missing LSB tags and overrides
        insserv: There is a loop between service watchdog and telegram if stopped
        insserv:  loop involving service telegram at depth 2
        insserv:  loop involving service watchdog at depth 1
        insserv: Stopping telegram depends on watchdog and therefore on system facility `$all' which can not be true!
        insserv: exiting now without changing boot order!
        update-rc.d: error: insserv rejected the script header
      • Felix am 18. Dezember 2014 23:12

        Schau mal das Tutorial hinter dem Link, den ich dir geschrieben habe. Dort habe im am Bsp von noip ein Skript erstellt. Du brauchst das lediglich deinen Wünschen anzupassen. In deinem Fall müsstest du im Skript den Befehl /usr/local/bin/noip2 durch screen -dmS TelegramCLI ~/tg/bin/telegram-cli -s ~/tg/test.lua -k ~/tg/tg-server.pub ersetzen. Den Teil unter stop) kannst du weglassen. Ansonsten musst du nur die Namen anpassen.
        Das bekommst du hin 🙂

      • Mike am 18. Dezember 2014 23:24

        😉

        Per /etc/init.d/telegram start wird aber kein neuer screen geöffnet. und nach sudo update-rc.d kommen die selben fehler wie eben.

  16. Mike am 18. Dezember 2014 23:27
    #! /bin/sh
    
    case "$1" in
      start)
        echo "Telegram wird gestartet"
        # Starte Programm
        screen -dmS TelegramCLI ~/tg/bin/telegram-cli -s ~/tg/test.lua -k ~/tg/tg-s$
        ;;
      stop)
      *)
        echo "Benutzt: /etc/init.d/telegram {start|stop}"
        exit 1
        ;;
    esac
    
    exit 0
    Antworten
    • Felix am 19. Dezember 2014 2:30
      #! /bin/sh
      # Skriptname: /etc/init.d/TelegramCLI
      
      case "$1" in
        start)
          echo "TelegramCLI wird gestartet"
          # Starte Programm
          screen -S TelegramCLI bash -c 'sleep 5; /home/pi/tg/bin/telegram-cli -s /home/pi/tg/test.lua -k /home/pi/tg/tg-server.pub'
          ;;
      esac
      
      exit 0

      Das funktioniert bei mir ohne Probleme. Wenn du es testen willst, starte es am besten nicht im Hintergrund (nimm statt -dmS lediglich -S als Parameter und starte mit sudo /etc/init.d/TelegramCLI start. Falls Fehler auftreten sollten, wirst du diese im Screen angezeigt bekommen. Wenn alles klappt, setze wieder die Parameter -dmS und folge den nächsten Schritten in dem Tutorial.

      Antworten
      • Mike am 19. Dezember 2014 9:03

        Danke!

        Das starten per Start-Befehl funktioniert.

        Allerdings tritt der selbe Fehler auf wie vorher sobald ich den update Befehl ausführe.

        pi@raspberrypi ~ $ sudo update-rc.d telegram defaults
        update-rc.d: using dependency based boot sequencing
        insserv: warning: script 'telegram' missing LSB tags and overrides
        insserv: There is a loop between service watchdog and telegram if stopped
        insserv:  loop involving service telegram at depth 2
        insserv:  loop involving service watchdog at depth 1
        insserv: Stopping telegram depends on watchdog and therefore on system facility `$all' which can not be true!
        insserv: exiting now without changing boot order!
        update-rc.d: error: insserv rejected the script header
      • Felix am 19. Dezember 2014 12:28

        ich hatte so einen Fehler selbst noch nicht, habe aber ein wenig für dich gesucht und Stimmen gefunden, die sagen, dass man den Fehler damit beheben könne:
        insserv /etc/init.d/telegram -d
        Vielleicht kannst du das nochmal probieren?

      • Mike am 19. Dezember 2014 15:29

        Irgendwie ist der Wurm drinne

        pi@raspberrypi:~$  insserv /etc/init.d/telegram -d
        insserv: warning: script 'telegram' missing LSB tags and overrides
        insserv: There is a loop between service watchdog and telegram if stopped
        insserv:  loop involving service telegram at depth 2
        insserv:  loop involving service watchdog at depth 1
        insserv: Stopping telegram depends on watchdog and therefore on system facility `$all' which can not be true!
        insserv: exiting now without changing boot order!
      • Felix am 19. Dezember 2014 16:50

        versuch mal diesen Teil an den Anfang der Datei zu schreiben:

        #! /bin/sh
        ### BEGIN INIT INFO
        # Provides:          telegram
        # Required-Start:    $local_fs 
        # Required-Stop:     $local_fs
        # Default-Start:     2 3 4 5
        # Default-Stop:      0 1 6
        # Short-Description: telegram
        ### END INIT INFO
        
        case "$" in
          start)
            echo "Telegram wird gestartet"
            # Starte Programm
            screen -S TelegramCLI bash -c 'sleep 5; /home/pi/tg/bin/telegram-cli -s /home/pi/tg/test.lua -k /home/pi/tg/tg-server.pub'
            ;;
          stop)
            ;;
          *)
            echo "Benutzt: /etc/init.d/telegram {start|stop}"
            exit 1
            ;;
        esac
        
        exit 0
  17. Mike am 19. Dezember 2014 20:15

    Danke,

    soweit so gut.

    Nur starte ich jetzt das script per start befehl kommt dies

    …
    I: config dir=[/root/.telegram-cli]
    HI, this is lua script
    Telephone number (with ‚+‘ sign):

    sieht so aus als würden die login daten fehlen

    Antworten
    • Felix am 19. Dezember 2014 20:21

      Sehr gut, dann ist das Skript nun fehlerfrei. Du musst dich leider nochmal mit deiner Telefonnummer anmelden und dir die SMS zusenden lassen. Danach funktioniert es.
      Achja, vergiss nicht, wenn das Skript in den Autostart soll, den Parameter -dmS anstelle -S zu setzen (nachdem du alles eingestellt hast).

      LG Felix

      Antworten
  18. Mike am 19. Dezember 2014 22:09

    Hi,

    Per startbefehl geht jetzt alles aber nach wie vor wird es nicht beim reboot geladen.

    ich verzweifel langsam

    Antworten
    • Felix am 19. Dezember 2014 22:48

      Hast du den Parameter wieder geändert (-dmS) und dann eingetragen (sudo update-rc.d NameDesSkripts defaults)?

      Antworten
      • Mike am 19. Dezember 2014 22:50

        Ja habe ich.

        Ich verstehe es auch nicht…

        Was macht dieses bash – c?

      • Felix am 20. Dezember 2014 2:27

        bash -c führt einfach nur ein bash/shell command aus (so als ob du in die Konsole schreibst)

  19. Mike am 20. Dezember 2014 9:26

    Ich kann mir nur vorstellen das der beim Boot wiederfinden Telefonnummer und Code haben will… Wieso weiß ich allerdings auch nicht… Wie bekomme ich telegram komplett gelöscht? Evtl mal neu installieren?

    Antworten
    • Felix am 20. Dezember 2014 12:56

      mit sudo rm -r ~/tg/ bekommst du den Ordner gelöscht, es gibt allerdings noch einen weiteren versteckten Ordner, in dem Einstellungen gespeichert werden (ich weiß gerade nicht wie dieser in der neuen Version heißt, müsstest du mal auf der GitHub Seite nachschauen).

      Antworten
  20. Mike am 20. Dezember 2014 18:07

    hi,

    ist es möglich den bootvorgang in eine datei umzuleiten? ich erreiche den Pi nur per ssh und der steht nicht in meiner nähe.

    irgendwas muss der pi beim booten doch ausspucken wenn der das script starten will

    Antworten
    • Felix am 21. Dezember 2014 2:50

      Hi,
      den Bootvorgang „umleiten“ geht nicht, dafür aber sobald gebootet wurde z.B. über Crontab (http://wiki.ubuntuusers.de/Cron) etwas starten.
      Mich wundert es ein wenig, warum bei dir die vorher von mir vorgestellte Methode nicht klappt, bei meinem Pi läuft das reibungslos.

      Antworten
  21. Tom am 20. Dezember 2014 19:23

    Hallo,
    Dankeschön für den Super Support hier!:D
    es funktioniert alles so wie gewollt!:
    eine Frage habe ich trotzdem noch habt ihr eine idee warum der pi mir einigezeit später nochmal die kompletten antworten der letzten nachrichten schickt ?
    das wäre das einizge!

    Vielen Dank
    Tom

    Antworten
    • Felix am 21. Dezember 2014 2:36

      Hi Tom,
      freut mich, dass es nun klappt 🙂
      Ich denke, das müsste wenn dann an dem TelegramCLI liegen. Ggf. fragst du im GitHub Forum nach, wenn das öfter passiert.

      LG Felix

      Antworten
  22. Thorsten am 23. Dezember 2014 19:48

    Hallo Leute,

    bin am verzweifeln. Bekomm das lua script nicht zum laufen.
    Bekomm immer die Meldung, dass es die Option -s nicht gibt:

    pi@raspberrypi ~ $ ~/tg/bin/telegram-cli -s ~/tg/test.lua -k ~/tg/tg-server.pub
    /home/pi/tg/bin/telegram-cli: invalid option -- 's'
    telegram-cli Usage
      -u                  specify username (would not be asked during authorization)
      -k                  specify location of public key (possible multiple entries)
      -v                  increase verbosity (0-ERROR 1-WARNIN 2-NOTICE 3+-DEBUG-levels)
      -N                  message num mode
      -c                  config file name
      -p                  use specified profile
      -l                  log level
      -f                  during authorization fetch all messages since registration
      -E                  disable auto accept of encrypted chats
      -W                  send dialog_list query and wait for answer before reading input
      -C                  disable color output
      -R                  disable readline
      -d                  daemon mode
      -L        log file name
      -U       change uid after start
      -G      change gid after start
      -D                  disable output
      -P            port to listen for input commands
      -S     unix socket to create
      -e        make commands end exit
      -I                  use user and chat IDs in updates instead of names

    Könnt ihr mir weiter helfen?
    Danke schon im Voraus.
    Gruß
    Thorsten

    Antworten
    • Felix am 23. Dezember 2014 19:59

      Hi Thorsten,
      das ist sehr komisch, ich habe deinen Befehl 1:1 bei mir kopiert und es funktioniert wunderbar.
      Hast du irgendetwas (ungewöhnliches) isntalliert bzw. es mal auf einem leeren Image versucht? Eventuell ist bei der Installation etwas schief gelaufen.

      LG Felix

      Antworten
  23. Thorsten am 23. Dezember 2014 20:01

    Hallo Felix,
    danke für die schnelle Antwort.
    Das habe ich mir beim 1. mal auch gedacht. Habe dann ein komplett neues Image aufgezogen und nur die für Telegram notwendigen Packages nachinstalliert. Wieder das selbe…

    Viele Grüße
    Thorsten

    Antworten
    • Felix am 23. Dezember 2014 20:10

      Also ich bin mir ziemlich sicher, dass da bei deiner Version etwas nicht stimmt. Bei mir zeigt es in der Hilfe den Parameter auch an:

      pi@raspberrypi ~ $ ~/tg/bin/telegram-cli -h
      ...
        -E                  disable auto accept of encrypted chats
        -s                  lua script file
        -W                  send dialog_list query and wait for answer before reading input
      ...
      Antworten
  24. Thorsten am 23. Dezember 2014 20:20

    ok. Echt komisch.
    Dann fang ich nochmal von ganz vorne an…
    Evtl. bringts ja was.

    Vielen Dank.

    Antworten
    • Felix am 23. Dezember 2014 20:29

      Benutzt du Raspbian oder ein anderes OS? Ggf. kannst du auch mal ein anderes Release des Clients auf Github ziehen.

      Antworten
  25. Thorsten am 23. Dezember 2014 20:50

    Benutze Raspbian.
    Probiers gerade nochmal. „make“ läuft gerade…
    Stimmt, das ist ne gute Idee. Falls es wieder nicht geht, such ich auf github nen anderes Release und teste nochmal.
    Danke

    Antworten
  26. Thorsten am 23. Dezember 2014 22:00

    Hallo Felix,

    hab alles nochmal neu installiert.
    Jetzt läuft es.
    Super. Vielen Dank.
    Gruß
    Thorsten

    Antworten
    • Felix am 23. Dezember 2014 22:01

      Hi Thorsten,
      freut mich das zu hören 🙂 Sollten noch Probleme auftreten, einfach nachfragen.

      LG Felix

      Antworten
  27. Mike am 26. Dezember 2014 0:08

    Hi,

    Ich mal wieder.

    Ich habe mal ein wenig rumgespielt und mir ist dabei folgendes Aufgefallen:

    starte ich Telegram so


    crontab -e

    und füge folgende Zeile ein


    # m h dom mon dow command
    58 23 * * * screen -dmS TelegramCLI /home/pi/tg/bin/telegram-cli -s /home/pi/tg/test.lua -k /home/pi/tg/tg-server.pub

    funktioniert es.
    Aber per @reboot nach wie vor nicht. Hab zwei Vermutungen.
    Liegt es an dem Benutzer der beim reboot den Befehl ausführt?
    Oder, das andere Dienste die für Telegram benötigt werden noch nicht geladen sind?

    lg

    Antworten
    • Felix am 26. Dezember 2014 2:06

      Hi Mike,
      danke für die Infos. Ich werde das mal übernehmen, falls andere das selbe Problem haben.
      Es könnte an beiden deiner Vermutungen liegen. Wobei ich nicht genau sagen kann, welche Dienste die TelegramCLI benötigt, dafür müsste ich erst den ganzen Code analysieren.

      Antworten
  28. Mike am 28. Dezember 2014 23:37

    Hi,

    ich mal wieder.
    Konnte es natürlich nicht lassen und habe das Problem gelöst.

    Problem ist glaube erstens das screen nicht geladen ist wenn crontab ausgeführt wird. Ausserderm verbindet sich der Pi mittels wicd mit dem Wlan. Dies wird anhand de Bootscreens auch recht spät gestartet.

    Deshalb habe ich erfolgreich folgendes versucht:

    crontab -e

    @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

    hat lange gedauert 😉

    lg

    Antworten
    • Felix am 28. Dezember 2014 23:44

      Hi Mike,
      sehr schön, so etwas hatte ich mir bei meinem Code schon gedacht, aber ein sleep 5; reichte aus, wahrscheinlich da diese Skripte erst um einiges nach den crontabs ausgeführt werden.
      Naja, hauptsache es klappt nun bei dir 🙂

      LG Felix

      Antworten
  29. Tim am 18. März 2015 17:41

    Hey Leute,
    ich versuche schon die ganze Zeit hinzubekommen, dass mein Raspberry eine automatische Antwort schickt!
    Ich kann mir über die Konsole manuell Nachrichten aufs Handy schicken, aber irgendwie komme ich mit dem letzten Teil des Tutorials nicht ganz klar, will so kurz vor dem Ziel aber auch nicht aufgeben!
    Was muss ich denn da genau an dem Skript aus dem Tutorial ändern, damit das bei mir genauso läuft mit Uptime & Reboot?
    Wenn ich wie oben unter „Telegram starten“ verfahre, dann passiert gar nichts. Wie sollte das denn aussehen?
    Ihr könnt auch gerne Screenshots schicken (mba2015@hmamail.com)!

    Danke schon mal!

    Antworten
  30. Daniel am 25. März 2015 15:20

    Hallo,
    Ich habe bei mir Telegram nach dieser Anleitung 1:1 eingerichtet und es funktioniert fast perfekt. Das Script antwortet schön wenn es angeschrieben wird, ich kann Nachrichten über die Konsole verschicken etc.
    Ich hatte jedoch ein Problem. Ich starte Telegram mit
    screen -dmS Telegram /home/pi/tg/bin/telegram-cli -s /home/pi/tg/test.lua -k /home/pi/tg/tg-server.pub
    Dies kann ich händisch über eine start_telegram.sh machen, passiert aber auch in der crontab beim start und läuft fehlerfrei.

    Gehe ich jetzt hin und schicke mit dem Script send_t.sh:
    /home/pi/tg/bin/telegram-cli -k /home/pi/tg/tg-server.pub -W -e "msg $1 $2"
    eine Nachricht ./send_t.sh user#1234567 Hallo über die Konsole, dann kommt diese Nachricht an, gleichzeitig bleibt aber der beim booten ausgeführte screen Prozess der im Hintergrund läuft wohl hängen. D.h. sobald ich eine Nachricht über die Konsole verschickt habe, antwortet das LUA Script nicht mehr auf Nachrichten.
    Mittlerweil bin ich auf die Idee gekommen, das im screen ja schon eine Instanz läuft und für das verschicken eiegntlich ja garkeine neue Instanz gebraucht würde. Nach einigem Studium von man screen ist es tatsächlich möglich Befehle an ein detachtes Fenster zu schicken.
    Der Befehl für eine Nachricht per Telegram in der Konsole zu verschicken lautet:
    screen -S Telegram -X stuff "msg user#123456 Test $(printf \r)"
    Mit -S wird das detachte Fenster angesprochen (Name hängt davon ab wie screen -S beim starten aufgerufen wird). -X stuff sended Keystrokes an das entfernte Fenster, da nach der Nachricht noch Return gedrückt werden muss, muss hinten noch das $(printf \r) dran.
    Eine entsprechende send_t.sh wäre dann:
    #!/bin/sh
    screen -S Telegram -X stuff "msg user#123456 $1 $(printf \r)"

    Um die Nachricht zu senden: ./send_t.sh Test

    Ich hoffe, dass hilft jemandem weiter, mich hat es einige Nerven gekostet.

    Antworten
  31. Daniel am 26. März 2015 17:49

    Ein 2. Weg ist mir jetzt noch aufgefallen, dürfte sein wenn man Telegram mit der -P Option startet damit er auf einen Port lauscht, das müsste dann etwa so aussehen:
    screen -dmS Telegram /home/pi/tg/bin/telegram-cli -s /home/pi/tg/test.lua -k /home/pi/tg/tg-server.pub -P 54321
    Telegram lauscht dann auf dem festgelegten Port nach einkommenden Befehlen, welche man mit netcat hinschicken kann, z.B.:
    echo "msg user#123456 Test" | nc.traditional -w 1 127.0.0.1 54321
    Eine send_t.sh würde dann entsprechend aussehen:
    #!/bin/sh
    echo "msg user#123456 $1" | nc.traditional -w 1 127.0.0.1 54321

    und der entsprechende Aufruf halt eben mit
    ./send_t.sh Test

    Um die send Scripte überall verfügbar zu machen, kann man sie natürlich in /usr/local/bin ablegen.

    Ich habe Variante 2 jetzt nicht ausprobiert, aber eigentlich müsste es funktionieren.

    Antworten
  32. Christoph am 24. April 2015 20:48

    Hallo,
    Gibt es eine Möglichkeit das der Pi über Python automatisch antwortet??

    Antworten
  33. stefan am 13. Mai 2015 23:48

    hallo ich wollte fragen wie ich in das script noch befhle hinzufügen kann und wie ich gpios damit steuern kann?
    danke für jede antwort die mir weiterhilft

    Antworten
    • Felix am 14. Mai 2015 1:06

      Ja natürlich kannst du das.
      Wie du die das Skript bearbeitest steht ja bereits im Tutorial. Die GPIO steuern könntest du z.B. indem du ein Python Skript (oder in der Sprache deiner Wahl) aufrufst, mit dem du die GPIO ausliest/ansprichst.

      Antworten
  34. Stefan am 15. Mai 2015 10:56

    Ich habs probiert aber irgendwie funktioniert es nicht kannst du mir ein Beispiel geben ich weiß nicht weiter

    Antworten
    • Felix am 15. Mai 2015 14:41

      Naja, schau dir doch mal das verwendete lua Skript an, da rufe ich bereits ein anderes bash Skript auf (Zeile 36, 39).

      os.execute("/home/pi/tg/send_script ".. msg.from.print_name .." 'Fehler' ")

      ein Python Skript kannst du z.B. mittels

      os.execute("python /pfad/python_skript.py")

      aufrufen. Und wie du mittels Python die GPIO steuern kannst, habe ich in anderen Tutorials (z.B. hier) geschrieben.
      Du kannst dem Skript auch Parameter übergeben, welche es dann auswertet bzw. verwendet.

      Antworten
  35. stefan am 16. Mai 2015 21:06

    hey sorry das ich noch mal schreibe aber ich hab jetzt alles versucht aber ich bekomme es nicht hin ein neuen befehl hinzufügen der funktionier. in telegram kommt dann meistens ein fehler oder garnix. ich möchte die gpios über shell steuern

    Antworten
    • stefan am 16. Mai 2015 21:17

      ich hab nie hin bekommen das etwas ausgefürt und mir eine antwort geschikt wird

      Antworten
      • Felix am 16. Mai 2015 22:59

        kannst du deine Skripte mal auf http://pastebin.com/ posten und hier verlinken?

  36. stefan am 17. Mai 2015 0:12

    so das sind meine skripte
    http://pastebin.com/1UaiseMt
    http://pastebin.com/1deyueL9
    http://pastebin.com/DDEHSqK1

    Antworten
    • Felix am 17. Mai 2015 0:17

      Also mir fällt auf, dass du die Endung vergessen hast. Außerdem sind in Python die Einrückungen wichtig, die du nicht alle gleich gesetzt hast (Zeile 20).
      Wenn du tg_actions.py nicht brauchst ruf im lua Skript doch dein tor1auf.py direkt auf.

      Antworten
    • Stefan am 17. Mai 2015 7:25

      Danke erstmal für die schnelle Antwort und ich will ja das Python Skript weil ich ja eine Antwort gesendet haben möchte. Und das tor1auf.sh lässt sich nicht direkt aus der lua starten .

      Antworten
    • Stefan am 17. Mai 2015 7:35

      Und wenn ich indem tg_actions.py einen neuen Befehl hinzufüge dann funktionieren die anderen nicht mehr.

      Antworten
  37. Johannes am 17. Mai 2015 0:42

    Guten Abend,
    zuerst möchte ich ein Lob los werden. Die Seite hier ist klasse und euer aktiver Support erleichtert uns „Neuen“ das Programmieren.

    Da ich jetzt nach einigen Tagen die Funktion der Scripts herstellen konnte, hängt es leider bei mir noch beim Autostart.
    Bei crontab -e fährt mein Pi in eine Reboot-Schleife. Hab das ganze dann wieder entfernt aus crontab.
    Beim Autostartscript kommt folgende Meldung und es wird nicht ausgeführt nach einem Neustart:

    update-rc.d: using dependency based boot sequencing
    insserv: warning: script ‚K01autostarttg‘ missing LSB tags and overrides
    insserv: warning: script ‚autostarttg‘ missing LSB tags and overrides

    Aus dem Chat mit Mike hab ich das Script angepasst:

    #! /bin/sh
    ###BEGIN INIT INFO
    # Provides: telegram-cli
    # Required-Start: $local_fs
    # Required-Stop: $local_fs
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: telegram cli
    # Description: telegram cli
    ### END INIT INFO
    
    
    #actions
    case "$" in
     start)
            echo "Telegram wird gestartet"
            # Starte Program
            screen -dmS Telegram-CLI bash -c 'sleep 5; /home/pi/tg/bin/telegram-cli -s /home/pi/tg/test.lua -k /home/pi/tg/tg-server.pub'
            ;;
     stop)
            ;;
     *)
            echo "Benutzt: /etc/init.d/autostarttg {start|stop}"
            exit 1
            ;;
    esac
    
    exit 0

    Wahrscheinlich ist es ein Anfängerfehler^^…. naja mal sehen.

    Eine andere Frage noch: muss ich für neue Funktionen nur das py-script erweitern oder auch das lua script anpassen? (Py-Script = Funktion, lua-Script = Rückmeldung?)

    Vielen Dank schonmal!
    Mit freundlichen Grüßen Johannes

    Antworten
    • Felix am 17. Mai 2015 0:49

      Erst einmal vielen Dank für das Lob 🙂
      Ich nehme an dein Start Skript heißt nicht telegram-cli? Schreib mal in # Provides: und # Short-Description: den Namen des Skripts (autostarttg ?).
      Zu deiner zweiten Frage: Du kannst beides. Manche Funktionen sind in lua mMn. nicht so schön umsetzbar, daher greife ich lieber auf andere Sprachen wie python oder bash zurück. Wenn du es direkt in lua umsetzen kannst sparst du dir die Rückmeldung des Skripts.

      Antworten
  38. Johannes am 17. Mai 2015 10:39

    Vielen Dank für die schnelle Rückmeldung!
    Ja das Script heißt autostarttg. Hab es jetzt ausprobiert und noch etwas anderes probiert, jedoch kommt die Fehlermeldung immer noch. Somit kommt Telegram nicht in den Autostart bei meinem RPi2…

    Die einzige Alternative ist ja über crontab -e und den entsprechenden Befehl am Ende einzufügen!? oder sehe ich das falsch?

    Antworten
  39. Stefan am 17. Mai 2015 11:01

    Danke erstmal für die schnelle Antwort und ich will ja das Python Skript weil ich ja eine Antwort gesendet haben möchte. Und das tor1auf.sh lässt sich nicht direkt aus der lua starten . Und wenn ich indem tg_actions.py einen neuen Befehl hinzufüge dann funktionieren die anderen nicht mehr.

    Antworten
    • Felix am 17. Mai 2015 13:59

      Was genau funktioniert am Python Skript nicht mehr? Ein beliebter Fehler sind die Einrückungen (Python macht einen Unterschied zwischen Tab und [mehreren] Leerzeichen).
      Bitte immer die Fehlermeldungen posten, so kann besser geholfen werden.

      Antworten
    • Stefan am 17. Mai 2015 20:08

      Es funktioniert dann alle anderen Befehle nicht mehr

      Antworten
      • Felix am 17. Mai 2015 20:09

        Welche Fehlermeldung bekommst du?

  40. Stefan am 17. Mai 2015 20:31

    Wo kann ich die auslesen

    Antworten
    • Felix am 17. Mai 2015 20:32

      indem du das Skript manuell in der Konsole startest. Woher weißt du, dass es nicht funktioniert, wenn du es noch nicht ausprobiert hast?

      Antworten
    • stefan am 17. Mai 2015 21:08

      das ist die fehlermeldung

      File „tg_actions.py“, line 15
      with open(‚/home/pi/tor1auf‘)
      ^
      SyntaxError: invalid syntax

      Antworten
      • Felix am 17. Mai 2015 21:10

        Ist selbsterklärend oder? dieses width ist keine gültige Syntax.

    • stefan am 17. Mai 2015 21:11

      was muss ich dann verwenden

      Antworten
      • Felix am 17. Mai 2015 21:24
        import os
        os.system("/pfad/datei.endung")

        Und setz die Dateiendung richtig.
        PS: Ein wenig googlen hilft immer 😉
        http://www.cyberciti.biz/faq/python-execute-unix-linux-command-examples/
        Alternativ mit subprocess

    • stefan am 17. Mai 2015 21:34

      jetzt kommt der fehler
      File „tg_actions.py“, line 15
      SyntaxError: Non-ASCII character ‚xc3‘ in file tg_actions.py on line 15, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

      Antworten
      • Felix am 17. Mai 2015 21:45

        Die Meldung ist doch wirklich aussagekräftig. Wenn man den Fehler in Google eingibt, bekommt man viele, zum Ziel führende Antworten.
        https://www.google.com/search?q=SyntaxError%3A+Non-ASCII+character+%E2%80%98xc3%E2%80%B2&ie=utf-8&oe=utf-8
        Zum Thema: Verwende nur ASCII Zeichen.

    • stefan am 17. Mai 2015 21:53

      ok das ist jetzt ok aber es wird immer noch nichts ausgefürt noch an mich gesendet

      Antworten
      • Felix am 17. Mai 2015 22:08

        Das Skript soll als Vorlage dienen, wenn es allerdings bei dir nach Anpassungen nicht klappt, probier doch mal es schrittweise aufzubauen. So kannst du den Fehler sofort finden und musst dich im Nachhinein nicht darum kümmern.

    • stefan am 17. Mai 2015 22:23

      vielen dank für die sehr gute hilfe
      ich werde versuche es hinzubekommen mal schaun ob es klappt

      Antworten
      • Felix am 17. Mai 2015 22:32

        Nichts zu danken. Kleinere Fehler sind meistens schnell zu beheben, sollte es ein größeres Problem geben, kannst du dich ja nochmal melden.
        LG Felix

  41. stefan am 20. Mai 2015 19:58

    hey ich bins wieder meine python skript geht aber die lua führt es nicht aus

    Antworten
  42. Jan am 27. Mai 2015 21:36

    Hallo,
    Erstmal großes Lob, denn es hat alles beim zweiten Versuch funktioniert 😛
    Der Pi antwortet schön und und und.

    Doch hab ich noch eine für mich interessante Frage:
    Wie kann ich vom Pi selbständig eine Nachricht ausschicken?
    Dazu folgendes Szenario: Ein Sensor soll stetig die Temperatur im Raum überwachen, wird eine bestimmte Grenze über bzw. unterschritten soll ich benarchitigt werden.

    Ich werd leider aus der tg-Dokumentation nicht sonderlich schlau und auch wenn ich es über das bash-skript Versuche (was ich im moment speziell aus Python heraus starte) passiert lediglich, dass tg ausgeführt wird, darauf ein bisschen nix tut und sich schließlich beendet.

    Hoffe mir kann da geholfen werden. 🙂

    Lg Jan

    Antworten
    • Felix am 27. Mai 2015 21:49

      Also wenn du etwas dauerhaft misst, ist ja entweder ein Skript am werkeln (z.B. eine Endlosschleife, die alle x Sekunden den Sensor abruft). In jenes Skript kannst du ganz einfach einen Aufruf der telegram-cli mit deiner Nachricht einbauen (was aufgerufen wird, sobald die Temperatur erreicht wurde). Wenn du ein bash Skript aufrufst (welches tg ausführt), solltest du darauf achten, dass du auch alle Parameter (richtig) übergeben hast. Am besten schrittweise loggen was ankommt.
      LG Felix

      Antworten
  43. Jan am 27. Mai 2015 22:06

    Vielen Dank erstmal für die schnelle Antwort 🙂

    Um einfach mal nur nen Beispiel unabhägig von sensorik zu machen:

    #test.py
    import os

    os.system(‚~/tg/bin/telegram-cli -k ~/tg/tg-server.pub -W -e „msg Chef Hallo“ ‚)
    #test.py-ende
    Und soweid wie ich es verstanden hab, sollte er ja er daraus eine Nachricht senden, tut jedoch nix in der routine.

    Antworten
    • Felix am 27. Mai 2015 23:10

      Dann wird der Befehl ~/tg/bin/telegram-cli -k ~/tg/tg-server.pub -W -e “msg Chef Hallo” auch in der Konsole nicht funktionieren. Hast du das bereits getestet?

      Antworten
    • Jan am 27. Mai 2015 23:19

      Ja hab ich. Der tut folgich auch nichts.

      Antworten
    • Jan am 27. Mai 2015 23:23

      starte ich den cli ohne parameter und will mir eine nachricht schreiben passiert ebenfalls nichts. erst wenn ich dem pi schreibe, kann ich mir erfolgreich zurück schreiben. noch so als zusatz info

      Antworten
      • Felix am 28. Mai 2015 0:04

        Gut, dann ist das Problem ja erkannt.
        Kannst du die (nicht) funktionierenden Befehle posten?

    • Jan am 28. Mai 2015 21:44

      In Telegram selbst betrifft ist dann wohl alle Funktionen, denn solange keine Kommunikation von einem mobilen Gerät aus gestartet wurde, laufen die Befehle des Pis ins leere.

      Antworten
    • Maik am 1. Juli 2015 22:13

      Hallo, ich habe das selbe Problem und komme hier absolut nicht weiter. Ich will einen Infrarotsensor auslesen, der mir eine Nachricht über Telegram schickt wenn er Bewegung registriert. Dass mit dem Bild etc. klappt schon. Nur dass mir eine Nachricht beim auslösen geschickt wird fehlt noch. Eure Erklärungen versteh ich leider überhaupt nicht. Kann mal jemand ein Beispiel schicken? Besten Dank! Und nochmals ein dickes Lob für die Mühe die man sich hier gemacht hat auch mir unwissenden etwas beizubringen

      Antworten
      • Felix am 1. Juli 2015 22:22

        Was verstehst du genau nicht? Dort, wo das Bewegungsereignis wahrgenommen wird (callback, etc.) musst du die telegram-cli aufrufen und an einen Kontakt (dich) eine Nachricht senden.
        Mit welcher Sprache hast du es geschrieben? Du kannst ja ein paar Teile posten, dann kann man sicherlich besser helfen.
        LG Felix

  44. Stefan am 30. Mai 2015 19:25

    Ich habe das selbe Problem

    Und ich wollte noch fragen ob man in die test.lua zwei Kontakte schreiben kann das beide die befele nutzen können

    Antworten
    • Felix am 30. Mai 2015 19:38

      Welches Problem hast du genau?
      Ja natürlich kannst du an zwei (vordefinierte) Kontakte schreiben.

      Antworten
    • Stefan am 31. Mai 2015 0:03

      Ich kann wie bei jan erst etwas vom pi senden wenn ich dem pi geschrieben habe

      Wie kann ich eine zweiten Kontakt vorgeben

      Antworten
      • Felix am 31. Mai 2015 0:38

        Hast du dich als Kontakt vorher eingespeichert?

    • Stefan am 31. Mai 2015 8:38

      Ja das habe ich

      Antworten
    • Jan am 1. Juni 2015 19:21

      Hallo nochmals. Ich hab mich nochmal ein bisschen mit TG aus einander gesetzt. Wenn man das ganze mit -W linkt wird ne Query genommen auf input gewartet und auf diesen dann geantwortet. -e Führt lediglich einen Befehl aus und beendet sich danach.
      Wenn ich es jetzt richtig verstanden hab, muss man in LUA ein eigenes skript zum senden von Nachrichten verfassen und es geht nicht auf diesem einfachen Weg =/.

      Lg Jan

      Antworten
  45. Jannis Klee am 21. Juni 2015 19:18

    Hey Admin, wie du auch immer heißt xD

    Ich hab ein Problem mit meinem TG

    wie gesagt der Fehler von oben den du schon beschrieben hast in der Anleitung..
    das mit Notify..

    Hab da mal ne Frage

    also in meiner namespace.lua findet sich kein

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

    irgendwie nicht…
    Hier meine Namespace lua: http://pastebin.com/CAEGM0df

    wenn ich irgendwas komplett falsch verstanden habe dann informiere mich bitte… bin hier am verzweifeln

    Antworten
    • Felix am 21. Juni 2015 19:21

      Wieso postest du die namespace lua? Ich bearbeite die test.lua Datei. Schau mal, ob es in der nicht wie beschrieben aussieht.
      PS: Ich heiße Felix 😉

      Antworten
    • Jannis Klee am 21. Juni 2015 20:24

      oh sry da steht ja Felix ich dachte da steht Admin sagt… xD

      Sorry

      Ich teste es gerade und ja, ich habe es gefunden -.- ich vollidiot 😀

      LG Jannis

      Antworten
  46. Dirk am 4. August 2015 21:36

    Hallo Felix,
    erst einmal auch von mir ein herzlicher Dank für dieses tolle Tutorial – Klasse!
    Ich habe mich bemüht, Deinen Anweisungen zu folgen, dabei habe ich folgenden Status:
    Wenn ich eine Nachricht an Telegram sende läuft das test.lua an, und die Befehle „shutdown“ bzw. „reboot“ werden an das python-skript übergeben und dort ausgeführt: Der RPI fährt herunter bzw. wird neugestartet. D.h. für mich, dass das python-skript grundsätzlich funktioniert. Auch der cron job läuft einwandfrei mit „@reboot sleep 20 && screen -dmS TelegramCLI /home/pi/tg/bin/telegram-cli -k /home/pi/tg/tg-server.pub -s /home/pi/tg/test.lua“ so dass Telegram nach einem reboot auch wieder automatisch anläuft. Mein Problem – so ich das ganze verstehe – ist, dass das python script keine Rückmeldung an Telegram gibt. So scheint z.B. beim Befehl „uptime“ nichts zu passieren. Auch die Antworten wie bei Dir, z.B. auf „Reboot“ folgt „Das System wird neu gestartet“, werden bei mir am Absender nicht angezeigt, also Telegram sendet irgendwie nicht zurück. Was mache ich da denn wohl falsch? Über deine Hilfe würd ich mich sehr freuen! Gruß Dirk

    Antworten
    • Felix am 4. August 2015 21:41

      Hallo Dirk,
      vor dem Neustart bekommst du aber Rückmeldung?
      Bist du dir ganz sicher, dass es nach dem Reboot auch geladen wurde?
      Achja und als Kontakt hast du dich eingespeichert? In den neueren Version kann man nur noch an Kontakte Nachrichten senden (das war zu dem Zeitpunkt, als ich das Tutorial geschrieben habe nicht so). Und welche Änderungen hast du noch an den Skripten vorgenommen?
      LG Felix

      Antworten
  47. Dirk am 4. August 2015 22:22

    Hallo Felix, vielen Dank für Deine schnelle Reaktion!
    Nein – auch vor dem reboot bekomme ich leider keine nachricht auf mein Handy.

    Was bitte soll nach dem Reboot geladen sein (sorry für meine blöde Frage)?
    Ich denke, mich selbst (also meine Handy) sauber in Telegram auf dem RPIin den Kontakten angelegt zu haben – sonst könnte ich doch keine Nachrichten auswerten, richtig? Danke dir für Deine Bemühungen!

    Antworten
    • Felix am 4. August 2015 22:26

      Wenn der Pi startet und du eine Nachricht schickst, werden dann beide Haken gesetzt oder nur einer? Falls nur einer kam die Nachricht noch nicht an und (wahrscheinlich) wurde das Skript zum auswerten nach dem reboot nicht gestartet.

      Antworten
  48. Dirk am 5. August 2015 6:48

    …es werden beide Haken gesetzt – d.h. für mich, dass das test.lua auch läuft. Es wird ja auch die tg_actions.py aufgerufen – nur eben keine Antworten an den Sender (in diesem Fall also mein Smartphone) zurückgesendet.

    Um ganz sicher zu gehen installiere ich den RPI & Telegram nochmal neu. Make läuft gerade durch, ich versuche dann nochmalexakt 1:1 Deine drei files zu übernehmen (bis auf die Kontaktdaten natürlich…).
    Ich melde mich wieder, Gruß Dirk

    Antworten
  49. Dirk am 6. August 2015 19:45

    Hallo Felix,

    wie geschrieben – ich habe mein System komplett neu aufgesetzt und Telegram installiert. Nach Eingabe der persönlichen Daten und Bestätigung des SMS-Code lief ea auch sauber. Ich habe dann mich selbst (bzw. natürlich mein Smart-Phone) als Kontakt angelegt. Wenn ich nach home/pi/tg wechsel und dort dann „bin/telegram-cli“ eingebe kann ich auch Telegram wieder starten. Was mir nebenbei auffällt – wenn ich auf meinem Smartphone in Telegram etwas schreibe wird mir auf dem rpi in Telegram nicht angezeigt „User Dirk xxxx schreibt gerade“ (oder so ähnlich). Nachdem ich den beiden files „send_script.sh“ und „tg_actions.py“ wie beschrieben die Rechte vergeben habe und über crontab -e wie beschrieben den Autostart angegeben habe habe ich den rpi neu gestartet. Leider reagiert Telegram nach einem Neustart dann nicht automatisch. Wenn ich wie geschrieben Telegram manuell aufrufe läuft es. Die test.lua, send_script.sh sowie tg_actions.py zeigen ab leider keine Wirkung. Wie kann ich denn vielleicht einzeln diese Datei „aufrufen“ um zu prüfen, ob die denn wenigsten laufen. Ich bekomme also zur Zeit leider keine Reaktion. Ach ja nochwas , nun werden auch nicht mehr die zwei Haken angezeigt, also irgendwie scheint da irgendetwas nicht mit geladen zu sein. Für deine weitere Hilfe schon mal vielen Dank! Gruß Dirk

    Antworten
    • Felix am 6. August 2015 20:15

      Gut, dann ist schon mal klar, dass das Skript nach dem Neustart nicht aufgerufen wird. An was das genau liegt, kann ich dir aber aus der Ferne leider auch nicht sagen.
      Bzgl. des Status „xy schreibt…“, ich glaube das ist nicht dabei (bzw. war es nicht, als ich es ausprobiert habe). Solange die Nachricht ankommt sollte das aber nicht weiter schlimm sein, denke ich.

      Antworten
  50. Dirk am 6. August 2015 19:50

    Nachtrag: wenn ich „python tg_actions.py reboot“ ausführe wird in der Kommandozeile ausgegeben:
    Das System wird neu gestartet
    shutdown: you must be root to do that!
    Usage: ….und dann einige Zeilen mit Parametern für shutdown

    Antworten
    • Felix am 6. August 2015 20:13

      Benutze sudo shutdown now, bzw. alles was root Rechte braucht musst du mit sudo starten.

      Antworten
    • Dirk am 6. August 2015 21:02

      ..Wasserstandsmeldung….
      Nachdem ich den Teil mit {{Notifikation}} aus der Datei entfernt habe kam zum ersten Mal eine Antwort auf mein Smart-Phone!: Nach Absenden des Befahls „Reboot“ wurde korioserweise „Fehler“ zurückgesendet – seit dem startet der Raspberry Pi automatisch alle 2 Minuten…..

      ich schaffe das, ich schaffe dass, ich schaffe dass,…. also alles von vorne: neues „Wheezy“-Image installieren und weiter gehts -follow up folgt…..

      Antworten
    • Dirk am 6. August 2015 22:48

      …jetziger Stand: Telegram läuft nach reboot automatisch durch den cronjob an und reagiert zumindest auf den Befehl „Reboot“ (bestätigt durch zwei Haken) – aber ohne vorher eine Meldung wie „Das System wird neu gestartet“ zu senden ;-( ..mich verlässt langsam der Mut… Hast Du vielleicht noch eine Idee? Danke

      Antworten
      • Felix am 7. August 2015 0:03

        Speziell darauf vermute ich, dass der Prozess zum senden der Antwort durch den reboot bereits gekillt wurde und du daher keine Antwort bekommst. Du kannst z.B. den Teil, der den Neustart auslöst auskommentieren und schauen, ob dann eine Antwort zurück gesendet wird.

    • Dirk am 6. August 2015 23:33

      Also, alle drei Befehle werden von der test.lua erkannt und an die tg_actions.py weitergeleitet. Irgendwie scheint der Aufruf der send_script.sh aber nicht zu funktionieren, denn es kommt keine Antwort zurück. Jetzt verlässt mich mein Latein…..

      Antworten
  51. Dirk am 6. August 2015 20:35

    ..danke, ich habe das tg_actions.py angepasst. Direktes Ausführen in der Kommandozeile (im Pfad tg) funktioniert nun mit „python tg_actions.py reboot“. Aber leider nicht der ganze Rest….

    Wie kann ich prüfen, ob wenigstens die lua.test lauffähig ist?

    Antworten
    • Felix am 6. August 2015 20:37

      Was genau meinst du mit lauffähig? Du gibst beim Startbefehl ja die .lua Datei mit an, die dann auf Eingaben reagieren kann. Du müsstest also alle deine Fälle manuell, indem du den entsprechenden Befehl per Telegram schickst, testen.
      Falls du die Syntax meinst: Du solltest eine Fehlermeldung mit Zeilennummer etc. bekommen, falls etwas nicht stimmt.

      Antworten
  52. Dirk am 7. August 2015 21:40

    So, langsam komme ich der ganzen Thematik näher, es stellen sich erste Erfolge ein. Ich habe aus den gesammelten Werken an FAQ hier grundsätzlich lauffähige Programme bekommen. Dein letzter Tipp, den Teil in der tg_actions.py auszukomentieren hat funktioniert, ich bekomme eine Antwort. Das ist der gute Teil der Nachricht.
    Nun der schlechte Teil: wenn ich den Befehl wieder zulasse, rebootet der Raspberry Pi nach dem ersten Ausführen von Telegram in einer ENDLOS-Schleife! D.H. so geht es (zumindest bei mir) nicht und zu allem Übel komme ich nun nicht mehr auf den RPI und darf wieder einmal von vorne anfangen und das System neu aufsetzten…..Keine Ahnung warum, aber das mit dem Reboot muss ich anders lösen….
    Vielleicht bekomme ich ja auch irgenwann mal das Ganze zum laufen – es haben ja schliesslich auch ein paar User vor mir geschafft 😉

    Antworten
    • Felix am 7. August 2015 21:45

      Hi Dirk,
      so einfach sollte der Pi nicht ohne Grund neustarten. Hast du evtl. etwas in den Autostart (oder cron) geschrieben, dass deinen Pi neustarten lässt? Oder wird der Teil des lua Skripts direkt nach Start aufgerufen (z.B. indem davor keine Abfrage nach dem gesendeten Befehl gemacht wurde)?

      Antworten
    • Dirk am 7. August 2015 21:58

      ..ich habe durch crontab -e ausschliesslich die von Dir vorgegebene Änderung eingefügt:
      @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

      Antworten
      • Felix am 7. August 2015 22:02

        ok, das ist nicht der Auslöser. Hiermit wird einfach 60 Sekunden nach Start telegram-cli mit den entsprechenden Parametern gestartet.
        Startet dein Pi denn direkt neu, oder erst nach einer Minute? Dann muss es nämlich an der lua Datei liegen.

    • Dirk am 7. August 2015 22:04

      ich stelle mir auch zu folgendem Code-Teil :

       elseif (string.lower(msg.text) == 'reboot') then
          local handle = io.popen("sudo python /home/pi/tg/tg_actions.py reboot")
          local res = handle:read("*a")
          handle:close()
          os.execute("/home/pi/tg/send_script ".. msg.from.print_name .." '"..res.."' ")
          return

      auch die Frage, warum erst die tg_actions.py ausgeführt werden soll und dann das send_script?
      wenn die tg_actions.py „zündet“ (reboot) ist doch egentlich klar, dass dann keine Message mehr rausgehen kann, oder?

      Antworten
  53. Dirk am 7. August 2015 22:06

    …mein RPI startet ziemlich genau nach der im crontab eingestellten Zeit, ändere ich die z.B. von 60 auf 20 started der RPI in einer permanenten Schleife auch nach 20 Sekunden. Vielleicht sollte ich mal eine deutlich längere Zeit als 60 wählen?

    Antworten
    • Felix am 7. August 2015 22:09

      Du kannst zwei Dinge versuchen: Lösche einmal den && screen ... Teil (oder durch ein print etc. ersetzen) und einmal die komplette Zeile. Falls er nach dem ersten Versuch immer noch neustartet liegt es nicht an Telegram.

      Antworten
    • Dirk am 7. August 2015 22:12

      ..das werde ich probieren und mich melden. Immer wieder Danke für deine Geduld!
      -> make läuft gerade wieder durch, dauert bei mir immer ziemlich genau 45 Minuten…

      Antworten
      • Felix am 7. August 2015 22:14

        Sobald du mit der Einrichtung fertig bist, würde es sich evtl. anbieten ein Backup des Images mit Win32DiskImager zu machen, falls das schneller geht.

    • Dirk am 7. August 2015 22:23

      danke für die Info – genauso (mit dem Win32DiskImager) ziehe ich das Image immer auf die SD-Karte – Ich habe da ja nun einige Übung 😉
      Make läuft gerade – follow up folgt!

      Antworten
      • Felix am 7. August 2015 22:25

        Ich meinte damit, dass du (nach make und telegram Einrichtung) das Image speichern kannst. Dann sparst du dir das erneute Einrichten.

    • Dirk am 8. August 2015 21:42

      POSITIVE Zwischenbilanz!
      Jetzt stellen sich dauerhafte Erfolge bei mir ein – endlich! Bevor ich meinen bescheidenen Code wenn gewünscht hier zeige bzw. über pastebin verlinke habe ich eine weitere Frage bzw. Anmerkung:
      Wenn ich eine ankommende Nachricht direkt in der test.lua auswerte und mit einer Antwort (aus der test.lua heraus) belege geht das blitzartig (deutlich unter 1 Sekunde). Ich erkenne dass am sofort gesetzten zweiten Haken sowie die unmittelbar danch aufpoppende Antwort im Telgram-Messenger auf meinem Smartphone.
      Leite ich jedoch den empfangenen Befehl an die tg_actions.py zur weiteren Verarbeitung weiter wird der zweite Haken erst nach ein paar Sekunden angezeigt – entsprechend „träge“ ist auch die Reaktion durch das tg_action.py script, unabhängig davon, was dort „zusammengebraut“ wird.
      Egal also, ob ich „reboot“, „shutdown“ oder „uptime“ eingebe – alle reaktionen dazu kommen grundsätzlich erst ein paar Sekunden später. Nicht das mich das jetzt (bei meinen beabsichtigten Ideen) stören würde, es fällt mir halt nur auf.
      Unabhängig davon nochmals mein herzliches Dankeschön an Dich,Felix, für Deine ausgesprochen flotten Reaktionen und Deine Geduld, auch Anfängerfragen und -Probleme hier zu behandeln! Erstklassiges Tutorial und Betreuung!

      Antworten
  54. Dirk am 7. August 2015 22:35

    Ahhaa- wieder etwas dazugelernt, danke. Das gucke ich mir mal näher an!

    Antworten
  55. Dirk am 21. August 2015 22:30

    Hallo Felix,
    mein lua Script läuft soweit und ich beginne langsam, die Zusammenhänge zu verstehen. Ich stehe vor einem weiteren Problem, für das ich leider keinen Ansatzpunkt habe:
    Wenn Telegram auf meinem PI von einer bis dato unbekannten und somit nicht zuordbaren Telefonnummer kontaktiert wird möchte ich gerne mit Hilfe des lua-scriptes diese Nummer extrahieren und an eine DRITTE Nummer (nämlich dem Telegram-Account von meinem Smartphone) senden. Von dort möchte ich dann via Telegram einen Befehl an den Pi senden, der dann auch über das lua-script (oder der tg_actions.py) diese bis dato unbekannte Telefonnummer mit einem dann von mir zu vergebenen Namen in den Telegram-Kontakten neu anlegt. Beispiel: „legeuseran>LieschenMueller<+49175123456" In der test.lua würde ich diese dann von meinem Smartphone empfangene NAchricht in ihre Bestandteile zerlegen und den Befehl zum Anlegen des neuen Kontaketes geben wollen – wenn das geht…
    Ich möchte mich also nicht auf den PI aufloggen müssen, um dort erst den neuen Kontakt anlegen zu können. Ich kann zwar mit beispielsweise "Empfänger_ID = msg.from.id" die id des Absenders auslesen. Aber damit komme ich immer noch nicht an die Telefonnummer ran. Siehst Du eine Chance, wie man das realisieren kann? Gruß Dirk

    Antworten
    • Felix am 21. August 2015 22:42

      Hi Dirk,
      soweit ich das sehe, kannst du die Nummer nicht direkt auslesen, zumindest in der Telegram App. Seit neustem gibt es ja Benutzernamen, nach denen man auch suchen kann. Die Nummer wird dadurch aber nicht offenbart (soweit ich mich nicht irre).
      Falls du die Nummer kennst oder es doch eine Möglichkeit geben sollte, kannst du mit add_contact den neuen Nutzer in der lua File hinzufügen, indem du die Befehl-Cases durchgehst.

      Antworten
    • Dirk am 21. August 2015 22:46

      danke – ich habe befürchtet, dass man zum Auslesen einer neuen Nummer immer direkt an den Pi muss – schade. Dennoch Danke für die Info hierzu, gute Nacht!

      Antworten
      • Felix am 21. August 2015 22:48

        Ich bin mir nicht mal sicher, ob man die Nummer am Pi auslesen kann (ist ja im Endeffekt auch nur ein Client wie die App auch). Das dient wohl dazu, dass man nicht die Privaten Nummern von anderen Nutzern abgreifen kann.

  56. Dirk am 23. August 2015 20:32

    Dann versuche ich das anders zu lösen und habe dazu eine weitere Frage. Folgender Code:
    ————–
    if msg.from.print_name ~= ‚Dirk_xxx‘ then
    os.execute(„/home/pi/tg/send_script „.. msg.from.print_name ..“ ‚Ihre Anfrage wird an den Pi-Admin weitergeleitet.'“)
    os.execute(„/home/pi/tg/send_script „.. ‚Dirk_xxx‘ ..“ ‚Nachricht an PI von unbekannt:'“)
    os.execute(„/home/pi/tg/send_script „.. ‚Dirk_xxx‘ .. msg.text)
    return
    end
    ————-
    funktioniert bis auf Zeile 4 (der 3. os.exceute-Befehl) – dort gibt es keine Reaktion. Frage daher, was ich wohl falsch mache, um eine auf dem Pi erhaltene Nachricht an einen bekannten Acount (in diesem Fall Dirk_xxx) weiterzuleiten.

    Der reine Lua-Befehl „fwd_msg (‚Dirk_xxx‘, msg, ok_cb, false) zeigt als Alternative leider auch keine Wirkung….

    Antworten
    • Felix am 23. August 2015 20:39

      Wieso nimmst du keine Hochkommata (oder wurde das autoformatiert)?
      Ist Versuch es mal mit

      os.execute("/home/pi/tg/send_script ".. "Dirk_xxx" .. "'".. msg.text .."'")
      Antworten
    • Dirk am 23. August 2015 22:07

      Danke ! Du hast mich auf die richtige Fährte gebracht (aber Dein Code hat leider bei mir nicht funktioniert):
      1. Korrekt, die Hochkommata waren ein Autoformat-Fehler hier in meiner Online-Formulareingabe.
      2. Es fehlte ein LEERZEICHEN VOR dem Anfangs-Hochkommata von msg.text!
      os.execute(„/home/pi/tg/send_script „.. „Dirk_xxx“ ..“ ‚“.. msg.text ..“‚“)

      ich hoffe, das es jetzt bei der Formatierung hier richtig rüberkommt. Bei jedenfalls funktioniert der Code.

      Unabhängig davon zwei weitere Bemerkungen:
      1. Auch der alternative Code
      ———-
      send_msg (‚Dirk_xxx‘, msg.text, ok_cb, false)
      ———-
      funktioniert, um die erhaltene Nachricht an einen vorher angelegten Kontakt WEITERZULEITEN. Dies ist mir mit der lua-Funktion „fwd_msg“ nicht gelungen – warum auc h immer.
      2. Wenn mehrere „send_msg“-Befehle hintereinander im lua-script ausgeführt werden kann nicht sichergestellt werden, dass diese Befehle immer in der gleichen Reihenfolge ausgeführt werden. Warum auch immer, ich kann dieses Phänomen nicht erklären, aber auf meinem PI ist das einfach so.
      Felix, nochmals vielen herzlichen Dank für Deine hervorragende Unterstützung hier!

      Antworten
  57. Dirk am 27. August 2015 8:49

    Frage zu einer weiteren Hürde (für mich):
    Ich suche nach einer Möglichkeit, dass die test.lua (aus bestimmten Grund die test.lua ) eigenständig Nachrichten versendet, ohne von aussen über eine telegram-message dazu angetriggert worden zu sein. Quasi eigenmotiviert.

    In welche Funktion in der test.lua packe ich das rein (function cron?). Ich möchte mich nach Möglichkeit nicht mit dem telegeram-bot auseinander setzen müssen. Danke schon mal!

    Antworten
  58. Stefan am 18. September 2015 17:28

    Hallo ich wollte mal fragen was es sein kann wenn sich Telegramm auf dem pi immer aufhängt

    Antworten
  59. Thomas am 27. September 2015 18:15

    Servus erst mal Riesen Lob für das Tutorial ist echt klasse !

    Nur frag ich mich wie ich Telegramm im Terminal öffnen kann ??

    Antworten
    • Felix am 28. September 2015 20:22

      Hallo Thomas,
      einfach ins Verzeichnis wechseln und die telegram-cli über die Konsole ohne zusätzliche Befehle (ggf. mit Ausnahme der key file) starten.
      LG Felix

      Antworten
  60. Endi am 29. September 2015 23:00

    Hi,

    ich hätte eine Frage und zwar:

    Wenn ich das send_script über einen python Code aufrufe,

    subprocess.check_call([‚/path/send_script/‘ + ‚Receiver‘ + ‚“Hello“‚])

    dann führt er Telegram als root aus und will dass ich eine Telefonnummer angebe, mich also nochmal anmelde ( mit root). Gibt es eine Möglichkeit dies als bestimmten User auszuführen ( su user davor habe ich probiert, ohne Erfolg)?

    Würde mich über jede Hilfe oder andere Lösungsansätze freuen.

    Zusatzinformaton: Das anmelden über root mit der gleichen Telefonnummer funktionert zwar, ist in meinen Augen aber nicht so elegant, zudem, weil es dann zusätzlich eine Fehlermeldung mit sich bringt:

    change_user_group: can’t find the user telegramd to switch to

    Antworten
    • Endi am 29. September 2015 23:54

      Lösung gefunden:

      Im Bash Script ein einfaches sudo su -c command user.
      Also:

      #!/bin/bash
      /home/pi/tg/bin/telegram-cli -k /home/pi/tg/tg-server.pub -W -e „msg $1 $2″

      Zu:

      #!/bin/bash
      sudo su -c “ /home/pi/tg/bin/telegram-cli -k /home/pi/tg/tg-server.pub -W -e „msg $1 $2″“ pi

      (Für pi den gewünschten User eintragen)

      Bei Python dann beachten:

      subprocess.check_call([‘/path/send_script/’ + ‘Receiver’ + ‘”Hello”‘])

      Zu:

      subprocess.check_call([‘/path/send_script/’ + ‘Receiver’ + ‘ ‚Hello‘ ‘])

      Antworten
  61. Fillip am 17. Oktober 2015 21:50

    Hallo,

    ich hatte versucht die tg_actions.py anzupassen, das bei einem Befehl ein Skript gestartet wird und zwar so,

    elif sys.argv[1] == „Standheizung“:
    print „Standheizung wird gestartet“
    os.system(„/home/pi/shz/shz_on.sh“)

    Jedoch wird mir im Telegram immer nur die Rückmeldung „Fehler “ geliefert…
    Der Befehl Standheizung soll halt ein Skript startet auf dem Pi

    Antworten
    • Felix am 17. Oktober 2015 21:52

      Kannst du dein ganzes Skript auf http://pastebin.com/ kopieren und hier verlinken? Denke nämlich, dass es an einer anderen Stelle hakt.
      Funktionieren andere Befehle?

      Antworten
    • Fillip am 17. Oktober 2015 22:43

      Hallo Felix,

      hier http://pastebin.com/TMuzdu1y habe ich es mal hochgeladen.

      Ich habe auch mal probiert die test.lua anzupassen, leider auch ohne erfolg…
      http://pastebin.com/azrVE0sB

      Antworten
      • Felix am 17. Oktober 2015 23:32

        Folgende Zeile:

        elseif (string.lower(msg.text) == 'Standheizung') then

        Schreib ’standheizung‘ klein, sonst wird es nie klappen (string.lower).
        LG Felix

    • Fillip am 17. Oktober 2015 22:44

      Ach ja, andere Befehle wie uptime oder reboot funktionieren…

      Antworten
    • Fillip am 17. Oktober 2015 23:44

      Müssen denn die Befehle in der tg_actions.py und test.lua angegeben werden, oder reicht es die tg_actions.py zu „erweitern“?

      Und ich kann mittels dem Befhel „echo $(echo „scale=3; $(grep ‚t=‘ /sys/bus/w1/devices/w1_bus_master1/28-0004773ee8ff/w1_slave | awk -F ‚t=‘ ‚{print $2}‘) / 1000″ | bc -l) °C“ die Temperatur vom DS18B20 in der Konsole abfragen, wie kann ich das ganze denn realisieren dass mir dieser in Telegram auf Nachfrag (bsp. Temperatur) gesendet wird?

      Antworten
      • Felix am 17. Oktober 2015 23:49

        Du kannst die tg_actions.py auch erweitern, ohne ein weiteres Skript aufzurufen, das ist ganz dir überlassen. Mittels Python (os.system()) kannst du bash Befehle angeben, also sollte es eigentlich klappen.

  62. Damian97 am 1. Dezember 2015 20:45

    Heii
    Hätte 3 Kurze Fragen:
    Wie geht das mit den GPIO ansteuern?
    Kann man auch machen, dass wenn ein an den GPIO befestigter Schalter betätigt wird, das Raspberry von sich aus eine Nachricht verschickt?
    Kann man machen, dass Telegram direkt nach dem Auf starten automatisch geöffnet wird?
    Gruss Damian97

    Antworten
    • Felix am 1. Dezember 2015 20:56

      Hey,
      zu dienen Fragen empfehle ich dir die folgenden beiden Tutorials:
      Ampelschaltung mit GPIO Teil 1 (und Teil 2)
      Programm im Autostart ausführen
      Ist alles möglich 🙂 Wenn du zu etwas Genauem Hilfe brauchst, schreib es grade in die Kommentare des Artikels.
      LG Felix

      Antworten
  63. Damian97 am 2. Dezember 2015 16:47

    Guten Abend
    Ich hätte noch 2 Fragen.
    Frage 1:
    Ich möchte, das wenn ich dem Raspberry die Nachricht “Ein” schicke, ein Python scribt ausgeführt wird welches einen GPIO ansteuert.
    Das python scribt ist bereits erstellt und funktioniert. Aber was muss im Lua scribt stehen?

    Frage 2
    Ich möchte, dass wenn der GPIO Pin 5(input) von 0 auf 1 wechselt, mir das Raspberry eine Nachricht sendet.
    Wie soll ich da vorgehen?

    Tut mir leid ich bin ein blutiger Anfänger, brauche das aber für ein Schulprojekt.
    Währe froh um schnelle Antwort
    Gruss Damian97

    Antworten
    • Felix am 2. Dezember 2015 17:20

      Schaut dir das Skript noch mal an. Mit os.execute kannst du dein Python Skript aus der Lua Datei starten.
      Bzgl. deiner zweiten Frage: Du musst telegram vom Python Skript aus aufrufen und deine Nachricht + Empfänger angeben. Auch da solltest du dir das Beispiel nochmal ansehen, denn beides ist bereits aufgeührt.
      LG Felix

      Antworten
    • Damian97 am 2. Dezember 2015 19:13

      Ok, danke viel mal für die Antwort.
      Tut mir leid für die dummen Fragen. Bin echt völliger Neuling und zur Zeit gerade recht im Stress. Das ganze will einfach irgendwie nicht funktionieren…

      Antworten
      • Felix am 2. Dezember 2015 19:30

        Was funktioniert denn genau nicht? Poste deinen Code doch mal auf http://pastebin.com/ und verlink ihn hier.

  64. DAMIAN97 am 6. Dezember 2015 23:47

    Bekomme immer wenn ich den befehl sende diese meldung.
    *** lua: /home/pi/tg/test.lua:55: attempt to call global ‚get_title‘ (a nil value)

    Antworten
    • Felix am 6. Dezember 2015 23:48

      Hi Damian,
      kannst du deine lua Datei auf http://pastebin.com/ posten und hier verlinken?

      Antworten
  65. Damian97 am 7. Dezember 2015 9:03

    Habe im moment noch genau dein scribt. Noch nichts geändert.

    Antworten
    • Felix am 7. Dezember 2015 11:54

      Ich habe hier nur eine Funktion gepostet (die in der Datei zu ersetzen ist), was steht bei dir denn in Zeile 55?

      Antworten
  66. Damian97 am 10. Dezember 2015 20:39

    Heii
    Soweit funktioniert es jetzt. Ich habe ein Bisschen probiert. Allerdings was ich immer noch nicht ganz begreife, ist wie man von einem GPIO angesteuert eine Nachricht senden kann. Könntest du mir da evtl. noch kurz ein Beispiel machen.
    Danke viel mal für die Zeit die du Investierst!
    Gruss Damian97

    Antworten
    • Felix am 10. Dezember 2015 20:52

      Du hast ein Skript, welches nur die GPIOs überwacht (z.B. mit einer Endlos-Schleife oder Triggers). Sobald eine Veränderung wahrgenommen wird, startest du ein zweites Skript (dein Telegram Skript) bzw. einfach einen Befehl und übergibst den Text, der gesendet werden soll.

      Antworten
  67. Damian97 am 10. Dezember 2015 21:30

    wie könnte dieses skribt z:B aussehen? Das welches die GPIO überwacht

    Antworten
    • Felix am 10. Dezember 2015 22:38

      Schau mal hier nach:
      Ampelschaltung mit GPIO Teil 2 (ggf. auch Teil 1)
      Oder noch einfacher: Pull-Up/Down Resistors

      Antworten
  68. Mick am 18. Dezember 2015 12:03

    Mahlzeit,

    erstmal vielen Dank für das tolle Tut. Habe Telegram auf einem pi2 (wheezy) stabil zum Laufen bekommen und div. Antworten/Skripte integriert. Nun habe ich ein kleines Bash-Skript erstellt, welches eine kleine weckfunktion zur verfügung stellt. Sende ich also /wecker per telegram erhalte ich zu einer fest eingestellten Uhrzeit eine Erinnerung geschickt. Nun würde ich dies gern etwas flexibler gestalten in dem ich die Uhrzeit mit übergeben möchte…
    Beispielbefehl, welche per Telegram geschickt wird: /wecker 10:15

    Hat jemand eine Idee, wie ich die Uhrzeit 10:15 an das Lua-Script übergeben kann? Wie ich die Variable dann in die Bash bekomme, wüsste ich.

    Antworten
    • Felix am 18. Dezember 2015 23:55

      Schau dir mal die Lua String Dokumentation und vor allem string.sub() an.

      Antworten
  69. MICK am 19. Dezember 2015 18:17

    Hallo Felix,

    vielen Dank für deine Hilfe. Ich komme leider mit dem string.sub() überhaupt nicht zurecht. Im Lua Skript kann ich den gesendeten Command folgendermaßen aufnehmen:

    print(„Test: „..msg.text) –> Ausgabe: Test2: /wecker 13:15

    Kannst du mir dabei behiflich sein, den o.g. String so zu zerlegen, dass nur noch die Uhrzeit 13:15 über bleibt?

    Grüße M.

    Antworten
    • Felix am 19. Dezember 2015 18:23

      Du kannst dir auch mal diesen Link ansehen: http://lua-users.org/wiki/SplitJoin
      Damit würde ich msg.text anhand der Leerzeichen aufteilen und dann eben überprüfen, ob der erste Teil gleich "/wecker" ist und falls ja, den zweiten Teil nochmals splitten (diesmal anhand des Doppelpunktes) und schon hast du Stunde und Minute. Natürlich solltest du noch ein paar sicherheitsrelevante Abfragen machen (was wenn etwas anderes statt einer Uhrzeit angegeben wurde, etc.).

      Antworten
  70. Mick am 19. Dezember 2015 19:11

    Hallo Felix,

    zusätzliche Abfragen werden nicht benötigt, da ich am Anfang des Lua-Skriptes bereits einen Filter eingebaut habe, der ausschließlich meinen Absender zulässt. Werd mir das heut abend mal in Ruhe anschauen, vielleicht kommt ich so weite. Vielen Dank schon mal an dieser Stelle.

    Antworten
    • Felix am 19. Dezember 2015 19:13

      Zusätzliche Abfragen im Sinne von, dass du dich auch vertippen kannst – ein Punkt statt Doppelpunkt, ein Buchstabe statt einer Zahl etc. Aber das ist nicht all zu schwer umzusetzen.

      Antworten
  71. Mick am 19. Dezember 2015 19:33

    Leider komme ich mit Lua noch nicht wirklich zurecht… Wenn ich das Test-Skript mit dem folgenden Inhalt starte, erhalte ich schonmal den 1. Teil, kannst du mir helfen an die Uhrzeit zu kommen?

    #!/usr/local/bin/lua
    --Aufruf mit lua /home/pi/skripte/test.lua
    str, sep = "/wecker 13:15"," "
    fields = {}
    str:gsub("([^"..sep.."]*)"..sep, function(c) table.insert(fields, c) end)
    for i,v in ipairs(fields) do
    print (v)
    end
    Antworten
  72. Mick am 20. Dezember 2015 0:27

    Hallo Felix,

    ich denke ich konnte das Problem mit dem String lösen… Nun noch eine Kleinigkeit, vielleicht kannst du mir dort auch helfen?

    Damit ich auf unterschiedliche Commands reagieren kann, starte ich für jeden Command vorher mit der folgenden Abfrage:

    if (msg.text == '/wecker' or msg.text == '/Wecker') then
    .....

    Der Command löst nur aus, wenn lediglich nur /wecker per Telegram gesendet wird. Wie baue ich nach /wecker noch einen Platzhalter ála * ein, sodass auch auf /wecker 12:14 reagiert wird??

    Antworten
    • Felix am 20. Dezember 2015 1:11

      Dafür habe ich dir doch substring/split als Rat gegeben. Du vergleichst hier auf genau diesen String. Wenn du den String splittest kannst du schauen, ob der erste Teil gleich "/wecker" ist.

      Antworten
  73. Mick am 20. Dezember 2015 5:56

    Stimmt, das wäre auch ein Weg gewesen. Konnte es nun aber auch folgendermaßen lösen:

    if (msg.text ~= '/wecker' or msg.text ~= '/Wecker') then
    .....

    Also statt „==“ lieber „~=“ verwenden und schon werden nachfolgende Command mit durchgelassen. Vielen Dank für deine inputs und einen schönen 4. Advent.

    LG M.

    Antworten
    • Felix am 20. Dezember 2015 13:54

      Hallo Mick,
      ich dachte du willst die Uhrzeit auch mit auslesen? Daher würde ich einfach einmal den String aufteilen und dann vergleichen. Aber es führen mehrere Wege nach Rom 🙂
      LG Felix

      Antworten
  74. kluski am 30. Dezember 2015 14:00

    Hy Felix,
    danke für das Tutorial. Alles läuft super will demnächst noch eigene Projekte damit realisieren. Davor wollte ich gern wissen, ob ich etwas falsch gemacht habe. Eine Rückmeldung dauert lange (min. 8 Sek bis 10 Sek), ist das normal oder habe ich etwas übersehen?
    Danke im voraus.
    Kluski

    Antworten
    • Felix am 30. Dezember 2015 18:35

      Hast du den Code 1:1 so umgesetzt oder Modifikationen durchgeführt? Ich musste aber auch vereinzelt länger auf die Rückmeldung warten, normalerweise ging es aber flott.

      Antworten
  75. Kalla am 18. Januar 2016 9:20

    Hallo zusammen,
    bei mir hat es gut 1 Jahr funktioniert. Seit neues stürzt Telegram-cli auf dem Respberry ab, wenn ich ein Befehl sende der nicht unterstützt wird. Fehler wird zurückgesendet.

    Des Weiteren habe ich noch telegram-cli 1.1 installiert. Es gibt aber schon V1.3 wie kann ich updaten ?

    Gruß
    Kalla

    Antworten
    • Felix am 18. Januar 2016 12:50

      Updaten kannst du mit git pull origin master (in dem Verzeichnis). Danach musst du neu kompilieren.

      Antworten
  76. Jonas am 29. Januar 2016 7:35

    Hallo,
    Ich habe ein Problem. Undzwar hatte ich alles genauso gemacht wie im tutorial. Als erstes wurde wenn ich etwas geschrieben habe „Ungültige Nr.“ geschickt. Das habe ich gefixt indem ich bei der test.lua statt Kontakt Name meinen Kontakt reingeschrieben habe. Allerdings schickt der raspi nun keine Nachricht mehr wenn ich z.b. uptime schreibe. Was kann ich machen?

    Antworten
    • Felix am 29. Januar 2016 10:58

      Hast du den Kontakt und dessen Nummer mit Telegram gespeichert/hinzugefügt?

      Antworten
    • Jonas am 29. Januar 2016 12:52

      Ja ich habe den Kontakt eingetragen als ich in dieser Telegramkonsole war.

      Antworten
      • Felix am 29. Januar 2016 16:21

        Ich denke, dass bei der Abfrage etwas nicht klappt. Du kannst ja mal die Schritte loggen, um rauszufinden, woran es liegt. Ich denke wie gesagt, dass der Kontakt falsch eingetragen ist oder die Abfrage nicht das korrekte Ergebnis liefert.

    • Jonas am 29. Januar 2016 17:11

      1. Was ist loggen?
      2. Wenn ich was schreibe und die Telegramkonsole geöffnet ist, steht da auch mein Name aber ich versuche jetzt noch einmal den Kontakt einzugeben

      Antworten
      • Felix am 29. Januar 2016 23:22

        Poste mal deinen Code auf Pastebin oder so und verlinke ihn. http://pastebin.com/
        Wie weit kennst du dich mit der Programmierung aus? Loggen tut man an bestimmten Punkten, um z.B. Fehler zu suchen.

    • Jonas am 30. Januar 2016 13:18

      Ich bin leider noch beim Anfang vom Programmieren, aber sah dieses Projekt als sehr nützlich.

      test.lua:
      http://pastebin.com/5n0JZdf6

      tg_actions.py:
      http://pastebin.com/7diyavA6

      send_script:
      http://pastebin.com/H2bi8xkn

      Antworten
      • Felix am 30. Januar 2016 14:44

        Füge mal in Zeile 90 so etwas ein wie:

        print ("Uptime abgefragt")

        Vor anderen Zeilen kannst ähnliche Prints anbringen und damit schauen, was ausgeführt wird. Erscheint es nicht in der Konsole, wird es nicht ausgeführt.

    • Jonas am 30. Januar 2016 20:25

      Ok es wird nicht ausgeführt. In der Konsole steht:
      [19:22] Ich >>> uptime

      Antworten
      • Felix am 30. Januar 2016 21:44

        Dann wird der Kontakt(name) wohl nicht stimmen, nehme ich an. Speicher den kontakt ggf. mal ohne Leerzeichen und nur klein geschrieben, etc.

    • Jonas am 31. Januar 2016 16:05

      Kleingeschrieben:
      > add_contact +4912345678910 mein name
      mein name
      User mein name is typing
      [15:00] mein name >>> hi
      User mein name online (was online [2016/01/31 15:05:16])

      Zusammengeschrieben:
      > add_contact +4912345678910 meinname
      FAIL: 38: can not parse string arg #2

      (Ich habe eigentlich meinen richtigen Namen hingeschrieben den ich auch bei Telegram verwende)
      Es hat sich leider nichts verändert…

      Antworten
      • Felix am 31. Januar 2016 18:26

        Hast du die Nummer gelöscht, bevor du sie wieder hinzugefügt hast? Ansonsten würde ich mal im Forum nachfragen: https://github.com/vysheng/tg/issues

  77. Marco am 7. Februar 2016 22:06

    bekomme beim ausführen der Python datei folgenden fehler:
    pi@raspberrypi:~ $ sudo python /home/pi/tg/tg_actions.py
    File „/home/pi/tg/tg_actions.py“, line 9
    print „Das System wird heruntergefahren“
    ^
    IndentationError: expected an indented block

    Antworten
    • Felix am 7. Februar 2016 22:25

      Du verwendest Tabs und Leerzeichen. Das ist für den Compiler aber nicht das selbe. Wenn du in der Zeile vorher z.B. 4 Leerzeichen verwendest, muss dies auch in der nächsten Zeile so sein und kein Tab (vorausgesetzt sie sollen in einer Ebene sein).

      Antworten
  78. Jan-Eric am 10. Februar 2016 16:20

    Hallo 😀 ka ob mein erster Kommentar hier gelandet ist, scheinbar nicht, zumindest ist er hier nicht zu sehen… Vorab erstmal Hammer Tutorials super erklärt und nachvollziehbar. Dennoch habe ich bei mir ein kleines Problemchen : wenn ich dem Pi die Befehle wie shutdown usw sende, passiert einfach garnichts, die Nachricht kommt zwar an, aber der Pi schaltet sich dann nicht aus oder sonst irgendwas. Ich habe alles 1:1 wie in deinen Tuts gemacht dennoch geht es nicht, kannst du mir da vlt iwi helfen?

    Antworten
    • Felix am 10. Februar 2016 16:26

      Dein Kommentar kam an, aber du hast unter einem anderen Tutorial gepostet, wo ich dir bereits geantwortet habe 🙂
      http://tutorials-raspberrypi.de/telegram-messenger-auf-dem-raspberrypi/comment-page-1/#comment-1806

      Antworten
  79. Paulner am 21. April 2016 12:53

    Hallo,
    ein super Tutorial, nur leider mag mein Pi nicht mal einen gelesen Haken setzen, woran liegt das? Mein Quelltext ist auszugsweise der hier:

    function on_msg_receive (msg)
      if started == 0 then
        return
      end
      if msg.out then
        return
      end
    
      if msg.text then
      mark_read(msg.from.print_name, ok_cb, false)
      end
    Antworten
    • Felix am 21. April 2016 13:19

      Kommt deine Nachricht denn auf dem Pi an? Du kannst das z.B. mit einem Log auf der Konsole überprüfen.

      Antworten
    • Paulner am 21. April 2016 15:41

      Ja, es kommt an.

      Antworten
      • Felix am 21. April 2016 18:37

        Wie hast du das getestet? Schreib mal ein print("angekommen") bevor der Gelesen Haken eigentlich gesetzt werden sollte (im Code). Wird das „angekommen“ auf der Konsole ausgegeben (starte es nicht im Hintergrund sondern direkt), so weißt du, dass der Pi die Nachricht erhalten hat.

    • Paulner am 21. April 2016 16:06

      Also ich sehe alle Nachrichten und wenn ich mit meinem Handy online bin, aber mein Pi reagiert auf kein Kommando bzw. schickt auch keinen ‚gelesen‘ Haken…

      Antworten
  80. Paulner am 21. April 2016 15:09

    Ich beschäftige mich mit dem Pi und Linux erst seit ein paar Tagen; wie rufe ich den Log auf?

    Antworten
  81. Paulner am 22. April 2016 12:05

    Also ich hab es so gestartet:
    screen -S TelegramCLI ~/tg/bin/telegram-cli ~/tg/test.lua -k ~/tg/tg-server.pub
    Und es zeigt mit nur die Nachrichten, die der Pi empfängt an

    Antworten
    • Felix am 22. April 2016 19:50

      Du musst rausfinden, warum er nicht an den Punkt gelangt, an dem der Haken gesetzt wird. Wenn die Nachrichten empfangen werden, kannst du Schritt für Schritt Logs setzen und schauen was wird ausgeführt und was nicht. Btw: Ich würde nicht screen verwenden, wenn du debugst, da du den Output ja live sehen willst (einfach telegram-cli inkl. Parameter aus der Konsole aufrufen).
      LG Felix

      Antworten
  82. Alex am 1. Mai 2016 14:02

    richtig gutes Tutorial
    bei mir klappt soweit alles Einwandfrei

    allerdings würde ich jetzt gerne auch auf mehrere Nachrichten hintereinander reagieren.

    heißt Wenn ich zum Beispiel „reboot“ schreibe soll erst als Antwort „Willst du wirklich neu starten?“ kommen und wenn ich darauf dann „ja“ schreibe soll der Pi rebootet werden wenn ich „nein“ schreibe soll als Antwort „reboot abgebrochen“ kommen und dann sollen wieder die Standard-Befehle erkannt werden also auf ein erneutes „nein“ würde wieder „Fehler“ zurückkommen..

    Geht das irgendwie und wenn ja wie

    LG Alex

    Antworten
    • Felix am 1. Mai 2016 15:45

      Ja, das geht 🙂 Ich würde dazu z.B. den letzten ausgeführten Befehl irgendwo (z.B. in einer Textdatei) speichern. Du prüfst bei einer Eingabe dann, ob ein vorheriger Befehl gespeichert wurde. Falls ja überprüfst du die neue Eingabe (ja/nein/else) und reagierst darauf (am Ende solltest du die Datei leeren). Falls nicht überprüfst du die Eingabe ganz normal auf die bisherigen Befehle (reboot/shutdown/uptime/etc) und speicherst ggf. den Befehl in der Datei, falls darauf im nächsten Schritt reagiert werden soll.
      LG Felix

      Antworten
  83. Raphael Schib am 15. Mai 2016 10:36

    Guten Morgen Felix
    Zuerst mal ein grosses Kompliment, einfach ein super Tutorial! Es klappt wirklich alles bestens.
    Nun möchte ich aber, dass mir nicht nur eine Zeile als Antwort zurück geschrieben wird sondern ganze Dokumente. Ich habe mal ein bisschen mit file.readlines herum probiert, jedoch bekam ich immer nur die erste Zeile ans Antwort.
    Hättest du hier eine Idee?

    Danke und liebe Grüsse aus der Schweiz.
    Raphael

    Antworten
    • Felix am 15. Mai 2016 15:21

      Hi Raphael,
      hast du mal versucht das Dokument in eine Variable zu lesen und mit n (Backslash und dann n) statt jedem Zeilenumbruch zu setzen? Eventuell kannst du dann den ganzen String inkl. Zeilenumbrüche versenden.

      Antworten
    • Raphael Schib am 15. Mai 2016 19:07

      Hallo Felix
      Danke für deine schnelle Antwort.
      Ja das habe ich eben auch schon probiert und zwar so:
      file = open(‚./test‘, ‚r‘)
      print file.readlines()
      file.closed

      [‚hallo wie n‘, ’sdfsafn‘, ‚dsfsdfn‘, ‚dssafn‘]

      Als Nachricht bekomme ich nur „[hallo“ 🙂

      Mit freundlichen Grüßen
      Raphael

      Antworten
      • Felix am 15. Mai 2016 19:36

        Ich meinte es als einen kompletten String, also z.B: 'hallo wie nsdfsafndsfsdfndssafn'

    • Raphael Schib am 15. Mai 2016 19:12

      Habe heraus gefunden was das Problem war. Und zwar das Leerzeichen das Problem 🙂

      Antworten
  84. Fabian am 4. Juni 2016 0:28

    Hallo,
    kann mir jemand bitte helfen?
    Ich habe heute meinen pi 3 bekommen und habe noch nicht viel Ahnung^^ .Kann mir jemand bitte sagen was daran faklsch ist/ich verändern muss? Es kommen 2 Hacken, aber keine Nachricht zurück

    function on_msg_receive (msg)
    if started == 0 then
    return
    end
    if msg.out then
    return
    end
    --Damit der "Gelesen Haken" erscheint
    if msg.text then
    mark_read (msg.from.print_name, ok_cb, false)
    end
    
    --Ggf. nur eine Rufnummer zulassen:
    if msg.from.print_name ~= 'Vorname Nachname' then
    return
    end
    if (string.lower(msg.text) == 'uptime') then
    local handle = io.popen("sudo python /home/pi/tg/tg_actions.py uptime")
    local res = handle:read("*a")
    handle:close()
    return
    elseif (string.lower(msg.text) == 'shutdown') then
    local handle = io.popen("sudo python /home/pi/tg/tg_actions.py shutdown")
    local res = handle:read("*a")
    handle:close()
    return
    elseif (string.lower(msg.text) == 'reboot') then
    local handle = io.popen("sudo python /home/pi/tg/tg_actions.py reboot")
    local res = handle:read("*a")
    handle:close()
    return
    else
    end
    
    end

    Danke schon mal 🙂

    Antworten
    • Felix am 4. Juni 2016 3:16

      Hast du dich als Kontakt eingespeichert? Wenn ja, hast du auch die Zeile if msg.from.print_name ~= 'Vorname Nachname' then angepasst?

      Antworten
    • Fabian am 4. Juni 2016 13:07

      ja habe ich :/

      Antworten
      • Felix am 4. Juni 2016 22:51

        Poste mal deine komplette Datei auf http://pastebin.com/ und verlinke sie hier.

  85. Fabian am 5. Juni 2016 11:37

    http://pastebin.com/ha8QQ3yY
    http://pastebin.com/ddeHrLSx
    Das sind die beiden Dateien, die ich habe.
    Danke für die Antwort:)

    Antworten
    • Felix am 5. Juni 2016 12:44

      Also du hast den Namen nicht angepasst (Zeile 15, zweite Datei) oder hast du deine eigene Nummer als „Vorname Nachname“ eingespeichert?

      Antworten
    • Fabian am 5. Juni 2016 14:15

      Doch, ich wollte nur meinen Namen hier nicht öffentlich posten^^
      und sonst stimmt alles ? ich komme da echt nicht weiter :/

      Antworten
      • Felix am 5. Juni 2016 15:32

        Hast du auch versucht schrittweise zu debuggen? Sprich z.B. logs zu setzen und zu schauen, bis wohin es ausgeführt wird?

    • Fabian am 5. Juni 2016 16:21

      wie debuggt man etwas den ? welche logs muss man setzten? wie gesagt ich bin ganz neu im bereich raspberry:)

      Antworten
  86. Jens am 13. Juli 2016 17:20

    Ich hänge auch genau an dieser Stelle fest:
    if msg.from.print_name ~= 'Jens Nachname' then...
    Das ist immer war, auch wenn Jens Nachname was schickt. Jens Nachname ist als einziger Eintrag in den Kontakten drin.

    Ich habe zwei Clients laufen. Einen auf Android auf meinen Namen „Jens Nachname“.
    Der andere ist telegram-cli auf Ubuntu für den User „Manfred Nachname“.
    Die können sich prima unterhalten.

    Das lua Skript läuft (natürlich bei telegram-cli für Manfred Nachname), kommt aber über die Abfrage oben nie weiter. Die Abfrage ist immer wahr 🙁

    Außerdem möchte ich sowieso lieber die ID statt des Namens abfragen. Ich habe es auf Verdacht versucht mit
    if msg.from.id ~= ‚215836652‘ then
    oder auch
    if msg.from.id ~= 215836652 then
    -> Kein Fehler aber auch keine Verbesserung.

    Auch mit dem Usernamen (der mit @ beginnt) habe ich es versucht. Mit und ohne vorangestelltes @. Immer ohne Erfolg.

    Frage 1: Wie geht überhaupt eine funktionieren Abfrage?
    Frage 2: Wie geht es über die ID? (Denn der Displayname ist nicht sicher)

    Antworten
    • Felix am 13. Juli 2016 18:59

      Hast du mal alle diese Werte ausgeben lassen (msg.from.print_name usw. per print ausgeben)? Am besten ganz am Anfang der FUnktion, sodass es erst einmal für jeden User angezeigt wird. So kannst du die Details (Name, User, etc.) desjenigen finden, welcher dir eine Nachricht geschrieben hat (z.B. du selbst).

      Antworten
  87. Jens am 13. Juli 2016 18:48

    Puh, teilweise etwas herausgefunden:

    Antwort zu 1: Die Abfrage muss lauten
    if msg.from.print_name ~= ‚Jens_Nachname‘ then…

    Entscheidend ist der Unterstrich statt eines Leerzeichens. Wurde diese Falle irgendwo erwähnt? Ist mir nicht aufgefallen.

    Frage 2 interessiert mich aber weiterhin.

    Antworten
  88. Rudik am 22. August 2016 14:32

    Hallo, ist es möglich, dass telegram die nachrichten in einem gesichertem chat versendet. sprich secure_chat?

    Antworten
    • Felix am 22. August 2016 19:54

      Als ich das Programm erstmals benutzte, gab es die Option noch nicht. Inzwischen aber schon. Siehe hier: https://github.com/vysheng/tg#supported-commands

      Antworten
  89. Rudik am 22. August 2016 17:08

    Ein anderes Problem ist, dass ich telegram ansteuern kann, uptime, shutdown und reboot funktionieren perfekt…jedoch schafft es das system nicht die nachricht vorher als gelesen zu markieren, was dazu führt, dass reboot und shutdown nach einem neustart sofort wieder ausgeführt werden. sprich ich habe eine schleife drin 🙁 ist es möglich einen sleep befehl einzubauen, dass telegram 20 sekunden wartet, bevor der befehlt ausgeführt wird?

    Antworten
    • Felix am 22. August 2016 19:52

      Klar, du kannst vor den shell Befehl (reboot, shutdown, etc.) einen Sleep Befehl ausführen.

      Antworten
  90. Rudik am 5. September 2016 11:31

    Ok, das mit der Sleep funktion klappt, jedoch markiert er die nachricht nicht als gelesen, und wenn ich telegram neu öffne, führt er den befehl erneut aus. also immernoch in der loop schleife ;(
    @Felix: Hast du dich schon mal mit dem telepot beschäftigt? (http://www.instructables.com/id/Set-up-Telegram-Bot-on-Raspberry-Pi/?ALLSTEPS)

    Antworten
    • Felix am 5. September 2016 13:05

      Das Problem was ich damals in den Telegram Bots gesehen habe, ist dass sie für Jedermann zugänglich sind. Ich emppfand das als nicht unbedingt gewünscht. Wenn es allerdings Anklang findet, könnte ich darüber bestimmt etwas schreiben.

      Antworten
  91. Dan am 5. September 2016 12:53

    Also ich verzweifle an deinem Python Script 🙁

    Ich bekomme die ganze Zeit diesen Fehler:

    File „tg_actions.py“, line 15
    uptime_seconds = float(f.readline().split()[0])
    ^
    IndentationError: expected an indented block

    Ich habe bereits geprüft auf Spaces oder Tabs, es sind immer 4, genau dort wo sie hingehören. Habe das Script sogar noch mal händisch geschrieben, es funzt einfach nicht bei mir 🙁

    Hast du noch irgend eine Idee ?

    Antworten
    • Felix am 5. September 2016 13:01

      Vor der Zeile fehlen Leerzeichen. Ist nun aktualisiert 🙂

      Antworten
    • DAN am 5. September 2016 14:01

      danke, es geht voran 🙂

      Jetzt funzt es auch, wenn ich „uptime“ eingebe, bekomme dann aber noch 4x hinterher „Fehler“ geschickt ?

      Antworten
  92. Dan am 5. September 2016 12:58

    Sobald ich den Part mit der Uptime auskommentiere funktioniert das Script tadellos, sehr merkwürdig.

    Antworten
  93. Dietmar am 7. September 2016 8:56

    Hallo Felix,
    🙂 good work 🙂 schönes Tut 🙂 Respekt !!!
    Wie bringe ich Telegram dazu, seine Console-Ausgaben zu loggen ?
    Aufruf … -L /tmp/Telegram.log (oder /var/log/Telegram.log) -l 1 (oder -l 5)
    erzeugt keine der Files ! Die Scripts laufen, Frage/Antwort-Spiel funktioniert.
    Ich hätte gerne das ALLES (User xxx online; User xxx marked; …) in einer LOG-Datei gespeichert wird. Was mich verwirrt, das er gar keine LOG anlegt. Auf vysheng nichts hilfreiches gefunden (mein english ist nur rudimentär).
    Gruß Dietmar

    Antworten
    • Felix am 7. September 2016 11:21

      Hallo Dietmar,
      ausloggen habe ich nie explizit gebraucht, es reichte wenn ich die config Files gelöscht habe.
      Bzgl loggen: Mit den Shellbefehl echo "Test test" >> /pfad/datei.txt kannst du loggen. Statt echo könntest du auch jeden anderen Befehl nutzen, siehe hier.

      Antworten
  94. Dietmar am 7. September 2016 13:11

    Danke Felix !

    Ich habe soeben bei vysheng/tg ein issue erstellt.
    Schaun mer ma ob die entwickler mich verstehen und ich dann die antwort 🙂
    (me and english – a never ending story 🙂

    Antworten
  95. Christian am 16. Oktober 2016 17:11

    Moin,

    tolles Tutorial, trotz meiner wenigen Kenntnisse habe ich es relativ gut zum laufen bekommen.
    Bis auf den Autostart läuft es auch soweit ganz gut, das Problem liegt dabei nicht unbedingt in der Einbindung im Autostart, sondern eher an der Verarbeitung der Nachrichten. Wenn ich dem System einen Reboot oder Shutdown Befehl sende, bleiben die Nachrichten ungelesen und es kommt auch keine Antwort vom Raspberry zurück, der Befehl wird stumpf ausgeführt. Nach dem Neustart wenn ich die Skripte wieder starte wird der letzte Befehl solange immer wieder bearbeitet, bis das System irgendwann mal einen neuen Befehl oder einen Text, den es nicht zuordnen kann als letzte Message hat.

    Ich hoffe das war so halbwegs verständlich 🙂 und hoffentlich hat jemand eine Idee wie ich es hinbekomme, dass der Raspberry eine Antwort auf den Befehl gibt, bevor er ausgeführt wird.

    Gruß Christian

    Antworten
  96. Marcel am 19. Oktober 2016 10:31

    Hallo,

    damit dies funktioniert und du auch eine Antwort bekommst, könntest du die „tg_actions.py“ bearbeiten mit einer Verzögerung von 1 min. bei den Befehlen „shutdown“ und „reboot“.
    ——
    #!/usr/bin/python

    import sys
    import os
    from datetime import timedelta

    if sys.argv[1] == „shutdown“:
    print „Das System wird in 1 min. heruntergefahren“
    os.system(„shutdown -h 1“)
    elif sys.argv[1] == „reboot“:
    print „Das System wird in 1 min. neugestartet“
    os.system(„shutdown -r 1“)
    elif sys.argv[1] == „uptime“:
    with open(‚/proc/uptime‘, ‚r‘) as f:
    uptime_seconds = float(f.readline().split()[0])
    uptime_string = str(timedelta(seconds = uptime_seconds))
    print(uptime_string[:-7])
    #else:
    #falls kein Argument zutrifft
    ——
    So sollte es funktionieren….

    Lg, Marcel

    Antworten
    • Christian am 21. Oktober 2016 22:03

      Das hat geklappt vielen Dank.

      Antworten
  97. Alex A. am 13. November 2016 11:54

    Hallo, hab’s endlich geschafft das alles Funktioniert. Natürlich Dank dieser Super Anleitung. Ich würde gerne in der test.lua einen URL Aufruf ausführen. Kann mir bitte jemand helfen.
    So etwas habe ich vor:

    if (msg.text == ‚Out1‘ or msg.text == ‚out1‘) then
    send_url (192.168.xxx.xxx/ausgang1_setzen)
    return
    end

    MfG Alex

    Antworten
    • Felix am 13. November 2016 15:17

      Hi Alex,
      schau mal hier: http://w3.impa.br/~diego/software/luasocket/http.html
      LG, Felix

      Antworten
    • Alex A. am 15. November 2016 20:52

      Hallo Felix,

      danke aber ich verstehe nur Bahnhof. Aber so habe ich es gelöst und funktioniert.

          os.execute('wget -O /dev/null "http://192.168.xxx.xxx:xx/control/trigger_event?event_name=OnDTMF_%22%23%22&event_source=doorpi.sipphone.linphone_lib.CallBacks"')

      Jetzt brauche ichs genau anders rum. Was muß ich z.B. im Browser eintippen damit ich eine Nachricht senden kann?
      Oder ist das nicht möglich?

      IPvomRasspberryPimitTelegram_cli:Port/?msg Vorname_Name „Hallo!“

      LG, Alex

      Antworten
      • Felix am 15. November 2016 21:00

        Du könntest eine PHP Seite erstellen und exec nutzen, um ein Skript (z.B: Telegram Send Skript) zu starten.

  98. Lukas am 7. Dezember 2016 20:12

    Hallo zusammen,
    ich habe leider ein Problem. Ich versuche schon seit einiger Zeit das so zum Laufen zu bringen, wie es heir beschrieben ist. Leider klappt es bei mir eher so gar nicht. Dh im genauen Telegram funktioniert, allerdings klappt das Antworten aber gar nicht. Ich kriege gar keine Antwort obwohl ich es genauso gemacht habe wie beschrieben. Muss ich noch iein message on oder skript compilen? Es läuft leider nicht bei mir….

    Antworten
  99. Skipper am 25. Dezember 2016 18:28

    Hallo Felix…

    Ich habe ein Problem beim start von Telegram mit dem lua Gedöns….

    Vorabinfo: Raspi 3, Frisches Raspian Pixel, 433utils installiert, screen installiert, und natürlich alle updates bis stand heute…

    Telegram lässt sich (direkt vom Raspi im Terminal) starten, ich kann Nachrichten senden & empfangen… (Hab da extra ne prepaidkarte für besorgt & die Rufnummer für den Raspi verwendet um Telegram anzumelden…)

    Hab die test.lua nach dem Tutorial bearbeitet, die tg_steuerung.py erstellt (selber Inhalt wie Deine tg_actions.py) und das send_script ist auch da…

    beide Dateien per chmod […] die rechte gegeben…
    Sollte laut tut also direkt laufen..

    Tut aber nicht…
    Sobald ich die test.lua in der befehlszeile erwähne, schmeisst er mir nen Fehler raus:

    pi@raspi:~ $ tg/bin/telegram-cli -s tg/test.lua -k tg/tg-server.pub
    Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman
    Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license‘.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show_license‘ for details.
    Telegram-cli uses libtgl version 2.1.0
    Telegram-cli includes software developed by the OpenSSL Project
    for use in the OpenSSL Toolkit. (http://www.openssl.org/)
    I: config dir=[/home/pi/.telegram-cli]
    *** 1482686341.269046 lua: tg/test.lua:134: expected near ‚end‘
    pi@raspi:~ $

    starte ich danach nochmal Telegram ohne die test.lua, bekomme ich sofort die Nachrichten angezeigt die ich versendet habe um Aktionen auszuführen… (aktuell nur uptime, shutdown & reboot)..

    später möchte ich dann 433 MHz Funksteckdosen via Telegram ansteuern…

    Was mach ich falsch??
    By the way: wie kann ich einen 2., 3., 4., … „berechtigten Benutzer“ hinzufügen??
    zwischendrin hab ich noch gelesen, das eine Weiterleitung der Nachrichten von nicht berechtigten Benutzern an mich möglich ist.. Das würde ich dann natürlich auch gern mit einbauen…

    Aber nun zunächst sollte es erstmal laufen…

    Hast Du ne Idee???

    Antworten
    • Felix am 25. Dezember 2016 18:43

      Was befindet sich denn in Zeile 134 deiner lua Datei?
      Andere berechtigte Nutzer kannst du hinzufügen, indem du nicht nur auf deine Mobilfunknummer/Kontakt prüfst sondern eben auch auf andere:

      if msg.from.print_name ~= 'Kontakt_Name' or msg.from.print_name ~= 'Kontakt_Name2' then

      LG, Felix

      Antworten
    • Skipper am 25. Dezember 2016 21:54

      Hallo Felix…
      Da da nur „end“ steht, mal die vorhergehenden zeilen… die 134 ist separat markiert…

      http://pastebin.com/nHy1JXTc

      Antworten
      • Felix am 25. Dezember 2016 22:02

        Bitte poste mal deine ganze Datei auf http://pastebin.com und verlinke es hier.

  100. Skipper am 25. Dezember 2016 22:15

    Hier ist sie…

    http://pastebin.com/2XAs0BzZ

    Antworten
    • Felix am 25. Dezember 2016 22:20

      Du beendest eine Funktion, die nicht „gestartet“ wurde. Ich denke du hast da ausversehen etwas gelöscht. Am besten du nimsmt die Original test.lua und bearbeitest die nochmal.

      Antworten
  101. Skipper am 25. Dezember 2016 22:27

    OK, versuch ich dann morgen mal…

    Danke…

    Antworten
  102. Skipper am 26. Dezember 2016 14:51

    Hallo Felix..

    habs gerade mit der Original test.lua versucht ohne diese vorher zu bearbeiten..

    Das Resultat:
    pi@raspi:~ $ tg/bin/telegram-cli -s tg/test.lua -k tg-server.pub
    Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman
    Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license‘.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show_license‘ for details.
    Telegram-cli uses libtgl version 2.1.0
    Telegram-cli includes software developed by the OpenSSL Project
    for use in the OpenSSL Toolkit. (http://www.openssl.org/)
    I: config dir=[/home/pi/.config/telegram-cli]
    HI, this is lua script
    *** 1482760075.758558 lua: /usr/share/lua/5.2/lgi/namespace.lua:151: Typelib file for namespace ‚Notify‘ (any version) not found

    mir scheint als fehle ihm noch was..

    Antworten
  103. Skipper am 26. Dezember 2016 15:24

    wer lesen kann…

    war die geschichte mit dem inneren teil von:

    — Notification code {{{

    bis jetzt läufts…
    Mach mich dann jetzt ans feintuning

    Danke schonmal für Deine Hilfe..

    Antworten
  104. Skipper am 26. Dezember 2016 23:21

    Hallo Nochmal…

    Hab es bis jetzt soweit am laufen, das er mir den Doppelhacken gibt & auf unbekannte Befehle mit entsprechender Nachricht antwortet…

    Der rest klappt nicht…
    Hier mal der verlauf vom Raspi:

    > [23:14] Admin >>> uptime
    FAIL: 71: RPC_CALL_FAIL 400: MESSAGE_EMPTY
    All done. Exit
    halt
    [23:14] Admin >>> uptime
    User Admin is typing
    File „/home/pi/tg/tg_actions.py“, line 15
    uptime_seconds = float(f.readline().split()[0])
    ^
    IndentationError: expected an indented block
    Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman
    Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license‘.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show_license‘ for details.
    Telegram-cli uses libtgl version 2.1.0
    Telegram-cli includes software developed by the OpenSSL Project
    for use in the OpenSSL Toolkit. (http://www.openssl.org/)
    I: config dir=[/home/pi/.telegram-cli]
    > [23:14] Admin >>> reboot
    FAIL: 71: RPC_CALL_FAIL 400: MESSAGE_EMPTY
    All done. Exit
    halt
    [23:14] Admin >>> reboot
    Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman
    Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license‘.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show_license‘ for details.
    Telegram-cli uses libtgl version 2.1.0
    Telegram-cli includes software developed by the OpenSSL Project
    for use in the OpenSSL Toolkit. (http://www.openssl.org/)
    I: config dir=[/home/pi/.telegram-cli]
    > [23:15] Admin >>> huhu
    [23:15] Admin <<< Unbekannter Befehl…
    All done. Exit
    halt
    *** 1482790557.727879 lua: tg/test.lua:101: attempt to call global 'get_title' (a nil value)

    Ich bin da gerade etwas Ratlos…

    Antworten
    • Felix am 26. Dezember 2016 23:24

      Hast du den Fehler, der in Zeile 101 erfolgt, schon gegooglet? 😀

      Antworten
  105. Tim am 25. Januar 2017 17:20

    Hi zusammen,
    ich hänge nun schon einige Zeit hier fest. Ich habe die Skripte wie Nils am
    29. Oktober 2014 um 0:50

    Allerdings bekomme ich immer diese Fehlermeldungen:
    ./send_script: line 2: syntax error near unexpected token `newline‘
    ./send_script: line 2: `/root/tg/bin/telegram-cli -k /root/tg/tg-server.pub<'

    Kann mir jemand helfen? Vielen Dank

    Antworten
  106. Florian am 26. Januar 2017 22:58

    Hallo Felix,
    ich habe ein Problem mit der test.lua datei und komm gerade – auch mit den Kommentaren- nicht weiter. Der Personenabgleich bei:

    if msg.from.print_name ~= 'florian_admin' then	
      	os.execute("/home/pi/tg/send_script ".. msg.from.print_name ..)
            return
        end

    gibt mir bei der Ausführung den Fehler, dass an der os.execute Zeile ein „unexpected symbol near ‚)‘ “ übergeben wird.
    Der User wurde via add_contact als florian admin angelegt.

    Ohne diesen Codeblock funktioniert der Messenger problemlos.

    Antworten
    • Florian am 26. Januar 2017 23:16

      Zusätzlich hänge ich jetzt auch noch in einer reboot schleife fest und weiß nicht wie ich diese unterbrechen kann

      Antworten
    • Felix am 26. Januar 2017 23:41

      Ja, die Syntax ist falsch. Die zwei Punkte am Ende besagen, dass der als nächstes ein String angehängt wird, aber du beendest den Befehl…

      Antworten
    • Florian am 27. Januar 2017 8:47

      Alles klar, so hat es wohl funktioniert. Ich habe die beiden Punkte gelöscht und es reagiert auf mich ohne Fehlermeldung. Das müsste evtl im Tutorial angepasst werden.

      Den Reboot-Loop habe ich jetzt mit dem Delay von „Marcel sagt:
      19. Oktober 2016 um 10:31“ gelöst.
      Hier muss allerdings der noch reboot befehl in der tg_actions.py angepasst werden. Bei mir funktioniert
      os.system(„shutdown -r -t 60“)

      Aber soweit sehr sehr großes Lob an dich Felix und Danke für die schnelle Hilfe. Da das jetzt funktionert mach, ist mein nächster Punkt ein Temperatursensor und dannach eine Sprachansteuerung.

      Antworten
  107. lukkke am 31. Januar 2017 0:14

    Hallo ich habe ein ähnliches Problem wie Florian vor mir, vielleicht kannst du mir ja sogar helfen. Wenn ich dem Pi über Telegram „Reboot“ schreibe fährt er in eine Schleife, in der er immer wieder hochfährt und sofort wieder bootet. Ich bin leider mit meinem Latein am Ende und weiß nicht wieso das so passiert. Ich hoffe auf eure Tipps

    Antworten
  108. Wolli am 1. Februar 2017 13:34

    Hallo Felix.
    Wahnsinn! 2 1/2 Jahre – und immer noch Support. Super!
    Ich würde mich als eher „Erfahren“ beschreiben – aber nicht in Python. Bei mir laufen sonst alle meine Programme unter C++.
    Trotzdem klemme ich bei zwei Dingen, auf die ich bislang selbst auf englischen und teils arabischen Seiten meine befriedigende Antwort gefunden habe:
    1. Ich möchte im test.lua Skript auf „Hilfe“ eine Kommandoliste mit Beschreibung ausgeben. Das klappt, nur gelingt mir keine Formatierung mit Zeilenumbrüche. Der Text ist in Deinem tg_actions.py Skript hinterlegt – z.B. >>print „Befehlsliste: Foto: Foto von der IPCAM Next: Naechster Musiktrack An: Licht an Aus: Licht aus Hilfe: Diese Hilfe“<>./bin/telegram-cli -k ./tg-server.pub -W -e „msg USER_NAME Hallo Test““<< mache, erhalte ich die Antwort:
    [12:47] USER NAME << All done. Exit
    halt
    Danach ist der „alte“ test.lua Task „taub“. Der Prozess läuft weiter, aber meine Eingaben/Kommandos auf den Handy werden ignoriert. Erst nach telegram-cli Neustart reagiert die test.lua wieder. Wie kann man etwas an einen User senden, ohne das die test.lua die Arbeit einstellt?

    Antworten
  109. Wolli am 1. Februar 2017 13:39

    Mist, Steuerzeichen kommen in einem Kommentarblog nicht so gut 🙂

    Nächster Versuch (Steuerzeichen diesmal in Uppercase ausgeschrieben):

    1. Ich möchte im test.lua Skript auf „Hilfe“ eine Kommandoliste mit Beschreibung ausgeben. Das klappt, nur gelingt mir keine Formatierung mit Zeilenumbrüche. Der Text ist in Deinem tg_actions.py Skript hinterlegt – z.B. –print „Befehlsliste: Foto: Foto von der IPCAM Next: Naechster Musiktrack An: Licht an Aus: Licht aus Hilfe: Diese Hilfe“–. Egal ob ich BACKSLASH n oder PROZENT 0A als Zeilenumbruch einsetze. Es klappt nicht bzw. mit BACKSLASH n wird nur der Text bis zum ersten BACKSLASH n auf meinem Handy ausgegeben. Der Rest wird ignoriert.
    2. Wenn ich während des laufenden test.lua Skripts eine Ausgabe wie —./bin/telegram-cli -k ./tg-server.pub -W -e „msg USER_NAME Hallo Test““— mache, erhalte ich die Antwort:
    [12:47] USER NAME — Hallo Test
    – All done. Exit
    halt
    Danach ist der „alte“ test.lua Task „taub“. Der Prozess läuft weiter, aber meine Eingaben/Kommandos auf den Handy werden ignoriert. Erst nach telegram-cli Neustart reagiert die test.lua wieder. Wie kann man etwas an einen User senden, ohne das die test.lua die Arbeit einstellt?

    Antworten
  110. Wolli am 8. Februar 2017 8:00

    Meine 2. Frage ist sogut wie beantwortet – dank dem Hinweis oben von Daniel vom 26. März 2015 um 17:49! Die 2. Option mit dem Port funktioniert. Ich kann sowohl mit lua Skript meinen Pi steuern, als auch Eventmessages über einzelne msg Aufrufen ausgeben.
    Nun hänge ich noch beim richtigen Autostart von Telegram. Wie hier häufig beschrieben läuft Telegram als Prozess – nur stellt es sich taub. Erst von Hand gestartet läufts. Ich habe den Telegram Aufruf aus Crontab rausgenommen und ins spätere rc.local eingebaut – ohne Erfolg.

    Antworten
  111. Wolli am 15. Februar 2017 7:50

    Hi, habe das Startproblem für mich auch gelöst bekommen. Dabei nutze ich bei Autostart nach Reboot über crontab ein kurzes ShellSkript in dem ich den Telegram Screen Aufruf mit sudo mache.
    Dann bleibt nur noch meine Frage nach Zeilenumbrüche in der Telegram Ausgabe von test.lua…

    Antworten
  112. Wolli am 23. Februar 2017 14:03

    Letzte Frage bzgl. Zeilenumbrüche konnte ich ebenfalls klären: Ich lege den Text in eine Datei ab und nutze den TelegramBot Aufruf send_text 🙂

    Antworten
  113. Lulalaby am 18. April 2017 16:07

    Sehr geil
    Funktinoert top bei mir 🙂

    Danke

    Antworten
  114. Patrick am 25. April 2017 20:14

    Moin Zusammen,

    Sehr geile Seite die du hier hast. Macht sehr viel Spaß die Tutorials auszuprobieren und dabei den Pi und seine Eigenheiten kennen zu lernen. Nun steh ich aber etwas auf dem Schlauch und hoffe das mir hier geholfen werden kann.
    Wenn ich das Skript via „screen -S TelegramCLI ~/tg/bin/telegram-cli -s ~/tg/test.lua -k ~/tg/tg-server.pub“ starte.
    Kommt folgende Fehler Meldung:
    „*** 1493066476.618270 lua: attempt to call a nil value“
    Wo liegt der Fehler kann mir da jemand helfen?
    Das Skript hier: https://pastebin.com/S2GbUTU3

    Antworten
  115. Serkan am 7. Juli 2017 18:57

    Hey!
    Super Tutorial, danke dafür.

    Ich hab ein kleines Problem wobei ich nicht weiterkomme. Befehle per Handy an rpi klappt super, bekomme auch die jeweiligen Antworten wie aktuelle Temperatur, Uptime etc. zurück & beim Shutdown fährt er herunter. Nun zum Problem: beim Reboot startet er neu… und nachdem über cronjob (nach jedem reboot) screen mit telegram im Hintergrund startet nimmt es den letzten Befehl – sprich: erneuter Reboot.

    Gibt es eine Möglichkeit die letzten Befehle bei jedem Neustart zu löschen? Oder hat jemand von euch eine Idee?

    Danke im Voraus.

    Beste Grüße, Serkan

    Antworten
    • Felix am 7. Juli 2017 18:59

      Prüfe z.B. auf Zeit (nur wenn die Nachtricht innerhalb der letzten 5 Sekunden kam, soll der Befehl ausgeführt werden, ansonsten ignorieren).

      Antworten
      • Saagijan am 6. September 2017 12:49

        und wie kann ich das realisieren?

      • Felix am 13. September 2017 20:38

        Das Nachrichtenobjekt hat mehrere Attribute – diese kannst du nutzen.

  116. Jörg am 9. September 2017 18:35

    Hallo, vielen Dank für Das Tutorial, hat super geklappt.

    Ich starte nun telegram-cli beim Autostart vom Raspberry pi und er reagiert wie gewollt auf Nachrichten.

    Nun möchte ich aber aus einer anderen Applikation auch eine Nachricht über Telegram versenden. Wenn ich zb. vom Raspberry pi flolgendes eingebe: bash send_script ZIELKONTAKT ‚Hallo Test‘
    kommt ‚Hallo Test‘ zwar an, aber telegram-cli im Hintergrund läuft dann nicht mehr…

    Hat noch wer das Problem? Hat wer eine Lösung parat?

    Gruß,
    Jörg

    Antworten
    • Felix am 13. September 2017 21:33

      Starte telegram mal im Vordergrund (ohne screen) und schau was der Log sagt.

      Antworten
  117. JD am 14. November 2017 23:16

    Hi,
    bei mir klappt alles. Ich würde nur gerne wissen wie ich mehre nummern zulassen kann.
    Mit „or“ habe ich schon rumprobiert, klappte aber nicht .
    Gruß JD

    Antworten
    • Felix am 15. November 2017 20:20

      or ist Lua Syntax. poste ggf. mal den Code Ausschnitt, der nicht funktioniert.

      Antworten
      • JD am 23. November 2017 15:08

        das ist der Code in der test.lua ich bekomme immer die Antwort ungültige nummer zurück, auf beiden Rufnummern

        if msg.from.print_name ~= 'XXX-XXXX_XXXX' or
                msg.from.print_name ~= 'XXXX'  then
                os.execute("~/Dokumente/Telegram/Befehle/send_script " .. msg.from.print_name .. " 'Ungueltige Nummer, keine Berechtigun$
                return
            end
      • Felix am 23. November 2017 15:24

        Logge mal die Nummer, ich denke dein Format ist falsch (print(msg.from.print_name))

      • JD am 27. November 2017 10:51

        Was meinst du mit logge ?

      • Felix am 27. November 2017 14:24

        Auf der Konsole ausgeben / in einer Datei speichern / print.

      • JD am 28. November 2017 18:34

        das wird ausgegeben, das gleiche bei dem ersten Kontakt, einzeln klappt alles

        > [17:30] IFTTT >>> test1
        [17:30] IFTTT <<< Ungueltige Nummer, keine Berechtigung
        All done. Exit
        halt

      • Felix am 29. November 2017 1:06

        Und was hast du da geloggt?

      • JD am 29. November 2017 11:31

        die Ausgabe die kommt wenn ich das Script manuell starte

      • Felix am 29. November 2017 11:35

        Logge vor der Abfrage nach der Nummer doch einmal, welche Nummer überhaupt ankommt…

      • JD am 29. November 2017 23:51

        Ich bekomme als Ausgabe die Kontakte die in meinem Script oben mit X verdeckt sind

  118. Kevin am 12. Februar 2018 15:06

    Hallo, ich habe das Problem, die Funktion on_msg_receive in meinem lua script nicht ausgeführt wird, wenn ich meinem Pi eine Nachricht sende.
    Ich habe in der Funktion an der ersten Stelle gleich stehen, dass ich eine Antwort erhalten soll:

    function on_msg_receive (msg)
    os.execute("/home/pi/tg/send_script" Kevin_Nachname "ok")
      if started == 0 then
        return
      end
      if msg.out then
        return
      end
    --Damit der "Gelesen Haken" erscheint
      if msg.text then
            mark_read (msg.from.print_name, ok_cb, false)
      end

    Wenn ich den Befehle /home/pi/tg/send_script Kevin_Nachname „ok“ im Terminal eingebe, wird die Nachicht gesendet.
    Den Befehl für das starten des Dienstes habe ich auch ausgeführt:
    screen -dmS TelegramCLI ~/tg/bin/telegram-cli -s ~/tg/test.lua -k ~/tg/tg-server.pub

    Ich hoffe mir kann jemand weiterhelfen, aber schon einmal vielen Dank für das Tutorial
    Kevin

    Antworten
    • Kevin am 12. Februar 2018 15:30

      Edit: Habe den Fehler gefunden, das test.lua script war fehlerhaft, da ich es aber immer mit dem screen Befehl ausgeführt habe, erhielt ich keine Ausgabe. Fehler behoben. Vielen Dank nochmals für eure Tutorials

      Antworten
  119. chris am 23. April 2018 16:32

    hallo mitlesende, hallo felix!
    wow, ich bin beeindruckt von deinem anscheinend grenzenlosen einsatz und support für dieses tutorial… nach so vielen jahren hältst du diese anleitung immer noch aktuell und antwortest auf fast jede frage! ganz großes lob und danke auch von meiner seite!
    ich habe meinen raspi bzw. telegram mit dieser anleitung und viel lesen und googeln, in den letzten monaten zum laufen gebracht, sowie die lua mit eigenen ideen und funktionen erweitert und ausgebaut. nur kurz am rande erwähnt, mein raspi steuert die stromversorgung meines schreibtisches – sprich modem/router, pc, monitor, soundanlage, drucker usw – ebenso ist ein huawei 3g dongle installiert, um unabhängig von einer internetverbindung (telegram) auch per sms das modem/router rebooten zu lassen. daraus ist eine sms-weiterleitung entstanden, sprich wenn eine sms rein kommt wird der inhalt mit den metadaten (zeitstempel der ankunft, absender nummer, db-id) per telegram weitergeschickt, ebenso kann ich per telegram-befehl eine sms versenden. nutze ich z.b. für zwei-faktor-authentifizierung welche ich nicht über meine „richtige“ handynummer laufen lassen möchte. aber eigentlich war das schon too much info…
    zu meinem eigentlichen problem:
    nach ca. 14 bis 20 tage dauerbetrieb, reagiert die lua nicht mehr auf eingehende telegram-nachrichten (befehle), der gelesen haken erscheint nicht mehr und der raspi-telegram-account wird nicht als online angezeigt. den telegram-cli starte ich beim booten des raspi über die rc.local im -d also im daemon mode, natürlich auch -s für den lua script, zusätzlich noch einige andere parameter sowie -P um an einem definierten port zu lauschen, über den ich die nachrichten bzw. texte an telegram übergebe. das ganze läuft soweit einwandfrei, befehle werden korrekt beantwortet und ausgeführt. bis zu einem punkt wo wie gesagt der lua-script einfach nicht mehr reagiert – bis jetzt immer so, wie in dem oben erwähnten zeitrahmen. der telegram-cli-daemon funktioniert aber weiterhin, wenn ich zb. über telnet manuel in der konsole eine nachricht an telegram übergebe, oder eine sms ankommt, wird sie mir am smartphone/desktop-client zugestellt.
    wenn ich dann in der konsole eine zweite instanz vom telegram-cli mit NUR den parametern -k -s starte, werden die in der zwischenzeit angekommenen und nicht verarbeiteten befehle erfolgreich abgearbeitet. in der telegram-konsole erhalte ich dann folgende ausgabe:

    [19 Apr] xxx xxx ««« Pong
    [22 Apr] xxx xxx >>> ping
    [15:30] xxx xxx >>> help
    [15:30] xxx xxx >>> uptime
    *** 1524490253.331101 lua: attempt to call a nil value
    *** 1524490253.336065 lua: attempt to call a nil value
    *** 1524490253.337165 lua: attempt to call a nil value
    > ANSWER 8
    SUCCESS

    ANSWER 8
    SUCCESS

    ANSWER 8
    SUCCESS

    +++zu der ausgabe sollte ich noch erwähnen, die „xxx xxx“ stehen für den im telegram abgespeicherten namen, das „ANSWER 8
    SUCCESS“ ist die rückmeldung vom telnet bzw. netcat übergabe-befehl. mich stutzt dabei die „lua: attempt to call a nil value“ ausgabe.+++
    dabei werden aber nur schon eingegangene befehle abgearbeitet, wenn ich die telegram-konsole offen lasse und zb. ein ping sende, wird kein pong zurück gesendet. erst wenn ich diese instanz der telegram-konsole mittels „quit“ oder „safe_quit“ beende und neu aufrufe wird der pong gesendet.
    nach einem reboot des raspi funktioniert alles wieder wie gehabt, meine folgerung daraus, die scripte sind zumindest alle in ordnung. jetzt wäre die große frage, kennst du felix oder einer der mitlesenden dieses verhalten? oder hat wer eine idee wie ich das problem eingrenzen oder herausfinden könnte – komme da im moment nicht weiter.
    natürlich könnte ich auch einen zweiten raspi aufbauen, auf dem NUR der telegram installiert ist, um herauszufinden ob das verhalten eventuell die installation oder eines der anderen dienste/programme verursacht/auslöst.
    bekanntlich stirbt die hoffnung aber zuletzt und vielleicht hat wer ein ähnliches problem – und ich bin nur an der richtigen such-formulierung im google gescheitert…

    mit dieser hoffnung, danke und liebe grüße, chris

    Antworten
  120. Thorsten am 21. Mai 2018 14:32

    Hallo,
    danke für das tolle Tutorial, ich habe meinen Pi entsprechend mit dem Python- und Lua-Skript zum Laufen gebracht, er reagiert auf die Telegram-Nachrichten. Über ein angepasstes „tg_actions“ Python-Skript kann ich auch GPIOs ein- und ausschalten.
    Der nächste Schritt ist jetzt das aktive Senden von Nachrichten durch den Pi auf Änderung von GPIO-Inputs. Ich habe die Postings zum Thema hier gelesen, bin aber ehrlich gesagt noch nicht ganz dahinter gekommen. wie ich das konkret umsetzen muss.
    Mein Ansatz ist die GPIO-Abfrage durch ein Python-Skript (das kann ich), aber wie geht dann die Parameterübergabe an das im Hintergrund laufende (!) Lua-Skript?
    Meine Idee, telegram-cli mit einem Argument (=Messwert) noch einmal zu starten bei im Hintergrund bereits laufendem Lua-Skript (aus diesem Tutorial) führt dazu, dass die erste Telegram-Instanz dann nicht mehr auf Anfragen reagiert. Sicher hat schon jemand das umgesetzt und kann mir einen Tipp geben. Danke!

    Antworten
  121. Lucien am 17. September 2018 15:37

    Hallo,
    Telegramm funktioniert soweit, kann Nachrichten empfangen und senden, habe mich auch als Kontakt auf dem rpi eingespeichert. Dieses Tutorial habe ich ohne Fehlermeldung durchlaufen, Problem ist nur es wird weder geantwortet noch bekomme ich ein gelesen Häkchen. Mir ist aber aufgefallen, dass am Ende bei „Screen – dmS Telegramm liegt………. /tg-server. pub“ keine Fehlermeldung auftaucht egal was ich hinter – dmS schreibe
    Hatte jemand das selbe Problem und konnte es lösen?

    Antworten
    • Lucien am 19. September 2018 10:02

      Hab mich mal ein bisschen belesen, und mir ist aufgefallen das wenn ich den screen – dmS TelegramCLI… (name der programme) eingebe wird kein screen erstellt, gebe ich jedoch nur screen – dmS TelegramCLI ein so erscheint mein screen unter screen – list.
      Selbst wenn ich nur screen – dmS TelegramCLI /tg/bin/telegram-cli eingebe was ja funktionieren müsste, da die vermutete Fehlerquelle ja im test. lua liegt und dieses nicht eingebunden ist, tut sich nichts. Ich bin jetzt echt ratlos kann mir da jemand weiter helfen? Bitte!!

      Antworten
  122. Jürgen Zetzmann am 18. September 2018 16:56

    Hallo,
    Einfach cool deine Anleitung und beispiel scripte.
    Habe es schön erweitern können zb Bilder von meinen Cam´s abholen usw. oder mir eine eigene Hilfe für die verbauten Befehle cool

    gruß
    Zetzi

    Antworten
  123. atallen am 19. November 2018 13:56

    Schade!
    Hab alles nach Plan gemacht. Das erste Tut lief auch und ich kann auch senden und empfangen nach den ich manuell im Terminal „bin/telegram-cli -k tg-server.pub “ eingebe.
    Hiermit kann ich jetzt mit meinem Handy Account von Telegram kommunizieren.
    Soweit sogut
    Jetzt hab ich diese Tut ausprobiert, hab das Luna Script verändert und das SendScript installiert, Die Rechte vergeben, Screen installiert und auch via crontab -e den Autostart gesetzt.
    Nach einem neustart passiert…. Gar nichts…
    Und wenn ich jetzt mit meinem Handy die Befehle: reboot, shutdown oder auch uptime eingebe passiert auch nichts. Auch wenn ich wieder die telegram-cli starte kann ich lediglich sehen das ich per Handy diese Befehle geschrieben hab. Also der CLI empfängt diese Wörter. Mehr passiert aber leider nicht. Beim CLI kommt auch kein blaues Häkchen auf mein Handy obwohl der Text durchkommt und angezeigt wird…
    Gibt es da eine aktuellere Version von diesem Tutorial…?
    Hab gelesen das es auch an Updates von Telegram liegen kann…
    Ich hab hier und da was angepasst z.B. msg statt mag_send / @ anstatt # keine Leerzeichen sondern _ / Hab auch die Tips der Forenschreiber probiert… Nichts… Das mit dem bash Script hat auch nicht geklappt… immer wieder dieser Fehler 38…
    Und ich hab auch darauf geachtet das die Nummer per add_contact eingebunden wurde. Wo kann ich da etwas falsch gemacht haben…

    Antworten
  124. Hannes am 14. Mai 2019 16:58

    Hi,

    ich konnte bis gestern um 12 Uhr Telegram auf meinem Raspberry nutzen. Unter anderem konnte ich per Befehl Bilder aufnehmen lassen und mir über Telegram ans Handy schicken lassen.

    Ich gebe weiterhin die gleichen Befehle zum Starten von Telegram ein, habe auch sonst nichts an Telegram geändert. Seit gestern nun taucht kann ich mich nicht mehr einloggen. Die Fehlermeldung ist:

    telegram-cli: tgl/mtproto-client.c:1206: mpc_on_get_config: Assertion `success‘ failed.
    SIGNAL received

    Kennt einer das Problem und kann mir helfen?

    Antworten
    • Mlrco am 2. November 2021 17:10

      Ja Genau, mir auch.
      Hatte Telegram fuer jahren am Raspberry benutzt aber jetzt gibt es diese Error:
      mpc_on_get_config: Assertion `success‘ failed
      keine Ahnung?

      Antworten
  125. Michael Klumb am 11. Oktober 2019 18:02

    Hallo zusammen,

    habe ein kleines Problem. Das CLI läuft im Hintergrund, solange ich nicht von „außerhalb“ eine Nachricht senden will.
    Mit „außerhalb“ meine ich zum Beispiel ein einfaches send_script in der Shell. Es wird dann kein „Gelesen-Häkchen“ mehr gesetzt (und auch nicht durch die test.lua bearbeitet) bis ich erneut send_script in der Bash ausführe. Allerdings wird der Befehl dann nicht mehr ausgeführt, sondern nur das Häkchen gesetzt.
    Gibt es eine Möglichkeit beides zu nutzen (also Befehlsbearbeitung in der test.lua und senden über die Bash).

    Vielen Dank, Michael

    Antworten

Hinterlasse einen Kommentar Antwort abbrechen

Raspberry Pi Bibliothek für mehrzeilige m x n MAX7219 LED Matrizen

Aufnahmen mit dem offiziellen Kamera Modul des Raspberry Pi

Mit Xbox 360 Controller Raspberry Pi Roboter fernsteuern (Teil 6)

CrowPi 2 Testbericht: Raspberry Pi Laptop & Lern-Kit für Kinder

NodeMCU: ESP8266 mit Solarzelle und Akku mit Strom versorgen

Raspberry Pi Samba Server installieren: Dateien im lokalen Netzwerk teilen

Blog abonnieren

Abboniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!

Tutorials for Raspberry Pi
Facebook Twitter YouTube
  • Kontakt & Impressum
  • Unterstützen
  • Datenschutz

Tippe den Suchbegriff oben ein und drücke Enter, um danach zu suchen. Drücke Esc, um abzubrechen.