From b0b966fc6707b85c5f7e02f50a4d13b21e4e45ca Mon Sep 17 00:00:00 2001 From: jerick Date: Mon, 28 Nov 2022 13:53:20 -0500 Subject: [PATCH] Added MQTT to temp sensor --- mqtt/tempSensor.py | 63 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/mqtt/tempSensor.py b/mqtt/tempSensor.py index 0e7e30f..e0a0cb5 100644 --- a/mqtt/tempSensor.py +++ b/mqtt/tempSensor.py @@ -2,17 +2,37 @@ import time import board import adafruit_dht import psutil +import random + +from paho.mqtt import client as mqtt_client + +name = 'test' +broker = '192.168.0.196' +port = 1883 +tempTopic = "home/office/climate/temp" +humidTopic = "home/office/climate/humid" +username = 'mqtt' +password = 'falrenforbreakfast' + +client_id = f'python-mqtt-office-{random.randint(0, 1000)}' + # We first check if a libgpiod process is running. If yes, we kill it! for proc in psutil.process_iter(): if proc.name() == 'libgpiod_pulsein' or proc.name() == 'libgpiod_pulsei': proc.kill() + #D20 is the pin number, DHT11 is the sensor type sensor = adafruit_dht.DHT11(board.D20) + while True: try: temp = sensor.temperature humidity = sensor.humidity - print("Temperature: {}*C Humidity: {}% ".format(temp, humidity)) + + #convert to Farenheit + temp = (temp * 1.8) + 32 + + print("Temperature: {}*F Humidity: {}% ".format(temp, humidity)) except RuntimeError as error: print(error.args[0]) time.sleep(2.0) @@ -20,5 +40,42 @@ while True: except Exception as error: sensor.exit() raise error - #time between temp and humidity checks - time.sleep(2.0) \ No newline at end of file + + #MQTT Portion + def on_connect(client, userdata, flags, rc): + if rc == 0: + print("Connected to MQTT Broker!") + else: + print("Failed to connect, return code %d\n", rc) + + client = mqtt_client.Client(client_id) + client.username_pw_set(username, password) + client.on_connect = on_connect + client.connect(broker, port) + + #Publish Temp Results + tempMsg = f'{ "temperature": {temp} }' + result = client.publish(tempTopic, tempMsg) + # result: [0, 1] + status = result[0] + if status == 0: + print(f"Send `{tempMsg}` to topic `{tempTopic}`") + else: + print(f"Failed to send message to topic {tempTopic}") + + #Publish Humid Results + humidMsg = f'{ "humidity": {humidity} }' + result = client.publish(humidTopic, humidMsg) + # result: [0, 1] + status = result[0] + if status == 0: + print(f"Send `{humidMsg}` to topic `{humidTopic}`") + else: + print(f"Failed to send message to topic {humidTopic}") + + client.loop_start() + + time.sleep(2.0) + +#Now publish this via mqtt +