From c41f91130b19fd1542cc2bd3a0f806bea4597e9b Mon Sep 17 00:00:00 2001 From: bangom Date: Mon, 23 Mar 2020 21:07:37 +0000 Subject: [PATCH 1/2] Home Assistant MQTT Sensor discovery enhancements, areas support. --- miflora-mqtt-daemon.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/miflora-mqtt-daemon.py b/miflora-mqtt-daemon.py index 1209779..fa183d3 100755 --- a/miflora-mqtt-daemon.py +++ b/miflora-mqtt-daemon.py @@ -307,6 +307,15 @@ def flores_to_openhab_items(flores, reporting_mode): payload['name'] = "{} {}".format(flora_name, sensor.title()) if 'device_class' in params: payload['device_class'] = params['device_class'] + payload['unique_id'] = "{}-{}".format(flora['mac'].lower().replace(":", ""), sensor) + payload['device'] = { + 'identifiers' : ["MiFlora{}".format(flora['mac'].lower().replace(":", ""))], + 'connections' : [["mac", flora['mac'].lower()]], + 'manufacturer' : 'Xiaomi', + 'name' : flora_name, + 'model' : 'HHCCJCY01', + 'sw_version': flora['firmware'] + } mqtt_client.publish('{}/{}_{}/config'.format(topic_path, flora_name, sensor).lower(), json.dumps(payload), 1, True) elif reporting_mode == 'wirenboard-mqtt': print_line('Announcing Mi Flora devices to MQTT broker for auto-discovery ...') From aa351138989dc8395841ff4c67faee6dcbb4cc93 Mon Sep 17 00:00:00 2001 From: Thomas Dietrich Date: Fri, 27 Mar 2020 22:49:24 +0100 Subject: [PATCH 2/2] Bring elements into stable order --- miflora-mqtt-daemon.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/miflora-mqtt-daemon.py b/miflora-mqtt-daemon.py index fa183d3..80ec50a 100755 --- a/miflora-mqtt-daemon.py +++ b/miflora-mqtt-daemon.py @@ -297,17 +297,15 @@ def flores_to_openhab_items(flores, reporting_mode): print_line('Announcing Mi Flora devices to MQTT broker for auto-discovery ...') for [flora_name, flora] in flores.items(): topic_path = '{}/sensor/{}'.format(base_topic, flora_name) - base_payload = { - "state_topic": "{}/state".format(topic_path).lower() - } - for sensor, params in parameters.items(): - payload = dict(base_payload.items()) - payload['unit_of_measurement'] = params['unit'] - payload['value_template'] = "{{ value_json.%s }}" % (sensor, ) + for [sensor, params] in parameters.items(): + payload = OrderedDict() payload['name'] = "{} {}".format(flora_name, sensor.title()) + payload['unique_id'] = "{}-{}".format(flora['mac'].lower().replace(":", ""), sensor) + payload['unit_of_measurement'] = params['unit'] if 'device_class' in params: payload['device_class'] = params['device_class'] - payload['unique_id'] = "{}-{}".format(flora['mac'].lower().replace(":", ""), sensor) + payload['state_topic'] = "{}/state".format(topic_path).lower() + payload['value_template'] = "{{{{ value_json.{} }}}}".format(sensor) payload['device'] = { 'identifiers' : ["MiFlora{}".format(flora['mac'].lower().replace(":", ""))], 'connections' : [["mac", flora['mac'].lower()]],