Added MQTT to temp sensor
This commit is contained in:
@@ -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
|
||||
|
||||
#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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user