#!/usr/bin/python3 # -*- coding: utf-8 -*- # sendet ein Bild an den Server per URL http://blmgeotest.synology.me/uploads/picam.php' # erstellt am 08.04.2022 geändert 25.06.2022 # von Stefan +4915170379199 # sudo crontab -e # in console Zeiten der Ausführung festlegen # 0,5,10,15,20,25,30,35,40,45,50,55 * * * * python /home/pi/schalte_sendeFoto.py import socket host_name ="noName" host_ip ="noIP" try: host_name=socket.gethostname() host_ip =socket.gethostbyname(host_name) print("RaspbeeryPi-name:",host_name,host_ip) except: print("RaspberryPI Name und IP konnte nicht ermittelt werden.") import sys from PIL import Image import picamera from time import sleep import requests import time import RPi.GPIO as GPIO GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) pins = { 6 : {'name' : 'GPIO 6', 'state' : 1}, 5 : {'name' : 'GPIO 5', 'state' : 1}, 13 : {'name' : 'GPIO 13', 'state' : 1}, 12 : {'name' : 'GPIO 12', 'state' : 1} } # Set each pin as an output and make it low: for pin in pins: GPIO.setup(pin, GPIO.OUT) GPIO.output(pin, 1) # Voreinstellungen Bildgroesse: WIDTH=320 HEIGHT=240 # Kamera initialisieren: camera = picamera.PiCamera() camera.resolution = (WIDTH,HEIGHT) # Dateiname fuer Bild: localpicname = 'BildPiCam.jpg' # 2 Sek. Pause, damit Kamera alles einstellen kann: sleep (2) GPIO.output(6, GPIO.LOW) time.sleep(3) GPIO.output(6, GPIO.HIGH) time.sleep(3) GPIO.output(5, GPIO.LOW) # Ein Bild aufnehmen: camera.capture(localpicname) camera.close() GPIO.output(5, GPIO.HIGH) try: bild = Image.open(localpicname) # neuesbild = bild.rotate(90) bild.save(localpicname) except IOError: print ("Fehler: kann %s nicht bearbeiten." % dateiname) GPIO.output(12, GPIO.LOW) # Ein Bild auf den Webspace hochladen: # Webservice Aufruf URL festlegen: url = 'http://blmgeotest.synology.me/uploads/picam.php' files = {'file': open(localpicname, 'rb')} GPIO.output(13, GPIO.LOW) kopf = {'Content-type': 'multipart/form-data'} daten = {'name': host_name, 'ip': host_ip} #r = requests.post(url, files=files)- r = requests.post(url, files=files,data=daten) #, headers=kopf) # Zur Kontrolle Rueckgabe ausgeben # Set each pin low: for pin in pins: GPIO.output(pin, 1) print(r) print(r.text)