Refactor mqtt to handle reconnects and not cause frigate to stop. (#4440)

* Refactor mqtt client

* Protect callback method

* Use async to handle reconnects

* Set types and clenup

* Don't set connected until rc code is checked
This commit is contained in:
Nicolas Mowen
2022-11-20 06:36:01 -07:00
committed by GitHub
parent 65825040a3
commit ebdf36e0b9
4 changed files with 230 additions and 150 deletions

View File

@@ -20,7 +20,7 @@ from frigate.events import EventCleanup, EventProcessor
from frigate.http import create_app
from frigate.log import log_process, root_configurer
from frigate.models import Event, Recordings
from frigate.mqtt import MqttSocketRelay, create_mqtt_client
from frigate.mqtt import FrigateMqttClient, MqttSocketRelay
from frigate.object_processing import TrackedObjectProcessor
from frigate.output import output_frames
from frigate.plus import PlusApi
@@ -169,7 +169,7 @@ class FrigateApp:
self.restream.add_cameras()
def init_mqtt(self) -> None:
self.mqtt_client = create_mqtt_client(self.config, self.camera_metrics)
self.mqtt_client = FrigateMqttClient(self.config, self.camera_metrics)
def start_mqtt_relay(self) -> None:
self.mqtt_relay = MqttSocketRelay(