From 2082c3df5e8bf593532a7831ba75c61b65f9e7de Mon Sep 17 00:00:00 2001 From: David Tekan Date: Sat, 16 Sep 2023 21:59:12 +0200 Subject: [PATCH 1/2] signal_strength should exposed as numeric --- paradox/interfaces/mqtt/entities/factory.py | 5 ++++- paradox/interfaces/mqtt/homeassistant.py | 8 +++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/paradox/interfaces/mqtt/entities/factory.py b/paradox/interfaces/mqtt/entities/factory.py index db5a9a5c..fa674db9 100644 --- a/paradox/interfaces/mqtt/entities/factory.py +++ b/paradox/interfaces/mqtt/entities/factory.py @@ -1,7 +1,7 @@ from paradox.interfaces.mqtt.entities.alarm_control_panel import AlarmControlPanel from paradox.interfaces.mqtt.entities.binary_sensors import ZoneStatusBinarySensor, \ SystemBinarySensor, PartitionBinarySensor -from paradox.interfaces.mqtt.entities.sensor import PAIStatusSensor, SystemStatusSensor +from paradox.interfaces.mqtt.entities.sensor import PAIStatusSensor, SystemStatusSensor, ZoneNumericSensor from paradox.interfaces.mqtt.entities.switch import ZoneBypassSwitch, PGMSwitch @@ -28,6 +28,9 @@ def make_zone_bypass_switch(self, zone): def make_zone_status_binary_sensor(self, zone, status): return ZoneStatusBinarySensor(zone, status, self.device, self.availability_topic) + def make_zone_status_numeric_sensor(self, zone, status): + return ZoneNumericSensor(zone, status, self.device, self.availability_topic) + def make_pgm_switch(self, pgm): return PGMSwitch(pgm, self.device, self.availability_topic) diff --git a/paradox/interfaces/mqtt/homeassistant.py b/paradox/interfaces/mqtt/homeassistant.py index 4d6bd1c6..ec2a6756 100644 --- a/paradox/interfaces/mqtt/homeassistant.py +++ b/paradox/interfaces/mqtt/homeassistant.py @@ -119,10 +119,12 @@ def _publish_zone_configs(self, zone_statuses): if property_name not in cfg.HOMEASSISTANT_PUBLISH_ZONE_PROPERTIES: continue if property_name == "bypassed": - zone_status_binary_sensor = self.entity_factory.make_zone_bypass_switch(zone) + zone_status_sensor = self.entity_factory.make_zone_bypass_switch(zone) + elif property_name == "signal_strength": + zone_status_sensor = self.entity_factory.make_zone_status_numeric_sensor(zone, property_name) else: - zone_status_binary_sensor = self.entity_factory.make_zone_status_binary_sensor(zone, property_name) - self._publish_config(zone_status_binary_sensor) + zone_status_sensor = self.entity_factory.make_zone_status_binary_sensor(zone, property_name) + self._publish_config(zone_status_sensor) def _publish_pgm_configs(self, pgm_statuses): for pgm_key, pgm_status in pgm_statuses.items(): From 768e1eec6922ec41ac8be555d1aa8680fcd86e5d Mon Sep 17 00:00:00 2001 From: David Tekan Date: Sat, 16 Sep 2023 22:02:06 +0200 Subject: [PATCH 2/2] class ZoneNumericSensor --- paradox/interfaces/mqtt/entities/sensor.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/paradox/interfaces/mqtt/entities/sensor.py b/paradox/interfaces/mqtt/entities/sensor.py index 6787ae4a..abe0cc95 100644 --- a/paradox/interfaces/mqtt/entities/sensor.py +++ b/paradox/interfaces/mqtt/entities/sensor.py @@ -30,6 +30,19 @@ def entity_name(self): return "PAI Status" +class ZoneNumericSensor(AbstractEntity): + def __init__(self, entity, property, device, availability_topic): + super().__init__(device, availability_topic) + + self.property = property + self.label = entity.get("label", entity["key"].replace("_", " ")) + + self.key = sanitize_key(entity["key"]) + + self.pai_entity_type = "zone" + self.hass_entity_type = "sensor" + + class SystemStatusSensor(AbstractEntity): def __init__(self, key, property, device, availability_topic): super().__init__(device, availability_topic)