"""
Baseado em MicroPython MQTT Weather Logger
de Uri Shaked
O potenciômetro simula o sensor de gas
https://wokwi.com/arduino/projects/322577683855704658
Sensor de alerta de vazamento de gas
"""
import network
import time
from machine import Pin, ADC
import ujson
from umqtt.simple import MQTTClient
# MQTT Server Parameters
# esses dados são para acessar o broker
MQTT_CLIENT_ID = "alarmedogas"
MQTT_BROKER = "gasgasgas-xyhgk3y24zkq.cedalo.cloud"
MQTT_USER = "alarmedogas"
MQTT_PASSWORD = "alarmedogas"
MQTT_TOPIC = "Mosquitto Pro"
#declara um pino como analógico
sensor_gas = ADC(Pin(34))
#condição de vazamento (OBS.: por obséquio, pesquisem o valor correto)
condicao_crit = 360
#conecta no WiFi
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
#conecta no MQTT broker/server
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, port = 1883, user = MQTT_USER, password = MQTT_PASSWORD)
client.connect(True)
print("Connected!")
#client.set_callback(sub)
#client.subscribe(MQTT_TOPIC)
message = ""
message_anterior = ""
alarmer = False
while True:
alarmer = sensor_gas.read()>=condicao_crit
if(alarmer):
#quando alarmer for true, soe o alarme
message = ujson.dumps({"gas_crit": alarmer})
else:
message = ujson.dumps({"gas_crit": alarmer})
if not message_anterior == message:
print(message)
#publica a mensagem
client.publish(MQTT_TOPIC, message, qos=0)
message_anterior = message
client.wait_msg()
time.sleep(1)