mirror of
https://github.com/Andre0512/pyhOn.git
synced 2024-12-22 10:45:31 +00:00
Handle mqtt connection events
This commit is contained in:
parent
bdf9d31be3
commit
86c2956d69
|
@ -43,6 +43,10 @@ class HonAppliance:
|
||||||
self._additional_data: Dict[str, Any] = {}
|
self._additional_data: Dict[str, Any] = {}
|
||||||
self._last_update: Optional[datetime] = None
|
self._last_update: Optional[datetime] = None
|
||||||
self._default_setting = HonParameter("", {}, "")
|
self._default_setting = HonParameter("", {}, "")
|
||||||
|
self._connection = (
|
||||||
|
not self._attributes.get("lastConnEvent", {}).get("category", "")
|
||||||
|
== "DISCONNECTED"
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._extra: Optional[ApplianceBase] = importlib.import_module(
|
self._extra: Optional[ApplianceBase] = importlib.import_module(
|
||||||
|
@ -90,6 +94,14 @@ class HonAppliance:
|
||||||
return f"{attribute}{zone}{self._zone}"
|
return f"{attribute}{zone}{self._zone}"
|
||||||
return attribute
|
return attribute
|
||||||
|
|
||||||
|
@property
|
||||||
|
def connection(self) -> bool:
|
||||||
|
return self._connection
|
||||||
|
|
||||||
|
@connection.setter
|
||||||
|
def connection(self, connection: bool) -> None:
|
||||||
|
self._connection = connection
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def appliance_model_id(self) -> str:
|
def appliance_model_id(self) -> str:
|
||||||
return str(self._info.get("applianceModelId", ""))
|
return str(self._info.get("applianceModelId", ""))
|
||||||
|
|
|
@ -7,7 +7,7 @@ from pyhon.appliances.base import ApplianceBase
|
||||||
class Appliance(ApplianceBase):
|
class Appliance(ApplianceBase):
|
||||||
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
data = super().attributes(data)
|
data = super().attributes(data)
|
||||||
if data.get("lastConnEvent", {}).get("category", "") == "DISCONNECTED":
|
if not self.parent.connection:
|
||||||
data["parameters"]["machMode"].value = "0"
|
data["parameters"]["machMode"].value = "0"
|
||||||
data["active"] = bool(data.get("activity"))
|
data["active"] = bool(data.get("activity"))
|
||||||
return data
|
return data
|
||||||
|
|
|
@ -6,7 +6,7 @@ from pyhon.appliances.base import ApplianceBase
|
||||||
class Appliance(ApplianceBase):
|
class Appliance(ApplianceBase):
|
||||||
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
data = super().attributes(data)
|
data = super().attributes(data)
|
||||||
if data.get("lastConnEvent", {}).get("category", "") == "DISCONNECTED":
|
if not self.parent.connection:
|
||||||
data["parameters"]["temp"].value = 0
|
data["parameters"]["temp"].value = 0
|
||||||
data["parameters"]["onOffStatus"].value = 0
|
data["parameters"]["onOffStatus"].value = 0
|
||||||
data["parameters"]["remoteCtrValid"].value = 0
|
data["parameters"]["remoteCtrValid"].value = 0
|
||||||
|
|
|
@ -8,7 +8,7 @@ from pyhon.parameter.fixed import HonParameterFixed
|
||||||
class Appliance(ApplianceBase):
|
class Appliance(ApplianceBase):
|
||||||
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
data = super().attributes(data)
|
data = super().attributes(data)
|
||||||
if data.get("lastConnEvent", {}).get("category", "") == "DISCONNECTED":
|
if not self.parent.connection:
|
||||||
data["parameters"]["machMode"].value = "0"
|
data["parameters"]["machMode"].value = "0"
|
||||||
data["active"] = bool(data.get("activity"))
|
data["active"] = bool(data.get("activity"))
|
||||||
data["pause"] = data["parameters"]["machMode"] == "3"
|
data["pause"] = data["parameters"]["machMode"] == "3"
|
||||||
|
|
|
@ -7,7 +7,7 @@ from pyhon.appliances.base import ApplianceBase
|
||||||
class Appliance(ApplianceBase):
|
class Appliance(ApplianceBase):
|
||||||
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
data = super().attributes(data)
|
data = super().attributes(data)
|
||||||
if data.get("lastConnEvent", {}).get("category", "") == "DISCONNECTED":
|
if not self.parent.connection:
|
||||||
data["parameters"]["machMode"].value = "0"
|
data["parameters"]["machMode"].value = "0"
|
||||||
data["active"] = bool(data.get("activity"))
|
data["active"] = bool(data.get("activity"))
|
||||||
data["pause"] = data["parameters"]["machMode"] == "3"
|
data["pause"] = data["parameters"]["machMode"] == "3"
|
||||||
|
|
|
@ -90,8 +90,14 @@ class MQTTClient:
|
||||||
appliance.sync_params_to_command("settings")
|
appliance.sync_params_to_command("settings")
|
||||||
self._hon.notify()
|
self._hon.notify()
|
||||||
elif topic and "disconnected" in topic:
|
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:
|
elif topic and "connected" in topic:
|
||||||
|
appliance.connection = True
|
||||||
_LOGGER.info("Connected %s", appliance.nick_name)
|
_LOGGER.info("Connected %s", appliance.nick_name)
|
||||||
elif topic and "discovery" in topic:
|
elif topic and "discovery" in topic:
|
||||||
_LOGGER.info("Discovered %s", appliance.nick_name)
|
_LOGGER.info("Discovered %s", appliance.nick_name)
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import asyncio
|
|
||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from types import TracebackType
|
from types import TracebackType
|
||||||
|
|
Loading…
Reference in a new issue