ok, ich habe sowohl 2.7.3 und auch 3.2.3.
ergibt sich da ein konflikt?
:s
Beiträge von Farz
-
-
Hallo,
ich habe hier telegram laufen.
Sowohl als bot als auch um Befehle abzufeuern als client auf dem Rasp.
Jetzt habe ich eben mit
mein python geupdatet. so dachte ich zumindest.
jetzt läuft mein telegram-client nicht mehr. kann es sein das ich die falsche python-version habe?
wie kann ich das herausfinden? voraussetzung ist libpython version 3.2.3 -
Es funktioniert trotz der Fehlermeldung.
Das script startet sauber bei erkannter Bewegung und sendet dann eine Bilddatei an mich via Telegram.
Einbau von variablen Bildnamen (wg Zeitstempel im namen (YYYY.MM.DD.hh.mm.jpg)) bin ich noch nicht angegangen.--> zwischenfrage: Gibt es so einen funktion wie letzte neue Datei aus ordner xy versenden via telegram an XY?
was jetzt noch nicht sauber läuft ist das abfeuern von der Raspicam. Aus dem script raus ein Bild aufnehmen funktioniert nicht, Fehlermeldung, Kamera nicht gefunden.
Als Einzelbefehl "raspistill usw" funktioniert die Kamera. Ich habe das jetzt erst mal mit einer USB-Kamera umgesetzt.Gruß
Jimbo -
Hi Thomas,
ich habe das Problem lösen können. Wenn der Bot alleine angefunkt wird passiert nichts, wenn ich den Bot in eine Gruppe packe, dann kann ich die Id der Gruppe verwenden. Damit geht es dann.
Komisch aber das läuft dann zumindest sehr ordentlich. Bildversand nach auslösen der Funktion durch das script funktioniert auch.
Danke -
Hi,
die Chat-ID lässt sich auch über
curl -X POST https://api.telegram.org/bot123456:abcde1234ABCDE/getUpdates
bekommen.
siehe auch: http://www.tutonaut.de/anleitung-einfuehrung-in-telegram-bots-nachrichten-und-dateien-aus-dem-terminal-senden.html#Gruß
Jimbo
Automatisch zusammengefügt:
so, chat-id hatte ich gefunden, eingetragen und script gestartet.
hab allerdings eine merkwürdige fehlermeldung:ZitatPIR Module Test (CTRL-C to exit)
Waiting for PIR to settle ...
ready
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/secu…platformwarning.
InsecurePlatformWarning
{u'error_code': 400, u'ok': False, u'description': u'[Error]: Bad Request: chat not found'}besonders stutzig macht mich "chat not found"
jemand eine Idee?jimbo
-
Hi Blackman,
cool, danke für deine Mühe!
- ich habe das " ready" durch 'ready' ersetzt,
- ich hatte den bot mit /start angesprochen. bekomme ich dann eine id in form einer ziffernfolge o-Ä. oder ist er dann durch das anschreiben "einfach da"?
- ich habe ja in meinem script obenkann ich dann anstatt der Ente.jpg
Code# Send a photo to a chat room (chat room ID retrieved from getUpdates) url = "https://api.telegram.org/bot" + bottoken + "/sendPhoto" params = { "chat_id": chatroomid } files = { 'photo':open('filename', "rb") } r = requests.get(url, params=params, files=files) result = r.json() print(result) time.sleep(10)
das wäre sensationell!
GrußTim
-
Hi, danke euch für die Antworten.
mir gefällt die Idee mit dem Bot, allerdings weiß ich nicht ob ich das alles richtig verstanden habe.
Ich habe mir jetzt ein token erstellen lassen. Ausserdem habe ich in mein script die befehle von Thomas/Blackman eingefügt.
sollte das schon alles gewesen sein?
anbei mal mein script, kann da mal jemand drauf schauen ob das prinzipiell verstanden wurde..?Danke Tim
Python
Alles anzeigenImport required Python libraries import RPi.GPIO as GPIO import time import datetime from pushbullet import PushBullet import subprocess import os import picamera import requests bottoken = "xxx" # Use BCM GPIO references # instead of physical pin numbers GPIO.setmode(GPIO.BCM) # Define GPIO to use on Pi GPIO_PIR = 7 def removeoldpics(): os.remove(fileName) def getFileName(): return datetime.datetime.now().strftime ("%Y-%m-%d_%H.%M.%S.jpg") cam = picamera.PiCamera() print "PIR Module Test (CTRL-C to exit)" # Set pin as input GPIO.setup(GPIO_PIR,GPIO.IN) # Echo Current_State = 0 Previous_State = 0 try: print "Waiting for PIR to settle ..." # Loop until PIR output is 0 while GPIO.input(GPIO_PIR)==1: Current_State = 0 print " Ready" # Send a text message to a chat room (chat room ID retrieved from getUpdates) url = "https://api.telegram.org/bot" + bottoken + "/sendMessage" params = { "chat_id": chatroomid, "text": ‚ready‘ } r = requests.get(url, params=params) result = r.json() print(result) # Loop until users quits with CTRL-C while True : # Read PIR state Current_State = GPIO.input(GPIO_PIR) if Current_State==1 and Previous_State==0: # PIR is triggered print " Motion detected!" os.system(" ./21") os.system(" ./11") time.sleep(10) fileName = getFileName() cam.start_preview() cam.capture(fileName) # Send a photo to a chat room (chat room ID retrieved from getUpdates) url = "https://api.telegram.org/bot" + bottoken + "/sendPhoto" params = { "chat_id": chatroomid } files = { 'photo':open('ente.jpg', "rb") } r = requests.get(url, params=params, files=files) result = r.json() print(result) time.sleep(10) # Record previous state Previous_State=1 elif Current_State==0 and Previous_State==1: # PIR has returned to ready state print " Ready" cam.stop_preview() Previous_State=0 # Wait for 10 milliseconds time.sleep(0.01) except KeyboardInterrupt: print " Quit" # Reset GPIO settings GPIO.cleanup()
-
Hi Thomas, hallo alle anderen...
ich war mal so frei und habe zu meinem Thema einen neuen Strang aufgemacht:
Mit Python 3 Telegram Nachrichten über einen Bot schickenJimbo
-
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Hi [/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]habe eine Machbarkeitsfrage, bzw brauche dabei mal einen "schubs" in die richtige Richtung....[/font][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Ich habe folgende Überlegung. Ich habe ein raspberry mit einen python script laufen. Da ist ein Bewegungsmelder dran und das Script schickt bei erkannter Bewegung eine Nachricht via pushbullet an mich. Eigentlich auch mit Foto. Pushbullet ist mir aber zu unzuverlässig.[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Meine Idee ist, das ich das ganze von Pushbullet lösen würde, und mit Telegram umsetzen möchte. Wenn das möglich ist.[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Meine Fragen sind folgende:[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Wie kann ich in python, telegram einbinden das bei Bewegung eine Nachricht versendet wird? [/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Meine Vorstellung ist: Python-script läuft, Bewegung erkannt, Foto wird erstellt, dann wird das Bild via telegram an mich gesendet. Srcipt geht wieder in Warteposition bis Bewegung erkannt wird, dann geht das ganze wieder von vorne los.[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]hat dazu jemand eine Meinung oder Erfahrungen?[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Danke[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Jimbo[/font]
-
Hi
habe eine Machbarkeitsfrage, bzw brauche dabei mal einen "schubs" in die richtige Richtung....Ich habe folgende Überlegung. Ich habe ein raspberry mit einen python script laufen. Da ist ein Bewegungsmelder dran und das Script schickt bei erkannter Bewegung eine Nachricht via pushbullet an mich. Eigentlich auch mit Foto. Pushbullet ist mir aber zu unzuverlässig.
Meine Idee ist, das ich das ganze von Pushbullet lösen würde, und mit Telegram umsetzen möchte. Wenn das möglich ist.
Meine Fragen sind folgende:
Kann ich in python, telegram einbinden das bei Bewegung eine Nachricht versendet wird? oder ist das der falsche Weg?
muss ich von python weg und das ganze in anderer sprache wählen?
Meine Vorstellung ist: Python-script läuft, Bewegung erkannt, Foto wird erstellt, dann wird das Bild via telegram an mich gesendet. Srcipt geht wieder in Warteposition bis Bewegung erkannt wird, dann geht das ganze wieder von vorne los.hat dazu jemand eine Meinung oder Erfahrungen?
Danke
Jimbo
-
Ok, danke für deine Aufklärung,
-
Hi und Hallo,
ich habe ein Problem mit einen Pythonscript was noch bis gestern lief und jetzt einfach nicht mehr. Ich habe keine Ahnung wo oder was ich das kontrollieren sollte. Leider sind da meine Kenntnisse sehr überschaubar.
Es geht letztendlich darum das ich ein script mit pi-cam, RPI und Pushbullet laufen habe. Wenn der Bewegungsmelder was bemerkt wird das licht eingeschaltet, foto gemacht und das ganze via Pushbullet an mich gesendet. ich weiss das bei Pushbullet generelle dinge geändert werden sollen, aber soweit ich weiß auch erst ab 1.12.
ich habe auch eine Fehlermeldung die ich nicht mal im ansatz verstehe da ich nicht weiss was das ganze mit http zutun haben sollte... kann mich jemand auf den Pfad der erkenntniss lotsen?
Hier mal die Fehlermeldung die bei erkannter bewegung und upload mit Bild "passiert"
wenn ich nur eine pushnachricht generieren lasse, ohne Foto geht alles, keine Fehlermeldung. Es scheint also im upload zu liegen.[code File "Alarm3.py", line 78, in <module>
p.pushFile(devices[0]["iden"], "Intruder Alert!", "Image From PiCam", open(fileName, "rb"))
File "/usr/local/lib/python2.7/dist-packages/pushbullet.py", line 187, in pushFile
upload.raise_for_status()
File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 834, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 500 Server Error: Internal Server Error][/code]
Jimbo
-
ach natürlich,
vielen danke! -
sorry ich steh voll auf dem schlauch:
meinst du so?CodefileName = datetime.datetime.now().strftime ("%Y-%m-%d_%H.%M.%S.jpg") os.system("fswebcam -r 1280x720 " + fileName) time.sleep(2) p.pushFile(devices[0]["iden"], "Intruder Alert!", "Image From PiCam", open(fileName, "rb"))
produziert einen fehler..
-
Hi,
ich hab das mal eingetragen, allerding scheine ich das was nicht richtig zu verstehen:Codedef fileName(): datetime.datetime.now().strftime ("%Y-%m-%d_%H.%M.%S.jpg") os.system("fswebcam -r 1280x720 " + fileName) time.sleep(2) p.pushFile(devices[0]["iden"], "Intruder Alert!", "Image From PiCam", open(fileName, "rb"))
fehlermeldung:
Codeos.system("fswebcam -r 1280x720 " + fileName) TypeError: cannot concatenate 'str' and 'function' objects
was bedeutet das?
-
Hallo!
ich habe ein script laufen was bei bewegungen ein Vorschaubild der Picam via Pushbullet versendet. Soweit so gut. Leider ist die Raspicam nicht wirklich zuverlässig und produziert abstürtze. Netzteil sollte eigentlich genug saft liefern. Ist aber auch garnicht das Thema hier.
Es geht um folgendes:
Die USB-cam soll ein Bild aufnehmen und mit Zeitstempel im Titel ablegen.Codeif Current_State==1 and Previous_State==0: os.system("fswebcam -r 1280x720 `date +%d%m%y%H%M%S`.jpg")
soweit funktioniert das wunderbar.
wenn ich das ganze aber via Pushbullet versenden möchte brauche ich ja einen Dateinamen. der wechselt ja aber sekündlich..
ich dachte das hier tut es:Code
Alles anzeigendef getFileName(): return datetime.datetime.now().strftime ("%Y-%m-%d_%H.%M.%S.jpg") if Current_State==1 and Previous_State==0: os.system("fswebcam -r 1280x720 `getFileName`.jpg") p.pushFile(devices[0]["iden"], "Intruder Alert!", "Image From PiCam", open(fileName, "rb"))
geht nicht...
jemand eine Idee?Danke
Tim -
Hi noisefloor,
danke für den Tip, habe ich mir angeguckt, scheint gut zu sein, ich verstehe nur nicht wo ich bei picamera den Ablageort bestimme.zu 1: wenn ich die Bilder mit dem Datumstempel versehe bekomme ich einen Fehler beim Upload, wenn ich händisch raspistill abfeuer und den Ablageort mit der home/pi/box definiere klappt der upload. es scheint also in der art und weise der Dateibenennung zu liegen. Mir würde eine simple durchnummerierung reichen...finde dazu nichts.
Gruß
Farz
So was?Code
Alles anzeigenif Current_State==1 and Previous_State==0: # PIR is triggered print " Motion detected!" p.pushNote(devices[2]["iden"], 'Alarm', 'Bewegung erkannt') with picamera.PiCamera() as camera: camera.start_preview() time.sleep(1) for filename in camera.capture_continuous(‚/home/pi/box/img{counter:03d}.jpg'): print('Captured %s' % filename)
läuft nicht bekomme einen fehler:
camera.start_preview()
^
IndentationError: expected an indented block -
Hallo Forum,
ich habe ein script laufen wo folgendes steht:Code1. os.system("sudo raspistill -t 500 -vf -hf -w 1600 -h 1200 -q 100 -o /home/pi/box/ `date +%d%m%y%H%M%S`.jpg") bzw. 2. os.system("sudo raspistill -t 500 -vf -hf -w 1600 -h 1200 -q 100 -o /home/pi/box/ image_%04d.jpg")
das sonderbare an der Sache ist wenn ich Nr. 1 eintrage bekomme ich die Dateibenennung die ich möchte aber der Upload zu Box.com funktioniert nicht, Datei hat nach Upload 0kb.
Wenn ich Nr.2 eintrage werden keine Fotos aufgenommen, wenn ich den Befehl per Hand abfeuer bekomme ich eine Fehlermeldung. --> invalid command line option (image_%04d.jpg)
Was mache ich den falsch? Ich will eigentlich nur eine fortlaufende Nummerierung.
Was ist falsch?Farz
-
Hallo!
ich schon wieder.
Ich möchte einen FTP-Upload einrichten, allerdings sollte der Upload über einen überwachten Ordner erfolgen/ Stichwort synchronisiert.
Ich habe da diese script gefunden:Code
Alles anzeigenimport ftplib session = ftplib.FTP('server.address.com','USERNAME','PASSWORD') file = open('picture.jpg','rb') # datei auf Raspberry Pi session.storbinary('STOR picture.jpg', file) # Datei senden file.close() # Datei schließen session.quit() # FTP Session schließen # Dateien herunterladen geht via urllib # import urllib # urllib.urlretrieve('ftp://server/path/to/file', 'file')
Allerdings scheint mir da nur ein bestimmter Dateityp hoch geladen zu werden. Ich möchte aber ALLE .jpg in Ordner XY hoch laden.
Wie kann ich das anpassen? Oder gibt es eine Sinnvolle alternative um jpgs auf FTP oder Google drive o.ä. zu sichern?Kann ich die Daten nach upload automatisch löschen lassen?
Gruß
Farz
-
Wow, klasse. danke Ihr habt mir sehr geholfen. genau das habe ich gesucht!