ctucx.git: nimtradfri

[nimlang] incomplete library to interact with ikea tradfri-gateways

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
76 
77 
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 
88 
89 
90 
91 
92 
93 
94 
95 
96 
97 
98 
99 
100 
101 
102 
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