Exemple #1
0
    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
Exemple #5
0
    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
Exemple #7
0
    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')