e95f6eb57a
Suppression temporaire des liens entre les tables de la BdD, Ajout de l'enregistrement des photos en BdD
86 lines
2.2 KiB
Python
Executable File
86 lines
2.2 KiB
Python
Executable File
#!/usr/bin/python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Take a picture with the Pi Camera module and publish the path
|
|
and name of the file on a MQTT broker
|
|
|
|
@author: arofarn
|
|
"""
|
|
|
|
import picamera
|
|
import paho.mqtt.publish as mqtt
|
|
from time import sleep
|
|
from cameteo_conf import *
|
|
|
|
mqtt_client_id = "picamera"
|
|
now = datetime.utcnow()
|
|
|
|
########
|
|
# Main #
|
|
########
|
|
|
|
if not(os.path.exists(photo_dir)):
|
|
print("Create photos directory : " + photo_dir)
|
|
os.mkdir(photo_dir)
|
|
|
|
file_name = datetime.strftime(now, photo_name) + os.path.extsep + photo_extensions[photo_format]
|
|
file_path = os.path.join(photo_dir, file_name)
|
|
|
|
print("Shooting " + file_path)
|
|
|
|
# Taking a photo
|
|
#################
|
|
|
|
# Tell the MQTT that we start shooting
|
|
mqtt.single(camera_mqtt_topic + "/shooting" ,
|
|
payload= 1 ,
|
|
qos= 1 ,
|
|
retain= True ,
|
|
hostname= mqtt_host ,
|
|
port= mqtt_port ,
|
|
client_id= mqtt_client_id ,
|
|
auth= mqtt_auth )
|
|
|
|
# Camera settings
|
|
cam = picamera.PiCamera(resolution = camera_resolution)
|
|
cam.iso = camera_iso
|
|
cam.awb_mode = camera_awb
|
|
cam.rotation = camera_rotation
|
|
cam.contrast = camera_contrast
|
|
cam.exposure_mode = camera_expo_mode
|
|
cam.image_effect = 'none'
|
|
|
|
#Add some EXIF tags
|
|
cam.exif_tags['EXIF.UserComment'] = 'Cameteo !'
|
|
|
|
# Warm-up
|
|
cam.start_preview()
|
|
sleep(camera_warmup_time)
|
|
|
|
cam.capture(file_path, format=photo_format, quality=95, thumbnail=None)
|
|
|
|
cam.close()
|
|
|
|
# MQTT publication
|
|
###################
|
|
|
|
mqtt_data = [{'topic': camera_mqtt_topic + "/shooting",
|
|
'payload': 0,
|
|
'qos': 2,
|
|
'retain': True},
|
|
{'topic': camera_mqtt_topic + "/photos_path",
|
|
'payload': photo_dir,
|
|
'qos': 2,
|
|
'retain': True},
|
|
{'topic': camera_mqtt_topic + "/last_photo",
|
|
'payload': file_name,
|
|
'qos': 2,
|
|
'retain': True},
|
|
]
|
|
|
|
mqtt.multiple(mqtt_data,
|
|
hostname= mqtt_host ,
|
|
port= mqtt_port ,
|
|
client_id= mqtt_client_id ,
|
|
auth= mqtt_auth )
|