Skip to content

Commit

Permalink
Handle mqtt connection events
Browse files Browse the repository at this point in the history
  • Loading branch information
Andre0512 committed Mar 29, 2024
1 parent bdf9d31 commit 86c2956
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 6 deletions.
12 changes: 12 additions & 0 deletions pyhon/appliance.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ def __init__(
self._additional_data: Dict[str, Any] = {}
self._last_update: Optional[datetime] = None
self._default_setting = HonParameter("", {}, "")
self._connection = (
not self._attributes.get("lastConnEvent", {}).get("category", "")
== "DISCONNECTED"
)

try:
self._extra: Optional[ApplianceBase] = importlib.import_module(
Expand Down Expand Up @@ -90,6 +94,14 @@ def _check_name_zone(self, name: str, frontend: bool = True) -> str:
return f"{attribute}{zone}{self._zone}"
return attribute

@property
def connection(self) -> bool:
return self._connection

@connection.setter
def connection(self, connection: bool) -> None:
self._connection = connection

@property
def appliance_model_id(self) -> str:
return str(self._info.get("applianceModelId", ""))
Expand Down
2 changes: 1 addition & 1 deletion pyhon/appliances/dw.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
class Appliance(ApplianceBase):
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
data = super().attributes(data)
if data.get("lastConnEvent", {}).get("category", "") == "DISCONNECTED":
if not self.parent.connection:
data["parameters"]["machMode"].value = "0"
data["active"] = bool(data.get("activity"))
return data
2 changes: 1 addition & 1 deletion pyhon/appliances/ov.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
class Appliance(ApplianceBase):
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
data = super().attributes(data)
if data.get("lastConnEvent", {}).get("category", "") == "DISCONNECTED":
if not self.parent.connection:
data["parameters"]["temp"].value = 0
data["parameters"]["onOffStatus"].value = 0
data["parameters"]["remoteCtrValid"].value = 0
Expand Down
2 changes: 1 addition & 1 deletion pyhon/appliances/td.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
class Appliance(ApplianceBase):
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
data = super().attributes(data)
if data.get("lastConnEvent", {}).get("category", "") == "DISCONNECTED":
if not self.parent.connection:
data["parameters"]["machMode"].value = "0"
data["active"] = bool(data.get("activity"))
data["pause"] = data["parameters"]["machMode"] == "3"
Expand Down
2 changes: 1 addition & 1 deletion pyhon/appliances/wd.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
class Appliance(ApplianceBase):
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
data = super().attributes(data)
if data.get("lastConnEvent", {}).get("category", "") == "DISCONNECTED":
if not self.parent.connection:
data["parameters"]["machMode"].value = "0"
data["active"] = bool(data.get("activity"))
data["pause"] = data["parameters"]["machMode"] == "3"
Expand Down
8 changes: 7 additions & 1 deletion pyhon/connection/mqtt.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,14 @@ def _on_publish_received(self, data: mqtt5.PublishReceivedData) -> None:
appliance.sync_params_to_command("settings")
self._hon.notify()
elif topic and "disconnected" in topic:
_LOGGER.info("Disconnected %s", appliance.nick_name)
_LOGGER.info(
"Disconnected %s: %s",
appliance.nick_name,
payload.get("disconnectReason"),
)
appliance.connection = False
elif topic and "connected" in topic:
appliance.connection = True
_LOGGER.info("Connected %s", appliance.nick_name)
elif topic and "discovery" in topic:
_LOGGER.info("Discovered %s", appliance.nick_name)
Expand Down
1 change: 0 additions & 1 deletion pyhon/hon.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import asyncio
import logging
from pathlib import Path
from types import TracebackType
Expand Down

0 comments on commit 86c2956

Please sign in to comment.