From 67d5ca72d18170ffe359fc725f348991f9123067 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Thu, 21 Mar 2024 21:38:15 +0100 Subject: [PATCH 01/32] Added Service for sending arbritrary ESP2 messages --- changes.md | 3 ++ custom_components/eltako/gateway.py | 67 +++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/changes.md b/changes.md index a77b4569..c2b7f6cc 100644 --- a/changes.md +++ b/changes.md @@ -1,5 +1,8 @@ # Changes and Feature List +## Version 1.4.1 Support for sending arbritrary messages +* Added Service for sending arbritrary ESP2 messages + ## Version 1.4.0 ESP3 Support (USB300) * Docs about gateway usage added. * Added EEPs F6-02-01 and F6-02-02 as sender EEP for lights so that regular switch commands can be sent from Home Assistant. diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 68f777c2..ec2a83b8 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -13,6 +13,7 @@ from eltakobus.message import ESP2Message, RPSMessage, Regular1BSMessage, Regular4BSMessage, EltakoPoll, prettify from eltakobus.util import AddressExpression +from eltakobus.eep import EEP from enocean.communicators import SerialCommunicator from enocean.protocol.packet import RadioPacket, RORG, Packet @@ -205,6 +206,72 @@ async def async_setup(self): self.hass, event_id, self._callback_send_message_to_serial_bus ) + # Register home assistant service for sending arbitrary telegrams. + # + # The service will be registered for each gateway, as the user + # might have different gateways that cause the eltako relays + # only to react on them. + service_name = f"gateway_{self._attr_dev_id}_send_message" + self.hass.services.async_register(DOMAIN, service_name, self.async_service_send_message) + + + # Command Section + async def async_service_send_message(self, event) -> None: + """Send an arbitrary message with the provided eep.""" + try: + sender_id_str = event.data.get("id", None) + sender_id:AddressExpression = AddressExpression.parse(sender_id_str) + except: + LOGGER.error(f"[Service: Send Message] No valid sender id defined. (Given sender id: {sender_id_str})") + return + + try: + sender_eep_str = event.data.get("eep", None) + sender_eep:EEP = EEP.find(sender_eep_str) + except: + LOGGER.error(f"[Service: Send Message] No valid sender id defined. (Given sender id: {sender_id_str})") + return + + eep:EEP = sender_eep() + for k in eep.__dict__.keys(): + if k in event.data.keys(): + setattr(eep, k, event.data.get(k[1:])) # key k starts always with '_' because it is a private attribute + else: + LOGGER.warn(f"[Service: Send Message] Argument {k} is not provided for sending {eep.eep_string} message. Set default value: {k}=0") + setattr(eep, k, 0) + + try: + message = eep.encode_message(sender_id) + self.send_message(message) + except: + LOGGER.error(f"[Service: Send Message] Cannot send message.") + + + # if sender_id and sender_eep is not None: + # sender_address = AddressExpression((0xFF, 0x82, 0x3E, 0x04)) + # message = None + + # if (A5_38_08.eep_string == sender_eep): + # command = event.data.get("command") + # if command is not None: + # switching = CentralCommandSwitching(0, 1, 0, 0, command) + # message = A5_38_08(command=0x01, switching=switching).encode_message(sender_address) + + # if (A5_10_06.eep_string == sender_eep): + # target_temperature = event.data.get("target_temperature") + # current_temperature = event.data.get("current_temperature") + # if target_temperature and current_temperature is not None: + # message = A5_10_06(A5_10_06.Heater_Mode.NORMAL, target_temperature, current_temperature, False).encode_message(sender_address) + + # if message is not None: + # self.send_message(message) + + + def send_message(self, msg: ESP2Message): + """Put message on RS485 bus. First the message is put onto HA event bus so that other automations can react on messages.""" + event_id = config_helpers.get_bus_event_type(self.base_id, SIGNAL_SEND_MESSAGE) + dispatcher_send(self.hass, event_id, msg) + def unload(self): """Disconnect callbacks established at init time.""" From 9ed8f04a1101b18c463439668c923abe32fbbf31 Mon Sep 17 00:00:00 2001 From: Christoph Heich Date: Fri, 22 Mar 2024 10:26:32 +0100 Subject: [PATCH 02/32] Fixed target temperature not being set for sensor with eep A5-10-06 in home assistant. --- custom_components/eltako/sensor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/eltako/sensor.py b/custom_components/eltako/sensor.py index bd465435..dc4a6822 100644 --- a/custom_components/eltako/sensor.py +++ b/custom_components/eltako/sensor.py @@ -757,7 +757,7 @@ def value_changed(self, msg: ESP2Message): LOGGER.warning("[Target Temperature Sensor %s] Could not decode message: %s", self.dev_id, str(e)) return - self._attr_target_temperature = round( 2*decoded.target_temperature, 0)/2 + self._attr_native_value = round(2 * decoded.target_temperature, 0) / 2 self.schedule_update_ha_state() From ecfa735bbfe18be42a2e892693551e7e406bc2d6 Mon Sep 17 00:00:00 2001 From: Christoph Heich Date: Fri, 22 Mar 2024 10:56:36 +0100 Subject: [PATCH 03/32] Fixed an exception if the current cover position is unknown causing it to be None. --- custom_components/eltako/cover.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/custom_components/eltako/cover.py b/custom_components/eltako/cover.py index ce5b1663..690ca655 100644 --- a/custom_components/eltako/cover.py +++ b/custom_components/eltako/cover.py @@ -309,19 +309,31 @@ def value_changed(self, msg): elif decoded.time is not None and decoded.direction is not None and self._time_closes is not None and self._time_opens is not None: time_in_seconds = decoded.time / 10.0 - - if decoded.direction == 0x01: # up + + if decoded.direction == 0x01: # up + # If the latest state is unknown, the cover position + # will be set to None, therefore we have to guess + # the initial position. + if self._attr_current_cover_position is None: + self._attr_current_cover_position = 100 + self._attr_current_cover_position = min(self._attr_current_cover_position + int(time_in_seconds / self._time_opens * 100.0), 100) self._attr_is_opening = True self._attr_is_closing = False self._attr_is_closed = None - - else: # down + + else: # down + # If the latest state is unknown, the cover position + # will be set to None, therefore we have to guess + # the initial position. + if self._attr_current_cover_position is None: + self._attr_current_cover_position = 0 + self._attr_current_cover_position = max(self._attr_current_cover_position - int(time_in_seconds / self._time_closes * 100.0), 0) self._attr_is_opening = False self._attr_is_closing = True self._attr_is_closed = None - + if self._attr_current_cover_position == 0: self._attr_is_closed = True self._attr_is_opening = False From eea07c746c38ea6906ba1c7b437a34a5306c1985 Mon Sep 17 00:00:00 2001 From: Christoph Heich Date: Fri, 22 Mar 2024 11:07:18 +0100 Subject: [PATCH 04/32] Changed inverted initial cover position. --- custom_components/eltako/cover.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/eltako/cover.py b/custom_components/eltako/cover.py index 690ca655..c6782741 100644 --- a/custom_components/eltako/cover.py +++ b/custom_components/eltako/cover.py @@ -315,7 +315,7 @@ def value_changed(self, msg): # will be set to None, therefore we have to guess # the initial position. if self._attr_current_cover_position is None: - self._attr_current_cover_position = 100 + self._attr_current_cover_position = 0 self._attr_current_cover_position = min(self._attr_current_cover_position + int(time_in_seconds / self._time_opens * 100.0), 100) self._attr_is_opening = True @@ -327,7 +327,7 @@ def value_changed(self, msg): # will be set to None, therefore we have to guess # the initial position. if self._attr_current_cover_position is None: - self._attr_current_cover_position = 0 + self._attr_current_cover_position = 100 self._attr_current_cover_position = max(self._attr_current_cover_position - int(time_in_seconds / self._time_closes * 100.0), 0) self._attr_is_opening = False From 1a77947bf62093cb00dec29981e6f2efdee1c5ab Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 20:55:28 +0100 Subject: [PATCH 05/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index ec2a83b8..8c837d97 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -218,6 +218,8 @@ async def async_setup(self): # Command Section async def async_service_send_message(self, event) -> None: """Send an arbitrary message with the provided eep.""" + LOGGER.debug(f"[Service: Send Message] Received event: {event.__dict__}") + try: sender_id_str = event.data.get("id", None) sender_id:AddressExpression = AddressExpression.parse(sender_id_str) @@ -232,7 +234,7 @@ async def async_service_send_message(self, event) -> None: LOGGER.error(f"[Service: Send Message] No valid sender id defined. (Given sender id: {sender_id_str})") return - eep:EEP = sender_eep() + eep:EEP = sender_eep.__new__() for k in eep.__dict__.keys(): if k in event.data.keys(): setattr(eep, k, event.data.get(k[1:])) # key k starts always with '_' because it is a private attribute From 12e922b64d8dd71348e36364471fbb36a4fc0106 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 20:57:09 +0100 Subject: [PATCH 06/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 8c837d97..d6ddcb22 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -218,7 +218,7 @@ async def async_setup(self): # Command Section async def async_service_send_message(self, event) -> None: """Send an arbitrary message with the provided eep.""" - LOGGER.debug(f"[Service: Send Message] Received event: {event.__dict__}") + LOGGER.debug(f"[Service: Send Message] Received event: {event.data}") try: sender_id_str = event.data.get("id", None) From 7eb55fb280e5b4a51476c740812a3a1986420a31 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 21:00:43 +0100 Subject: [PATCH 07/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index d6ddcb22..11f81a01 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -218,7 +218,10 @@ async def async_setup(self): # Command Section async def async_service_send_message(self, event) -> None: """Send an arbitrary message with the provided eep.""" - LOGGER.debug(f"[Service: Send Message] Received event: {event.data}") + LOGGER.debug(f"[Service: Send Message] Received event data: {event.data}") + for k in event.__dict__.keys(): + LOGGER.debug(f"{k}: {event.__dict__[k]}") + try: sender_id_str = event.data.get("id", None) @@ -234,7 +237,7 @@ async def async_service_send_message(self, event) -> None: LOGGER.error(f"[Service: Send Message] No valid sender id defined. (Given sender id: {sender_id_str})") return - eep:EEP = sender_eep.__new__() + eep:EEP = sender_eep(**event.data) for k in eep.__dict__.keys(): if k in event.data.keys(): setattr(eep, k, event.data.get(k[1:])) # key k starts always with '_' because it is a private attribute From 5b4eb8303d5a215886c33836a89d735e114ea3c1 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 21:03:22 +0100 Subject: [PATCH 08/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 11f81a01..e8ef4725 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -219,8 +219,9 @@ async def async_setup(self): async def async_service_send_message(self, event) -> None: """Send an arbitrary message with the provided eep.""" LOGGER.debug(f"[Service: Send Message] Received event data: {event.data}") - for k in event.__dict__.keys(): - LOGGER.debug(f"{k}: {event.__dict__[k]}") + + # for k in event.__dir__.keys(): + # LOGGER.debug(f"{k}: {event.__dir__[k]}") try: From 0ff88f21d747d88b362c35f5867b830cf6a78f62 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 21:25:59 +0100 Subject: [PATCH 09/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index e8ef4725..52eefd43 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -238,7 +238,15 @@ async def async_service_send_message(self, event) -> None: LOGGER.error(f"[Service: Send Message] No valid sender id defined. (Given sender id: {sender_id_str})") return - eep:EEP = sender_eep(**event.data) + def filter_event_data(data: dict, eep_kwargs): + import inspect + sig = inspect.signature(eep_kwargs) + filter_keys = [param.name for param in sig.parameters.values() if param.kind == param.POSITIONAL_OR_KEYWORD] + filtered_dict = {filter_key:data[filter_key] for filter_key in filter_keys if filter_key in data} + filtered_dict.update({filter_key:0 for filter_key in filter_keys if filter_key not in data}) + return filtered_dict + + eep:EEP = sender_eep(**filter_event_data(event.data)) for k in eep.__dict__.keys(): if k in event.data.keys(): setattr(eep, k, event.data.get(k[1:])) # key k starts always with '_' because it is a private attribute From 0b30d048aa5f089701e23ab644b39024a1f50cbe Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 21:28:02 +0100 Subject: [PATCH 10/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 52eefd43..485d575d 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -246,7 +246,7 @@ def filter_event_data(data: dict, eep_kwargs): filtered_dict.update({filter_key:0 for filter_key in filter_keys if filter_key not in data}) return filtered_dict - eep:EEP = sender_eep(**filter_event_data(event.data)) + eep:EEP = sender_eep(**filter_event_data(event.data), sender_eep.__init__) for k in eep.__dict__.keys(): if k in event.data.keys(): setattr(eep, k, event.data.get(k[1:])) # key k starts always with '_' because it is a private attribute From 8872165eda23ce34317af5377257693efb55b3ba Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 21:32:34 +0100 Subject: [PATCH 11/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 485d575d..812fc1bd 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -238,21 +238,20 @@ async def async_service_send_message(self, event) -> None: LOGGER.error(f"[Service: Send Message] No valid sender id defined. (Given sender id: {sender_id_str})") return - def filter_event_data(data: dict, eep_kwargs): - import inspect - sig = inspect.signature(eep_kwargs) - filter_keys = [param.name for param in sig.parameters.values() if param.kind == param.POSITIONAL_OR_KEYWORD] - filtered_dict = {filter_key:data[filter_key] for filter_key in filter_keys if filter_key in data} - filtered_dict.update({filter_key:0 for filter_key in filter_keys if filter_key not in data}) - return filtered_dict - - eep:EEP = sender_eep(**filter_event_data(event.data), sender_eep.__init__) - for k in eep.__dict__.keys(): - if k in event.data.keys(): - setattr(eep, k, event.data.get(k[1:])) # key k starts always with '_' because it is a private attribute - else: - LOGGER.warn(f"[Service: Send Message] Argument {k} is not provided for sending {eep.eep_string} message. Set default value: {k}=0") - setattr(eep, k, 0) + # prepare all arguements for eep constructor + import inspect + sig = inspect.signature(sender_eep.__init__) + eep_init_args = [param.name for param in sig.parameters.values() if param.kind == param.POSITIONAL_OR_KEYWORD] + filtered_data = {filter_key:event.data[filter_key] for filter_key in eep_init_args if filter_key in event.data} + filtered_data.update({filter_key:0 for filter_key in eep_init_args if filter_key not in event.data}) + + eep:EEP = sender_eep(**filtered_data) + # for k in eep.__dict__.keys(): + # if k in event.data.keys(): + # setattr(eep, k, event.data.get(k[1:])) # key k starts always with '_' because it is a private attribute + # else: + # LOGGER.warn(f"[Service: Send Message] Argument {k} is not provided for sending {eep.eep_string} message. Set default value: {k}=0") + # setattr(eep, k, 0) try: message = eep.encode_message(sender_id) From b1106866e383d9e5efd70bb5d3659d422bb16994 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 21:35:19 +0100 Subject: [PATCH 12/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 812fc1bd..5d5e2de0 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -242,10 +242,14 @@ async def async_service_send_message(self, event) -> None: import inspect sig = inspect.signature(sender_eep.__init__) eep_init_args = [param.name for param in sig.parameters.values() if param.kind == param.POSITIONAL_OR_KEYWORD] - filtered_data = {filter_key:event.data[filter_key] for filter_key in eep_init_args if filter_key in event.data} - filtered_data.update({filter_key:0 for filter_key in eep_init_args if filter_key not in event.data}) + knargs = {filter_key:event.data[filter_key] for filter_key in eep_init_args if filter_key in event.data} + LOGGER.debug(f"[Service: Send Message] Provided EEP ({sender_eep.__name__}) args: {knargs})") + uknargs = {filter_key:0 for filter_key in eep_init_args if filter_key not in event.data} + LOGGER.debug(f"[Service: Send Message] Missing EEP ({sender_eep.__name__}) args: {uknargs})") + eep_args = knargs + eep_args.update(uknargs) - eep:EEP = sender_eep(**filtered_data) + eep:EEP = sender_eep(**eep_args) # for k in eep.__dict__.keys(): # if k in event.data.keys(): # setattr(eep, k, event.data.get(k[1:])) # key k starts always with '_' because it is a private attribute From 3aaa0727fd50cc0948760c63b5da484a6c5c2c1e Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 21:37:22 +0100 Subject: [PATCH 13/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 5d5e2de0..a23a6f8a 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -242,9 +242,9 @@ async def async_service_send_message(self, event) -> None: import inspect sig = inspect.signature(sender_eep.__init__) eep_init_args = [param.name for param in sig.parameters.values() if param.kind == param.POSITIONAL_OR_KEYWORD] - knargs = {filter_key:event.data[filter_key] for filter_key in eep_init_args if filter_key in event.data} + knargs = {filter_key:event.data[filter_key] for filter_key in eep_init_args if filter_key in event.data and filter_key != 'self'} LOGGER.debug(f"[Service: Send Message] Provided EEP ({sender_eep.__name__}) args: {knargs})") - uknargs = {filter_key:0 for filter_key in eep_init_args if filter_key not in event.data} + uknargs = {filter_key:0 for filter_key in eep_init_args if filter_key not in event.data and filter_key != 'self'} LOGGER.debug(f"[Service: Send Message] Missing EEP ({sender_eep.__name__}) args: {uknargs})") eep_args = knargs eep_args.update(uknargs) From 0ebc2855071a7f32dc99705ee2cfb12485a92f24 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 21:59:28 +0100 Subject: [PATCH 14/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index a23a6f8a..23c88401 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -258,8 +258,12 @@ async def async_service_send_message(self, event) -> None: # setattr(eep, k, 0) try: - message = eep.encode_message(sender_id) - self.send_message(message) + # create message + msg = eep.encode_message(sender_id) + LOGGER.debug("[Service: Send Message] Generated message: %s Serialized: %s", msg, msg.serialize().hex()) + # send message + event_id = config_helpers.get_bus_event_type(self.base_id, SIGNAL_SEND_MESSAGE) + dispatcher_send(self.hass, event_id, msg) except: LOGGER.error(f"[Service: Send Message] Cannot send message.") From cfbf1a13b55a1ad77994eca66908758e5cef224a Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 22:04:39 +0100 Subject: [PATCH 15/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 23c88401..4e1413e3 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -265,7 +265,7 @@ async def async_service_send_message(self, event) -> None: event_id = config_helpers.get_bus_event_type(self.base_id, SIGNAL_SEND_MESSAGE) dispatcher_send(self.hass, event_id, msg) except: - LOGGER.error(f"[Service: Send Message] Cannot send message.") + LOGGER.error(f"[Service: Send Message] Cannot send message.", exc_info=True) # if sender_id and sender_eep is not None: From e44dc9c871d0f3351a6a49a505611e37c9cd2b28 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 22:05:17 +0100 Subject: [PATCH 16/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 4e1413e3..f831ede0 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -265,7 +265,7 @@ async def async_service_send_message(self, event) -> None: event_id = config_helpers.get_bus_event_type(self.base_id, SIGNAL_SEND_MESSAGE) dispatcher_send(self.hass, event_id, msg) except: - LOGGER.error(f"[Service: Send Message] Cannot send message.", exc_info=True) + LOGGER.error(f"[Service: Send Message] Cannot send message.", exc_info=True, stack_info=True) # if sender_id and sender_eep is not None: From 1f142f41b7344d25001bcd01539bcade2ef4c463 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 22:10:59 +0100 Subject: [PATCH 17/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index f831ede0..db6fd70b 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -259,7 +259,7 @@ async def async_service_send_message(self, event) -> None: try: # create message - msg = eep.encode_message(sender_id) + msg = eep.encode_message(sender_id[0]) LOGGER.debug("[Service: Send Message] Generated message: %s Serialized: %s", msg, msg.serialize().hex()) # send message event_id = config_helpers.get_bus_event_type(self.base_id, SIGNAL_SEND_MESSAGE) @@ -282,7 +282,7 @@ async def async_service_send_message(self, event) -> None: # target_temperature = event.data.get("target_temperature") # current_temperature = event.data.get("current_temperature") # if target_temperature and current_temperature is not None: - # message = A5_10_06(A5_10_06.Heater_Mode.NORMAL, target_temperature, current_temperature, False).encode_message(sender_address) + # message = A5_10_06(A5_10_06.Heater_Mode.NORMAL, target_temperature, current_temperature, False).encode_message(sender_address) # if message is not None: # self.send_message(message) From b7fdcad7b6dfb768939fd1662367f02014725945 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 22:15:03 +0100 Subject: [PATCH 18/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index db6fd70b..572b82e6 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -221,7 +221,7 @@ async def async_service_send_message(self, event) -> None: LOGGER.debug(f"[Service: Send Message] Received event data: {event.data}") # for k in event.__dir__.keys(): - # LOGGER.debug(f"{k}: {event.__dir__[k]}") + LOGGER.debug(f"{event.__dir__}") try: @@ -250,12 +250,6 @@ async def async_service_send_message(self, event) -> None: eep_args.update(uknargs) eep:EEP = sender_eep(**eep_args) - # for k in eep.__dict__.keys(): - # if k in event.data.keys(): - # setattr(eep, k, event.data.get(k[1:])) # key k starts always with '_' because it is a private attribute - # else: - # LOGGER.warn(f"[Service: Send Message] Argument {k} is not provided for sending {eep.eep_string} message. Set default value: {k}=0") - # setattr(eep, k, 0) try: # create message @@ -268,25 +262,6 @@ async def async_service_send_message(self, event) -> None: LOGGER.error(f"[Service: Send Message] Cannot send message.", exc_info=True, stack_info=True) - # if sender_id and sender_eep is not None: - # sender_address = AddressExpression((0xFF, 0x82, 0x3E, 0x04)) - # message = None - - # if (A5_38_08.eep_string == sender_eep): - # command = event.data.get("command") - # if command is not None: - # switching = CentralCommandSwitching(0, 1, 0, 0, command) - # message = A5_38_08(command=0x01, switching=switching).encode_message(sender_address) - - # if (A5_10_06.eep_string == sender_eep): - # target_temperature = event.data.get("target_temperature") - # current_temperature = event.data.get("current_temperature") - # if target_temperature and current_temperature is not None: - # message = A5_10_06(A5_10_06.Heater_Mode.NORMAL, target_temperature, current_temperature, False).encode_message(sender_address) - - # if message is not None: - # self.send_message(message) - def send_message(self, msg: ESP2Message): """Put message on RS485 bus. First the message is put onto HA event bus so that other automations can react on messages.""" From e30f7463de76313081054451414b740561521377 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 22:20:53 +0100 Subject: [PATCH 19/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 572b82e6..575f21d1 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -218,12 +218,8 @@ async def async_setup(self): # Command Section async def async_service_send_message(self, event) -> None: """Send an arbitrary message with the provided eep.""" - LOGGER.debug(f"[Service: Send Message] Received event data: {event.data}") + LOGGER.debug(f"[Service: Send Message {event.service}] Received event data: {event.data}") - # for k in event.__dir__.keys(): - LOGGER.debug(f"{event.__dir__}") - - try: sender_id_str = event.data.get("id", None) sender_id:AddressExpression = AddressExpression.parse(sender_id_str) From 037f4b0aff0ee524cf74402ca092e1daa1b872b7 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 22:25:19 +0100 Subject: [PATCH 20/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 575f21d1..7d37cc67 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -218,20 +218,20 @@ async def async_setup(self): # Command Section async def async_service_send_message(self, event) -> None: """Send an arbitrary message with the provided eep.""" - LOGGER.debug(f"[Service: Send Message {event.service}] Received event data: {event.data}") + LOGGER.debug(f"[Service Send Message: {event.service}] Received event data: {event.data}") try: sender_id_str = event.data.get("id", None) sender_id:AddressExpression = AddressExpression.parse(sender_id_str) except: - LOGGER.error(f"[Service: Send Message] No valid sender id defined. (Given sender id: {sender_id_str})") + LOGGER.error(f"[Service Send Message: {event.service}] No valid sender id defined. (Given sender id: {sender_id_str})") return try: sender_eep_str = event.data.get("eep", None) sender_eep:EEP = EEP.find(sender_eep_str) except: - LOGGER.error(f"[Service: Send Message] No valid sender id defined. (Given sender id: {sender_id_str})") + LOGGER.error(f"[Service Send Message: {event.service}] No valid sender id defined. (Given sender id: {sender_id_str})") return # prepare all arguements for eep constructor @@ -239,9 +239,9 @@ async def async_service_send_message(self, event) -> None: sig = inspect.signature(sender_eep.__init__) eep_init_args = [param.name for param in sig.parameters.values() if param.kind == param.POSITIONAL_OR_KEYWORD] knargs = {filter_key:event.data[filter_key] for filter_key in eep_init_args if filter_key in event.data and filter_key != 'self'} - LOGGER.debug(f"[Service: Send Message] Provided EEP ({sender_eep.__name__}) args: {knargs})") + LOGGER.debug(f"[Service Send Message: {event.service}] Provided EEP ({sender_eep.__name__}) args: {knargs})") uknargs = {filter_key:0 for filter_key in eep_init_args if filter_key not in event.data and filter_key != 'self'} - LOGGER.debug(f"[Service: Send Message] Missing EEP ({sender_eep.__name__}) args: {uknargs})") + LOGGER.debug(f"[Service Send Message: {event.service}] Missing EEP ({sender_eep.__name__}) args: {uknargs})") eep_args = knargs eep_args.update(uknargs) @@ -250,12 +250,12 @@ async def async_service_send_message(self, event) -> None: try: # create message msg = eep.encode_message(sender_id[0]) - LOGGER.debug("[Service: Send Message] Generated message: %s Serialized: %s", msg, msg.serialize().hex()) + LOGGER.debug("[Service Send Message: {event.service}] Generated message: %s Serialized: %s", msg, msg.serialize().hex()) # send message event_id = config_helpers.get_bus_event_type(self.base_id, SIGNAL_SEND_MESSAGE) dispatcher_send(self.hass, event_id, msg) except: - LOGGER.error(f"[Service: Send Message] Cannot send message.", exc_info=True, stack_info=True) + LOGGER.error(f"[Service Send Message: {event.service}] Cannot send message.", exc_info=True, stack_info=True) From 062b5372b4aaec84ab51d483318b387868ecfe7d Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 22:28:50 +0100 Subject: [PATCH 21/32] test Service for sending arbritrary ESP2 messages --- custom_components/eltako/gateway.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/eltako/gateway.py b/custom_components/eltako/gateway.py index 7d37cc67..fab554a7 100644 --- a/custom_components/eltako/gateway.py +++ b/custom_components/eltako/gateway.py @@ -250,7 +250,7 @@ async def async_service_send_message(self, event) -> None: try: # create message msg = eep.encode_message(sender_id[0]) - LOGGER.debug("[Service Send Message: {event.service}] Generated message: %s Serialized: %s", msg, msg.serialize().hex()) + LOGGER.debug(f"[Service Send Message: {event.service}] Generated message: {msg} Serialized: {msg.serialize().hex()}") # send message event_id = config_helpers.get_bus_event_type(self.base_id, SIGNAL_SEND_MESSAGE) dispatcher_send(self.hass, event_id, msg) From b704bbe7de89c7d636fdf3e4316aa89b0e551281 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 23:07:37 +0100 Subject: [PATCH 22/32] Added Service for sending arbritrary ESP2 messages --- README.md | 1 + docs/service-send-message/readme.md | 33 ++++++++++++++++++ .../send_message_automation_screenshot.png | Bin 0 -> 129606 bytes .../send_message_logs_screenshot.png | Bin 0 -> 99207 bytes 4 files changed, 34 insertions(+) create mode 100644 docs/service-send-message/readme.md create mode 100644 docs/service-send-message/send_message_automation_screenshot.png create mode 100644 docs/service-send-message/send_message_logs_screenshot.png diff --git a/README.md b/README.md index a305971d..8bb8ca77 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ Elatko devices are exemplarily mentioned. You can find [here](https://www.eltako * [Climate](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/heating-and-cooling/readme.md) (**Experimental** Feedback is welcome.) * A5-10-06 (Eltako FAE14, FHK14, F4HK14, F2L14, FHK61, FME14) * [Teach-In Buttons](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/teach_in_buttons/readme.md) +* [Send Message Service](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/service-send-message/readme.md) Sends any EnOcean Message. Can be used for automatinos in Home Assistant so that none-EnOcean and EnOcean deviecs can be combined. [**Gateway**](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/gateways/readme.md) (See also [how to use gateways](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/gateway_usage/readme.md) and [multiple gateway support](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/multiple-gateway-support/readme.md)) * **Eltako FAM14** and Eltako **FGW14-USB** (based on ESP2, rs485 bus and baud rate 57600, uses library [eltako14bus](https://github.com/grimmpp/eltako14bus)) diff --git a/docs/service-send-message/readme.md b/docs/service-send-message/readme.md new file mode 100644 index 00000000..109f47cb --- /dev/null +++ b/docs/service-send-message/readme.md @@ -0,0 +1,33 @@ +# Send Message Service + +This service is mainly inteded to combine none-EnOcean and EnOcean devices. Services which cannot communicate nativcely because they are based on different communication protocols, you can use automations in Home Assistant to e.g. receive trigger from an none-EnOcean sender and send a EnOcean message to an relay or sync states of a thermostat. ... + +## Configuration + + + +Create an [automation](https://www.home-assistant.io/getting-started/automation/) in Home Assistant. Use the upper sections to react on anything you like, dependent on you sensor/sender. + +`Add Action` and search for `eltako`. It proposes a service to send messages for every available gateway. In addition you need to enter in the data section what to send. The fields `id` and `eep` must be specified. `id` stands for the sender address. (Keep in mind: bus gateways do not send in wireless network and wireless tranceivers do only have 128 hardcoded addresses to be used.) `eep` is the message format you what to use. Dependent on the eep specific information is put into the messages to be sent. You can either check in the [code](https://github.com/grimmpp/eltako14bus/blob/master/eltakobus/eep.py) or in the logs what attribute need to be set. + + + +Values of e.g. other sensers can also be dynamically added by +``` +alias: send message +description: "" +trigger: [] +condition: [] +action: + - service: eltako.gateway_3_send_message + metadata: {} + data: + id: FF-DD-00-01 + eep: A5-10-06 + current_temp: {{state_attr('climate.my_other_brands_smart_thermostat_1293127', 'current_temperature') }} + target_temp: {{state_attr('climate.my_other_brands_smart_thermostat_1293127', 'target_temperature') }} + enabled: true +mode: single +``` + +By triggering this example, from above, manually you will send a message via gateway 3 containing the current and target temperature of the thermostat entity 1293127. \ No newline at end of file diff --git a/docs/service-send-message/send_message_automation_screenshot.png b/docs/service-send-message/send_message_automation_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf51961165c17389ca15fc46fc25462a47c69eb GIT binary patch literal 129606 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 Z59QGd!x0w)uJJ}=q;Gb!;@5kB{C9{rwf_JB literal 0 HcmV?d00001 diff --git a/docs/service-send-message/send_message_logs_screenshot.png b/docs/service-send-message/send_message_logs_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3909924cfb23b1346690f13bb8b5253fb7c3b6 GIT binary patch literal 99207 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 literal 0 HcmV?d00001 From 79a07033c7b2daaa1e9cabac6459638946c9383e Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Sun, 24 Mar 2024 23:24:07 +0100 Subject: [PATCH 23/32] docs updated --- changes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changes.md b/changes.md index c2b7f6cc..12056805 100644 --- a/changes.md +++ b/changes.md @@ -2,6 +2,8 @@ ## Version 1.4.1 Support for sending arbritrary messages * Added Service for sending arbritrary ESP2 messages +* 🐞 Fix for TargetTemperatureSensor (EEP: A5-10-06 and A5-10-12) +* 🐞 Fix for unknow cover positions. ## Version 1.4.0 ESP3 Support (USB300) * Docs about gateway usage added. From 8e71d6d65c8fc9d29c587253b51fba4d5266c757 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Tue, 26 Mar 2024 13:27:32 +0100 Subject: [PATCH 24/32] tests added and improved --- README.md | 2 +- changes.md | 1 + eltakodevice_discovery/readme.md | 2 + tests/test_sensor_A5_04_01.py | 46 +++++++++++++ tests/test_sensor_A5_04_02.py | 4 +- tests/test_sensor_A5_10_06.py | 50 ++++++++++++++ tests/test_sensor_A5_10_12.py | 68 +++++++++++++++++++ ...test_sensor.py => test_sensor_A5_13_01.py} | 30 -------- tests/test_sensor_F6_10_00.py | 48 +++++++++++++ 9 files changed, 218 insertions(+), 33 deletions(-) create mode 100644 tests/test_sensor_A5_04_01.py create mode 100644 tests/test_sensor_A5_10_06.py create mode 100644 tests/test_sensor_A5_10_12.py rename tests/{test_sensor.py => test_sensor_A5_13_01.py} (67%) create mode 100644 tests/test_sensor_F6_10_00.py diff --git a/README.md b/README.md index 68162f20..8a0e6325 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Elatko devices are exemplarily mentioned. You can find [here](https://www.eltako * Binary sensor * F6-02-01 ([Rocker switch](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/rocker_switch/readme.md), FTS14EM) * F6-02-02 ([Rocker switch](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/rocker_switch/readme.md)) - * F6-10-00 (Window handle, FTS14EM) + * F6-10-00 (Window handle, classic switches or contacs via FTS14EM, window and door contacts like FTKE) * D5-00-01 ([Contact sensor](https://github.com/grimmpp/home-assistant-eltako/tree/main//docs/window_sensor_setup_FTS14EM.md), FTS14EM) incl. signal inverter * A5-07-01 (Occupancy sensor) * Sensor diff --git a/changes.md b/changes.md index 12056805..dd2977d7 100644 --- a/changes.md +++ b/changes.md @@ -4,6 +4,7 @@ * Added Service for sending arbritrary ESP2 messages * 🐞 Fix for TargetTemperatureSensor (EEP: A5-10-06 and A5-10-12) * 🐞 Fix for unknow cover positions. +* Unit-Tests added and improved for EEP A5-04-01, A5-04-02, A5-10-06, A5-10-12, A5-13-01, and F6-10-00. ## Version 1.4.0 ESP3 Support (USB300) * Docs about gateway usage added. diff --git a/eltakodevice_discovery/readme.md b/eltakodevice_discovery/readme.md index 6c606d0a..dbd61607 100644 --- a/eltakodevice_discovery/readme.md +++ b/eltakodevice_discovery/readme.md @@ -1,5 +1,7 @@ # Eltako Device and Sensor Discovery +# DEPRECATED: Check out [EnOnocean Device Manager](https://github.com/grimmpp/enocean-device-manager) + Main purpose of this tool is to programmatically prepare the Home Assistance configuration as good as possible. ## Limitation diff --git a/tests/test_sensor_A5_04_01.py b/tests/test_sensor_A5_04_01.py new file mode 100644 index 00000000..633f910e --- /dev/null +++ b/tests/test_sensor_A5_04_01.py @@ -0,0 +1,46 @@ +import unittest +from custom_components.eltako.sensor import * +from mocks import HassMock +from unittest import mock +from mocks import * +from homeassistant.helpers.entity import Entity +from homeassistant.const import Platform +from custom_components.eltako.binary_sensor import EltakoBinarySensor +from eltakobus import * + +# mock update of Home Assistant +Entity.schedule_update_ha_state = mock.Mock(return_value=None) +# EltakoBinarySensor.hass.bus.fire is mocked by class HassMock + + +class TestSensor_A5_04_01(unittest.TestCase): + + msg1 = Regular4BSMessage (address=b'\xFF\xFF\x00\x80', data=b'\xaa\x00\x00\x0d', status=0x00) + + def create_temperature_sensor(self) -> EltakoTemperatureSensor: + gateway = GatewayMock() + dev_id = AddressExpression.parse("FF-FF-00-80") + dev_name = "device name" + dev_eep = EEP.find("A5-04-01") + s = EltakoTemperatureSensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) + return s + + def create_humidity_sensor(self) -> EltakoHumiditySensor: + gateway = GatewayMock() + dev_id = AddressExpression.parse("FF-FF-00-80") + dev_name = "device name" + dev_eep = EEP.find("A5-04-01") + s = EltakoHumiditySensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) + return s + + def test_temperature_sensor_A5_04_02(self): + s_temp = self.create_temperature_sensor() + + s_temp.value_changed(self.msg1) + self.assertEqual(s_temp.native_value, 0.0) + + def test_humidity_sensor_A5_04_02(self): + s_hum = self.create_humidity_sensor() + + s_hum.value_changed(self.msg1) + self.assertEqual(s_hum.native_value, 0.0) \ No newline at end of file diff --git a/tests/test_sensor_A5_04_02.py b/tests/test_sensor_A5_04_02.py index cf48608e..0cc15375 100644 --- a/tests/test_sensor_A5_04_02.py +++ b/tests/test_sensor_A5_04_02.py @@ -21,7 +21,7 @@ def create_temperature_sensor(self) -> EltakoTemperatureSensor: gateway = GatewayMock() dev_id = AddressExpression.parse("FF-FF-00-80") dev_name = "device name" - dev_eep = EEP.find("A5-08-01") + dev_eep = EEP.find("A5-04-02") s = EltakoTemperatureSensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) return s @@ -37,7 +37,7 @@ def test_temperature_sensor_A5_04_02(self): s_temp = self.create_temperature_sensor() s_temp.value_changed(self.msg1) - self.assertEqual(s_temp.native_value, 0.0) + self.assertEqual(s_temp.native_value, -20.0) def test_humidity_sensor_A5_04_02(self): s_hum = self.create_humidity_sensor() diff --git a/tests/test_sensor_A5_10_06.py b/tests/test_sensor_A5_10_06.py new file mode 100644 index 00000000..20194ffe --- /dev/null +++ b/tests/test_sensor_A5_10_06.py @@ -0,0 +1,50 @@ +import unittest +from custom_components.eltako.sensor import * +from mocks import HassMock +from unittest import mock +from mocks import * +from homeassistant.helpers.entity import Entity +from homeassistant.const import Platform +from custom_components.eltako.binary_sensor import EltakoBinarySensor +from eltakobus import * + +# mock update of Home Assistant +Entity.schedule_update_ha_state = mock.Mock(return_value=None) +# EltakoBinarySensor.hass.bus.fire is mocked by class HassMock + + +class TestSensor_A5_10_06(unittest.TestCase): + + msg = Regular4BSMessage (address=b'\xFF\xFF\x00\x80', data=b'\xaa\x80\x76\x0f', status=0x00) + + def create_temp_sensor(self) -> EltakoTemperatureSensor: + gateway = GatewayMock() + dev_id = AddressExpression.parse("FF-FF-00-80") + dev_name = "device name" + dev_eep = EEP.find("A5-10-06") + s = EltakoTemperatureSensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) + return s + + def create_target_temp_sensor(self) -> EltakoTargetTemperatureSensor: + gateway = GatewayMock() + dev_id = AddressExpression.parse("FF-FF-00-80") + dev_name = "device name" + dev_eep = EEP.find("A5-10-06") + s = EltakoTargetTemperatureSensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) + return s + + def test_temp_sensor(self): + ts = self.create_temp_sensor() + + self.assertEqual(ts.native_value, None) + ts.value_changed(self.msg) + + self.assertEqual(ts.native_value, 21.49019607843137) + + def test_target_temp_sensor(self): + ts = self.create_target_temp_sensor() + + self.assertEqual(ts.native_value, None) + ts.value_changed(self.msg) + + self.assertEqual(ts.native_value, 20) \ No newline at end of file diff --git a/tests/test_sensor_A5_10_12.py b/tests/test_sensor_A5_10_12.py new file mode 100644 index 00000000..47a68901 --- /dev/null +++ b/tests/test_sensor_A5_10_12.py @@ -0,0 +1,68 @@ +import unittest +from custom_components.eltako.sensor import * +from mocks import HassMock +from unittest import mock +from mocks import * +from homeassistant.helpers.entity import Entity +from homeassistant.const import Platform +from custom_components.eltako.binary_sensor import EltakoBinarySensor +from eltakobus import * + +# mock update of Home Assistant +Entity.schedule_update_ha_state = mock.Mock(return_value=None) +# EltakoBinarySensor.hass.bus.fire is mocked by class HassMock + + +class TestSensor_A5_10_12(unittest.TestCase): + + msg = Regular4BSMessage (address=b'\xFF\xFF\x00\x80', data=b'\xaa\x80\x76\x0f', status=0x00) + + def create_temp_sensor(self) -> EltakoTemperatureSensor: + gateway = GatewayMock() + dev_id = AddressExpression.parse("FF-FF-00-80") + dev_name = "device name" + dev_eep = EEP.find("A5-10-12") + s = EltakoTemperatureSensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) + return s + + def create_target_temp_sensor(self) -> EltakoTargetTemperatureSensor: + gateway = GatewayMock() + dev_id = AddressExpression.parse("FF-FF-00-80") + dev_name = "device name" + dev_eep = EEP.find("A5-10-12") + s = EltakoTargetTemperatureSensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) + return s + + def create_humidity_sensor(self) -> EltakoHumiditySensor: + gateway = GatewayMock() + dev_id = AddressExpression.parse("FF-FF-00-80") + dev_name = "device name" + dev_eep = EEP.find("A5-10-12") + s = EltakoHumiditySensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) + return s + + + def test_temp_sensor(self): + ts = self.create_temp_sensor() + + self.assertEqual(ts.native_value, None) + ts.value_changed(self.msg) + + self.assertEqual(ts.native_value, 18.88) + + + def test_target_temp_sensor(self): + ts = self.create_target_temp_sensor() + + self.assertEqual(ts.native_value, None) + ts.value_changed(self.msg) + + self.assertEqual(ts.native_value, 27) + + def test_humidity_sensor(self): + hs = self.create_humidity_sensor() + + self.assertEqual(hs.native_value, None) + hs.value_changed(self.msg) + + self.assertEqual(hs.native_value, 51.2) \ No newline at end of file diff --git a/tests/test_sensor.py b/tests/test_sensor_A5_13_01.py similarity index 67% rename from tests/test_sensor.py rename to tests/test_sensor_A5_13_01.py index 45d64cd0..5efcd185 100644 --- a/tests/test_sensor.py +++ b/tests/test_sensor_A5_13_01.py @@ -24,14 +24,6 @@ def create_weatherstation_sensor(self, description: EltakoSensorEntityDescriptio return ews - def create_window_handle_sensor(self) -> EltakoWindowHandle: - gateway = GatewayMock() - dev_id = AddressExpression.parse("51-E8-00-01") - dev_name = "dev name" - dev_eep = EEP.find("F6-10-00") - ews = EltakoWindowHandle(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep, SENSOR_DESC_WINDOWHANDLE) - - return ews def test_weatherstation_sensor(self): ews = self.create_weatherstation_sensor(SENSOR_DESC_WEATHER_STATION_ILLUMINANCE_DAWN) @@ -75,25 +67,3 @@ def test_weatherstation_sensor(self): ews.value_changed(msg) self.assertEqual(ews.native_value, 588.2352941176471) - - def test_window_handle(self): - whs = self.create_window_handle_sensor() - - whs.entity_description = SENSOR_DESC_WINDOWHANDLE - whs._attr_native_value = -1 - - msg = RPSMessage(address=b'\x05\x1e\x83\x15', status=b'\x20', data=b'\xF0', outgoing=False) - whs.value_changed(msg) - self.assertEqual(whs._attr_native_value, STATE_CLOSED) - - msg = RPSMessage(address=b'\x05\x1e\x83\x15', status=b'\x20', data=b'\xC0', outgoing=False) - whs.value_changed(msg) - self.assertEqual(whs._attr_native_value, STATE_OPEN) - - msg = RPSMessage(address=b'\x05\x1e\x83\x15', status=b'\x20', data=b'\xE0', outgoing=False) - whs.value_changed(msg) - self.assertEqual(whs._attr_native_value, STATE_OPEN) - - msg = RPSMessage(address=b'\x05\x1e\x83\x15', status=b'\x20', data=b'\xD0', outgoing=False) - whs.value_changed(msg) - self.assertEqual(whs._attr_native_value, 'tilt') \ No newline at end of file diff --git a/tests/test_sensor_F6_10_00.py b/tests/test_sensor_F6_10_00.py new file mode 100644 index 00000000..f8750e38 --- /dev/null +++ b/tests/test_sensor_F6_10_00.py @@ -0,0 +1,48 @@ +import unittest +from custom_components.eltako.sensor import * +from mocks import HassMock +from unittest import mock +from mocks import * +from homeassistant.helpers.entity import Entity +from homeassistant.const import Platform +from custom_components.eltako.binary_sensor import EltakoBinarySensor +from eltakobus import * + +# mock update of Home Assistant +Entity.schedule_update_ha_state = mock.Mock(return_value=None) +# EltakoBinarySensor.hass.bus.fire is mocked by class HassMock + + +class TestSensor(unittest.TestCase): + + def create_window_handle_sensor(self) -> EltakoWindowHandle: + gateway = GatewayMock() + dev_id = AddressExpression.parse("51-E8-00-01") + dev_name = "dev name" + dev_eep = EEP.find("F6-10-00") + ews = EltakoWindowHandle(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep, SENSOR_DESC_WINDOWHANDLE) + + return ews + + + def test_window_handle(self): + whs = self.create_window_handle_sensor() + + whs.entity_description = SENSOR_DESC_WINDOWHANDLE + whs._attr_native_value = -1 + + msg = RPSMessage(address=b'\x05\x1e\x83\x15', status=b'\x20', data=b'\xF0', outgoing=False) + whs.value_changed(msg) + self.assertEqual(whs._attr_native_value, STATE_CLOSED) + + msg = RPSMessage(address=b'\x05\x1e\x83\x15', status=b'\x20', data=b'\xC0', outgoing=False) + whs.value_changed(msg) + self.assertEqual(whs._attr_native_value, STATE_OPEN) + + msg = RPSMessage(address=b'\x05\x1e\x83\x15', status=b'\x20', data=b'\xE0', outgoing=False) + whs.value_changed(msg) + self.assertEqual(whs._attr_native_value, STATE_OPEN) + + msg = RPSMessage(address=b'\x05\x1e\x83\x15', status=b'\x20', data=b'\xD0', outgoing=False) + whs.value_changed(msg) + self.assertEqual(whs._attr_native_value, 'tilt') \ No newline at end of file From 5684ac607d1be7c893d9ef555638b5d6f56612d1 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Tue, 26 Mar 2024 13:34:40 +0100 Subject: [PATCH 25/32] docs updated --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8a0e6325..a5179a55 100644 --- a/README.md +++ b/README.md @@ -22,12 +22,13 @@ Elatko devices are exemplarily mentioned. You can find [here](https://www.eltako * Binary sensor * F6-02-01 ([Rocker switch](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/rocker_switch/readme.md), FTS14EM) * F6-02-02 ([Rocker switch](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/rocker_switch/readme.md)) - * F6-10-00 (Window handle, classic switches or contacs via FTS14EM, window and door contacts like FTKE) + * F6-10-00 (Window handle, classic switches or contacs via FTS14EM, window and door contacts like FTKE, supported states: open, closed) * D5-00-01 ([Contact sensor](https://github.com/grimmpp/home-assistant-eltako/tree/main//docs/window_sensor_setup_FTS14EM.md), FTS14EM) incl. signal inverter * A5-07-01 (Occupancy sensor) * Sensor * A5-04-01 (Temperature and Humidity Sensor) - * A5-04-02 (Temperature and Humidity Sensor e.g.: FLGTF, FLT58) + * A5-04-02 (Temperature and Humidity Sensor e.g.: FLGTF, FLT58, FFT60) + * A5-04-03 **Coming soon!** (Temperature and Humidity Sensor e.g.: FFT60) * A5-07-01 (Occupancy sensor) * A5-08-01 (Light-, Temperature-, Occupancy Sensor e.g.: FABH65S, FBH65, FBH65S, FBH65TF) * A5-09-0C (Air Quality / VOC⁠ (Volatile Organic Compounds) e.g. [FLGTF](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/flgtf_temp_humidity_air_quality/readme.md)) @@ -37,7 +38,7 @@ Elatko devices are exemplarily mentioned. You can find [here](https://www.eltako * A5-12-02 (Automated meter reading - gas, F3Z14D) * A5-12-03 (Automated meter reading - water, F3Z14D) * A5-13-01 (Weather station, FWG14) - * F6-10-00 (Window handle, FTS14EM) + * F6-10-00 (Window handle, classic switches or contacs via FTS14EM, window and door contacts like FTKE, supported states: open, closed, tilt) * [Light](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/lights-tutorial/readme.md) * A5-38-08 (Dimmable Light: Central command - gateway, FUD14) * M5-38-08 (Switchable Light: Eltako relay, FSR14) From 95c3fe8dbb59a7ecb78443ab56fd6a03efd60781 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Tue, 26 Mar 2024 13:38:42 +0100 Subject: [PATCH 26/32] docs updated --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index a5179a55..c30a1a12 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,9 @@ Elatko devices are exemplarily mentioned. You can find [here](https://www.eltako * [Climate](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/heating-and-cooling/readme.md) (**Experimental** Feedback is welcome.) * A5-10-06 (Eltako FAE14, FHK14, F4HK14, F2L14, FHK61, FME14) * [Teach-In Buttons](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/teach_in_buttons/readme.md) + * A5-10-06 (climate/thermostats) + * A5-38-08 (light and switch) + * H5-3F-7F (cover) * [Send Message Service](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/service-send-message/readme.md) Sends any EnOcean Message. Can be used for automatinos in Home Assistant so that none-EnOcean and EnOcean deviecs can be combined. [**Gateway**](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/gateways/readme.md) (See also [how to use gateways](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/gateway_usage/readme.md) and [multiple gateway support](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/multiple-gateway-support/readme.md)) From ab27bee115a84167ac4e689204a666093f7cd795 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Tue, 26 Mar 2024 16:08:24 +0100 Subject: [PATCH 27/32] docs updated --- README.md | 4 ++-- custom_components/eltako/button.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c30a1a12..88811cea 100644 --- a/README.md +++ b/README.md @@ -60,10 +60,10 @@ Elatko devices are exemplarily mentioned. You can find [here](https://www.eltako * [Climate](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/heating-and-cooling/readme.md) (**Experimental** Feedback is welcome.) * A5-10-06 (Eltako FAE14, FHK14, F4HK14, F2L14, FHK61, FME14) * [Teach-In Buttons](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/teach_in_buttons/readme.md) - * A5-10-06 (climate/thermostats) + * A5-10-06, A5-10-12 (climate/thermostats) * A5-38-08 (light and switch) * H5-3F-7F (cover) -* [Send Message Service](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/service-send-message/readme.md) Sends any EnOcean Message. Can be used for automatinos in Home Assistant so that none-EnOcean and EnOcean deviecs can be combined. +* [Send Message Service](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/service-send-message/readme.md) Sends any EnOcean Message. Can be used for [automatinos in Home Assistant](https://www.home-assistant.io/getting-started/automation/) so that none-EnOcean and EnOcean deviecs can be combined. [**Gateway**](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/gateways/readme.md) (See also [how to use gateways](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/gateway_usage/readme.md) and [multiple gateway support](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/multiple-gateway-support/readme.md)) * **Eltako FAM14** and Eltako **FGW14-USB** (based on ESP2, rs485 bus and baud rate 57600, uses library [eltako14bus](https://github.com/grimmpp/eltako14bus)) diff --git a/custom_components/eltako/button.py b/custom_components/eltako/button.py index 908d5a71..c7251384 100644 --- a/custom_components/eltako/button.py +++ b/custom_components/eltako/button.py @@ -26,6 +26,7 @@ EEP_WITH_TEACH_IN_BUTTONS = { A5_10_06: b'\x40\x30\x0D\x85', # climate + A5_10_12: b'\x40\x90\x0D\x80', # climate A5_38_08: b'\xE0\x40\x0D\x80', # light H5_3F_7F: b'\xFF\xF8\x0D\x80', # cover # F6_02_01 # What button to take? From 7fffacdc65fbb8b35def246deb7381ed8aa4ce86 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Tue, 26 Mar 2024 16:27:52 +0100 Subject: [PATCH 28/32] services.yaml added --- custom_components/eltako/services.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 custom_components/eltako/services.yaml diff --git a/custom_components/eltako/services.yaml b/custom_components/eltako/services.yaml new file mode 100644 index 00000000..e69de29b From edd28c35b85eea5f708742ca78a50451dd4a58e9 Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Wed, 27 Mar 2024 09:35:56 +0100 Subject: [PATCH 29/32] removed duplicated method --- custom_components/eltako/cover.py | 55 +++---------------------------- 1 file changed, 4 insertions(+), 51 deletions(-) diff --git a/custom_components/eltako/cover.py b/custom_components/eltako/cover.py index c6782741..9513f9cc 100644 --- a/custom_components/eltako/cover.py +++ b/custom_components/eltako/cover.py @@ -230,53 +230,6 @@ def stop_cover(self, **kwargs: Any) -> None: self.schedule_update_ha_state() - def value_changed(self, msg): - """Update the internal state of the cover.""" - try: - decoded = self._dev_eep.decode_message(msg) - except Exception as e: - LOGGER.warning("Could not decode message: %s", str(e)) - return - - if self._dev_eep in [G5_3F_7F]: - if decoded.state == 0x02: # down - self._attr_is_closing = True - self._attr_is_opening = False - elif decoded.state == 0x50: # closed - self._attr_is_opening = False - self._attr_is_closing = False - self._attr_is_closed = True - self._attr_current_cover_position = 0 - elif decoded.state == 0x01: # up - self._attr_is_opening = True - self._attr_is_closing = False - self._attr_is_closed = False - elif decoded.state == 0x70: # open - self._attr_is_opening = False - self._attr_is_closing = False - self._attr_is_closed = False - self._attr_current_cover_position = 100 - elif decoded.time is not None and decoded.direction is not None and self._time_closes is not None and self._time_opens is not None: - time_in_seconds = decoded.time / 10.0 - - if decoded.direction == 0x01: # up - self._attr_current_cover_position = min(self._attr_current_cover_position + int(time_in_seconds / self._time_opens * 100.0), 100) - - - else: # down - self._attr_current_cover_position = max(self._attr_current_cover_position - int(time_in_seconds / self._time_closes * 100.0), 0) - - if self._attr_current_cover_position == 0: - self._attr_is_closed = True - - self._attr_is_closing = False - self._attr_is_opening = False - - LOGGER.debug(f"[cover {self.dev_id}] state: {self.state}, opening: {self.is_opening}, closing: {self.is_closing}, closed: {self.is_closed}, position: {self.current_cover_position}") - - self.schedule_update_ha_state() - - def value_changed(self, msg): """Update the internal state of the cover.""" try: @@ -316,8 +269,8 @@ def value_changed(self, msg): # the initial position. if self._attr_current_cover_position is None: self._attr_current_cover_position = 0 - - self._attr_current_cover_position = min(self._attr_current_cover_position + int(time_in_seconds / self._time_opens * 100.0), 100) + else: + self._attr_current_cover_position = min(self._attr_current_cover_position + int(time_in_seconds / self._time_opens * 100.0), 100) self._attr_is_opening = True self._attr_is_closing = False self._attr_is_closed = None @@ -328,8 +281,8 @@ def value_changed(self, msg): # the initial position. if self._attr_current_cover_position is None: self._attr_current_cover_position = 100 - - self._attr_current_cover_position = max(self._attr_current_cover_position - int(time_in_seconds / self._time_closes * 100.0), 0) + else: + self._attr_current_cover_position = max(self._attr_current_cover_position - int(time_in_seconds / self._time_closes * 100.0), 0) self._attr_is_opening = False self._attr_is_closing = True self._attr_is_closed = None From 07316b3891a1809130981e6286ce6fdc3b034aef Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Wed, 27 Mar 2024 11:20:45 +0100 Subject: [PATCH 30/32] EEP A5-06-01 and A5-04-03 added --- README.md | 3 +- changes.md | 2 ++ custom_components/eltako/manifest.json | 2 +- custom_components/eltako/schema.py | 2 ++ custom_components/eltako/sensor.py | 7 +++- tests/test_sensor_A5_04_02.py | 6 ++-- tests/test_sensor_A5_04_03.py | 46 ++++++++++++++++++++++++++ tests/test_sensor_A5_06_01.py | 42 +++++++++++++++++++++++ 8 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 tests/test_sensor_A5_04_03.py create mode 100644 tests/test_sensor_A5_06_01.py diff --git a/README.md b/README.md index 88811cea..fd846a92 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,8 @@ Elatko devices are exemplarily mentioned. You can find [here](https://www.eltako * Sensor * A5-04-01 (Temperature and Humidity Sensor) * A5-04-02 (Temperature and Humidity Sensor e.g.: FLGTF, FLT58, FFT60) - * A5-04-03 **Coming soon!** (Temperature and Humidity Sensor e.g.: FFT60) + * A5-04-03 (Temperature and Humidity Sensor e.g.: FFT60) + * A5-06-01 (Light - Twilight and Illumination) * A5-07-01 (Occupancy sensor) * A5-08-01 (Light-, Temperature-, Occupancy Sensor e.g.: FABH65S, FBH65, FBH65S, FBH65TF) * A5-09-0C (Air Quality / VOC⁠ (Volatile Organic Compounds) e.g. [FLGTF](https://github.com/grimmpp/home-assistant-eltako/tree/main/docs/flgtf_temp_humidity_air_quality/readme.md)) diff --git a/changes.md b/changes.md index dd2977d7..ed795e25 100644 --- a/changes.md +++ b/changes.md @@ -5,6 +5,8 @@ * 🐞 Fix for TargetTemperatureSensor (EEP: A5-10-06 and A5-10-12) * 🐞 Fix for unknow cover positions. * Unit-Tests added and improved for EEP A5-04-01, A5-04-02, A5-10-06, A5-10-12, A5-13-01, and F6-10-00. +* EEP A5-04-03 added for Eltako FFT60 (temperature and humiditry) +* EEP A5-06-01 added for light sensor (currently twilight and daylight are combinded in one illumination sensor/entity) ## Version 1.4.0 ESP3 Support (USB300) * Docs about gateway usage added. diff --git a/custom_components/eltako/manifest.json b/custom_components/eltako/manifest.json index 94b2931b..c12fcc0b 100644 --- a/custom_components/eltako/manifest.json +++ b/custom_components/eltako/manifest.json @@ -9,6 +9,6 @@ "iot_class": "local_push", "issue_tracker": "https://github.com/grimmpp/home-assistant-eltako/issues", "loggers": ["eltako"], - "requirements": ["eltako14bus==0.0.47","enocean==0.60.1", "StrEnum", "esp2-gateway-adapter==0.1"], + "requirements": ["eltako14bus==0.0.48","enocean==0.60.1", "StrEnum", "esp2-gateway-adapter==0.1"], "version": "1.3.9" } diff --git a/custom_components/eltako/schema.py b/custom_components/eltako/schema.py index 6eae9795..a41df48f 100644 --- a/custom_components/eltako/schema.py +++ b/custom_components/eltako/schema.py @@ -149,6 +149,8 @@ class SensorSchema(EltakoPlatformSchema): CONF_EEP_SUPPORTED = [A5_04_01.eep_string, A5_04_02.eep_string, + A5_04_03.eep_string, + A5_06_01.eep_string, A5_07_01.eep_string, A5_08_01.eep_string, A5_09_0C.eep_string, diff --git a/custom_components/eltako/sensor.py b/custom_components/eltako/sensor.py index dc4a6822..4a6abeeb 100644 --- a/custom_components/eltako/sensor.py +++ b/custom_components/eltako/sensor.py @@ -344,7 +344,7 @@ async def async_setup_entry( entities.append(EltakoMeterSensor(platform, gateway, dev_conf.id, dev_name, dev_conf.eep, SENSOR_DESC_WATER_CUMULATIVE, tariff=(tariff - 1))) entities.append(EltakoMeterSensor(platform, gateway, dev_conf.id, dev_name, dev_conf.eep, SENSOR_DESC_WATER_CURRENT, tariff=(tariff - 1))) - elif dev_conf.eep in [A5_04_02, A5_10_12, A5_04_01]: + elif dev_conf.eep in [A5_04_01, A5_04_02, A5_04_03, A5_10_12]: entities.append(EltakoTemperatureSensor(platform, gateway, dev_conf.id, dev_name, dev_conf.eep)) entities.append(EltakoHumiditySensor(platform, gateway, dev_conf.id, dev_name, dev_conf.eep)) @@ -371,6 +371,11 @@ async def async_setup_entry( entities.append(EltakoBatteryVoltageSensor(platform, gateway, dev_conf.id, dev_name, dev_conf.eep)) # _pir_status => as binary sensor + elif dev_conf.eep in [A5_06_01]: + entities.append(EltakoIlluminationSensor(platform, gateway, dev_conf.id, dev_name, dev_conf.eep)) + #TODO: add twilight + #TODO: add daylight + # both are currently combined in illumination except Exception as e: LOGGER.warning("[%s] Could not load configuration", platform) diff --git a/tests/test_sensor_A5_04_02.py b/tests/test_sensor_A5_04_02.py index 0cc15375..863f16da 100644 --- a/tests/test_sensor_A5_04_02.py +++ b/tests/test_sensor_A5_04_02.py @@ -15,7 +15,7 @@ class TestSensor_A5_04_02(unittest.TestCase): - msg1 = Regular4BSMessage (address=b'\xFF\xFF\x00\x80', data=b'\xaa\x00\x00\x0d', status=0x00) + msg1 = Regular4BSMessage (address=b'\xFF\xFF\x00\x80', data=b'\x00\x7C\x86\x0F', status=0x00) def create_temperature_sensor(self) -> EltakoTemperatureSensor: gateway = GatewayMock() @@ -37,10 +37,10 @@ def test_temperature_sensor_A5_04_02(self): s_temp = self.create_temperature_sensor() s_temp.value_changed(self.msg1) - self.assertEqual(s_temp.native_value, -20.0) + self.assertEqual(s_temp.native_value, 22.880000000000003) def test_humidity_sensor_A5_04_02(self): s_hum = self.create_humidity_sensor() s_hum.value_changed(self.msg1) - self.assertEqual(s_hum.native_value, 0.0) \ No newline at end of file + self.assertEqual(s_hum.native_value, 49.6) \ No newline at end of file diff --git a/tests/test_sensor_A5_04_03.py b/tests/test_sensor_A5_04_03.py new file mode 100644 index 00000000..f3ee51d3 --- /dev/null +++ b/tests/test_sensor_A5_04_03.py @@ -0,0 +1,46 @@ +import unittest +from custom_components.eltako.sensor import * +from mocks import HassMock +from unittest import mock +from mocks import * +from homeassistant.helpers.entity import Entity +from homeassistant.const import Platform +from custom_components.eltako.binary_sensor import EltakoBinarySensor +from eltakobus import * + +# mock update of Home Assistant +Entity.schedule_update_ha_state = mock.Mock(return_value=None) +# EltakoBinarySensor.hass.bus.fire is mocked by class HassMock + + +class TestSensor_A5_04_02(unittest.TestCase): + + msg1 = Regular4BSMessage (address=b'\xFF\xFF\x00\x80', data=b'\x99\x02\x12\x09', status=0x00) + + def create_temperature_sensor(self) -> EltakoTemperatureSensor: + gateway = GatewayMock() + dev_id = AddressExpression.parse("FF-FF-00-80") + dev_name = "device name" + dev_eep = EEP.find("A5-04-03") + s = EltakoTemperatureSensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) + return s + + def create_humidity_sensor(self) -> EltakoHumiditySensor: + gateway = GatewayMock() + dev_id = AddressExpression.parse("FF-FF-00-80") + dev_name = "device name" + dev_eep = EEP.find("A5-04-03") + s = EltakoHumiditySensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) + return s + + def test_temperature_sensor_A5_04_02(self): + s_temp = self.create_temperature_sensor() + + s_temp.value_changed(self.msg1) + self.assertEqual(s_temp.native_value, 22.8125) + + def test_humidity_sensor_A5_04_02(self): + s_hum = self.create_humidity_sensor() + + s_hum.value_changed(self.msg1) + self.assertEqual(s_hum.native_value, 60.0) \ No newline at end of file diff --git a/tests/test_sensor_A5_06_01.py b/tests/test_sensor_A5_06_01.py new file mode 100644 index 00000000..3a26e588 --- /dev/null +++ b/tests/test_sensor_A5_06_01.py @@ -0,0 +1,42 @@ +import unittest +from custom_components.eltako.sensor import * +from mocks import HassMock +from unittest import mock +from mocks import * +from homeassistant.helpers.entity import Entity +from homeassistant.const import Platform +from custom_components.eltako.binary_sensor import EltakoBinarySensor +from eltakobus import * + +# mock update of Home Assistant +Entity.schedule_update_ha_state = mock.Mock(return_value=None) +# EltakoBinarySensor.hass.bus.fire is mocked by class HassMock + + +class TestSensor_A5_06_01(unittest.TestCase): + + + + def create_illumination_sensor(self) -> EltakoIlluminationSensor: + gateway = GatewayMock() + dev_id = AddressExpression.parse("FF-FF-00-80") + dev_name = "device name" + dev_eep = EEP.find("A5-06-01") + s = EltakoIlluminationSensor(Platform.SENSOR, gateway, dev_id, dev_name, dev_eep) + return s + + def test_illumincation_sensor(self): + s_ill = self.create_illumination_sensor() + + # check daylight + msg = Regular4BSMessage (address=b'\xFF\xFF\x00\x80', data=b'\x60\xAA\x00\x0F', status=0x00) + s_ill.value_changed(msg) + self.assertEqual(s_ill.native_value, 20100.0) + + # check twilight + msg = Regular4BSMessage (address=b'\xFF\xFF\x00\x80', data=b'\x60\x00\x00\x0F', status=0x00) + s_ill.value_changed(msg) + self.assertEqual(s_ill.native_value, 96.0) + + + \ No newline at end of file From ab6f97794ce92f39afbaa744a94f59c0b5f357af Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Wed, 27 Mar 2024 11:22:33 +0100 Subject: [PATCH 31/32] corrected covers --- custom_components/eltako/cover.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/custom_components/eltako/cover.py b/custom_components/eltako/cover.py index 9513f9cc..93ad9e28 100644 --- a/custom_components/eltako/cover.py +++ b/custom_components/eltako/cover.py @@ -269,8 +269,8 @@ def value_changed(self, msg): # the initial position. if self._attr_current_cover_position is None: self._attr_current_cover_position = 0 - else: - self._attr_current_cover_position = min(self._attr_current_cover_position + int(time_in_seconds / self._time_opens * 100.0), 100) + + self._attr_current_cover_position = min(self._attr_current_cover_position + int(time_in_seconds / self._time_opens * 100.0), 100) self._attr_is_opening = True self._attr_is_closing = False self._attr_is_closed = None @@ -281,8 +281,8 @@ def value_changed(self, msg): # the initial position. if self._attr_current_cover_position is None: self._attr_current_cover_position = 100 - else: - self._attr_current_cover_position = max(self._attr_current_cover_position - int(time_in_seconds / self._time_closes * 100.0), 0) + + self._attr_current_cover_position = max(self._attr_current_cover_position - int(time_in_seconds / self._time_closes * 100.0), 0) self._attr_is_opening = False self._attr_is_closing = True self._attr_is_closed = None From cf7a7bc34fd385315b614ba0b5fcf4788a0087ec Mon Sep 17 00:00:00 2001 From: Philipp Grimm Date: Wed, 27 Mar 2024 11:23:31 +0100 Subject: [PATCH 32/32] added new version into manifest --- custom_components/eltako/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/eltako/manifest.json b/custom_components/eltako/manifest.json index c12fcc0b..b147b1b0 100644 --- a/custom_components/eltako/manifest.json +++ b/custom_components/eltako/manifest.json @@ -10,5 +10,5 @@ "issue_tracker": "https://github.com/grimmpp/home-assistant-eltako/issues", "loggers": ["eltako"], "requirements": ["eltako14bus==0.0.48","enocean==0.60.1", "StrEnum", "esp2-gateway-adapter==0.1"], - "version": "1.3.9" + "version": "1.4.1" }

RHbufS}17&Ky(YQmg92UGw(E726M{B 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