Files
homeassistantPi/mqtt/tempSensor.py
2022-11-28 14:20:19 -05:00

81 lines
2.1 KiB
Python

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
#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)
continue
except Exception as error:
sensor.exit()
raise error
#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 = '{ "temperature": {} }'.format(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 = '{ "humidity": {} }'.format(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