raspberrypi-temp-sensor/mqtt_publish_temp.py

65 lines
1.9 KiB
Python
Raw Normal View History

2021-01-19 06:49:01 +00:00
import time
2021-01-24 22:20:52 +00:00
from datetime import datetime
2021-01-19 06:49:01 +00:00
import subprocess
import sys
2021-01-19 06:49:01 +00:00
# Import Adafruit_DHT
import Adafruit_DHT
# Import MQTT client.
import paho.mqtt.publish as publish
import paho.mqtt.client as paho
# MQTT credentials
#mqtt_username = 'homeassistant' # MQTT client username
#mqtt_password = '3355' # MQTT client password
client_id = sys.argv[1] # unique client_id
2021-01-19 06:49:01 +00:00
mqtt_broker = "raspberrypi" # broker address, usually your HASS IP address
# DHT config
DHT_PIN = 4 # GPIO nr
DHT_SENSOR = Adafruit_DHT.DHT22
# connection event
def on_connect(client, data, flags, rc):
print('Connected: ' + str(rc))
# create the MQTT client
client = paho.Client(protocol=paho.MQTTv31) # * set a random string (max 23 chars)
# Command topic
temperature_topic = 'weathersensors/' + client_id + '/temperature'
humidity_topic = 'weathersensors/' + client_id + '/humidity'
2021-01-24 22:28:22 +00:00
time_topic = 'weathersensors/' + client_id + '/time'
2021-10-19 14:36:45 +00:00
availability_topic = 'weathersensors/' + client_id + '/availability'
2021-01-19 06:49:01 +00:00
#client connection
2021-01-19 06:49:01 +00:00
#client.username_pw_set(mqtt_username, mqtt_password) # MQTT server credentials
client.connect(mqtt_broker) # MQTT server address
# DATETIME
now = datetime.now()
#print("now =", now)
#Output format: DD/MM/YYYY H:M:S
dt_string = now.strftime("%d-%m-%Y %H:%M:%S")
2021-01-19 06:49:01 +00:00
print(dt_string)
# Get Temperature from DHT
_, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
2021-10-19 14:36:45 +00:00
print("temperature before round: " +str(temperature))
2021-01-19 06:49:01 +00:00
temperature = round(float(temperature),2)
2021-02-15 22:21:40 +00:00
2021-02-18 09:18:32 +00:00
print("temperature after round: " + str(temperature))
# Get Humidity from DHT
humidity, _ = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
2021-02-15 22:21:40 +00:00
humidity = round(float(humidity),2)
2021-02-15 22:21:40 +00:00
2021-02-18 09:18:32 +00:00
print("humidity after round: " + str(humidity))
# Publish our data
client.publish(temperature_topic, temperature)
client.publish(humidity_topic, humidity)
2021-10-19 14:36:45 +00:00
client.publish(time_topic, dt_string)
client.publish(availability_topic, "ON")