summaryrefslogtreecommitdiffstats
path: root/types.nim
blob: 92dd46493a4e63ed8de273c8de5e6c302b5bff60 (plain) (blame)
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
103
104
105
106
import options

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
    LightSetPowerState, LightSetBrightness, LightSetColorHex, LightSetColorXY, LightSetHueSaturation, LightSetColorTemperature, PlugSetPowerState, PlugSetDimmerValue
    

  TradfriGatewayRef* = object 
    host*:            string
    port*:            int
    user*:            string
    pass*:            string

  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

    of motionSensor:
      motionSensorSupported*:      bool
     
    of signalRepeater:
      signalRepeaterSupported*:    bool

    of Blind:
      blindPosition*:              float
      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 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