class SensorCube(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'cube', 'action')
        self.switch.add_level('Off', None)
        self.switch.add_level('Flip 90', 'flip90')
        self.switch.add_level('Flip 180', 'flip180')
        self.switch.add_level('Tap', 'tap')
        self.switch.add_level('Shake', 'shake')
        self.switch.add_level('Fall', 'fall')
        self.switch.add_level('Slide', 'slide')
        self.switch.add_level('Rotate Left', 'rotate_left')
        self.switch.add_level('Rotate Right', 'rotate_right')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_MENU)
        self.devices.append(self.switch)
        
        self.devices.append(CustomSensor(devices, 'angle', 'angle', ' (Rotation Angle)'))
        self.devices.append(CustomSensor(devices, 'side', 'side', ' (Side)'))
        
    def convert_message(self, message):
        message = super().convert_message(message)
	
        if 'to_side' in message.raw:
            message.raw['side'] = message.raw['to_side']

        return message


    def handle_command(self, alias, device, command, level, color):
        device_data = self._get_legacy_device_data()
        self.switch.handle_command(device_data, command, level, color)
Esempio n. 2
0
class TradfriRemoteSwitchOnOff(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'switch', 'click')
        self.switch.add_level('Off', 'off')
        self.switch.add_level('On', 'on')
        self.switch.add_level('Up', 'brightness_up')
        self.switch.add_level('Down', 'brightness_down')
        self.switch.add_level('Stop', 'brightness_stop')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_BUTTONS)
        self.switch.disable_value_check_on_update()


        self.devices.append(self.switch)

    def handleMqttMessage(self, device_data, message):
        if 'click' not in message.raw:
            return
        converted_message = self.convert_message(message)
        click = message.raw['click']
        if click == '':
            return
        else:
            for device in self.devices:
                device.handle_message(device_data, converted_message)

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
Esempio n. 3
0
class WXKG11LM(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'switch', 'state')
        self.switch.add_level('Off', None)
        self.switch.add_level('Click', 'single')
        self.switch.add_level('Double Click', 'double')
        self.switch.add_level('Triple Click', 'triple')
        self.switch.add_level('Quadruple Click', 'quadruple')
        self.switch.add_level('Long Click', 'hold')
        self.switch.add_level('Long Click Release', 'release')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_MENU)
        self.switch.disable_value_check_on_update()

        self.devices.append(self.switch)

    def convert_message(self, message):
        message = super().convert_message(message)

        if 'click' in message.raw:
            message.raw['state'] = message.raw['click']
        elif 'action' in message.raw:
            message.raw['state'] = message.raw['action']

        return message

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
class DJT11LM(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'action', 'action')
        self.switch.add_level('Off', None)
        self.switch.add_level('Vibration', 'vibration')
        self.switch.add_level('Drop', 'drop')
        self.switch.add_level('Tilt', 'tilt')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_MENU)

        self.devices.append(self.switch)
        self.devices.append(
            CustomSensor(devices, 'stgth', 'strength', ' (Strength)'))
        self.devices.append(
            JSONSensor(devices, 'angle', 'angle_raw', ' (Angle)'))

    def handle_command(self, alias, device, command, level, color):
        device_data = self._get_legacy_device_data()
        self.switch.handle_command(device_data, command, level, color)

    def convert_message(self, message):
        message = super().convert_message(message)

        message.raw['angle_raw'] = {
            'angle': message.raw['angle'],
            'angle_x': message.raw['angle_x'],
            'angle_y': message.raw['angle_y'],
            'angle_z': message.raw['angle_z'],
            'angle_x_absolute': message.raw['angle_x_absolute'],
            'angle_y_absolute': message.raw['angle_y_absolute'],
        }

        return message
Esempio n. 5
0
class KEF1PA(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'KEF1PA', 'action')
        self.switch.add_level('Off', None)
        self.switch.add_level('Panic', 'panic')
        self.switch.add_level('Home', 'home')
        self.switch.add_level('Away', 'away')
        self.switch.add_level('Sleep', 'sleep')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_MENU)
        self.devices.append(self.switch)

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
Esempio n. 6
0
class WXKG02LM(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'switch', 'click')
        self.switch.add_level('Off', None)
        self.switch.add_level('Switch 1', 'left')
        self.switch.add_level('Switch 2', 'right')
        self.switch.add_level('Both_Click', 'both')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_BUTTONS)

        self.devices.append(self.switch)

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
class SensorVibration(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'action', 'action')
        self.switch.add_level('Off', None)
        self.switch.add_level('Vibration', 'vibration')
        self.switch.add_level('Drop', 'drop')
        self.switch.add_level('Tilt', 'tilt')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_MENU)

        self.devices.append(self.switch)

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
class TradfriRemoteSwitchOnOff(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'switch', 'click')
        self.switch.add_level('Off', 'off')
        self.switch.add_level('On', 'on')
        self.switch.add_level('Up', 'brightness_up')
        self.switch.add_level('Down', 'brightness_down')
        self.switch.add_level('Stop', 'brightness_stop')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_BUTTONS)

        self.devices.append(self.switch)

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
class SNZB01(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'switch', 'action')
        self.switch.add_level('Off', None)
        self.switch.add_level('Click', 'single')
        self.switch.add_level('Double Click', 'double')
        self.switch.add_level('Long Press', 'long')

        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_BUTTONS)
        self.switch.disable_value_check_on_update()

        self.devices.append(self.switch)

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
Esempio n. 10
0
class GiraLightLink(Adapter):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'switch', 'action')
        self.switch.add_level('Off', 'off')
        self.switch.add_level('On', 'on')
        self.switch.add_level('1', 'select_0')
        self.switch.add_level('2', 'select_1')
        self.switch.add_level('3', 'select_2')
        self.switch.add_level('4', 'select_3')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_MENU)
        self.switch.disable_value_check_on_update()

        self.devices.append(self.switch)

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
Esempio n. 11
0
class HeimanAlarmRemoteAdapter(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'Remote', 'action')
        self.switch.add_level('Off', None)
        self.switch.add_level('Arm all zones', 'arm_all_zones')
        self.switch.add_level('Arm partial zones', 'arm_partial_zones')
        self.switch.add_level('Disarm', 'disarm')
        self.switch.add_level('Emergency', 'emergency')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_MENU)
        self.devices.append(self.switch)

    def convert_message(self, message):
        message = super().convert_message(message)
        return message

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
class WXKG01LM(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'switch', 'click')
        self.switch.add_level('Off', None)
        self.switch.add_level('Click', 'single')
        self.switch.add_level('Double Click', 'double')
        self.switch.add_level('Triple Click', 'triple')
        self.switch.add_level('Quadruple Click', 'quadruple')
        self.switch.add_level('Many clicks', 'many')
        self.switch.add_level('Long Click', 'long')
        self.switch.add_level('Long Click Release', 'long_release')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_MENU)

        self.devices.append(self.switch)

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
class TradfriRemoteCloseOpen(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'switch', 'click')
        self.switch.add_level('Up', 'open')
        self.switch.add_level('Down', 'close')
        self.switch.add_level('Release', 'release')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_BUTTONS)
        self.switch.disable_value_check_on_update()

        self.devices.append(self.switch)

    def handleCommand(self, alias, device, device_data, command, level, color):
        Domoticz.Debug(str(command) + str(level) + str(color))
        self.switch.handle_command(device_data, command, level, color)

        return {
            'topic': device_data['friendly_name'] + '/set',
            'payload': json.dumps({"state": command.upper()})
        }
Esempio n. 14
0
class TradfriRollerBlind(Adapter):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'switch', 'click')
        self.switch.add_level('Up', 'open')
        self.switch.add_level('Down', 'close')

        self.devices.append(self.switch)

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)

        if (command.upper() == "ON"):
            command = "close"
        else:
            command = "open"

        return {
            'topic': device_data['friendly_name'] + '/set',
            'payload': json.dumps({"state": command.upper()})
        }
Esempio n. 15
0
class SmartMiniSwitch(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = SelectorSwitch(devices, 'switch', 'action')
        self.switch.add_level('Off', None)
        self.switch.add_level('Up', 'up')
        self.switch.add_level('Up: hold', 'up_hold')
        self.switch.add_level('Up: release', 'up_release')
        self.switch.add_level('Circle: click', 'circle_click')
        self.switch.add_level('Circle: hold', 'circle_hold')
        self.switch.add_level('Circle: release', 'circle_release')
        self.switch.add_level('Down', 'down')
        self.switch.add_level('Down: hold', 'down_hold')
        self.switch.add_level('Down: release', 'down_release')
        self.switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_MENU)
        self.switch.disable_value_check_on_update()

        self.devices.append(self.switch)

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switch.handle_command(device_data, command, level, color)
class WXKG07LM(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switchLeft = SelectorSwitch(devices, 'btn', 'action',
                                         ' (Left Click)')
        self.switchLeft.add_level("Off", None)
        self.switchLeft.add_level('Click', 'left')
        self.switchLeft.add_level('Long click', 'left_long')
        self.switchLeft.add_level('Double click', 'left_double')
        self.switchLeft.disable_value_check_on_update()
        self.switchRight = SelectorSwitch(devices, 'btn_1', 'action',
                                          ' (Right Button)')
        self.switchRight.add_level("Off", None)
        self.switchRight.add_level('Click', 'right')
        self.switchRight.add_level('Long click', 'right_long')
        self.switchRight.add_level('Double click', 'right_double')
        self.switchRight.set_selector_style(
            SelectorSwitch.SELECTOR_TYPE_BUTTONS)
        self.switchRight.disable_value_check_on_update()
        self.switchBoth = SelectorSwitch(devices, 'btn_2', 'action',
                                         ' (Both Buttons)')
        self.switchBoth.add_level("Off", None)
        self.switchBoth.add_level('Click', 'both')
        self.switchBoth.add_level('Long Click', 'both_long')
        self.switchBoth.add_level('Double Click', 'both_double')
        self.switchBoth.set_selector_style(
            SelectorSwitch.SELECTOR_TYPE_BUTTONS)
        self.switchBoth.disable_value_check_on_update()

        self.devices.append(self.switchLeft)
        self.devices.append(self.switchRight)
        self.devices.append(self.switchBoth)

    def convert_message(self, message):
        message = super().convert_message(message)

        if 'click' in message.raw:
            message.raw['state'] = message.raw['click']
        elif 'action' in message.raw:
            message.raw['state'] = message.raw['action']

        return message

    def handleCommand(self, alias, device, device_data, command, level, color):
        self.switchLeft.handle_command(device_data, command, level, color)
        self.switchRight.handle_command(device_data, command, level, color)
        self.switchBoth.handle_command(device_data, command, level, color)
Esempio n. 17
0
class TradfriRemoteControl(AdapterWithBattery):
    def __init__(self, devices):
        super().__init__(devices)

        self.switch = ToggleSwitch(devices, 'switch', 'action')

        self.arrow_left = SelectorSwitch(devices, 'arrowL', 'action',
                                         ' (Left Arrow)')
        self.arrow_left.add_level('Off', None)
        self.arrow_left.add_level('Click', 'arrow_left_click')
        self.arrow_left.add_level('Hold', 'arrow_left_hold')
        self.arrow_left.add_level('Release', 'arrow_left_release')
        self.arrow_left.set_selector_style(
            SelectorSwitch.SELECTOR_TYPE_BUTTONS)

        self.arrow_right = SelectorSwitch(devices, 'arrowR', 'action',
                                          ' (Right Arrow)')
        self.arrow_right.add_level('Off', None)
        self.arrow_right.add_level('Click', 'arrow_right_click')
        self.arrow_right.add_level('Hold', 'arrow_right_hold')
        self.arrow_right.add_level('Release', 'arrow_right_release')
        self.arrow_right.set_selector_style(
            SelectorSwitch.SELECTOR_TYPE_BUTTONS)

        self.brightness_up = SelectorSwitch(devices, 'brUp', 'action',
                                            ' (Brightness Up)')
        self.brightness_up.add_level('Off', None)
        self.brightness_up.add_level('Click', 'brightness_up_click')
        self.brightness_up.add_level('Hold', 'brightness_up_hold')
        self.brightness_up.add_level('Release', 'brightness_up_release')
        self.brightness_up.set_selector_style(
            SelectorSwitch.SELECTOR_TYPE_BUTTONS)

        self.brightness_down = SelectorSwitch(devices, 'brDown', 'action',
                                              ' (Brightness Down)')
        self.brightness_down.add_level('Off', None)
        self.brightness_down.add_level('Click', 'brightness_down_click')
        self.brightness_down.add_level('Hold', 'brightness_down_hold')
        self.brightness_down.add_level('Release', 'brightness_down_release')
        self.brightness_down.set_selector_style(
            SelectorSwitch.SELECTOR_TYPE_BUTTONS)

        self.devices.append(self.switch)
        self.devices.append(self.arrow_left)
        self.devices.append(self.arrow_right)
        self.devices.append(self.brightness_up)
        self.devices.append(self.brightness_down)

    def handleCommand(self, alias, device, device_data, command, level, color):
        if alias == self.switch.alias:
            self.switch.handle_command(device_data, command, level, color)

        if alias == self.arrow_left.alias:
            self.arrow_left.handle_command(device_data, command, level, color)

        if alias == self.arrow_right.alias:
            self.arrow_right.handle_command(device_data, command, level, color)

        if alias == self.brightness_up.alias:
            self.brightness_up.handle_command(device_data, command, level,
                                              color)

        if alias == self.brightness_down.alias:
            self.brightness_down.handle_command(device_data, command, level,
                                                color)

    def handleMqttMessage(self, device_data, message):
        if 'action' not in message.raw:
            return

        converted_message = self.convert_message(message)
        action = message.raw['action']

        if action == 'toggle':
            self.switch.handle_message(device_data, converted_message)

        if action.startswith('brightness_up'):
            self.brightness_up.handle_message(device_data, converted_message)

        if action.startswith('brightness_down'):
            self.brightness_down.handle_message(device_data, converted_message)

        if action.startswith('arrow_right'):
            self.arrow_right.handle_message(device_data, converted_message)

        if action.startswith('arrow_left'):
            self.arrow_left.handle_message(device_data, converted_message)