Archived
1
0

Adding redundant connection to HA MQTT Broker.

This commit is contained in:
Shaun Setlock
2023-05-30 10:27:28 -04:00
parent e9f9ce5acb
commit 33ba6f414b

81
main.py
View File

@@ -7,6 +7,7 @@ from machine import Pin
from umqtt.robust import MQTTClient from umqtt.robust import MQTTClient
import wifi_config import wifi_config
import mqtt_config import mqtt_config
import ha_mqtt_config
from pico_funcs import read_cpu_temp, wlan_up, led_error_code from pico_funcs import read_cpu_temp, wlan_up, led_error_code
from hcsr04_funcs import read_hc_sr04 from hcsr04_funcs import read_hc_sr04
@@ -39,6 +40,15 @@ def main():
server = mqtt_config.MQTT_HOST_NAME, server = mqtt_config.MQTT_HOST_NAME,
) )
# Create Home Assistant MQTT Client
ha_mqtt_client = MQTTClient(
client_id = ha_mqtt_config.MQTT_CLIENT_ID,
server = ha_mqtt_config.MQTT_HOST_NAME,
keepalive = ha_mqtt_config.MQTT_KEEP,
user = ha_mqtt_config.MQTT_USERNAME,
password = ha_mqtt_config.MQTT_PASSWORD,
)
# Create HC-SR04 # Create HC-SR04
trig = Pin(TRIG_PIN, Pin.OUT) trig = Pin(TRIG_PIN, Pin.OUT)
echo = Pin(ECHO_PIN, Pin.IN, Pin.PULL_DOWN) echo = Pin(ECHO_PIN, Pin.IN, Pin.PULL_DOWN)
@@ -104,22 +114,38 @@ def main():
except: except:
continue continue
# MQTT Conneciton. # MQTT Connection to Primary Broker.
try: try:
mqtt_client.connect(clean_session = False)
mqtt_ready = True
mqtt = 'mosquitto'
if DEBUG:
print(f'Connected to Mosquitto MQTT broker.')
except Exception as e:
if DEBUG:
print("Trouble to connecting to Mosquitto MQTT: {}".format(e))
# MQTT Connection to Back Up Broker.
if not mqtt_ready:
try: try:
mqtt_client.connect(clean_session = False) try:
mqtt_ready = True ha_mqtt_client.connect(clean_session = False)
if DEBUG: mqtt_ready = True
print(f'MQTT Connected.') mqtt = 'ha'
if DEBUG:
except Exception as e: print(f'Connected to the back up, Home Assistant, MQTT broker.')
if DEBUG:
print("Trouble to connecting to MQTT: {}".format(e)) except Exception as f:
led_error_code(led, 2) if DEBUG:
time.sleep(5) print("Trouble to connecting to Home Assistant MQTT: {}".format(f))
continue # Start back at the top of the While Loop led_error_code(led, 2)
except: time.sleep(5)
continue continue # Start back at the top of the While Loop
except:
continue
# Ready to Publish? # Ready to Publish?
try: try:
@@ -142,14 +168,27 @@ def main():
'WiFi Information':ifconfig, 'WiFi Information':ifconfig,
} }
hw_payload = json.dumps(hw_data) hw_payload = json.dumps(hw_data)
# Publish
mqtt_client.publish("home/{}".format(mqtt_config.MQTT_ZONE_ID),hc_sr04_payload, retain=True)
mqtt_client.publish("hw/{}".format(mqtt_config.MQTT_HW_ID),hw_payload, retain=True)
mqtt_client.disconnect()
if DEBUG: if DEBUG:
print(f'MQTT Disconnected.') print(f'Trying to publish...')
if mqtt == 'mosquitto':
# Publish
mqtt_client.publish("home/{}".format(mqtt_config.MQTT_ZONE_ID),hc_sr04_payload, retain=True)
mqtt_client.publish("hw/{}".format(mqtt_config.MQTT_HW_ID),hw_payload, retain=True)
mqtt_client.disconnect()
if DEBUG:
print(f'MQTT Disconnected.')
if mqtt == 'ha':
# Publish
ha_mqtt_client.publish("home/{}".format(mqtt_config.MQTT_ZONE_ID),hc_sr04_payload, retain=True)
ha_mqtt_client.publish("hw/{}".format(mqtt_config.MQTT_HW_ID),hw_payload, retain=True)
ha_mqtt_client.disconnect()
if DEBUG:
print(f'MQTT Disconnected.')
except: except:
continue continue