from machine import reset, Pin, Timer
from rede import Rede
from time import sleep_ms, time
from json import load, dumps, loads
from ntptime import settime
from umqtt.robust import MQTTClient
from dht import DHT22
leitor = Pin(0, Pin.IN, Pin.PULL_UP)
sensor = DHT22(Pin(10))
porta = Pin(5, Pin.IN, Pin.PULL_UP)
def cbTimer(t):
global taNaHora
taNaHora = True
def debug(arg):
print(arg)
with open('config.json') as arq:
cfg = load(arq)
#Especifico do Thingsboard
clientId = 'crrifrsrg'
broker = 'demo.thingsboard.io'
usuario= '9lAuy5F1WFtAJsWt8sKS'
topico = b'v1/devices/me/telemetry'
r = Rede(cfg['rede'], cfg['senha'],
cb=debug)
if r.conectado:
settime()
cliente = MQTTClient(clientId,
broker,
user=usuario,
password='')
cliente.connect()
else:
print ('Deu ruim...Reiniciando')
sleep_ms(2000)
reset()
taNaHora = False
timm = Timer(0)
timm.init(mode = Timer.PERIODIC,
period = 2000,
callback = cbTimer)
ePorta = aPorta = porta.value()
eLeitor = aLeitor = leitor.value()
dados={'ts':0, 'values':{}}
while True:
# Sensor da Porta
ePorta = porta.value()
if ePorta != aPorta:
if ePorta == 0:
evento={'ts':(time()+946684800)*1000,
'values':{'porta':'Aberta'}}
else:
evento={'ts':(time()+946684800)*1000,
'values':{'porta':'Fechada'}}
cliente.publish(topico,
dumps(evento).encode())
aPorta = ePorta
sleep_ms(150)
# sensor Umidade e temperatura
if taNaHora:
sensor.measure()
dados['ts'] = (time()+946684800)*1000
dados['values']['temp'] = sensor.temperature()
dados['values']['umid'] = sensor.humidity()
payload = dumps(dados).encode()
cliente.publish(topico, payload)
taNaHora = False
# Leitor de cartao
eLeitor = leitor.value()
if eLeitor != aLeitor:
if eLeitor == 0:
chave = '1A 2B 3C'
evento={'ts':(time()+946684800)*1000,
'values':{'chave':chave}}
cliente.publish(topico,
dumps(evento).encode())
aLeitor = eLeitor
sleep_ms(150)