import options import gatewayTypes type TradfriDeviceType* = enum Remote, slaveRemote, Lightbulb, Plug, motionSensor, signalRepeater, Blind, soundRemote TradfriPowerSource* = enum Unknown, internalBattery, externalBattery, Battery, POE, USB, AC, Solar TradfriLightSpectrum* = enum RGB, White, None TradfriDeviceActionType* = enum DeviceRename, LightSetPowerState, LightSetBrightness, LightSetColorHex, LightSetColorXY, LightSetHueSaturation, LightSetColorTemperature, PlugSetPowerState, PlugSetDimmerValue TradfriDeviceInfo* = object manufacturer*: string modelNumber*: string serialNumber*: string firmwareVersion*: string power*: TradfriPowersource battery*: int TradfriDeviceState* = object case kind*: TradfriDeviceType of Remote: remoteSupported*: bool of slaveRemote: slaveRemoteSupported*: bool of Lightbulb: lightPowered*: bool lightSpectrum*: TradfriLightSpectrum lightHue*: Option[int] lightSaturation*: Option[int] lightColorHex*: Option[string] lightColorX*: Option[float] lightColorY*: Option[float] lightColorTemperature*: Option[int] lightBrightness*: int of Plug: plugPowered*: bool plugDimmer*: int # 1 - 254 (but currently no dimmable plugs available) of motionSensor: motionSensorSupported*: bool of signalRepeater: signalRepeaterSupported*: bool of Blind: blindPosition*: float # 0 - 100 blindTrigger*: float # ? of soundRemote: soundRemoteSupported*: bool TradfriDevice* = object gatewayRef*: TradfriGatewayRef `type`*: TradfriDeviceType id*: int name*: string alive*: bool createdAt*: int lastSeen*: int info*: TradfriDeviceInfo state*: TradfriDeviceState TradfriDeviceAction* = object transitionTime*: int case kind*: TradfriDeviceActionType of DeviceRename: deviceName*: string of LightSetPowerState: lightPowerState*: bool of LightSetBrightness: lightBrightness*: int of LightSetColorHex: lightColorHex*: string of LightSetColorXY: lightColorX*: float lightColorY*: float of LightSetHueSaturation: lightHue*: int lightSaturation*: int of LightSetColorTemperature: lightColorTemperature*: int of PlugSetPowerState: plugPowerState*: bool of PlugSetDimmerValue: plugDimmerValue*: int