def _set_hardware_value(self, state): cmd = f'{self.address} {state}' try: terrariumUtils.get_script_data(cmd) except subprocess.CalledProcessError as ex: # Device does not exists.... return None return True
def _get_data(self): data = {} try: data[self.sensor_type] = float( terrariumUtils.get_script_data( self.address).decode('utf-8').strip()) except Exception: return None return data
def _get_hardware_value(self): cmd = f'{self.device} -n -g {self._address[0]}' data = terrariumUtils.get_script_data(cmd) if data is None: return None data = data.decode('utf-8').strip() relay_data = self.__STATUS_REGEX.search(data) if relay_data is not None and int(relay_data.group('relay_nr')) == int( self._address[0]): return self.ON if terrariumUtils.is_true( relay_data.group('status')) else self.OFF return None
def _set_hardware_value(self, state): action = ('-o' if state == self.ON else '-f') cmd = f'{self.device} -n {action} {self._address[0]}' data = terrariumUtils.get_script_data(cmd) if data is None: return False data = data.decode('utf-8').strip() relay_data = self.__STATUS_REGEX.search(data) if relay_data is not None and int(relay_data.group('relay_nr')) == int( self._address[0]): return state == (self.ON if terrariumUtils.is_true( relay_data.group('status')) else self.OFF) return False
def _get_hardware_value(self): try: data = float( terrariumUtils.get_script_data( self.address).decode('utf-8').strip()) # When the return value is -1, it means that there is not readout possible. So return the current state from memory if -1.0 == data: data = self.state except subprocess.CalledProcessError as ex: # Device does not exists.... return None return data
def _scan_relays(callback=None, **kwargs): cmd = f'{terrariumRelayEnergenieUSB.__CMD} -s' data = [] try: data = terrariumUtils.get_script_data(cmd).decode( 'utf-8').strip().split('\n') except subprocess.CalledProcessError as ex: logger.info('No Energenie USB relays connected') return False except FileNotFoundError as ex: raise terrariumRelayLoadingException( 'Please install tool \'sispmctl\'. Can\'t controll EnergenieUSB relays without it.' ) amount_sockets = 1 serial = None device_nr = 0 for line in data: line = terrariumRelayEnergenieUSB.__SCAN_REGEX.search(line) if line is None: continue if 'device type' == line.group('option').strip().lower(): # By default 1 socket (at least) amount_sockets = 1 if 'socket' in line.group('value').strip().lower(): amount_sockets = int(line.group('value').strip()[0]) elif 'serial number' == line.group('option').strip().lower(): serial = line.group('value').strip() if serial is not None: # Add the relays device_nr += 1 for x in range(amount_sockets): yield terrariumRelay( None, terrariumRelayEnergenieUSB.HARDWARE, f'{x+1},{serial}', f'{terrariumRelayEnergenieUSB.NAME} device nr: {device_nr}({serial}), Socket: {x+1}', callback=callback) # Reset for new device serial = None
def load_data(self): data = terrariumUtils.get_script_data(self.get_address()) if data is None: return None return {self.get_sensor_type(): data}
def __shutdown(self): terrariumUtils.get_script_data('sudo shutdown')
def __reboot(self): terrariumUtils.get_script_data('sudo reboot')