Amélioration de l'affichage sur l'écran ePaper

Ajout d'un proto de boitier pour le R-Pi Zero, la caméra et l'écran
Début de carte intermédiaire (SHIM) pour alim et UART sur le GPIO du R-Pi (KiCAD)
This commit is contained in:
Pierrick C
2017-09-16 22:40:14 +02:00
parent 0afdeafc52
commit a32c02cf11
14 changed files with 920 additions and 34 deletions

View File

@ -17,5 +17,8 @@ mqtt_pass = WaKaW9XMGUZ3rRJD
mqtt_qos = 1
mqtt_topic = huzzah0/#
[CAMERA]
camera_mqtt_topic = raspi0/camera
[MISC]
TimeZone = 0

View File

@ -51,6 +51,9 @@ mqtt_pass = parser['MQTT'].get('mqtt_pass', fallback='oetemac')
mqtt_qos = parser['MQTT'].get('mqtt_qos', fallback=0)
mqtt_topic = parser['MQTT'].get('mqtt_topic', fallback='sensors/#')
#Camera
camera_mqtt_topic = parser['CAMERA'].get('camera_mqtt_topic', fallback='raspi0/camera')
#####################
# Flask & SQLAchemy #
#####################

View File

@ -20,6 +20,8 @@ import EPD_driver
import json
import netifaces
mqtt_client_id = "epaper_display"
#############
# CALLBACKS #
#############
@ -30,46 +32,51 @@ def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Subscribing to %s ..." % mqtt_topic)
client.subscribe(mqtt_topic)
client.subscribe(camera_mqtt_topic + "/#")
print("OK")
#Callback de gestion des messages arrivant au MQTT :
# affichage et enregistrement en base de données
def on_message(client, userdata, msg):
top=msg.topic[len(mqtt_topic)-1:].strip()
subtopics = top.split("/")
payload = msg.payload.decode()
print(payload)
val = json.loads(payload)
if subtopics[0] == "AdaBME280_1":
payload = msg.payload.decode()
print(payload)
val = json.loads(payload)
#Test présence et cohérence de la valeur
try:
val['value'] = float(val['value'] )
except:
print("Value error: {}".format(val['value']))
val['value'] = float('nan')
#Gestion du symbole des degrés parfois difficile pour certaines sources
#val['unit'] = val['unit'].replace('deg', '°')
#Affichage des données
coord_type = { 'TA' : 33,
'HR' : 49,
'PA' : 65
}
disp.Dis_String(110, coord_type[val['type']], "{} {} ".format(val['value'], val['unit']), 16)
#Test présence et cohérence de la valeur
try:
val['value'] = float(val['value'] )
except:
print("Value error: {}".format(val['value']))
val['value'] = float('nan')
#Gestion du symbole des degrés parfois difficile pour certaines sources
#val['unit'] = val['unit'].replace('deg', '°')
#Affichage des données
coord_type = { 'TA' : 33,
'HR' : 49,
'SLPA' : 65
}
if val['type'] in coord_type:
disp.Dis_String(125, coord_type[val['type']], "{} {} ".format(val['value'], val['unit']), 16)
#Callback particulier pour gérer les date/heure arrivent sur le broker MQTT
def on_message_date(client, userdata, msg):
payload = msg.payload.decode()
#try:
d = datetime.strptime(payload, "%H:%M:%S %d/%m/%Y")
disp.Dis_String(0, 17, d.strftime("%d/%m/%Y %H:%M:%S"), 16)
#except:
# print("Date mal formatée : %s" % payload)
print("Date : " + payload)
try:
d = datetime.strptime(payload, "%H:%M:%S %d/%m/%Y")
disp.Dis_String(0, 17, d.strftime("%d/%m/%Y %H:%M:%S"), 16)
except:
disp.Dis_String(0, 17, payload, 16)
def on_message_camera(client, userdata, msg):
print(msg)
#Callback de déconnexion au broker MQTT
def on_disconnect(client, userdata, msg):
if msg != 0:
@ -91,19 +98,20 @@ disp.Dis_Clear_part()
print("OK")
#disp.Dis_String(0, 0, "{} | {}".format(socket.gethostname(), netifaces.ifaddresses('wlan0')[2][0]['addr']), 12)
disp.Dis_String(0, 0, "IPv4 : {}".format(netifaces.ifaddresses('wlan0')[2][0]['addr']), 16)
disp.Dis_String(0, 33, "Temperature : ", 16)
disp.Dis_String(0, 49, "Humidity : ", 16)
disp.Dis_String(0, 65, "Pression : ", 16)
disp.Dis_String(0, 0, "IPv4 : {}".format(netifaces.ifaddresses('wlan0')[2][0]['addr']), 16)
disp.Dis_String(0, 33, "Temperature : ", 16)
disp.Dis_String(0, 49, "Humidity : ", 16)
disp.Dis_String(0, 65, "Sea Pression : ", 16)
#Connect to MQTT broker and loop...
mqtt_client = mqtt.Client(mqtt_client_id, clean_session=False)
mqtt_client = mqtt.Client(mqtt_client_id, clean_session=True)
mqtt_client.username_pw_set(mqtt_user, mqtt_pass)
mqtt_client.on_connect = on_connect
mqtt_client.on_message = on_message
mqtt_client.on_disconnect = on_disconnect
mqtt_client.message_callback_add("huzzah0/NTP/date", on_message_date)
mqtt_client.message_callback_add(camera_mqtt_topic + "/#", on_message_camera)
print(mqtt_host + ":" + str(mqtt_port))
mqtt_client.connect(mqtt_host, int(mqtt_port), 60)

View File

@ -14,7 +14,9 @@
from cameteo import *
import paho.mqtt.client as mqtt
import json
from math import isnan
from math import isnan
mqtt_client_id = "sql_persistance"
#############
# CALLBACKS #