GithubHelp home page GithubHelp logo

roopesh / ad-qolsys Goto Github PK

View Code? Open in Web Editor NEW
21.0 5.0 10.0 41 KB

AppDaemon app for Qolsys IQ Panel 2

License: MIT License

Python 100.00%
appdaemon qolsys alarm alarm-panel alarm-control-panel alarm-control homeassistant

ad-qolsys's Introduction

I loved developing this for the community. It had always been my hope that my plugin would no longer be required either through official support, community support, or through a replacement. @XaF https://github.com/XaF/qolsysgw has done the latter and built a better solution for the Qolsys panels. I highly recommend you use qolsysgw going forward. It is more stable and reliable than ad-qolsys. Thank you for your support!

ad-qolsys

AppDaemon app for Qolsys IQ Panel 2 for Home Assistant. Only tested using the HA add-on AppDaemon. Inspired by https://community.home-assistant.io/t/qolsys-iq-panel-2-and-3rd-party-integration

Fully self-contained AppDaemon app. If you have HA MQTT Discovery turned on, you should end up with binary sensors for each Door_Window zone on the Qolsys panel. There are more zone types which I don’t own so I have not handled them in anyway.

You’ll also have an alarm_control_panel for each partition. If you use the alarm panel component in HA, you don't have to worry about sending commands to the panel. It'll all be auto-magiced with MQTT discovery.

Utilizes the MQTT plugin's will_topic to detect if AppDaemon is offline. In order for this to work, MQTT plugin's will_topic and birth_topic must be the same. If they are not the same, AppDaemon's availability will be ignored and the alarm_control_panel and any binary_sensor's statuses can be out of sync with reality during/after restarts.

Arguments in apps.yaml:

mqtt_namespace: (optional) namespace for mqtt defined in appdaemon.yaml; defaults to ""
qolsys_host: (Required) IP address or hostname for the qolsys panel
qolsys_port: (Optional) Port on the qolsys panel to connect to; will default to 12345
qolsys_token: (Required) Token from the qolsys panel
request_topic: (Optional) The topic to listen to send commands to the qolsys panel; defaults to qolsys/requests
qolsys_timeout: (Optional) The timeout (in seconds) to wait for any activity to/from the qolsys panel before disconnecting; defaults to 86400
qolsys_info_topic: (Optional) The topic to publish qolsys INFO events to; defaults to qolsys/info
qolsys_zone_event_topic: (Optional) The topic to publish ZONE_EVENT events to; defaults to qolsys/zone_event
qolsys_alarming_event_topic: (Optional) The topic to publish ARMING events to; defaults to qolsys/arming
qolsys_disarming_event_topic: (Optional) The topic to publish DISARMING events to; defaults to qolsys/disarming
qolsys_confirm_disarm_code: True/False (Optional) Require the code for disarming; defaults to False
qolsys_confirm_arm_code: True/False (Optional) Require the code for arming; defaults to False
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

You’ll need you appdaemon's apps.yaml to include an app with this module and class:

qolsys_panel:
  module: qolsys_client
  class: QolsysClient
  mqtt_namespace: mqtt <see below for my config>
  qolsys_host: <your IP here>
  qolsys_token: <your token here>
  qolsys_port: 12345 # Optional
  request_topic: qolsys/requests # Optional
  qolsys_info_topic: qolsys/panel/info # Optional
  qolsys_zone_update_topic: qolsys/panel/zone_update # Optional
  qolsys_zone_event_topic: qolsys/panel/zone_event # Optional
  qolsys_alarming_event_topic: qolsys/panel/alarming # Optional
  qolsys_disarming_event_topic: qolsys/panel/disarm # Optional
  qolsys_disarm_code: 4567 # Optional - Required if you want to disarm the panel
  qolsys_confirm_arm_code: False # Optional
  qolsys_confirm_disarm_code: False # Optional
  qolsys_arm_away_always_instant: False # Optional

As far MQTT is concerned, I had to figure out how to enable MQTT inside AppDaemon. In case you’re new to AppDaemon and have the same questions, I had to put this in my appdaemon.yaml:

appdaemon:
  latitude: # existing
  longitude: # existing
  elevation: # existing
  time_zone: # your timezone America/Los_Angeles
  # HASS plugin is enabled by default if you're using the add-on
  plugins:
    HASS:
      type: hass
      namespace: default
    # I added on the MQTT plugin
    MQTT:
      type: mqtt
      namespace: mqtt #you will need this namespace name in your apps.yaml
      # The IP Address or hostname of your MQTT broker.  
      client_host: 192.168.x.y
      client_port: 1883

I’m by no means an MQTT or AppDaemon expert, so feel free to peruse the documentation for any MQTT configuration help you need https://appdaemon.readthedocs.io/en/latest/MQTT_API_REFERENCE.html

You can send commands to the Qolsys panel on the request_topic in the config (or qolsys/requests if not specified). There are four commands:

# Request the INFO to be published
{"event":"INFO", "token":"blah"}

# Arm stay:
{"event":"ARM", "arm_type":"stay", "partition_id": 0, "token":"blah"}

# Arm away
{"event":"ARM", "arm_type":"away", "partition_id": 0, "token":"blah"}

# (Variant) Arm away - Instant
{"event":"ARM", "arm_type":"away", "partition_id": 0, "token":"blah", "instant": true}

# Disarm
{"event":"DISARM", "usercode":0000, "token":"blah"}

Known issues:

  • When the app reloads, sometimes it doesn’t reconnect to the socket and it just hangs the entire app. The only way I’ve been able to recover is to restart AppDaemon. If anyone has a way to detect and fix this, let me know or issue a pull request.

I hope this works for everyone! Hit me up with feedback

If you like this Buy Me A Coffee

ad-qolsys's People

Contributors

mzac avatar nathanmagnus avatar roopesh avatar sup3rm3ga avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ad-qolsys's Issues

Add option to trigger panic

Format to trigger a panic is as follows:

{"partition_id":0,"action":"ALARM","alarm_type":"POLICE","version":0,"nonce":"qolsys","source":"C4","token":"foobar"}
or
{"partition_id":0,"action":"ALARM","alarm_type":"FIRE","version":0,"nonce":"qolsys","source":"C4","token":"foobar"}
or
{"partition_id":0,"action":"ALARM","alarm_type":"AUXILIARY","version":0,"nonce":"qolsys","source":"C4","token":"foobar"}

Tried invoking this through MQTT request but the code expects an "event" payload, not an "action" payload... so I'm guessing the current code isn't able to handle it.

Home assistant functionality

My security company is replacing an HAI system (which is integrated with HA) with a Qolsys 4. Will ad-qolsys make it possible to replicate the functionality I get with the OLB (real-time status and control of devices) using HA? The panel will be talking to alarm.com but I also need a way to monitor and control locally.

Add Support for Hardwired Translator for IQ Hardwire 16-S

Just wanted to report that the hardwired translator used with the Qolsys panel in systems where you takeover existing alarm systems is not supported by the integration. I think this is just about creating the sensor, but not familiar enough to put pieces together. I'm including the debug logs below so please let me know if you need anything else to support this. Thanks!

HA Log with MQTT Payload while creating sensors

2021-10-15 19:10:52 ERROR (MainThread) [homeassistant.util.logging] Exception in async_discover when dispatching 'mqtt_discovery_new_binary_sensor_mqtt': ({'name': 'Hardwire Translator', 'device_class': '', 'state_topic': 'mqtt-states/binary_sensor/hardwire_translator/state', 'payload_on': 'Open', 'payload_off': 'Closed', 'availability_mode': 'all', 'availability': [{'payload_available': 'online', 'payload_not_available': 'offline', 'topic': 'mqtt-availability/binary_sensor/hardwire_translator/availability'}, {'payload_available': 'online', 'payload_not_available': 'mqtt-client/status', 'topic': 'mqtt-client/status'}], 'platform': 'mqtt'},) Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/mqtt/mixins.py", line 180, in async_discover config = schema(discovery_payload) File "/usr/local/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 272, in __call__ return self._compiled([], data) File "/usr/local/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 594, in validate_dict return base_validate(path, iteritems(data), out) File "/usr/local/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 432, in validate_mapping raise er.MultipleInvalid(errors) voluptuous.error.MultipleInvalid: value must be one of ['battery', 'battery_charging', 'cold', 'connectivity', 'door', 'garage_door', 'gas', 'heat', 'light', 'lock', 'moisture', 'motion', 'moving', 'occupancy', 'opening', 'plug', 'power', 'presence', 'problem', 'safety', 'smoke', 'sound', 'update', 'vibration', 'window'] for dictionary value @ data['device_class']

Parsed JSON from AppDaemon Log while creating sensors
I cutout the other sensors that are supported

{ "event": "INFO", "info_type": "SUMMARY", "nonce": "qolsys", "partition_list": [ { "name": "partition1", "partition_id": 0, "secure_arm": false, "status": "DISARM", "zone_list": [ { "group": "takeovermodule", "id": "23E1A0", "name": "Hardwire Translator", "partition_id": 0, "state": "0", "status": "Closed", "type": "TakeoverModule", "zone_alarm_type": 0, "zone_id": 4, "zone_physical_type": 13, "zone_type": 18 }, ] } ], "requestID": "df050003-2239-476f-8403-de0f8cfaf9fe" }

Other zone types

As mentioned in the forum, I have other zone types:

{
    "id": "xxx",
    "type": "GlassBreak",
    "name": "Kitchen Glass Break",
    "group": "glassbreak",
    "status": "Closed",
    "state": "0",
    "zone_id": 4,
    "zone_physical_type": 12,
    "zone_alarm_type": 0,
    "zone_type": 19,
    "partition_id": 0
},
{
    "id": "xxx",
    "type": "SmokeDetector",
    "name": "Basement Smoke Detector",
    "group": "smoke_heat",
    "status": "Closed",
    "state": "0",
    "zone_id": 5,
    "zone_physical_type": 9,
    "zone_alarm_type": 9,
    "zone_type": 5,
    "partition_id": 0
},
{
    "id": "xxx",
    "type": "Motion",
    "name": "Upstairs Motion Detector",
    "group": "awayinstantmotion",
    "status": "Closed",
    "state": "0",
    "zone_id": 8,
    "zone_physical_type": 2,
    "zone_alarm_type": 3,
    "zone_type": 2,
    "partition_id": 0
},
{
    "id": "xxx",
    "type": "Water",
    "name": "Water",
    "group": "WaterSensor",
    "status": "Closed",
    "state": "0",
    "zone_id": 14,
    "zone_physical_type": 8,
    "zone_alarm_type": 0,
    "zone_type": 15,
    "partition_id": 0
}

Non Compliant Repo Structure

When attempting to add the repo as a custom integration I get the error "Repostitory structure for 1.7.1 is not compliant"

System Health
Version | core-2021.4.6
Installation Type | Home Assistant Supervised
Development | false
Supervisor | true
Docker | true
Virtual Environment | false
Python Version | 3.8.7
Operating System Family | Linux
Operating System Version | 5.8.0-50-generic
CPU Architecture | x86_64
Timezone | America/Chicago

Home Assistant Community Store
GitHub API | ok
Github API Calls Remaining | 4401
Installed Version | 1.11.3
Stage | running
Available Repositories | 776
Installed Repositories | 6

Home Assistant Supervisor
Host Operating System | Ubuntu 20.10
Update Channel | stable
Supervisor Version | supervisor-2021.04.0
Docker Version | 20.10.6
Disk Total | 218.6 GB
Disk Used | 28.4 GB
Healthy | true
Supported | Unsupported – more info
Supervisor API | ok
Version API | ok
Installed Add-ons | Node-RED (9.0.1), File editor (5.2.0), AppDaemon 4 (0.6.0)

MQTT retain flag should be True

I've experienced a few situations where discovery is failing because the topics simply don't show up in Mosquitto after a reconnect of the MQTT client, and this seems to be due to the fact that most messages sent by ad-qolsys have the Retain flag set to false. I discovered this by trying to "fix" the other issue I flagged (#21) by manually pushing a discovery config, but it would still show up as Unavailable in the HA GUI.

Most if not all other MQTT integrations use Retain=True, why is this one not doing that? I see Retain=true in some lines of the code but not sure why it doesn't apply to all of them.

Change info message to be retained

I notice that when I restart Home Assistant all the entities disappear and I need to re-start AppDaemon to get them back.

Could the message that sends the info, ie the config of the entities be set with a retain flag in mqtt?

Timeouts (This time with no error beforehand)

So... I am still getting timeouts.. but- this was interesting... you can see on the first line that the log was at 1258p, then appdaemon didnt realize it was disconnected until 2314, when i issued a command.

I wonder if there is a status command that could be sent every 60(?) minutes to check the connection, and maybe hit up a binary sensor or something if it times out? What I am thinking, is something rudimentary to restart appdaemon if a timeout occurs?

Again, thanks for this - I love that you built this, and would love to click a "buy me a beer" button.

`2021-04-29 12:58:46.900378 INFO qolsys_panel: Publishing to: mqtt-states/binary_sensor/guest_room_window/state, Payload: Closed
2021-04-29 23:14:35.602365 INFO qolsys_panel: event: ARM
2021-04-29 23:14:35.604070 INFO qolsys_panel: event: ARM, usercode: None, partition_id: 0, arm_type: stay, instant: False
2021-04-29 23:14:35.605855 INFO qolsys_panel: armString: {'partition_id': '0', 'action': 'ARMING', 'arming_type': 'ARM_STAY', 'version': 0, 'nonce': 'qolsys', 'source': 'C4', 'version_key': 1, 'source_key': 'C4', 'token': '<>'}
2021-04-29 23:14:50.839066 INFO qolsys_panel: event: ARM
2021-04-29 23:14:50.842121 INFO qolsys_panel: event: ARM, usercode: None, partition_id: 0, arm_type: stay, instant: False
2021-04-29 23:14:50.845640 INFO qolsys_panel: armString: {'partition_id': '0', 'action': 'ARMING', 'arming_type': 'ARM_STAY', 'version': 0, 'nonce': 'qolsys', 'source': 'C4', 'version_key': 1, 'source_key': 'C4', 'token': '<>'}
2021-04-29 23:31:10.007570 ERROR qolsys_panel: qolsys socket TimeoutError: (<class 'TimeoutError'>, TimeoutError(110, 'Operation timed out'), <traceback object at 0x7fe1953e6200>)
Exception in thread Thread-6:
Traceback (most recent call last):
File "/conf/apps/ad-qolsys/qolsys_socket.py", line 108, in listen
data = self._wrappedSocket.recv(8192).decode()
File "/usr/local/lib/python3.8/ssl.py", line 1226, in recv
return self.read(buflen)
File "/usr/local/lib/python3.8/ssl.py", line 1101, in read
return self._sslobj.read(len)
TimeoutError: [Errno 110] Operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/conf/apps/ad-qolsys/qolsys_socket.py", line 133, in listen
raise NoDataError
qolsys_socket.NoDataError`

Make Night mode configurable

This plugin has been working great, my primary use is to pass my Qolsys system into HomeKit. Unfortunately, this creates an alarm accessory that comes with 4 modes, 3 of which work perfectly. Night mode does nothing. In the past with an old Homebridge plugin, night mode on my ADC panel was the same as Home. It would be great if we could set this as an option. Bonus would be to be able to specify entry delay, so Night could be something like Home + no entry delay

Fix MQTT sensor discovery device_class

I have a test IQP2+ with 7 configured sensors, and 3 of them are generating errors when HA auto-discovers them due to the fact that the device_class is empty. There should be a "catch-all" value in device_class_mapping in qolsys_requests.py to ensure that device_class is defined with an appropriate value for proper discovery.

The 3 sensor types that don't work in my case are "Panel Glass Break", "Doorbell" and "Panel Motion". However, there are others that may not be explicitly defined so the catch-all rule should cover them all.

Error messages from HA are as follows:

2021-10-25 15:53:39 ERROR (MainThread) [homeassistant.util.logging] Exception in async_discover when dispatching 'mqtt_discovery_new_binary_sensor_mqtt': ({'name': 'Panel Glass Break', 'device_class': '', 'state_topic': 'mqtt-states/binary_sensor/panel_glass_break/state', 'payload_on': 'Open', 'payload_off': 'Closed', 'availability_mode': 'all', 'availability': [{'payload_available': 'online', 'payload_not_available': 'offline', 'topic': 'mqtt-availability/binary_sensor/panel_glass_break/availability'}, {'payload_available': 'online', 'payload_not_available': 'appdaemon/status', 'topic': 'appdaemon/status'}], 'platform': 'mqtt'},) Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/mqtt/mixins.py", line 180, in async_discover config = schema(discovery_payload) File "/usr/local/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 272, in __call__ return self._compiled([], data) File "/usr/local/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 594, in validate_dict return base_validate(path, iteritems(data), out) File "/usr/local/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 432, in validate_mapping raise er.MultipleInvalid(errors) voluptuous.error.MultipleInvalid: value must be one of ['battery', 'battery_charging', 'cold', 'connectivity', 'door', 'garage_door', 'gas', 'heat', 'light', 'lock', 'moisture', 'motion', 'moving', 'occupancy', 'opening', 'plug', 'power', 'presence', 'problem', 'safety', 'smoke', 'sound', 'update', 'vibration', 'window'] for dictionary value @ data['device_class']

Syntax error in Timeout loop

When i was working on something else, i borked a config and got a new error -- looks to be related to the updated code.

`2021-04-27 13:29:48.413100 INFO AppDaemon: Processing restart for HASS
2021-04-27 13:29:48.413838 INFO AppDaemon: Terminating qolsys_panel
2021-04-27 13:29:48.415915 INFO AppDaemon: Initializing app qolsys_panel using class QolsysClient from module qolsys_client
2021-04-27 13:29:48.422242 WARNING qolsys_panel: ------------------------------------------------------------
2021-04-27 13:29:48.422816 WARNING qolsys_panel: Unexpected error initializing app: qolsys_panel:
2021-04-27 13:29:48.423475 WARNING qolsys_panel: ------------------------------------------------------------
2021-04-27 13:29:48.424725 WARNING qolsys_panel: Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/appdaemon/app_management.py", line 996, in check_app_updates
await self.init_object(app)
File "/usr/local/lib/python3.8/site-packages/appdaemon/app_management.py", line 315, in init_object
modname = await utils.run_in_executor(self, import, app_args["module"])
File "/usr/local/lib/python3.8/site-packages/appdaemon/utils.py", line 299, in run_in_executor
response = future.result()
File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/conf/apps/ad-qolsys/qolsys_client.py", line 3, in
import qolsys_socket
File "/conf/apps/ad-qolsys/qolsys_socket.py", line 130
except: TimeoutError:
^
SyntaxError: invalid syntax

2021-04-27 13:29:48.425281 WARNING qolsys_panel: ------------------------------------------------------------
2021-04-27 13:29:48.426345 WARNING AppDaemon: Unable to find module qolsys_panel - initialize() skipped
`

Doesnt reconnect when connection dropped

I am not sure why the connection was terminated; i am sure it was a wireless issue or something... but as a note, i have to reload the app whenever the below happens... there doesn't appear to be any reconnect logic. I left the preceeding lines of log in here for context, but the last line is the only error/cause for concern.
2021-04-22 23:58:32.256421 INFO qolsys_panel: event: ARM 2021-04-22 23:58:32.263052 INFO qolsys_panel: event: ARM, usercode: None, partition_id: 0, arm_type: stay, instant: False 2021-04-22 23:58:32.265418 INFO qolsys_panel: armString: {'partition_id': '0', 'action': 'ARMING', 'arming_type': 'ARM_STAY', 'version': 0, 'nonce': 'qolsys', 'source': 'C4', 'version_key': 1, 'source_key': 'C4', 'token': '<my-token>'} 2021-04-23 00:14:42.151256 ERROR qolsys_panel: listen failed/stopped: (<class 'TimeoutError'>, TimeoutError(110, 'Operation timed out'), <traceback object at 0x7f934ca55ec0>)

Add unique ID field to identify the panel and its sensors

Since it seems we can't pull uniquely identifiable information from the INFO packet, perhaps one way of fixing this would be to pass the panel IP address, or any other customizeable field in apps.yaml, to uniquely identify the discovered entities and bring them under one device.

This would make entities much easier to manage; all reported sensors would have the device: payload with all the parent panel's information. Paradox Alarm Interface (PAI) and many other MQTT integrations are using this.

Example of a discovered binary_sensor under PAI (pay attention to the "device" section):

{"name": "Z1", "unique_id": "abcd1234_zone_Z1_open", "state_topic": "paradox/states/zones/Z1/open", "device_class": "motion", "availability_topic": "paradox/interface/availability", "payload_on": "True", "payload_off": "False", "device": {"manufacturer": "Paradox", "model": "SP5500", "identifiers": ["Paradox", "SP5500", "abcd1234"], "name": "SP5500", "sw_version": "7.14 build 2" } }

Arm away time configuration/instant arm away

It wouldn’t be a bad idea to have the arm away setting to be configurable. My setup is that if the panel is armed away with the delay, and a door isn’t opened during the count down, it will automatically switch to armed stay. This presents a problem where we normally arm the house with home kit or home assistant when we are outside of the house in the car.

Errors in AppDaemon logs and no entities being created.

So I'm seeing this in the logs of Appdaemon and no entities are being made.

WARNING qolsys_panel: ------------------------------------------------------------
INFO qolsys_panel: publishing ZONE_EVENT event to: qolsys/panel/zone_event
WARNING qolsys_panel: ------------------------------------------------------------
WARNING qolsys_panel: Unexpected error in worker for App qolsys_panel:
WARNING qolsys_panel: Worker Ags: {'id': 'b5ed0d8bcd18461783e2b3009831e15a', 'name': 'qolsys_panel', 'objectid': '52c5e8f035944301990a22cc0fefb7f9', 'type': 'event', 'event': 'MQTT_MESSAGE', 'function': <bound method MQTTSubscriber.mqtt_zone_event_event_received of <qolsys_requests.MQTTSubscriber object at 0x7fb56a1ac0>>, 'data': {'topic': 'qolsys/panel/zone_event', 'wildcard': '#', 'payload': '{"event":"ZONE_EVENT","zone_event_type":"ZONE_ACTIVE","version":1,"zone":{"status":"Closed","zone_id":2},"requestID":"a46a60df-6562-4228-8127-0da022150ec4"}\n'}, 'pin_app': True, 'pin_thread': 0, 'kwargs': {'topic': 'qolsys/panel/zone_event', '__thread_id': 'thread-0'}}
WARNING qolsys_panel: ------------------------------------------------------------
WARNING qolsys_panel: Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/appdaemon/threading.py", line 936, in worker
funcref(args["event"], data, self.AD.events.sanitize_event_kwargs(app, args["kwargs"]))
File "/config/appdaemon/apps/ad-qolsys/qolsys_requests.py", line 57, in mqtt_zone_event_event_received
self.mqtt_zone_update_event_received(event_name, data, kwargs)
File "/config/appdaemon/apps/ad-qolsys/qolsys_requests.py", line 33, in mqtt_zone_update_event_received
this_zone = self.app.zones[zoneid]
KeyError: 2
WARNING qolsys_panel: ------------------------------------------------------------

There are several more than just this one also.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.