Source code for aiohap.services

from . import characteristics
from .model import Service


class AccessoryInformation(Service):
    uuid = '3e'
    identify = characteristics.Identify
    manufacturer = characteristics.Manufacturer
    model = characteristics.Model
    name = characteristics.Name
    serial_number = characteristics.SerialNumber
    firmware_revision = characteristics.FirmwareRevision

    optional = ('hardware_revision', 'accessory_flags')
    hardware_revision = characteristics.HardwareRevision
    accessory_flags = characteristics.AccessoryFlags


class Fan(Service):
    uuid = '40'
    name = characteristics.Name
    on = characteristics.On

    optional = ('speed', 'direction')
    speed = characteristics.RotationSpeed
    direction = characteristics.RotationDirection


class Lightbulb(Service):
    uuid = '43'
    on = characteristics.On

    optional = ('name', 'brightness', 'hue', 'saturation', 'color_temperature')
    name = characteristics.Name
    brightness = characteristics.Brightness
    hue = characteristics.Hue
    saturation = characteristics.Saturation
    color_temperature = characteristics.ColorTemperature


class LockMechanism(Service):
    uuid = '45'
    current_state = characteristics.LockCurrentState
    target_state = characteristics.LockTargetState

    optional = ('name')
    name = characteristics.Name


class Outlet(Service):
    uuid = '47'
    on = characteristics.On
    in_use = characteristics.OutletInUse

    optional = ('name')
    name = characteristics.Name


class TemperatureSensor(Service):
    uuid = '8A'
    current_temperature = characteristics.CurrentTemperature

    optional = ('name', 'status_active', 'status_fault', 'status_low_battery', 'status_tampered')
    name = characteristics.Name
    status_active = characteristics.StatusActive
    status_fault = characteristics.StatusFault
    status_low_battery = characteristics.StatusLowBattery
    status_tampered = characteristics.StatusTampered


class HumiditySensor(Service):
    uuid = '82'
    current_humidity = characteristics.CurrentRelativeHumidity

    optional = ('name', 'status_active', 'status_fault', 'status_low_battery', 'status_tampered')
    name = characteristics.Name
    status_active = characteristics.StatusActive
    status_fault = characteristics.StatusFault
    status_low_battery = characteristics.StatusLowBattery
    status_tampered = characteristics.StatusTampered


class WindowCovering(Service):
    uuid = '8C'
    target_position = characteristics.TargetPosition
    current_position = characteristics.CurrentPosition
    position_state = characteristics.PositionState

    optional = ('name', 'hold_position', 'current_horizontal_tilt_angle',
                'target_horizontal_tilt_angle', 'current_vertical_tilt_angle',
                'target_vertical_tilt_angle', 'obstruction_detected')
    name = characteristics.Name
    hold_position = characteristics.HoldPosition
    current_horizontal_tilt_angle = characteristics.CurrentHorizontalTiltAngle
    target_horizontal_tilt_angle = characteristics.TargetHorizontalTiltAngle
    current_vertical_tilt_angle = characteristics.CurrentVerticalTiltAngle
    target_vertical_tilt_angle = characteristics.TargetVerticalTiltAngle
    obstruction_detected = characteristics.ObstructionDetected


class Switch(Service):
    uuid = '49'
    on = characteristics.On

    optional = ('name', )
    name = characteristics.Name


class Thermostat(Service):
    uuid = '4A'
    current_state = characteristics.CurrentHeatingCoolingState
    target_state = characteristics.TargetHeatingCoolingState
    current_temperature = characteristics.CurrentTemperature
    target_temperature = characteristics.TargetTemperature
    temperature_units = characteristics.TemperatureDisplayUnits

    optional = ('cooling_threshold', 'heating_threshold', 'current_humidity', 'target_humidity',
                'name')
    cooling_threshold = characteristics.CoolingThresholdTemperature
    heating_threshold = characteristics.HeatingThresholdTemperature
    current_humidity = characteristics.CurrentRelativeHumidity
    target_humidity = characteristics.TargetRelativeHumidity
    name = characteristics.Name