Activate LWT for mqtt-json mode

This commit is contained in:
Thomas Dietrich 2017-07-27 22:11:56 +02:00
parent 1b31d2aeb2
commit 7e12539166
1 changed files with 17 additions and 15 deletions

View File

@ -62,6 +62,7 @@ if reporting_mode == 'mqtt-json':
mqtt_client = mqtt.Client() mqtt_client = mqtt.Client()
mqtt_client.on_connect = on_connect mqtt_client.on_connect = on_connect
mqtt_client.on_publish = on_publish mqtt_client.on_publish = on_publish
mqtt_client.will_set('{}/$announce'.format(topic_prefix), payload='{}', retain=True)
if config['MQTT'].get('username'): if config['MQTT'].get('username'):
mqtt_client.username_pw_set(config['MQTT'].get('username'), config['MQTT'].get('password', None)) mqtt_client.username_pw_set(config['MQTT'].get('username'), config['MQTT'].get('password', None))
try: try:
@ -74,9 +75,7 @@ if reporting_mode == 'mqtt-json':
sys.exit(1) sys.exit(1)
else: else:
mqtt_client.loop_start() mqtt_client.loop_start()
sleep(0.5) # some slack to establish the connection sleep(1.0) # some slack to establish the connection
mqtt_client.publish('{}/$announce'.format(topic_prefix), payload='{}', retain=True)
sleep(0.5) # some slack for the publish roundtrip and callback function
sd_notifier.notify('READY=1') sd_notifier.notify('READY=1')
@ -102,6 +101,7 @@ for [name, mac] in config['Sensors'].items():
print() print()
# Discovery Announcement # Discovery Announcement
if reporting_mode == 'mqtt-json':
print('Announcing MiFlora devices to MQTT broker for auto-discovery ...') print('Announcing MiFlora devices to MQTT broker for auto-discovery ...')
flores_info = dict() flores_info = dict()
for [flora_name, flora_poller] in flores.items(): for [flora_name, flora_poller] in flores.items():
@ -114,6 +114,7 @@ for [flora_name, flora_poller] in flores.items():
flores_info[flora_name] = flora_info flores_info[flora_name] = flora_info
mqtt_client.publish('{}/$announce'.format(topic_prefix), json.dumps(flores_info), retain=True) mqtt_client.publish('{}/$announce'.format(topic_prefix), json.dumps(flores_info), retain=True)
sleep(0.5) # some slack for the publish roundtrip and callback function sleep(0.5) # some slack for the publish roundtrip and callback function
print()
sd_notifier.notify('STATUS=Initialization complete, starting MQTT publish loop') sd_notifier.notify('STATUS=Initialization complete, starting MQTT publish loop')
@ -153,6 +154,7 @@ while True:
sleep(sleep_period) sleep(sleep_period)
print() print()
else: else:
print('Execution finished in non-daemon-mode.')
sd_notifier.notify('STATUS=Execution finished in non-daemon-mode') sd_notifier.notify('STATUS=Execution finished in non-daemon-mode')
if reporting_mode == 'mqtt-json': if reporting_mode == 'mqtt-json':
mqtt_client.disconnect() mqtt_client.disconnect()