From 6a6df5cb89731f2e00f18618fcdc26ef548526ff Mon Sep 17 00:00:00 2001 From: Ian Mancini Date: Thu, 12 Mar 2020 15:47:24 -0300 Subject: [PATCH] Initial commit --- Pipfile | 14 ++++++++++ Pipfile.lock | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++ main.py | 69 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 162 insertions(+) create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 main.py diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..0a3f22e --- /dev/null +++ b/Pipfile @@ -0,0 +1,14 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] + +[packages] +requests = "*" +picamera = "*" +gpiozero = "*" + +[requires] +python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..a533e2b --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,79 @@ +{ + "_meta": { + "hash": { + "sha256": "f3d3cd97be07a1db357fe38ddf60c7adb2bed644eb15c1fc939a776ffd97cf11" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.8" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "certifi": { + "hashes": [ + "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3", + "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f" + ], + "version": "==2019.11.28" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "colorzero": { + "hashes": [ + "sha256:acba47119b5d8555680d3cda9afe6ccc5481385ccc3c00084dd973f7aa184599", + "sha256:e3c36d15b293de2b2f77ff54a5bd243fffac941ed0a5332d0697a6612a26a0a3" + ], + "version": "==1.1" + }, + "gpiozero": { + "hashes": [ + "sha256:101044038e71cec8be2fa841d4cea9e50e7962e9fb0287f465298b59e3f06594", + "sha256:ae1a8dc4e6e793ffd8f900968f3290d218052c46347fa0c0503c65fabe422e4d" + ], + "index": "pypi", + "version": "==1.5.1" + }, + "idna": { + "hashes": [ + "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", + "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" + ], + "version": "==2.9" + }, + "picamera": { + "hashes": [ + "sha256:890815aa01e4d855a6a95dd3ad0953b872a6b954982106407df0c5a31a163e50" + ], + "index": "pypi", + "version": "==1.13" + }, + "requests": { + "hashes": [ + "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", + "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" + ], + "index": "pypi", + "version": "==2.23.0" + }, + "urllib3": { + "hashes": [ + "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc", + "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc" + ], + "version": "==1.25.8" + } + }, + "develop": {} +} diff --git a/main.py b/main.py new file mode 100644 index 0000000..7004803 --- /dev/null +++ b/main.py @@ -0,0 +1,69 @@ +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