Пример #1
0
    def run(self):
        """
        Run method for the plugin
        """
        self.logger.debug('zwave: run method called')
        self.alive = True

        try:
            options = ZWaveOption(self._device, config_path=self._config_path, user_path='.', cmd_line='')
        except Exception as e:
            self.logger.error('zwave: error on create ZWaveOption - {}'.format(e))
            self.alive = False
            return

        try:
            options.set_log_file(self._logfile)
            options.set_save_log_level(self._loglevel)
            options.set_logging(self._logging)
            options.set_append_log_file(False)
            options.set_console_output(False)
            options.set_security_strategy(self._sec_strategy)
            options.lock()
        except Exception as e:
            self.logger.error('zwave: error on option.set_* - {}'.format(e))

        self.logger.debug('zwave: run -> create network')
        try:
            self._network = ZWaveNetwork(options, autostart=False)
        except Exception as e:
            self.logger.error('zwave: error on create Network Object - {}'.format(e))

        self.logger.debug('zwave: run -> connect event handler')
        try:
            dispatcher.connect(self.zwave_value_update, ZWaveNetwork.SIGNAL_VALUE_CHANGED)
        except Exception as e:
            self.logger.error('zwave: error on connect event handler - {}'.format(e))

        self.logger.debug('zwave: run -> start network')
        try:
            self._network.start()
        except Exception as e:
            self.logger.error('zwave: error on start network - {}'.format(e))

        self.logger.info('zwave: use openzwave library: {}'.format(self._network.controller.ozw_library_version))
        self.logger.info('zwave: use python library: {}'.format(self._network.controller.python_library_version))
        self.logger.info('zwave: use ZWave library: {}'.format(self._network.controller.library_description))
        while 1:
            if self.alive and self._network.state < self._network.STATE_READY:
                self.logger.debug('zwave: wait until network is ready... current state is: {}'.format(self._network.state_str))
                time.sleep(3.0)
                if self._network.state == self._network.STATE_FAILED:
                    self.alive = false
                    return

        self.logger.info('zwave: controller ready : {} nodes were found.'.format(self._network.nodes_count))
        self.logger.info('zwave: controller node id : {}'.format(self._network.controller.node.node_id))
        self.logger.info('zwave: controller node version : {}'.format(self._network.controller.node.version))
        self.logger.info('zwave: Network home id : {}'.format(self._network.home_id_str))
        self.logger.info('zwave: Nodes in network : {}'.format(self._network.nodes_count))
Пример #2
0
    def run(self):
        """
        Run method for the plugin
        """
        self.logger.debug('run method called')
        self.alive = True

        try:
            options = ZWaveOption(self._device,
                                  config_path=self._config_path,
                                  user_path='./var/ozw',
                                  cmd_line='')
        except Exception as e:
            self.logger.error('error on create ZWaveOption - {}'.format(e))
            self.alive = False
            return

        try:
            options.set_log_file(self._logfile)
            options.set_save_log_level(self._loglevel)
            options.set_logging(self._logging)
            options.set_append_log_file(False)
            options.set_console_output(False)
            options.set_security_strategy(self._sec_strategy)
            options.lock()
        except Exception as e:
            self.logger.error('error on option.set_* - {}'.format(e))

        self.logger.debug('run -> create network')
        try:
            self._network = ZWaveNetwork(options, autostart=False)
        except Exception as e:
            self.logger.error('error on create Network Object - {}'.format(e))

        self.logger.debug('run -> connect event handler')
        try:
            dispatcher.connect(self.zwave_value_update,
                               ZWaveNetwork.SIGNAL_VALUE_CHANGED)
        except Exception as e:
            self.logger.error('error on connect event handler - {}'.format(e))

        self.logger.debug('run -> start network')
        try:
            self._network.start()
        except Exception as e:
            self.alive = False
            self.logger.error('error on start network - {}'.format(e))

        self.logger.info('use openzwave library: {}'.format(
            self._network.controller.ozw_library_version))
        self.logger.info('use python library: {}'.format(
            self._network.controller.python_library_version))
        self.logger.info('use ZWave library: {}'.format(
            self._network.controller.library_description))

        while self.alive:

            if self._network.state != self._network.STATE_READY:

                self.logger.debug(
                    'wait until network is ready... current state is: {}'.
                    format(self._network.state_str))
                if self._network.state == self._network.STATE_FAILED:
                    self.alive = False
                    return

            # Dump network information on STATE_READY
            if self._network.state == self._network.STATE_READY and self._ready is False:
                self.logger.info(
                    'controller ready : {} nodes were found.'.format(
                        self._network.nodes_count))
                self.logger.info('controller node id : {}'.format(
                    self._network.controller.node.node_id))
                self.logger.info('controller node version : {}'.format(
                    self._network.controller.node.version))
                self.logger.info('Network home id : {}'.format(
                    self._network.home_id_str))
                self.logger.info('Nodes in network : {}'.format(
                    self._network.nodes_count))

                self.logger.info("zwave: Start refresh values")
                for __id in self.listenOn:
                    __val = self._network.get_value(__id)
                    self.logger.info("zwave: id : '{}', val: '{}'".format(
                        __id, __val))
                    for __item in self.listenOn[__id][ITEMS]:
                        __item(__val.data, 'ZWave')

                self._ready = True

            time.sleep(3.0)