Adding redundant connection to HA MQTT Broker.
This commit is contained in:
79
main.py
79
main.py
@@ -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:
|
||||||
try:
|
mqtt_client.connect(clean_session = False)
|
||||||
mqtt_client.connect(clean_session = False)
|
mqtt_ready = True
|
||||||
mqtt_ready = True
|
mqtt = 'mosquitto'
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print(f'MQTT Connected.')
|
print(f'Connected to Mosquitto MQTT broker.')
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print("Trouble to connecting to MQTT: {}".format(e))
|
print("Trouble to connecting to Mosquitto MQTT: {}".format(e))
|
||||||
led_error_code(led, 2)
|
|
||||||
time.sleep(5)
|
|
||||||
continue # Start back at the top of the While Loop
|
# MQTT Connection to Back Up Broker.
|
||||||
except:
|
if not mqtt_ready:
|
||||||
continue
|
try:
|
||||||
|
try:
|
||||||
|
ha_mqtt_client.connect(clean_session = False)
|
||||||
|
mqtt_ready = True
|
||||||
|
mqtt = 'ha'
|
||||||
|
if DEBUG:
|
||||||
|
print(f'Connected to the back up, Home Assistant, MQTT broker.')
|
||||||
|
|
||||||
|
except Exception as f:
|
||||||
|
if DEBUG:
|
||||||
|
print("Trouble to connecting to Home Assistant MQTT: {}".format(f))
|
||||||
|
led_error_code(led, 2)
|
||||||
|
time.sleep(5)
|
||||||
|
continue # Start back at the top of the While Loop
|
||||||
|
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
|
||||||
# Ready to Publish?
|
# Ready to Publish?
|
||||||
try:
|
try:
|
||||||
@@ -143,13 +169,26 @@ def main():
|
|||||||
}
|
}
|
||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user