import json import sys import os import docker # 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 = 'temperature' # unique client_id mqtt_broker = "raspberrypi" # broker address, usually your HASS IP address # create the MQTT client client = paho.Client(protocol=paho.MQTTv31) # * set a random string (max 23 chars) # Command topic #topic = 'weathersensors/garden' # client connection #client.username_pw_set(mqtt_username, mqtt_password) # MQTT server credentials client.connect(mqtt_broker, 1883, 60) # MQTT server address # -R 42 HIDEKI TS04 Temperature, Humidity, Wind and Rain Sensor (garden sensor) # -R 187 Inkbird ITH-20R temperature humidity sensor (pool sensor) docker = docker.from_env() container = docker.containers.run("rtl_433:inkbird", "-R 42 -R 187 -F json -T 40 -M time:utc:usec", devices={'/dev/bus/usb/001/004:/dev/bus/usb/001/004:rwm'}) for line in container.split('\n'): print("line: " + line) print("line length: " + str(len(line))) if len(line) > 0: jsonData = (json.loads(line)) model = str(jsonData['model']) if model == "Hideki-TS04": topic = 'weathersensors/garden' else: topic = 'weathersensors/pool' time = str(jsonData['time']) if model == "Inkbird ITH-20R": battery_json_key = "battery" else: battery_json_key = "battery_ok" battery = str(jsonData[battery_json_key]) temperature = str(jsonData['temperature_C']) humidity = str(jsonData['humidity']) client.publish(topic + "/time", "" + time) client.publish(topic + "/battery", "" + battery) client.publish(topic + "/temperature", "" + temperature) client.publish(topic + "/humidity", "" + humidity)