@switchbot/homebridge-switchbot 1.6.4-beta.5 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,12 +2,16 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/)
4
4
 
5
- ## [Beta - Version 1.7.0](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v1.7.0) (2022-01-XX)
5
+ ## [Version 1.7.0](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v1.7.0) (2022-01-05)
6
6
 
7
7
  ## What's Changed
8
- * Added option to display Bot a Garage Door Opener. [#179](https://github.com/OpenWonderLabs/homebridge-switchbot/issues/179)
8
+ * Added option to display Bot a Fan.
9
9
  * Added option to display Bot a Door. [#179](https://github.com/OpenWonderLabs/homebridge-switchbot/issues/179)
10
10
  * Added option to display Bot a Lock. [#179](https://github.com/OpenWonderLabs/homebridge-switchbot/issues/179)
11
+ * Added option to display Bot a Faucet.
12
+ * Added option to display Bot a Window.
13
+ * Added option to display Bot a WindowCovering.
14
+ * Added option to display Bot a Garage Door Opener. [#179](https://github.com/OpenWonderLabs/homebridge-switchbot/issues/179)
11
15
 
12
16
  **Full Changelog**: https://github.com/OpenWonderLabs/homebridge-switchbot/compare/v1.6.3...v1.7.0
13
17
 
@@ -200,6 +200,30 @@
200
200
  "lock"
201
201
  ]
202
202
  },
203
+ {
204
+ "title": "Faucet",
205
+ "enum": [
206
+ "faucet"
207
+ ]
208
+ },
209
+ {
210
+ "title": "Fan",
211
+ "enum": [
212
+ "fan"
213
+ ]
214
+ },
215
+ {
216
+ "title": "Window",
217
+ "enum": [
218
+ "window"
219
+ ]
220
+ },
221
+ {
222
+ "title": "Window Covering",
223
+ "enum": [
224
+ "windowcovering"
225
+ ]
226
+ },
203
227
  {
204
228
  "title": "Switch",
205
229
  "enum": [
@@ -11,12 +11,16 @@ export declare class Bot {
11
11
  private readonly platform;
12
12
  private accessory;
13
13
  device: device & devicesConfig;
14
- private switchService?;
14
+ private fanService?;
15
15
  private doorService?;
16
16
  private lockService?;
17
- private garageDoorService?;
17
+ private faucetService?;
18
+ private windowService?;
19
+ private switchService?;
18
20
  private outletService?;
19
21
  private batteryService?;
22
+ private garageDoorService?;
23
+ private windowCoveringService?;
20
24
  On: CharacteristicValue;
21
25
  OnCached: CharacteristicValue;
22
26
  BatteryLevel: CharacteristicValue;
@@ -36,11 +40,15 @@ export declare class Bot {
36
40
  botUpdateInProgress: boolean;
37
41
  doBotUpdate: Subject<void>;
38
42
  constructor(platform: SwitchBotPlatform, accessory: PlatformAccessory, device: device & devicesConfig);
39
- private removeOutletService;
40
- private removeGarageDoorService;
41
- private removeDoorService;
42
- private removeLockService;
43
- private removeSwitchService;
43
+ removeOutletService(accessory: PlatformAccessory): void;
44
+ removeGarageDoorService(accessory: PlatformAccessory): void;
45
+ removeDoorService(accessory: PlatformAccessory): void;
46
+ removeLockService(accessory: PlatformAccessory): void;
47
+ removeFaucetService(accessory: PlatformAccessory): void;
48
+ removeFanService(accessory: PlatformAccessory): void;
49
+ removeWindowService(accessory: PlatformAccessory): void;
50
+ removeWindowCoveringService(accessory: PlatformAccessory): void;
51
+ removeSwitchService(accessory: PlatformAccessory): void;
44
52
  refreshRate(): void;
45
53
  scan(): void;
46
54
  logs(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"bots.d.ts","sourceRoot":"","sources":["../../src/devices/bots.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,OAAO,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAa,MAAM,EAAE,aAAa,EAAE,WAAW,EAAM,SAAS,EAAE,oBAAoB,EAAW,MAAM,aAAa,CAAC;AAE1H;;;;GAIG;AACH,qBAAa,GAAG;IAyCZ,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,SAAS;IACV,MAAM,EAAE,MAAM,GAAG,aAAa;IAzCvC,OAAO,CAAC,aAAa,CAAC,CAAU;IAChC,OAAO,CAAC,WAAW,CAAC,CAAU;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAU;IAC9B,OAAO,CAAC,iBAAiB,CAAC,CAAU;IACpC,OAAO,CAAC,aAAa,CAAC,CAAU;IAChC,OAAO,CAAC,cAAc,CAAC,CAAU;IAIjC,EAAE,EAAG,mBAAmB,CAAC;IACzB,QAAQ,EAAG,mBAAmB,CAAC;IAC/B,YAAY,EAAG,mBAAmB,CAAC;IACnC,gBAAgB,EAAG,mBAAmB,CAAC;IAGvC,YAAY,EAAG,oBAAoB,CAAC;IAGpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,EAAG,SAAS,CAAC;IACtB,WAAW,EAAG,WAAW,CAAC;IAC1B,IAAI,EAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,KAAK,EAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,EAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAGjC,OAAO,EAAG,MAAM,CAAC;IACjB,YAAY,EAAG,MAAM,CAAC;IACtB,aAAa,EAAG,MAAM,CAAC;IACvB,iBAAiB,EAAG,MAAM,CAAC;IAG3B,WAAW,EAAG,MAAM,CAAC;IAGrB,mBAAmB,EAAG,OAAO,CAAC;IAC9B,WAAW,EAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAGT,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC7B,MAAM,EAAE,MAAM,GAAG,aAAa;IA4KvC,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,mBAAmB;IAS3B,WAAW;IAcX,IAAI;IAcJ,IAAI;IAmBJ,aAAa;IAgBb;;OAEG;IACG,WAAW;YAQH,cAAc;YA6Bd,kBAAkB;IAsBhC;;OAEG;IACG,aAAa;IAQN,UAAU;YAwBT,gBAAgB;YAgEhB,oBAAoB;IAuBlC;;;;;;OAMG;IACG,WAAW;YAcH,cAAc;IAiF5B,OAAO,CAAC,SAAS;YAQH,kBAAkB;IAmDhC;;OAEG;IACH,4BAA4B;IAyFrB,QAAQ,CAAC,CAAC,EAAE,GAAG;IAwBtB,OAAO,CAAC,UAAU;IA+BlB,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;KAEC;IACD,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE;IAMrB,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE;IAMrB,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE;IAMtB,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE;IAUtB,qBAAqB,IAAI,OAAO;CAGjC"}
1
+ {"version":3,"file":"bots.d.ts","sourceRoot":"","sources":["../../src/devices/bots.ts"],"names":[],"mappings":"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"}
@@ -52,10 +52,14 @@ class Bot {
52
52
  // get the LightBulb service if it exists, otherwise create a new LightBulb service
53
53
  // you can create multiple services for each accessory
54
54
  if (device.bot?.deviceType === 'switch') {
55
+ this.removeFanService(accessory);
55
56
  this.removeLockService(accessory);
56
57
  this.removeDoorService(accessory);
58
+ this.removeFaucetService(accessory);
57
59
  this.removeOutletService(accessory);
60
+ this.removeWindowService(accessory);
58
61
  this.removeGarageDoorService(accessory);
62
+ this.removeWindowCoveringService(accessory);
59
63
  // Add switchService
60
64
  (this.switchService =
61
65
  accessory.getService(this.platform.Service.Switch) ||
@@ -65,10 +69,14 @@ class Bot {
65
69
  this.switchService.getCharacteristic(this.platform.Characteristic.On).onSet(this.handleOnSet.bind(this));
66
70
  }
67
71
  else if (device.bot?.deviceType === 'garagedoor') {
72
+ this.removeFanService(accessory);
68
73
  this.removeLockService(accessory);
69
74
  this.removeDoorService(accessory);
75
+ this.removeFaucetService(accessory);
70
76
  this.removeOutletService(accessory);
71
77
  this.removeSwitchService(accessory);
78
+ this.removeWindowService(accessory);
79
+ this.removeWindowCoveringService(accessory);
72
80
  // Add switchService
73
81
  (this.garageDoorService =
74
82
  accessory.getService(this.platform.Service.GarageDoorOpener) ||
@@ -79,10 +87,14 @@ class Bot {
79
87
  this.garageDoorService.setCharacteristic(this.platform.Characteristic.ObstructionDetected, false);
80
88
  }
81
89
  else if (device.bot?.deviceType === 'door') {
90
+ this.removeFanService(accessory);
82
91
  this.removeLockService(accessory);
83
92
  this.removeOutletService(accessory);
93
+ this.removeFaucetService(accessory);
84
94
  this.removeSwitchService(accessory);
95
+ this.removeWindowService(accessory);
85
96
  this.removeGarageDoorService(accessory);
97
+ this.removeWindowCoveringService(accessory);
86
98
  // Add switchService
87
99
  (this.doorService =
88
100
  accessory.getService(this.platform.Service.Door) ||
@@ -98,11 +110,63 @@ class Bot {
98
110
  }).onSet(this.handleOnSet.bind(this));
99
111
  this.doorService.setCharacteristic(this.platform.Characteristic.PositionState, this.platform.Characteristic.PositionState.STOPPED);
100
112
  }
113
+ else if (device.bot?.deviceType === 'window') {
114
+ this.removeFanService(accessory);
115
+ this.removeLockService(accessory);
116
+ this.removeDoorService(accessory);
117
+ this.removeOutletService(accessory);
118
+ this.removeFaucetService(accessory);
119
+ this.removeSwitchService(accessory);
120
+ this.removeGarageDoorService(accessory);
121
+ this.removeWindowCoveringService(accessory);
122
+ // Add switchService
123
+ (this.windowService =
124
+ accessory.getService(this.platform.Service.Window) ||
125
+ accessory.addService(this.platform.Service.Window)), `${accessory.displayName} Window`;
126
+ this.infoLog(`Bot: ${accessory.displayName} Displaying as Window`);
127
+ this.windowService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
128
+ this.windowService.getCharacteristic(this.platform.Characteristic.TargetPosition)
129
+ .setProps({
130
+ validValues: [0, 100],
131
+ minValue: 0,
132
+ maxValue: 100,
133
+ minStep: 100,
134
+ }).onSet(this.handleOnSet.bind(this));
135
+ this.windowService.setCharacteristic(this.platform.Characteristic.PositionState, this.platform.Characteristic.PositionState.STOPPED);
136
+ }
137
+ else if (device.bot?.deviceType === 'windowcovering') {
138
+ this.removeFanService(accessory);
139
+ this.removeLockService(accessory);
140
+ this.removeDoorService(accessory);
141
+ this.removeOutletService(accessory);
142
+ this.removeFaucetService(accessory);
143
+ this.removeSwitchService(accessory);
144
+ this.removeWindowService(accessory);
145
+ this.removeGarageDoorService(accessory);
146
+ // Add switchService
147
+ (this.windowCoveringService =
148
+ accessory.getService(this.platform.Service.WindowCovering) ||
149
+ accessory.addService(this.platform.Service.WindowCovering)), `${accessory.displayName} Window Covering`;
150
+ this.infoLog(`Bot: ${accessory.displayName} Displaying as Window Covering`);
151
+ this.windowCoveringService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
152
+ this.windowCoveringService.getCharacteristic(this.platform.Characteristic.TargetPosition)
153
+ .setProps({
154
+ validValues: [0, 100],
155
+ minValue: 0,
156
+ maxValue: 100,
157
+ minStep: 100,
158
+ }).onSet(this.handleOnSet.bind(this));
159
+ this.windowCoveringService.setCharacteristic(this.platform.Characteristic.PositionState, this.platform.Characteristic.PositionState.STOPPED);
160
+ }
101
161
  else if (device.bot?.deviceType === 'lock') {
162
+ this.removeFanService(accessory);
102
163
  this.removeDoorService(accessory);
103
164
  this.removeOutletService(accessory);
104
165
  this.removeSwitchService(accessory);
166
+ this.removeFaucetService(accessory);
167
+ this.removeWindowService(accessory);
105
168
  this.removeGarageDoorService(accessory);
169
+ this.removeWindowCoveringService(accessory);
106
170
  // Add switchService
107
171
  (this.lockService =
108
172
  accessory.getService(this.platform.Service.LockMechanism) ||
@@ -111,11 +175,49 @@ class Bot {
111
175
  this.lockService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
112
176
  this.lockService.getCharacteristic(this.platform.Characteristic.LockTargetState).onSet(this.handleOnSet.bind(this));
113
177
  }
178
+ else if (device.bot?.deviceType === 'faucet') {
179
+ this.removeFanService(accessory);
180
+ this.removeLockService(accessory);
181
+ this.removeDoorService(accessory);
182
+ this.removeOutletService(accessory);
183
+ this.removeSwitchService(accessory);
184
+ this.removeWindowService(accessory);
185
+ this.removeGarageDoorService(accessory);
186
+ this.removeWindowCoveringService(accessory);
187
+ // Add switchService
188
+ (this.faucetService =
189
+ accessory.getService(this.platform.Service.Faucet) ||
190
+ accessory.addService(this.platform.Service.Faucet)), `${accessory.displayName} Faucet`;
191
+ this.infoLog(`Bot: ${accessory.displayName} Displaying as Faucet`);
192
+ this.faucetService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
193
+ this.faucetService.getCharacteristic(this.platform.Characteristic.Active).onSet(this.handleOnSet.bind(this));
194
+ }
195
+ else if (device.bot?.deviceType === 'fan') {
196
+ this.removeLockService(accessory);
197
+ this.removeDoorService(accessory);
198
+ this.removeFaucetService(accessory);
199
+ this.removeOutletService(accessory);
200
+ this.removeSwitchService(accessory);
201
+ this.removeWindowService(accessory);
202
+ this.removeGarageDoorService(accessory);
203
+ this.removeWindowCoveringService(accessory);
204
+ // Add switchService
205
+ (this.fanService =
206
+ accessory.getService(this.platform.Service.Fan) ||
207
+ accessory.addService(this.platform.Service.Fan)), `${accessory.displayName} Fan`;
208
+ this.infoLog(`Bot: ${accessory.displayName} Displaying as Fan`);
209
+ this.fanService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
210
+ this.fanService.getCharacteristic(this.platform.Characteristic.On).onSet(this.handleOnSet.bind(this));
211
+ }
114
212
  else {
213
+ this.removeFanService(accessory);
115
214
  this.removeLockService(accessory);
116
215
  this.removeDoorService(accessory);
216
+ this.removeFaucetService(accessory);
117
217
  this.removeSwitchService(accessory);
218
+ this.removeWindowService(accessory);
118
219
  this.removeGarageDoorService(accessory);
220
+ this.removeWindowCoveringService(accessory);
119
221
  // Add outletService
120
222
  (this.outletService =
121
223
  accessory.getService(this.platform.Service.Outlet) ||
@@ -198,6 +300,38 @@ class Bot {
198
300
  }
199
301
  accessory.removeService(this.lockService);
200
302
  }
303
+ removeFaucetService(accessory) {
304
+ // If faucetService still pressent, then remove first
305
+ this.faucetService = this.accessory.getService(this.platform.Service.Faucet);
306
+ if (this.faucetService) {
307
+ this.warnLog(`Bot: ${accessory.displayName} Removing Leftover Faucet Service`);
308
+ }
309
+ accessory.removeService(this.faucetService);
310
+ }
311
+ removeFanService(accessory) {
312
+ // If fanService still pressent, then remove first
313
+ this.fanService = this.accessory.getService(this.platform.Service.Fan);
314
+ if (this.fanService) {
315
+ this.warnLog(`Bot: ${accessory.displayName} Removing Leftover Fan Service`);
316
+ }
317
+ accessory.removeService(this.fanService);
318
+ }
319
+ removeWindowService(accessory) {
320
+ // If windowService still pressent, then remove first
321
+ this.windowService = this.accessory.getService(this.platform.Service.Window);
322
+ if (this.windowService) {
323
+ this.warnLog(`Bot: ${accessory.displayName} Removing Leftover Window Service`);
324
+ }
325
+ accessory.removeService(this.windowService);
326
+ }
327
+ removeWindowCoveringService(accessory) {
328
+ // If windowCoveringService still pressent, then remove first
329
+ this.windowCoveringService = this.accessory.getService(this.platform.Service.WindowCovering);
330
+ if (this.windowCoveringService) {
331
+ this.warnLog(`Bot: ${accessory.displayName} Removing Leftover Window Covering Service`);
332
+ }
333
+ accessory.removeService(this.windowCoveringService);
334
+ }
201
335
  removeSwitchService(accessory) {
202
336
  // If switchService still pressent, then remove first
203
337
  this.switchService = this.accessory.getService(this.platform.Service.Switch);
@@ -662,6 +796,46 @@ class Bot {
662
796
  }
663
797
  this.debugLog(`Bot: ${this.accessory.displayName} Door On: ${this.On}`);
664
798
  }
799
+ else if (this.device.bot?.deviceType === 'window') {
800
+ if (this.On === undefined) {
801
+ this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
802
+ }
803
+ else {
804
+ if (this.On) {
805
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, 100);
806
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, 100);
807
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.PositionState, this.platform.Characteristic.PositionState.STOPPED);
808
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic TargetPosition: 100, CurrentPosition: 100`);
809
+ }
810
+ else {
811
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, 0);
812
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, 0);
813
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.PositionState, this.platform.Characteristic.PositionState.STOPPED);
814
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic TargetPosition: 0, CurrentPosition: 0`);
815
+ }
816
+ }
817
+ this.debugLog(`Bot: ${this.accessory.displayName} Window On: ${this.On}`);
818
+ }
819
+ else if (this.device.bot?.deviceType === 'windowcovering') {
820
+ if (this.On === undefined) {
821
+ this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
822
+ }
823
+ else {
824
+ if (this.On) {
825
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, 100);
826
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, 100);
827
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.PositionState, this.platform.Characteristic.PositionState.STOPPED);
828
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic TargetPosition: 100, CurrentPosition: 100`);
829
+ }
830
+ else {
831
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, 0);
832
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, 0);
833
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.PositionState, this.platform.Characteristic.PositionState.STOPPED);
834
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic TargetPosition: 0, CurrentPosition: 0`);
835
+ }
836
+ }
837
+ this.debugLog(`Bot: ${this.accessory.displayName} Window Covering On: ${this.On}`);
838
+ }
665
839
  else if (this.device.bot?.deviceType === 'lock') {
666
840
  if (this.On === undefined) {
667
841
  this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
@@ -680,6 +854,38 @@ class Bot {
680
854
  }
681
855
  this.debugLog(`Bot: ${this.accessory.displayName} Lock On: ${this.On}`);
682
856
  }
857
+ else if (this.device.bot?.deviceType === 'faucet') {
858
+ if (this.On === undefined) {
859
+ this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
860
+ }
861
+ else {
862
+ if (this.On) {
863
+ this.faucetService?.updateCharacteristic(this.platform.Characteristic.Active, this.platform.Characteristic.Active.ACTIVE);
864
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic Active: ${this.On}`);
865
+ }
866
+ else {
867
+ this.faucetService?.updateCharacteristic(this.platform.Characteristic.Active, this.platform.Characteristic.Active.INACTIVE);
868
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic Active: ${this.On}`);
869
+ }
870
+ }
871
+ this.debugLog(`Bot: ${this.accessory.displayName} Faucet On: ${this.On}`);
872
+ }
873
+ else if (this.device.bot?.deviceType === 'fan') {
874
+ if (this.On === undefined) {
875
+ this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
876
+ }
877
+ else {
878
+ if (this.On) {
879
+ this.fanService?.updateCharacteristic(this.platform.Characteristic.On, this.On);
880
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic On: ${this.On}`);
881
+ }
882
+ else {
883
+ this.fanService?.updateCharacteristic(this.platform.Characteristic.On, this.On);
884
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic On: ${this.On}`);
885
+ }
886
+ }
887
+ this.debugLog(`Bot: ${this.accessory.displayName} Fan On: ${this.On}`);
888
+ }
683
889
  else if (this.device.bot?.deviceType === 'switch') {
684
890
  if (this.On === undefined) {
685
891
  this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
@@ -726,10 +932,26 @@ class Bot {
726
932
  this.doorService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, e);
727
933
  this.doorService?.updateCharacteristic(this.platform.Characteristic.PositionState, e);
728
934
  }
935
+ else if (this.device.bot?.deviceType === 'window') {
936
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, e);
937
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, e);
938
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.PositionState, e);
939
+ }
940
+ else if (this.device.bot?.deviceType === 'windowcovering') {
941
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, e);
942
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, e);
943
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.PositionState, e);
944
+ }
729
945
  else if (this.device.bot?.deviceType === 'lock') {
730
946
  this.doorService?.updateCharacteristic(this.platform.Characteristic.LockTargetState, e);
731
947
  this.doorService?.updateCharacteristic(this.platform.Characteristic.LockCurrentState, e);
732
948
  }
949
+ else if (this.device.bot?.deviceType === 'faucet') {
950
+ this.faucetService?.updateCharacteristic(this.platform.Characteristic.Active, e);
951
+ }
952
+ else if (this.device.bot?.deviceType === 'fan') {
953
+ this.fanService?.updateCharacteristic(this.platform.Characteristic.On, e);
954
+ }
733
955
  else if (this.device.bot?.deviceType === 'switch') {
734
956
  this.switchService?.updateCharacteristic(this.platform.Characteristic.On, e);
735
957
  }
@@ -796,7 +1018,9 @@ class Bot {
796
1018
  this.On = true;
797
1019
  }
798
1020
  }
799
- else if (this.device.bot?.deviceType === 'door') {
1021
+ else if (this.device.bot?.deviceType === 'door'
1022
+ || this.device.bot?.deviceType === 'window'
1023
+ || this.device.bot?.deviceType === 'windowcovering') {
800
1024
  this.debugLog(`Bot: ${this.accessory.displayName} TargetPosition: ${value}`);
801
1025
  if (value === 0) {
802
1026
  this.On = false;
@@ -814,6 +1038,15 @@ class Bot {
814
1038
  this.On = true;
815
1039
  }
816
1040
  }
1041
+ else if (this.device.bot?.deviceType === 'faucet') {
1042
+ this.debugLog(`Bot: ${this.accessory.displayName} Active: ${value}`);
1043
+ if (value === this.platform.Characteristic.Active.INACTIVE) {
1044
+ this.On = false;
1045
+ }
1046
+ else {
1047
+ this.On = true;
1048
+ }
1049
+ }
817
1050
  else {
818
1051
  this.debugLog(`Bot: ${this.accessory.displayName} On: ${value}`);
819
1052
  this.On = value;
@@ -1 +1 @@
1
- {"version":3,"file":"bots.js","sourceRoot":"","sources":["../../src/devices/bots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bots.js","sourceRoot":"","sources":["../../src/devices/bots.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,74 +1,74 @@
1
1
  {
2
- "displayName": "Homebridge SwitchBot",
3
- "name": "@switchbot/homebridge-switchbot",
4
- "version": "1.6.4-beta.5",
5
- "description": "The [Homebridge](https://homebridge.io) SwitchBot plugin allows you to access your [SwitchBot](https://www.switch-bot.com) device(s) from HomeKit.",
6
- "author": "SwitchBot <support@wondertechlabs.com> (https://github.com/SwitchBot)",
7
- "license": "ISC",
8
- "repository": {
9
- "type": "git",
10
- "url": "git://github.com/OpenWonderLabs/homebridge-switchbot.git"
2
+ "displayName": "Homebridge SwitchBot",
3
+ "name": "@switchbot/homebridge-switchbot",
4
+ "version": "1.7.0",
5
+ "description": "The [Homebridge](https://homebridge.io) SwitchBot plugin allows you to access your [SwitchBot](https://www.switch-bot.com) device(s) from HomeKit.",
6
+ "author": "SwitchBot <support@wondertechlabs.com> (https://github.com/SwitchBot)",
7
+ "license": "ISC",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git://github.com/OpenWonderLabs/homebridge-switchbot.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/OpenWonderLabs/homebridge-switchbot/issues"
14
+ },
15
+ "engines": {
16
+ "homebridge": "^1.3.9",
17
+ "node": "^14.18.2 || ^16.13.1"
18
+ },
19
+ "main": "dist/index.js",
20
+ "scripts": {
21
+ "check": "npm install && npm outdated",
22
+ "update": "ncu -u && npm update && npm install",
23
+ "lint": "eslint src/**.ts",
24
+ "watch": "npm run build && npm link && nodemon",
25
+ "build": "rimraf ./dist && tsc",
26
+ "prepublishOnly": "npm run lint && npm run build"
27
+ },
28
+ "funding": [
29
+ {
30
+ "type": "Paypal",
31
+ "url": "https://paypal.me/donavanbecker"
11
32
  },
12
- "bugs": {
13
- "url": "https://github.com/OpenWonderLabs/homebridge-switchbot/issues"
14
- },
15
- "engines": {
16
- "homebridge": "^1.3.9",
17
- "node": "^14.18.2 || ^16.13.1"
18
- },
19
- "main": "dist/index.js",
20
- "scripts": {
21
- "check": "npm install && npm outdated",
22
- "update": "ncu -u && npm update && npm install",
23
- "lint": "eslint src/**.ts",
24
- "watch": "npm run build && npm link && nodemon",
25
- "build": "rimraf ./dist && tsc",
26
- "prepublishOnly": "npm run lint && npm run build"
27
- },
28
- "funding": [
29
- {
30
- "type": "Paypal",
31
- "url": "https://paypal.me/donavanbecker"
32
- },
33
- {
34
- "type": "GitHub",
35
- "url": "https://github.com/sponsors/donavanbecker"
36
- }
37
- ],
38
- "publishConfig": {
39
- "access": "public"
40
- },
41
- "keywords": [
42
- "homebridge-plugin",
43
- "switchbot",
44
- "humidifier",
45
- "humidity",
46
- "temperature",
47
- "bot",
48
- "curtains",
49
- "windows",
50
- "ble",
51
- "ir"
52
- ],
53
- "dependencies": {
54
- "@homebridge/plugin-ui-utils": "^0.0.19",
55
- "axios": "^0.24.0",
56
- "rxjs": "^7.5.1"
57
- },
58
- "devDependencies": {
59
- "@types/node": "^17.0.8",
60
- "@typescript-eslint/eslint-plugin": "^5.9.0",
61
- "@typescript-eslint/parser": "^5.9.0",
62
- "eslint": "^8.6.0",
63
- "homebridge": "^1.3.9",
64
- "nodemon": "^2.0.15",
65
- "npm-check-updates": "^12.1.0",
66
- "rimraf": "^3.0.2",
67
- "ts-node": "^10.4.0",
68
- "typescript": "^4.5.4",
69
- "typescript-axios-wb": "^1.0.3"
70
- },
71
- "optionalDependencies": {
72
- "node-switchbot": "^1.1.2"
33
+ {
34
+ "type": "GitHub",
35
+ "url": "https://github.com/sponsors/donavanbecker"
73
36
  }
74
- }
37
+ ],
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
41
+ "keywords": [
42
+ "homebridge-plugin",
43
+ "switchbot",
44
+ "humidifier",
45
+ "humidity",
46
+ "temperature",
47
+ "bot",
48
+ "curtains",
49
+ "windows",
50
+ "ble",
51
+ "ir"
52
+ ],
53
+ "dependencies": {
54
+ "@homebridge/plugin-ui-utils": "^0.0.19",
55
+ "axios": "^0.24.0",
56
+ "rxjs": "^7.5.1"
57
+ },
58
+ "devDependencies": {
59
+ "@types/node": "^17.0.8",
60
+ "@typescript-eslint/eslint-plugin": "^5.9.0",
61
+ "@typescript-eslint/parser": "^5.9.0",
62
+ "eslint": "^8.6.0",
63
+ "homebridge": "^1.3.9",
64
+ "nodemon": "^2.0.15",
65
+ "npm-check-updates": "^12.1.0",
66
+ "rimraf": "^3.0.2",
67
+ "ts-node": "^10.4.0",
68
+ "typescript": "^4.5.4",
69
+ "typescript-axios-wb": "^1.0.3"
70
+ },
71
+ "optionalDependencies": {
72
+ "node-switchbot": "^1.1.2"
73
+ }
74
+ }
@@ -13,12 +13,16 @@ import { DeviceURL, device, devicesConfig, serviceData, ad, switchbot, deviceSta
13
13
  */
14
14
  export class Bot {
15
15
  // Services
16
- private switchService?: Service;
16
+ private fanService?: Service;
17
17
  private doorService?: Service;
18
18
  private lockService?: Service;
19
- private garageDoorService?: Service;
19
+ private faucetService?: Service;
20
+ private windowService?: Service;
21
+ private switchService?: Service;
20
22
  private outletService?: Service;
21
23
  private batteryService?: Service;
24
+ private garageDoorService?: Service;
25
+ private windowCoveringService?: Service;
22
26
 
23
27
 
24
28
  // Characteristic Values
@@ -98,10 +102,14 @@ export class Bot {
98
102
  // get the LightBulb service if it exists, otherwise create a new LightBulb service
99
103
  // you can create multiple services for each accessory
100
104
  if (device.bot?.deviceType === 'switch') {
105
+ this.removeFanService(accessory);
101
106
  this.removeLockService(accessory);
102
107
  this.removeDoorService(accessory);
108
+ this.removeFaucetService(accessory);
103
109
  this.removeOutletService(accessory);
110
+ this.removeWindowService(accessory);
104
111
  this.removeGarageDoorService(accessory);
112
+ this.removeWindowCoveringService(accessory);
105
113
 
106
114
  // Add switchService
107
115
  (this.switchService =
@@ -112,10 +120,14 @@ export class Bot {
112
120
  this.switchService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
113
121
  this.switchService.getCharacteristic(this.platform.Characteristic.On).onSet(this.handleOnSet.bind(this));
114
122
  } else if (device.bot?.deviceType === 'garagedoor') {
123
+ this.removeFanService(accessory);
115
124
  this.removeLockService(accessory);
116
125
  this.removeDoorService(accessory);
126
+ this.removeFaucetService(accessory);
117
127
  this.removeOutletService(accessory);
118
128
  this.removeSwitchService(accessory);
129
+ this.removeWindowService(accessory);
130
+ this.removeWindowCoveringService(accessory);
119
131
 
120
132
  // Add switchService
121
133
  (this.garageDoorService =
@@ -127,10 +139,14 @@ export class Bot {
127
139
  this.garageDoorService.getCharacteristic(this.platform.Characteristic.TargetDoorState).onSet(this.handleOnSet.bind(this));
128
140
  this.garageDoorService.setCharacteristic(this.platform.Characteristic.ObstructionDetected, false);
129
141
  } else if (device.bot?.deviceType === 'door') {
142
+ this.removeFanService(accessory);
130
143
  this.removeLockService(accessory);
131
144
  this.removeOutletService(accessory);
145
+ this.removeFaucetService(accessory);
132
146
  this.removeSwitchService(accessory);
147
+ this.removeWindowService(accessory);
133
148
  this.removeGarageDoorService(accessory);
149
+ this.removeWindowCoveringService(accessory);
134
150
 
135
151
  // Add switchService
136
152
  (this.doorService =
@@ -147,11 +163,65 @@ export class Bot {
147
163
  minStep: 100,
148
164
  }).onSet(this.handleOnSet.bind(this));
149
165
  this.doorService.setCharacteristic(this.platform.Characteristic.PositionState, this.platform.Characteristic.PositionState.STOPPED);
166
+ } else if (device.bot?.deviceType === 'window') {
167
+ this.removeFanService(accessory);
168
+ this.removeLockService(accessory);
169
+ this.removeDoorService(accessory);
170
+ this.removeOutletService(accessory);
171
+ this.removeFaucetService(accessory);
172
+ this.removeSwitchService(accessory);
173
+ this.removeGarageDoorService(accessory);
174
+ this.removeWindowCoveringService(accessory);
175
+
176
+ // Add switchService
177
+ (this.windowService =
178
+ accessory.getService(this.platform.Service.Window) ||
179
+ accessory.addService(this.platform.Service.Window)), `${accessory.displayName} Window`;
180
+ this.infoLog(`Bot: ${accessory.displayName} Displaying as Window`);
181
+
182
+ this.windowService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
183
+ this.windowService.getCharacteristic(this.platform.Characteristic.TargetPosition)
184
+ .setProps({
185
+ validValues: [0, 100],
186
+ minValue: 0,
187
+ maxValue: 100,
188
+ minStep: 100,
189
+ }).onSet(this.handleOnSet.bind(this));
190
+ this.windowService.setCharacteristic(this.platform.Characteristic.PositionState, this.platform.Characteristic.PositionState.STOPPED);
191
+ } else if (device.bot?.deviceType === 'windowcovering') {
192
+ this.removeFanService(accessory);
193
+ this.removeLockService(accessory);
194
+ this.removeDoorService(accessory);
195
+ this.removeOutletService(accessory);
196
+ this.removeFaucetService(accessory);
197
+ this.removeSwitchService(accessory);
198
+ this.removeWindowService(accessory);
199
+ this.removeGarageDoorService(accessory);
200
+
201
+ // Add switchService
202
+ (this.windowCoveringService =
203
+ accessory.getService(this.platform.Service.WindowCovering) ||
204
+ accessory.addService(this.platform.Service.WindowCovering)), `${accessory.displayName} Window Covering`;
205
+ this.infoLog(`Bot: ${accessory.displayName} Displaying as Window Covering`);
206
+
207
+ this.windowCoveringService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
208
+ this.windowCoveringService.getCharacteristic(this.platform.Characteristic.TargetPosition)
209
+ .setProps({
210
+ validValues: [0, 100],
211
+ minValue: 0,
212
+ maxValue: 100,
213
+ minStep: 100,
214
+ }).onSet(this.handleOnSet.bind(this));
215
+ this.windowCoveringService.setCharacteristic(this.platform.Characteristic.PositionState, this.platform.Characteristic.PositionState.STOPPED);
150
216
  } else if (device.bot?.deviceType === 'lock') {
217
+ this.removeFanService(accessory);
151
218
  this.removeDoorService(accessory);
152
219
  this.removeOutletService(accessory);
153
220
  this.removeSwitchService(accessory);
221
+ this.removeFaucetService(accessory);
222
+ this.removeWindowService(accessory);
154
223
  this.removeGarageDoorService(accessory);
224
+ this.removeWindowCoveringService(accessory);
155
225
 
156
226
  // Add switchService
157
227
  (this.lockService =
@@ -161,11 +231,51 @@ export class Bot {
161
231
 
162
232
  this.lockService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
163
233
  this.lockService.getCharacteristic(this.platform.Characteristic.LockTargetState).onSet(this.handleOnSet.bind(this));
234
+ } else if (device.bot?.deviceType === 'faucet') {
235
+ this.removeFanService(accessory);
236
+ this.removeLockService(accessory);
237
+ this.removeDoorService(accessory);
238
+ this.removeOutletService(accessory);
239
+ this.removeSwitchService(accessory);
240
+ this.removeWindowService(accessory);
241
+ this.removeGarageDoorService(accessory);
242
+ this.removeWindowCoveringService(accessory);
243
+
244
+ // Add switchService
245
+ (this.faucetService =
246
+ accessory.getService(this.platform.Service.Faucet) ||
247
+ accessory.addService(this.platform.Service.Faucet)), `${accessory.displayName} Faucet`;
248
+ this.infoLog(`Bot: ${accessory.displayName} Displaying as Faucet`);
249
+
250
+ this.faucetService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
251
+ this.faucetService.getCharacteristic(this.platform.Characteristic.Active).onSet(this.handleOnSet.bind(this));
252
+ } else if (device.bot?.deviceType === 'fan') {
253
+ this.removeLockService(accessory);
254
+ this.removeDoorService(accessory);
255
+ this.removeFaucetService(accessory);
256
+ this.removeOutletService(accessory);
257
+ this.removeSwitchService(accessory);
258
+ this.removeWindowService(accessory);
259
+ this.removeGarageDoorService(accessory);
260
+ this.removeWindowCoveringService(accessory);
261
+
262
+ // Add switchService
263
+ (this.fanService =
264
+ accessory.getService(this.platform.Service.Fan) ||
265
+ accessory.addService(this.platform.Service.Fan)), `${accessory.displayName} Fan`;
266
+ this.infoLog(`Bot: ${accessory.displayName} Displaying as Fan`);
267
+
268
+ this.fanService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
269
+ this.fanService.getCharacteristic(this.platform.Characteristic.On).onSet(this.handleOnSet.bind(this));
164
270
  } else {
271
+ this.removeFanService(accessory);
165
272
  this.removeLockService(accessory);
166
273
  this.removeDoorService(accessory);
274
+ this.removeFaucetService(accessory);
167
275
  this.removeSwitchService(accessory);
276
+ this.removeWindowService(accessory);
168
277
  this.removeGarageDoorService(accessory);
278
+ this.removeWindowCoveringService(accessory);
169
279
 
170
280
  // Add outletService
171
281
  (this.outletService =
@@ -226,7 +336,7 @@ export class Bot {
226
336
  });
227
337
  }
228
338
 
229
- private removeOutletService(accessory: PlatformAccessory) {
339
+ public removeOutletService(accessory: PlatformAccessory) {
230
340
  // If outletService still pressent, then remove first
231
341
  this.outletService = this.accessory.getService(this.platform.Service.Outlet);
232
342
  if (this.outletService) {
@@ -235,7 +345,7 @@ export class Bot {
235
345
  accessory.removeService(this.outletService!);
236
346
  }
237
347
 
238
- private removeGarageDoorService(accessory: PlatformAccessory) {
348
+ public removeGarageDoorService(accessory: PlatformAccessory) {
239
349
  // If garageDoorService still pressent, then remove first
240
350
  this.garageDoorService = this.accessory.getService(this.platform.Service.GarageDoorOpener);
241
351
  if (this.garageDoorService) {
@@ -244,7 +354,7 @@ export class Bot {
244
354
  accessory.removeService(this.garageDoorService!);
245
355
  }
246
356
 
247
- private removeDoorService(accessory: PlatformAccessory) {
357
+ public removeDoorService(accessory: PlatformAccessory) {
248
358
  // If doorService still pressent, then remove first
249
359
  this.doorService = this.accessory.getService(this.platform.Service.Door);
250
360
  if (this.doorService) {
@@ -253,7 +363,7 @@ export class Bot {
253
363
  accessory.removeService(this.doorService!);
254
364
  }
255
365
 
256
- private removeLockService(accessory: PlatformAccessory) {
366
+ public removeLockService(accessory: PlatformAccessory) {
257
367
  // If lockService still pressent, then remove first
258
368
  this.lockService = this.accessory.getService(this.platform.Service.LockMechanism);
259
369
  if (this.lockService) {
@@ -262,7 +372,43 @@ export class Bot {
262
372
  accessory.removeService(this.lockService!);
263
373
  }
264
374
 
265
- private removeSwitchService(accessory: PlatformAccessory) {
375
+ public removeFaucetService(accessory: PlatformAccessory) {
376
+ // If faucetService still pressent, then remove first
377
+ this.faucetService = this.accessory.getService(this.platform.Service.Faucet);
378
+ if (this.faucetService) {
379
+ this.warnLog(`Bot: ${accessory.displayName} Removing Leftover Faucet Service`);
380
+ }
381
+ accessory.removeService(this.faucetService!);
382
+ }
383
+
384
+ public removeFanService(accessory: PlatformAccessory) {
385
+ // If fanService still pressent, then remove first
386
+ this.fanService = this.accessory.getService(this.platform.Service.Fan);
387
+ if (this.fanService) {
388
+ this.warnLog(`Bot: ${accessory.displayName} Removing Leftover Fan Service`);
389
+ }
390
+ accessory.removeService(this.fanService!);
391
+ }
392
+
393
+ public removeWindowService(accessory: PlatformAccessory) {
394
+ // If windowService still pressent, then remove first
395
+ this.windowService = this.accessory.getService(this.platform.Service.Window);
396
+ if (this.windowService) {
397
+ this.warnLog(`Bot: ${accessory.displayName} Removing Leftover Window Service`);
398
+ }
399
+ accessory.removeService(this.windowService!);
400
+ }
401
+
402
+ public removeWindowCoveringService(accessory: PlatformAccessory) {
403
+ // If windowCoveringService still pressent, then remove first
404
+ this.windowCoveringService = this.accessory.getService(this.platform.Service.WindowCovering);
405
+ if (this.windowCoveringService) {
406
+ this.warnLog(`Bot: ${accessory.displayName} Removing Leftover Window Covering Service`);
407
+ }
408
+ accessory.removeService(this.windowCoveringService!);
409
+ }
410
+
411
+ public removeSwitchService(accessory: PlatformAccessory) {
266
412
  // If switchService still pressent, then remove first
267
413
  this.switchService = this.accessory.getService(this.platform.Service.Switch);
268
414
  if (this.switchService) {
@@ -721,6 +867,44 @@ export class Bot {
721
867
  }
722
868
  }
723
869
  this.debugLog(`Bot: ${this.accessory.displayName} Door On: ${this.On}`);
870
+ } else if (this.device.bot?.deviceType === 'window') {
871
+ if (this.On === undefined) {
872
+ this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
873
+ } else {
874
+ if (this.On) {
875
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, 100);
876
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, 100);
877
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.PositionState,
878
+ this.platform.Characteristic.PositionState.STOPPED);
879
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic TargetPosition: 100, CurrentPosition: 100`);
880
+ } else {
881
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, 0);
882
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, 0);
883
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.PositionState,
884
+ this.platform.Characteristic.PositionState.STOPPED);
885
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic TargetPosition: 0, CurrentPosition: 0`);
886
+ }
887
+ }
888
+ this.debugLog(`Bot: ${this.accessory.displayName} Window On: ${this.On}`);
889
+ } else if (this.device.bot?.deviceType === 'windowcovering') {
890
+ if (this.On === undefined) {
891
+ this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
892
+ } else {
893
+ if (this.On) {
894
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, 100);
895
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, 100);
896
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.PositionState,
897
+ this.platform.Characteristic.PositionState.STOPPED);
898
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic TargetPosition: 100, CurrentPosition: 100`);
899
+ } else {
900
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, 0);
901
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, 0);
902
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.PositionState,
903
+ this.platform.Characteristic.PositionState.STOPPED);
904
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic TargetPosition: 0, CurrentPosition: 0`);
905
+ }
906
+ }
907
+ this.debugLog(`Bot: ${this.accessory.displayName} Window Covering On: ${this.On}`);
724
908
  } else if (this.device.bot?.deviceType === 'lock') {
725
909
  if (this.On === undefined) {
726
910
  this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
@@ -740,6 +924,34 @@ export class Bot {
740
924
  }
741
925
  }
742
926
  this.debugLog(`Bot: ${this.accessory.displayName} Lock On: ${this.On}`);
927
+ } else if (this.device.bot?.deviceType === 'faucet') {
928
+ if (this.On === undefined) {
929
+ this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
930
+ } else {
931
+ if (this.On) {
932
+ this.faucetService?.updateCharacteristic(this.platform.Characteristic.Active,
933
+ this.platform.Characteristic.Active.ACTIVE);
934
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic Active: ${this.On}`);
935
+ } else {
936
+ this.faucetService?.updateCharacteristic(this.platform.Characteristic.Active,
937
+ this.platform.Characteristic.Active.INACTIVE);
938
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic Active: ${this.On}`);
939
+ }
940
+ }
941
+ this.debugLog(`Bot: ${this.accessory.displayName} Faucet On: ${this.On}`);
942
+ } else if (this.device.bot?.deviceType === 'fan') {
943
+ if (this.On === undefined) {
944
+ this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
945
+ } else {
946
+ if (this.On) {
947
+ this.fanService?.updateCharacteristic(this.platform.Characteristic.On, this.On);
948
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic On: ${this.On}`);
949
+ } else {
950
+ this.fanService?.updateCharacteristic(this.platform.Characteristic.On, this.On);
951
+ this.debugLog(`Bot: ${this.accessory.displayName} updateCharacteristic On: ${this.On}`);
952
+ }
953
+ }
954
+ this.debugLog(`Bot: ${this.accessory.displayName} Fan On: ${this.On}`);
743
955
  } else if (this.device.bot?.deviceType === 'switch') {
744
956
  if (this.On === undefined) {
745
957
  this.debugLog(`Bot: ${this.accessory.displayName} On: ${this.On}`);
@@ -780,9 +992,21 @@ export class Bot {
780
992
  this.doorService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, e);
781
993
  this.doorService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, e);
782
994
  this.doorService?.updateCharacteristic(this.platform.Characteristic.PositionState, e);
995
+ } else if (this.device.bot?.deviceType === 'window') {
996
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, e);
997
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, e);
998
+ this.windowService?.updateCharacteristic(this.platform.Characteristic.PositionState, e);
999
+ } else if (this.device.bot?.deviceType === 'windowcovering') {
1000
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.TargetPosition, e);
1001
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.CurrentPosition, e);
1002
+ this.windowCoveringService?.updateCharacteristic(this.platform.Characteristic.PositionState, e);
783
1003
  } else if (this.device.bot?.deviceType === 'lock') {
784
1004
  this.doorService?.updateCharacteristic(this.platform.Characteristic.LockTargetState, e);
785
1005
  this.doorService?.updateCharacteristic(this.platform.Characteristic.LockCurrentState, e);
1006
+ } else if (this.device.bot?.deviceType === 'faucet') {
1007
+ this.faucetService?.updateCharacteristic(this.platform.Characteristic.Active, e);
1008
+ } else if (this.device.bot?.deviceType === 'fan') {
1009
+ this.fanService?.updateCharacteristic(this.platform.Characteristic.On, e);
786
1010
  } else if (this.device.bot?.deviceType === 'switch') {
787
1011
  this.switchService?.updateCharacteristic(this.platform.Characteristic.On, e);
788
1012
  } else {
@@ -848,7 +1072,9 @@ export class Bot {
848
1072
  } else {
849
1073
  this.On = true;
850
1074
  }
851
- } else if (this.device.bot?.deviceType === 'door') {
1075
+ } else if (this.device.bot?.deviceType === 'door'
1076
+ || this.device.bot?.deviceType === 'window'
1077
+ || this.device.bot?.deviceType === 'windowcovering') {
852
1078
  this.debugLog(`Bot: ${this.accessory.displayName} TargetPosition: ${value}`);
853
1079
  if (value === 0) {
854
1080
  this.On = false;
@@ -862,6 +1088,13 @@ export class Bot {
862
1088
  } else {
863
1089
  this.On = true;
864
1090
  }
1091
+ } else if (this.device.bot?.deviceType === 'faucet') {
1092
+ this.debugLog(`Bot: ${this.accessory.displayName} Active: ${value}`);
1093
+ if (value === this.platform.Characteristic.Active.INACTIVE) {
1094
+ this.On = false;
1095
+ } else {
1096
+ this.On = true;
1097
+ }
865
1098
  } else {
866
1099
  this.debugLog(`Bot: ${this.accessory.displayName} On: ${value}`);
867
1100
  this.On = value;