Skip to content

Commit

Permalink
Update MQTT to feat HA 2023.08.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Minims committed Aug 6, 2023
1 parent c90aa46 commit 5ed914e
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 28 deletions.
10 changes: 5 additions & 5 deletions myFox2Mqtt/homeassistant/ha_discovery.py
Original file line number Diff line number Diff line change
Expand Up @@ -641,7 +641,7 @@ def ha_discovery_alarm(site: Site, mqtt_config: dict, homeassistant_config: dict
"identifiers": [site.siteId],
"manufacturer": "MyFox",
"model": "MyFox HC2",
"name": site.label,
"name": "MyFox HC2",
"sw_version": "MyFox2MQTT",
}

Expand Down Expand Up @@ -677,14 +677,14 @@ def ha_discovery_alarm_actions(site: Site, mqtt_config: dict):
"identifiers": [site.siteId],
"manufacturer": "MyFox",
"model": "MyFox HC2",
"name": site.label,
"name": "MyFox HC2",
"sw_version": "MyFox2MQTT",
}

command_topic = f"{mqtt_config.get('topic_prefix', 'myFox2mqtt')}/{site.siteId}/siren/command"
site_config["topic"] = f"{mqtt_config.get('ha_discover_prefix', 'homeassistant')}/switch/{site.siteId}/siren/config"
site_config["config"] = {
"name": f"{site.label} Siren",
"name": "Siren",
"unique_id": f"{site.siteId}_{site.label}",
"command_topic": command_topic,
"device": site_info,
Expand Down Expand Up @@ -720,7 +720,7 @@ def ha_discovery_devices(
"topic"
] = f"{mqtt_config.get('ha_discover_prefix', 'homeassistant')}/{device_type}/{site_id}_{device.device_id}/{sensor_name}/config"
device_config["config"] = {
"name": f"{device.label} {sensor_name}",
"name": sensor_name,
"unique_id": f"{device.device_id}_{sensor_name}",
"state_topic": f"{mqtt_config.get('topic_prefix', 'myFox2mqtt')}/{site_id}/{device.device_id}/state",
"value_template": "{{ value_json." + sensor_name + " }}",
Expand Down Expand Up @@ -772,7 +772,7 @@ def ha_discovery_cameras(
"topic"
] = f"{mqtt_config.get('ha_discover_prefix', 'homeassistant')}/camera/{site_id}_{device.device_id}/snapshot/config"
camera_config["config"] = {
"name": f"{device.label} snapshot",
"name": "snapshot",
"unique_id": f"{device.device_id}_snapshot",
"topic": f"{mqtt_config.get('topic_prefix', 'myFox2mqtt')}/{site_id}/{device.device_id}/snapshot",
"device": device_info,
Expand Down
75 changes: 52 additions & 23 deletions myFox2Mqtt/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import threading
from functools import partial
from signal import SIGINT, SIGTERM, signal
import time

from exceptions import MyFoxInitError
from myfox_2_mqtt import MyFox2Mqtt
Expand All @@ -17,22 +18,25 @@
VERSION = "2023.8.0"


def myfox_loop(myfox_2_mqtt):
def myfox_loop(config, mqtt_client, api):
"""MyFox 2 MQTT Loop"""
try:
myfox_2_mqtt.loop()
except Exception as exp:
LOGGER.error(f"Force stopping Api {exp}")
close_and_exit(myfox_2_mqtt, 3)
myfox_api = MyFox2Mqtt(api=api, mqtt_client=mqtt_client, config=config)
time.sleep(1)
myfox_api.loop()
except MyFoxInitError as exc:
LOGGER.error(f"Force stopping Api {exc}")
close_and_exit(myfox_api, 3)


def myfox_wss_loop(myfox_websocket):
def myfox_wss_loop(sso, debug, config, mqtt_client, api):
"""MyFox WSS Loop"""
try:
myfox_websocket.run_forever()
except Exception as exp:
LOGGER.error(f"Force stopping WebSocket {exp}")
close_and_exit(myfox_websocket, 3)
wss = MyFoxWebsocket(sso=sso, debug=debug, config=config, mqtt_client=mqtt_client, api=api)
wss.run_forever()
except Exception as exc:
LOGGER.error(f"Force stopping WebSocket {exc}")
close_and_exit(wss, 3)


if __name__ == "__main__":
Expand All @@ -54,24 +58,49 @@ def myfox_wss_loop(myfox_websocket):
SSO = init_sso(config=CONFIG)
API = MyFoxApi(sso=SSO)
MQTT_CLIENT = init_mqtt(config=CONFIG, api=API)
# WSS = MyFoxWebsocket(sso=SSO, debug=DEBUG, config=CONFIG, mqtt_client=MQTT_CLIENT, api=API)

try:
MYFOX = MyFox2Mqtt(api=API, mqtt_client=MQTT_CLIENT, config=CONFIG)

except MyFoxInitError as exp:
LOGGER.error(f"Unable to init: {exp}")
close_and_exit(None, None, None, 1)

# Trigger Ctrl-C
signal(SIGINT, partial(close_and_exit, MYFOX, 0))
signal(SIGTERM, partial(close_and_exit, MYFOX, 0))
signal(SIGINT, partial(close_and_exit, MyFox2Mqtt, 0))
signal(SIGTERM, partial(close_and_exit, MyFox2Mqtt, 0))
signal(SIGINT, partial(close_and_exit, MyFoxWebsocket, 0))
signal(SIGTERM, partial(close_and_exit, MyFoxWebsocket, 0))

try:
p1 = threading.Thread(target=myfox_loop, args=(MYFOX,))
# p2 = threading.Thread(target=myfox_wss_loop, args=(WSS,))
p1 = threading.Thread(
target=myfox_loop,
args=(
CONFIG,
MQTT_CLIENT,
API,
),
)
# p2 = threading.Thread(
# target=myfox_wss_loop,
# args=(
# SSO,
# DEBUG,
# CONFIG,
# MQTT_CLIENT,
# API,
# ),
# )
p1.start()
# p2.start()
# p2.join()
# while True:
# if not p2.is_alive():
# p2 = threading.Thread(
# target=myfox_wss_loop,
# args=(
# SSO,
# DEBUG,
# CONFIG,
# MQTT_CLIENT,
# API,
# ),
# )
# p2.start()
# p2.join()
except Exception as exp:
LOGGER.error(f"Force stopping application {exp}")
close_and_exit(MYFOX, 3)
# close_and_exit(MYFOX, 3)

0 comments on commit 5ed914e

Please sign in to comment.