diff --git a/apps/ad-qolsys/door_window.py b/apps/ad-qolsys/door_window.py index 5a1f1e7..aa1cc1b 100755 --- a/apps/ad-qolsys/door_window.py +++ b/apps/ad-qolsys/door_window.py @@ -87,16 +87,16 @@ def __str__(self): def __repr__(self): me = f'{{' \ - f'"zoneid": self.zoneid,' \ - f'"entity_id": self.entity_id,' \ - f'"friendly_name": self.friendly_name,' \ - f'"state": self.state,' \ - f'"partition_id": self.partition_id,' \ - f'"device_class": self.device_class,' \ - f'"payload_on": self.payload_on,' \ - f'"payload_off": self.payload_off,' \ - f'"config_topic": self.config_topic,' \ - f'"state_topic": self.state_topic,' \ - f'"availability": self.availability_list' \ + f'"zoneid": {self.zoneid},' \ + f'"entity_id": {self.entity_id},' \ + f'"friendly_name": {self.friendly_name},' \ + f'"state": {self.state},' \ + f'"partition_id": {self.partition_id},' \ + f'"device_class": {self.device_class}' \ + #f'"payload_on": {self.payload_on},' \ + #f'"payload_off": {self.payload_off},' \ + #f'"config_topic": {self.config_topic},' \ + #f'"state_topic": {self.state_topic},' \ + #f'"availability": {self.availability_list}' \ f'}}' return me \ No newline at end of file diff --git a/apps/ad-qolsys/partition.py b/apps/ad-qolsys/partition.py index 3c5f453..06bed99 100755 --- a/apps/ad-qolsys/partition.py +++ b/apps/ad-qolsys/partition.py @@ -48,7 +48,7 @@ def __init__(self, p_id: int, name: str, status: str, code: int, confirm_code_ar self.alarm_panel_config_topic = self.homeassistant_mqtt_discovery_topic + "alarm_control_panel/qolsys/" + self.entity_id + "/config" self.alarm_panel_state_topic = self.mqtt_state_topic + "alarm_control_panel/qolsys/" + self.entity_id + "/state" self.availability_topic = self.mqtt_availability_topic + "alarm_control_panel/qolsys/" + self.entity_id + "/availability" - self.command_template = '{"event":"{% if action == \"ARM_HOME\" or action == \"ARM_AWAY\" %}ARM","arm_type":"{% if action == \"ARM_HOME\" %}stay{% else %}away{% endif %}"{% else %}{{action}}", "usercode":"' + str(self.code) + '"{% endif %}, "token":"' + self.token + '", "partition_id":"' + str(self.p_id) + '"}' + self.command_template = '{"event":"{% if action == \"ARM_HOME\" or action == \"ARM_AWAY\" or action == \"ARM_NIGHT\" %}ARM","arm_type":"{% if action == \"ARM_HOME\" or action == \"ARM_NIGHT\" %}stay{% else %}away{% endif %}"{% else %}{{action}}", "usercode":"' + str(self.code) + '"{% endif %}, "token":"' + self.token + '", "partition_id":"' + str(self.p_id) + '"}' @property def availability_list(self): @@ -106,6 +106,7 @@ def status(self): @status.setter def status(self, status:str): __c_ARM_STAY__ = "ARM_STAY" + __c_ARM_NIGHT__ = "ARM_NIGHT" __c_ARM_DELAY__ = "EXIT_DELAY" __c_DISARM__ = "DISARM" __c_ENTRY_DELAY__ = "ENTRY_DELAY" @@ -151,13 +152,13 @@ def __str__(self): def __repr__(self): me = f'{{' \ - f'"id": self.p_id,' \ - f'"name": self.name,' \ - f'"status": self.status,' \ - f'"entity_id": self.entity_id,' \ - f'"alarm_panel_config_topic": self.alarm_panel_config_topic,' \ - f'"alarm_panel_state_topic": self.alarm_panel_state_topic,' \ - f'"code": self.code,' \ - f'"zones": self.zones' \ + f'"id": {self.p_id},' \ + f'"name": {self.name},' \ + f'"status": {self.status},' \ + f'"entity_id": {self.entity_id},' \ + f'"code": {self.code},' \ + f'"zones": {self.zones}' \ + # f'"alarm_panel_config_topic": {self.alarm_panel_config_topic},' \ + # f'"alarm_panel_state_topic": {self.alarm_panel_state_topic},' \ f'}}' return me \ No newline at end of file diff --git a/apps/ad-qolsys/qolsys_client.py b/apps/ad-qolsys/qolsys_client.py index a272787..efe18c1 100755 --- a/apps/ad-qolsys/qolsys_client.py +++ b/apps/ad-qolsys/qolsys_client.py @@ -26,12 +26,18 @@ # qolsys_confirm_arm_code: True/False (Optional) Require the code for arming # qolsys_disarm_code: (Required - if you want to disarm the alarm) # qolsys_arm_away_always_instant: True/False (Optional) Set to true if all Arm Away commands should be instant; defaults to False +# homeassistant_mqtt_discovery_topic: homeassistant/ (Optional) The topic Home Assistant is using for MQTT Discovery (homeassistant/ is the default in HA and here) +# mqtt_state_topic: mqtt-states (Optional) The topic to publish state updates to for the alarm_control_panel and binary_sensor (default: mqtt-states) +# mqtt_availability_topic: mqtt-availability (Optional) The topic to publish availability events to for the alarm_control_panel and binary_sensor (default: mqtt-availability) +# qolsys_alarm_triggered_topic: (Optional) The topic to publish triggered events to; defaults to qolsys/alarm/triggered +# qolsys_alarm_pending_topic: (Optional) The topic to publish pending events to; defaults to qolsys/alarm/pending # Developer documentation # This is basically how shit flows: # Get an event from the qolsys panel (qolsys_client.py) --> QolsysClient.qolsys_data_received. # The event type and sub event (zone_event_type, arming_type, alarm_type) determine which mqtt queue to publish to. -# You need a listener for that topic in QolsysClient.initialize +# That data reciever then publishes to the relevant topic, as defined in the app arugments or default topics. + class QolsysClient(mqtt.Mqtt): def get_arg(self, name: str, arr: list, default=None):