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.
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:
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:
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.
340 Kommentare
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 ?
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.
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
Hallo,
hast du das vorherige Tutorial durchlaufen? Hat dort alles geklappt?
Was für eine Fehlermeldung bekommst du denn, wenn du das Skript startest?
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
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
„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
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
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?
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 !!!!
Danke für das posten, vielleicht hilft es anderen die das selbe Problem haben 🙂
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?
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.
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
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:
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.
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
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 ~ $
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])
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 ~ $
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
Habe das ganze mal beim Entwickler gemeldet, siehe hier:
https://github.com/vysheng/tg/issues/299
Hast du eine Ahnung, was der Entwickler gerade von mir hören möchte?
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.
Hallo APFMH,
hast du das Problem gelöst bekommen?
Ich habe gerade das selbe. Komme einfach nicht weiter.
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
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
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.
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?
ja deswegen verwundert es mich ja, ich werde das noch einmal versuchen und schauen Feedback folgt.
Lg
Nils
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
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.
send script
test.lua
Die Nummer hab ich aus Sicherheitsgründen verfremdet.
Lg Nils
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.
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
ich habe die Skripte alle überarbeitet und angepasst, also falls du das vorherige benutzt, aktualisiere es mal auf die neue Version.
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.
Und für Nachrichten senden sieht der Befehl mittlerweile auch anders aus, nämlich
send_msg (msg.from.print_name, ‚text‘, ok_cb, false)
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
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
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?
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?
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
Das wäre sehr nett ich schicke heute nachmittag mal das ganze lua script und den screenbefehl villeicht findestdu den fehler;)
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
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.
...
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
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
Ist das send_script im selben Ordner (~/tg/) ?
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.
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
Ich werde mir das demnächst anschauen. Anscheinend wurde die telegram-cli Bibliothek wieder verändert.
Danke.
Freut mich!
Toller support
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
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
Hi,
du kannst es mal damit probieren, das muss auf jeden Fall klappen: Link
Kann mir bitte einmal jemand die drei aktuelle Versionen der Skripte geben ich bekomm das mit den oberen nicht hin 🙁
DANKE
Hi Tom,
ich habe es soeben getestet und alles aktualisiert (sollte nun wieder alles mit der neuen Version kompatibel sein).
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
Alles klar, wir werden das Problem schon finden 🙂
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:
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
durchscreen -dmS TelegramCLI ~/tg/bin/telegram-cli -s ~/tg/test.lua -k ~/tg/tg-server.pub
ersetzen. Den Teil unterstop)
kannst du weglassen. Ansonsten musst du nur die Namen anpassen.Das bekommst du hin 🙂
😉
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.
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 mitsudo /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.Danke!
Das starten per Start-Befehl funktioniert.
Allerdings tritt der selbe Fehler auf wie vorher sobald ich den update Befehl ausführe.
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?
Irgendwie ist der Wurm drinne
versuch mal diesen Teil an den Anfang der Datei zu schreiben:
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
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
Hi,
Per startbefehl geht jetzt alles aber nach wie vor wird es nicht beim reboot geladen.
ich verzweifel langsam
Hast du den Parameter wieder geändert (
-dmS
) und dann eingetragen (sudo update-rc.d NameDesSkripts defaults
)?Ja habe ich.
Ich verstehe es auch nicht…
Was macht dieses bash – c?
bash -c
führt einfach nur ein bash/shell command aus (so als ob du in die Konsole schreibst)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?
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).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
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.
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
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
Hallo Leute,
bin am verzweifeln. Bekomm das lua script nicht zum laufen.
Bekomm immer die Meldung, dass es die Option -s nicht gibt:
Könnt ihr mir weiter helfen?
Danke schon im Voraus.
Gruß
Thorsten
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
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
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:
ok. Echt komisch.
Dann fang ich nochmal von ganz vorne an…
Evtl. bringts ja was.
Vielen Dank.
Benutzt du Raspbian oder ein anderes OS? Ggf. kannst du auch mal ein anderes Release des Clients auf Github ziehen.
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
Hallo Felix,
hab alles nochmal neu installiert.
Jetzt läuft es.
Super. Vielen Dank.
Gruß
Thorsten
Hi Thorsten,
freut mich das zu hören 🙂 Sollten noch Probleme auftreten, einfach nachfragen.
LG Felix
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
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.
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
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
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!
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.
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.
Hallo,
Gibt es eine Möglichkeit das der Pi über Python automatisch antwortet??
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
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.
Ich habs probiert aber irgendwie funktioniert es nicht kannst du mir ein Beispiel geben ich weiß nicht weiter
Naja, schau dir doch mal das verwendete lua Skript an, da rufe ich bereits ein anderes bash Skript auf (Zeile 36, 39).
ein Python Skript kannst du z.B. mittels
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.
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
ich hab nie hin bekommen das etwas ausgefürt und mir eine antwort geschikt wird
kannst du deine Skripte mal auf http://pastebin.com/ posten und hier verlinken?
so das sind meine skripte
http://pastebin.com/1UaiseMt
http://pastebin.com/1deyueL9
http://pastebin.com/DDEHSqK1
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.
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.
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:
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
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.
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?
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.
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.
Es funktioniert dann alle anderen Befehle nicht mehr
Welche Fehlermeldung bekommst du?
Wo kann ich die auslesen
indem du das Skript manuell in der Konsole startest. Woher weißt du, dass es nicht funktioniert, wenn du es noch nicht ausprobiert hast?
das ist die fehlermeldung
File „tg_actions.py“, line 15
with open(‚/home/pi/tor1auf‘)
^
SyntaxError: invalid syntax
Ist selbsterklärend oder? dieses width ist keine gültige Syntax.
was muss ich dann verwenden
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
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
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.
ok das ist jetzt ok aber es wird immer noch nichts ausgefürt noch an mich gesendet
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.
vielen dank für die sehr gute hilfe
ich werde versuche es hinzubekommen mal schaun ob es klappt
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
hey ich bins wieder meine python skript geht aber die lua führt es nicht aus
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
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
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.
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?Ja hab ich. Der tut folgich auch nichts.
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
Gut, dann ist das Problem ja erkannt.
Kannst du die (nicht) funktionierenden Befehle posten?
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.
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
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
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
Welches Problem hast du genau?
Ja natürlich kannst du an zwei (vordefinierte) Kontakte schreiben.
Ich kann wie bei jan erst etwas vom pi senden wenn ich dem pi geschrieben habe
Wie kann ich eine zweiten Kontakt vorgeben
Hast du dich als Kontakt vorher eingespeichert?
Ja das habe ich
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
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
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
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 😉
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
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
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
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!
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.
…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
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
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.
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
Benutze
sudo shutdown now
, bzw. alles was root Rechte braucht musst du mit sudo starten...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…..
…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
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.
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…..
..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?
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.
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 😉
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)?
..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
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.
ich stelle mir auch zu folgendem Code-Teil :
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?
…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?
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...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…
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.
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!
Ich meinte damit, dass du (nach make und telegram Einrichtung) das Image speichern kannst. Dann sparst du dir das erneute Einrichten.
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!
Ahhaa- wieder etwas dazugelernt, danke. Das gucke ich mir mal näher an!
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
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.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!
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.
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….
Wieso nimmst du keine Hochkommata (oder wurde das autoformatiert)?
Ist Versuch es mal mit
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!
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!
Hallo ich wollte mal fragen was es sein kann wenn sich Telegramm auf dem pi immer aufhängt
Servus erst mal Riesen Lob für das Tutorial ist echt klasse !
Nur frag ich mich wie ich Telegramm im Terminal öffnen kann ??
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
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
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‘ ‘])
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
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?
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
Folgende Zeile:
Schreib ’standheizung‘ klein, sonst wird es nie klappen (string.lower).
LG Felix
Ach ja, andere Befehle wie uptime oder reboot funktionieren…
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?
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.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
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
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
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
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…
Was funktioniert denn genau nicht? Poste deinen Code doch mal auf http://pastebin.com/ und verlink ihn hier.
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)
Hi Damian,
kannst du deine lua Datei auf http://pastebin.com/ posten und hier verlinken?
Habe im moment noch genau dein scribt. Noch nichts geändert.
Ich habe hier nur eine Funktion gepostet (die in der Datei zu ersetzen ist), was steht bei dir denn in Zeile 55?
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
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.
wie könnte dieses skribt z:B aussehen? Das welches die GPIO überwacht
Schau mal hier nach:
Ampelschaltung mit GPIO Teil 2 (ggf. auch Teil 1)
Oder noch einfacher: Pull-Up/Down Resistors
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.
Schau dir mal die Lua String Dokumentation und vor allem
string.sub()
an.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.
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.).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.
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.
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?
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:
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??
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.Stimmt, das wäre auch ein Weg gewesen. Konnte es nun aber auch folgendermaßen lösen:
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.
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
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
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.
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
Updaten kannst du mit
git pull origin master
(in dem Verzeichnis). Danach musst du neu kompilieren.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?
Hast du den Kontakt und dessen Nummer mit Telegram gespeichert/hinzugefügt?
Ja ich habe den Kontakt eingetragen als ich in dieser Telegramkonsole war.
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.
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
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.
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
Füge mal in Zeile 90 so etwas ein wie:
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.
Ok es wird nicht ausgeführt. In der Konsole steht:
[19:22] Ich >>> uptime
Dann wird der Kontakt(name) wohl nicht stimmen, nehme ich an. Speicher den kontakt ggf. mal ohne Leerzeichen und nur klein geschrieben, etc.
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…
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
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
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).
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?
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
Hallo,
ein super Tutorial, nur leider mag mein Pi nicht mal einen gelesen Haken setzen, woran liegt das? Mein Quelltext ist auszugsweise der hier:
Kommt deine Nachricht denn auf dem Pi an? Du kannst das z.B. mit einem Log auf der Konsole überprüfen.
Ja, es kommt an.
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.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…
Ich beschäftige mich mit dem Pi und Linux erst seit ein paar Tagen; wie rufe ich den Log auf?
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
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
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
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
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
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.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
Ich meinte es als einen kompletten String, also z.B:
'hallo wie nsdfsafndsfsdfndssafn'
Habe heraus gefunden was das Problem war. Und zwar das Leerzeichen das Problem 🙂
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
Danke schon mal 🙂
Hast du dich als Kontakt eingespeichert? Wenn ja, hast du auch die Zeile
if msg.from.print_name ~= 'Vorname Nachname' then
angepasst?ja habe ich :/
Poste mal deine komplette Datei auf http://pastebin.com/ und verlinke sie hier.
http://pastebin.com/ha8QQ3yY
http://pastebin.com/ddeHrLSx
Das sind die beiden Dateien, die ich habe.
Danke für die Antwort:)
Also du hast den Namen nicht angepasst (Zeile 15, zweite Datei) oder hast du deine eigene Nummer als „Vorname Nachname“ eingespeichert?
Doch, ich wollte nur meinen Namen hier nicht öffentlich posten^^
und sonst stimmt alles ? ich komme da echt nicht weiter :/
Hast du auch versucht schrittweise zu debuggen? Sprich z.B. logs zu setzen und zu schauen, bis wohin es ausgeführt wird?
wie debuggt man etwas den ? welche logs muss man setzten? wie gesagt ich bin ganz neu im bereich raspberry:)
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)
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).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.
Hallo, ist es möglich, dass telegram die nachrichten in einem gesichertem chat versendet. sprich secure_chat?
Als ich das Programm erstmals benutzte, gab es die Option noch nicht. Inzwischen aber schon. Siehe hier: https://github.com/vysheng/tg#supported-commands
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?
Klar, du kannst vor den shell Befehl (reboot, shutdown, etc.) einen Sleep Befehl ausführen.
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)
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.
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 ?
Vor der Zeile fehlen Leerzeichen. Ist nun aktualisiert 🙂
danke, es geht voran 🙂
Jetzt funzt es auch, wenn ich „uptime“ eingebe, bekomme dann aber noch 4x hinterher „Fehler“ geschickt ?
Sobald ich den Part mit der Uptime auskommentiere funktioniert das Script tadellos, sehr merkwürdig.
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
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.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 🙂
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
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
Das hat geklappt vielen Dank.
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
Hi Alex,
schau mal hier: http://w3.impa.br/~diego/software/luasocket/http.html
LG, Felix
Hallo Felix,
danke aber ich verstehe nur Bahnhof. Aber so habe ich es gelöst und funktioniert.
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
Du könntest eine PHP Seite erstellen und exec nutzen, um ein Skript (z.B: Telegram Send Skript) zu starten.
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….
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???
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:
LG, Felix
Hallo Felix…
Da da nur „end“ steht, mal die vorhergehenden zeilen… die 134 ist separat markiert…
http://pastebin.com/nHy1JXTc
Bitte poste mal deine ganze Datei auf http://pastebin.com und verlinke es hier.
Hier ist sie…
http://pastebin.com/2XAs0BzZ
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.
OK, versuch ich dann morgen mal…
Danke…
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..
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..
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…
Hast du den Fehler, der in Zeile 101 erfolgt, schon gegooglet? 😀
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
Hallo Felix,
ich habe ein Problem mit der test.lua datei und komm gerade – auch mit den Kommentaren- nicht weiter. Der Personenabgleich bei:
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.
Zusätzlich hänge ich jetzt auch noch in einer reboot schleife fest und weiß nicht wie ich diese unterbrechen kann
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…
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.
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
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?
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?
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.
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…
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 🙂
Sehr geil
Funktinoert top bei mir 🙂
Danke
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
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
Prüfe z.B. auf Zeit (nur wenn die Nachtricht innerhalb der letzten 5 Sekunden kam, soll der Befehl ausgeführt werden, ansonsten ignorieren).
und wie kann ich das realisieren?
Das Nachrichtenobjekt hat mehrere Attribute – diese kannst du nutzen.
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
Starte telegram mal im Vordergrund (ohne screen) und schau was der Log sagt.
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
or ist Lua Syntax. poste ggf. mal den Code Ausschnitt, der nicht funktioniert.
das ist der Code in der test.lua ich bekomme immer die Antwort ungültige nummer zurück, auf beiden Rufnummern
Logge mal die Nummer, ich denke dein Format ist falsch (print(msg.from.print_name))
Was meinst du mit logge ?
Auf der Konsole ausgeben / in einer Datei speichern / print.
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
Und was hast du da geloggt?
die Ausgabe die kommt wenn ich das Script manuell starte
Logge vor der Abfrage nach der Nummer doch einmal, welche Nummer überhaupt ankommt…
Ich bekomme als Ausgabe die Kontakte die in meinem Script oben mit X verdeckt sind
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:
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
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
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
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!
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?
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!!
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
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…
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?
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?
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