You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.3 KiB
70 lines
1.3 KiB
import requests
|
|
from gpiozero import Button, LED
|
|
from picamera import PiCamera
|
|
from time import sleep, strftime
|
|
|
|
url = 'http://192.168.1.108:3000/upload-photo'
|
|
|
|
camera = PiCamera()
|
|
camera.resolution = (2560, 1920)
|
|
|
|
greenLed = LED(16)
|
|
greenLed.on()
|
|
redLed = LED(20)
|
|
redLed.off()
|
|
|
|
button = Button(21)
|
|
buttonLastState = False
|
|
|
|
def errorBlink():
|
|
greenLed.off()
|
|
redLed.on()
|
|
sleep(1)
|
|
redLed.off()
|
|
sleep(1)
|
|
redLed.on()
|
|
sleep(1)
|
|
redLed.off()
|
|
sleep(1)
|
|
greenLed.on()
|
|
|
|
def successBlink():
|
|
greenLed.on()
|
|
redLed.off()
|
|
sleep(1)
|
|
greenLed.off()
|
|
sleep(1)
|
|
greenLed.on()
|
|
sleep(1)
|
|
greenLed.off()
|
|
sleep(1)
|
|
greenLed.on()
|
|
|
|
def takePhotoAndUpload():
|
|
time = strftime("%H-%M-%S")
|
|
filename = f"{time}.jpg"
|
|
|
|
camera.capture(filename)
|
|
|
|
files = {'photo': open(filename, 'rb')}
|
|
|
|
try :
|
|
r = requests.post(url, files=files, timeout=30)
|
|
|
|
print(r.status_code)
|
|
|
|
if (r.status_code == 200):
|
|
errorSuccess()
|
|
else:
|
|
errorBlink()
|
|
except:
|
|
errorBlink()
|
|
|
|
while True:
|
|
if(buttonLastState != button.is_pressed):
|
|
if button.is_pressed:
|
|
buttonLastState = True
|
|
takePhotoAndUpload()
|
|
else:
|
|
buttonLastState = False
|