import time from datetime import datetime import subprocess import sys # 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 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' time_topic = 'weathersensors/' + client_id + '/time' #client connection #client.username_pw_set(mqtt_username, mqtt_password) # MQTT server credentials client.connect(mqtt_broker) # MQTT server address client.loop_start() while True: # 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") # Get Temperature from DHT _, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN) print("temperature before cut: " + temperature) # cut temperature to xx.xx if more then tow digits after "." t_split = temperature.split(".") if len(t_split[1]) > 2: t_cut = len(t_split[1]) - 2 t_split[1] = t_split[1][:-t_cut] temperature = t_split[0] + "." + t_split[1] print("temperature after cut: " + temperature) # Get Humidity from DHT humidity, _ = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN) print("humidity before cut: " + humidity) # cut humidity to xx.xx if more then tow digits after "." h_split = humidity.split(".") if len(h_split[1]) > 2: h_cut = len(h_split[1]) - 2 h_split[1] = h_split[1][:-h_cut] humidity = h_split[0] + "." + h_split[1] print("humidity after cut: " + humidity) # Publish our data client.publish(temperature_topic, temperature) client.publish(humidity_topic, humidity) client.publish(time_topic, dt_string) time.sleep(30)