From 841eb3089cccea131046a64fd611898e23c12439 Mon Sep 17 00:00:00 2001 From: JimBo Date: Sun, 15 Aug 2021 11:06:48 -0700 Subject: [PATCH] First PG3 Release --- .gitignore | 2 ++ Makefile | 7 +++++-- nodes/Airscape2.py | 30 +++++++++++++----------------- nodes/Controller.py | 19 ++----------------- server.json | 15 +++++++-------- zip_exclude.lst | 6 ++++++ 6 files changed, 35 insertions(+), 44 deletions(-) create mode 100644 zip_exclude.lst diff --git a/.gitignore b/.gitignore index 2575fcc..c3ea6fa 100755 --- a/.gitignore +++ b/.gitignore @@ -74,3 +74,5 @@ target/ #Project specific polyinterface +*.zip + diff --git a/Makefile b/Makefile index e15f457..4faddd8 100755 --- a/Makefile +++ b/Makefile @@ -1,9 +1,12 @@ -XML_FILES = profile/*/*.xml +NAME = Airscape +XML_FILES = profile/*/*.xml # sudo apt-get install libxml2-utils libxml2-dev -check: +check: echo ${XML_FILES} xmllint --noout ${XML_FILES} +zip: + zip -x@zip_exclude.lst -r ${NAME}.zip * diff --git a/nodes/Airscape2.py b/nodes/Airscape2.py index 12d9585..8271e2c 100755 --- a/nodes/Airscape2.py +++ b/nodes/Airscape2.py @@ -13,16 +13,16 @@ class Airscape2(Node): def __init__(self, controller, primary, address, name, config_data): - super(Airscape2, self).__init__(controller, primary, address, name) + super(Airscape2, self).__init__(controller.poly, primary, address, name) self.config_data = config_data self.debug_level = 1 - # TODO: Subscribe to let short poll heppen and remove call from controller node - self.do_poll = False # Don't let shortPoll happen during initialiation self.watching_door = False self.status = {} self.driver = {} + controller.poly.subscribe(controller.poly.START, self.handler_start, address) + controller.poly.subscribe(controller.poly.POLL, self.handler_poll) - def start(self): + def handler_start(self): self.setDriver('GV1', 0) LOGGER.info(f'config={self.config_data}') self.host = self.config_data['host'] @@ -30,12 +30,18 @@ def start(self): self.query() self.do_poll = True - def shortPoll(self): + def handler_poll(self, polltype): + if polltype == 'shortPoll': + self.short_poll() + else: + self.long_poll() + + def short_poll(self): LOGGER.debug('...') if not self.watching_door: self.poll() - def longPoll(self): + def long_poll(self): pass def poll(self): @@ -110,22 +116,12 @@ def watch_door(self): cnt += 1 self.poll() self.watching_door = False - LOGGER.debug(f"st={status['doorinprocess']}") + LOGGER.debug(f"st={self.status['doorinprocess']}") def query(self): self.poll() self.reportDrivers() - def setDriver(self,driver,value): - self.driver[driver] = value - super(Airscape2, self).setDriver(driver,value) - - def getDriver(self,driver): - if driver in self.driver: - return self.driver[driver] - else: - return super(Airscape2, self).getDriver(driver) - def setOnI(self, command): val = command.get('value') LOGGER.info(f'val={val}') diff --git a/nodes/Controller.py b/nodes/Controller.py index 09b3806..fb745b7 100755 --- a/nodes/Controller.py +++ b/nodes/Controller.py @@ -40,23 +40,8 @@ def handler_add_node_done(self, node): LOGGER.debug(f'node added {node}') def handler_poll(self, polltype): - if polltype == 'shortPoll': - self.short_poll() - else: - self.long_poll() - - def short_poll(self): - nodes = self.poly.getNodes() - for node in nodes: - if nodes[node].address != self.address and nodes[node].do_poll: - nodes[node].short_poll() - - def long_poll(self): - nodes = self.poly.getNodes() - for node in nodes: - if nodes[node].address != self.address and nodes[node].do_poll: - nodes[node].long_poll() - self.heartbeat() + if polltype == 'longPoll': + self.heartbeat() def query(self): self.check_params() diff --git a/server.json b/server.json index 9d12deb..c488bc4 100755 --- a/server.json +++ b/server.json @@ -1,24 +1,23 @@ { "name": "Airscape", - "docs": "https://github.com/jimboca/udi-poly-airscape", + "docs": "https://github.com/UniversalDevicesInc/udi-poly-airscape/blob/master/README.md", "forum": "https://forum.universal-devices.com/forum/134-polyglot-v2-airscape-nodeserver/", "type": "python3", "executable": "airscape-poly.py", "install": "install.sh", - "install_cloud": "install_cloud.sh", - "description": "Airscape Node Server", + "description": "Airscape Node Server for Polyglot V3", "notice": "Your disclaimer here", "shortPoll": "5", "longPoll": "600", "profile_version": "3.0.0", "credits": [ { - "title": "airscape: A NodeServer for Airscape Fan Integration", + "title": "airscape: A UDI Polyglot V3 NodeServer for Airscape Fan Integration", "author": "JimBoCA", - "version": "2.1.0", - "date": "April 15, 2019", - "source": "https://github.com/jimboca/udi-poly-airscape", - "license": "https://raw.githubusercontent.com/jimboca/udi-poly-airscape/master/LICENSE" + "version": "3.0.0", + "date": "August 14, 2021", + "source": "https://github.com/UniversalDevicesInc/udi-poly-airscape", + "license": "https://raw.githubusercontent.com/UniversalDevicesInc/udi-poly-airscape/master/LICENSE" } ] } diff --git a/zip_exclude.lst b/zip_exclude.lst new file mode 100644 index 0000000..6d17bb6 --- /dev/null +++ b/zip_exclude.lst @@ -0,0 +1,6 @@ +__pycache__/* +*/__pycache__/* +logs/* +*.pyc +zip_exclude.lst +Airscape.zip