Lib & firmware update + cleaner directories structure

This commit is contained in:
Pierrick C
2018-09-10 09:52:27 +02:00
parent 7953969dff
commit bb2a2f2665
19 changed files with 103 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+103
View File
@@ -0,0 +1,103 @@
#!/usr/bin/python3
# -*- coding: UTF8 -*-
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
Take a picture with the Pi Camera module and publish the path
and name of the file on a MQTT broker
@author: arofarn
"""
import os
from time import sleep
from datetime import datetime
import picamera
import paho.mqtt.publish as mqtt
from cameteo_conf import CONFIG_MQTT, CONFIG_PI_CAMERA, PICTURES_EXTENSIONS
MQTT_CLIENT_ID = "picamera"
NOW = datetime.utcNOW()
########
# Main #
########
if not os.path.exists(CONFIG_PI_CAMERA['PICT_DIR']):
print("Create photos directory : " + CONFIG_PI_CAMERA['PICT_DIR'])
os.mkdir(CONFIG_PI_CAMERA['PICT_DIR'])
FILE_NAME = os.path.extsep.join((datetime.strftime(NOW, CONFIG_PI_CAMERA['PICT_NAME']),
PICTURES_EXTENSIONS[CONFIG_PI_CAMERA['PICT_FORMAT']]))
FILE_PATH = os.path.join(CONFIG_PI_CAMERA['PICT_DIR'], FILE_NAME)
print("Shooting " + FILE_PATH)
# Taking a photo
#################
# Tell the MQTT that we start shooting
mqtt.single(CONFIG_PI_CAMERA['MQTT_TOPIC'] + "/shooting",
payload=1,
qos=1,
retain=True,
hostname=CONFIG_MQTT['HOST'],
port=CONFIG_MQTT['PORT'],
client_id=MQTT_CLIENT_ID,
auth=CONFIG_MQTT['AUTH'])
# Camera settings
cam = picamera.PiCamera(resolution=CONFIG_PI_CAMERA['RESOLUTION'])
cam.iso = CONFIG_PI_CAMERA['ISO']
cam.awb_mode = CONFIG_PI_CAMERA['AWB']
cam.rotation = CONFIG_PI_CAMERA['ROTATION']
cam.contrast = CONFIG_PI_CAMERA['CONSTRAST']
cam.exposure_mode = CONFIG_PI_CAMERA['EXPO_MODE']
cam.image_effect = 'none'
#Add some EXIF tags
cam.exif_tags['EXIF.UserComment'] = 'Cameteo !'
# Warm-up
cam.start_preview()
sleep(CONFIG_PI_CAMERA['WARMUP_TIME'])
cam.capture(FILE_PATH, format=CONFIG_PI_CAMERA['PICT_FORMAT'],
quality=95, thumbnail=None)
cam.close()
# MQTT publication
###################
MQTT_DATA = [{'topic': CONFIG_PI_CAMERA['MQTT_TOPIC'] + "/shooting",
'payload': 0,
'qos': 2,
'retain': True},
{'topic': CONFIG_PI_CAMERA['MQTT_TOPIC'] + "/photos_path",
'payload': CONFIG_PI_CAMERA['PICT_DIR'],
'qos': 2,
'retain': True},
{'topic': CONFIG_PI_CAMERA['MQTT_TOPIC'] + "/last_photo",
'payload': CONFIG_PI_CAMERA['PICT_NAME'],
'qos': 2,
'retain': True},
]
mqtt.multiple(MQTT_DATA,
hostname=CONFIG_MQTT['HOST'],
port=CONFIG_MQTT['PORT'],
client_id=MQTT_CLIENT_ID,
auth=CONFIG_MQTT['AUTH'])