@switchbot/homebridge-switchbot 3.5.0-beta.62 → 3.5.0-beta.63

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.
Files changed (61) hide show
  1. package/dist/device/blindtilt.d.ts.map +1 -1
  2. package/dist/device/blindtilt.js +4 -2
  3. package/dist/device/blindtilt.js.map +1 -1
  4. package/dist/device/bot.d.ts.map +1 -1
  5. package/dist/device/bot.js +2 -1
  6. package/dist/device/bot.js.map +1 -1
  7. package/dist/device/colorbulb.d.ts.map +1 -1
  8. package/dist/device/colorbulb.js +3 -1
  9. package/dist/device/colorbulb.js.map +1 -1
  10. package/dist/device/curtain.d.ts.map +1 -1
  11. package/dist/device/curtain.js +11 -8
  12. package/dist/device/curtain.js.map +1 -1
  13. package/dist/device/motion.js +1 -1
  14. package/dist/device/motion.js.map +1 -1
  15. package/dist/device/waterdetector.js +4 -4
  16. package/dist/device/waterdetector.js.map +1 -1
  17. package/dist/irdevice/airconditioner.d.ts +1 -1
  18. package/dist/irdevice/airconditioner.d.ts.map +1 -1
  19. package/dist/irdevice/airconditioner.js +65 -83
  20. package/dist/irdevice/airconditioner.js.map +1 -1
  21. package/dist/irdevice/airpurifier.d.ts.map +1 -1
  22. package/dist/irdevice/airpurifier.js +39 -17
  23. package/dist/irdevice/airpurifier.js.map +1 -1
  24. package/dist/irdevice/camera.d.ts.map +1 -1
  25. package/dist/irdevice/camera.js +14 -10
  26. package/dist/irdevice/camera.js.map +1 -1
  27. package/dist/irdevice/fan.d.ts.map +1 -1
  28. package/dist/irdevice/fan.js +27 -14
  29. package/dist/irdevice/fan.js.map +1 -1
  30. package/dist/irdevice/light.d.ts.map +1 -1
  31. package/dist/irdevice/light.js +55 -23
  32. package/dist/irdevice/light.js.map +1 -1
  33. package/dist/irdevice/other.d.ts +1 -1
  34. package/dist/irdevice/other.d.ts.map +1 -1
  35. package/dist/irdevice/other.js +198 -135
  36. package/dist/irdevice/other.js.map +1 -1
  37. package/dist/irdevice/tv.d.ts.map +1 -1
  38. package/dist/irdevice/tv.js +54 -59
  39. package/dist/irdevice/tv.js.map +1 -1
  40. package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
  41. package/dist/irdevice/vacuumcleaner.js +15 -10
  42. package/dist/irdevice/vacuumcleaner.js.map +1 -1
  43. package/dist/irdevice/waterheater.d.ts.map +1 -1
  44. package/dist/irdevice/waterheater.js +16 -13
  45. package/dist/irdevice/waterheater.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/device/blindtilt.ts +4 -2
  48. package/src/device/bot.ts +2 -1
  49. package/src/device/colorbulb.ts +3 -2
  50. package/src/device/curtain.ts +11 -8
  51. package/src/device/motion.ts +1 -1
  52. package/src/device/waterdetector.ts +4 -4
  53. package/src/irdevice/airconditioner.ts +73 -85
  54. package/src/irdevice/airpurifier.ts +46 -21
  55. package/src/irdevice/camera.ts +15 -12
  56. package/src/irdevice/fan.ts +29 -17
  57. package/src/irdevice/light.ts +70 -42
  58. package/src/irdevice/other.ts +230 -153
  59. package/src/irdevice/tv.ts +61 -70
  60. package/src/irdevice/vacuumcleaner.ts +16 -12
  61. package/src/irdevice/waterheater.ts +17 -16
@@ -18,6 +18,8 @@ import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge
18
18
  export class TV extends irdeviceBase {
19
19
  // Services
20
20
  private Television: {
21
+ Name: CharacteristicValue;
22
+ ConfiguredName: CharacteristicValue;
21
23
  Service: Service;
22
24
  Active: CharacteristicValue;
23
25
  ActiveIdentifier: CharacteristicValue;
@@ -26,6 +28,7 @@ export class TV extends irdeviceBase {
26
28
  };
27
29
 
28
30
  private TelevisionSpeaker: {
31
+ Name: CharacteristicValue;
29
32
  Service: Service;
30
33
  Active: CharacteristicValue;
31
34
  VolumeControlType: CharacteristicValue;
@@ -41,101 +44,89 @@ export class TV extends irdeviceBase {
41
44
  ) {
42
45
  super(platform, accessory, device);
43
46
 
44
- // Initialize Television property
47
+ // Initialize Television Service
48
+ if (!accessory.context.Television) {
49
+ accessory.context.Television = {};
50
+ }
45
51
  this.Television = {
46
- Service: accessory.getService(this.hap.Service.Television) as Service,
47
- Active: accessory.context.Active || this.hap.Characteristic.Active.INACTIVE,
48
- ActiveIdentifier: accessory.context.ActiveIdentifier || 1,
49
- SleepDiscoveryMode: accessory.context.SleepDiscoveryMode || this.hap.Characteristic.SleepDiscoveryMode.ALWAYS_DISCOVERABLE,
50
- RemoteKey: accessory.context.RemoteKey || this.hap.Characteristic.RemoteKey.EXIT,
51
- };
52
-
53
- // Initialize TelevisionSpeaker property
54
- this.TelevisionSpeaker = {
55
- Service: accessory.getService(this.hap.Service.TelevisionSpeaker) as Service,
56
- Active: accessory.context.Active || false,
57
- VolumeControlType: accessory.context.VolumeControlType || this.hap.Characteristic.VolumeControlType.ABSOLUTE,
58
- VolumeSelector: accessory.context.VolumeSelector || this.hap.Characteristic.VolumeSelector.INCREMENT,
52
+ Name: accessory.context.Television.Name ?? `${accessory.displayName} ${device.remoteType}`,
53
+ ConfiguredName: accessory.context.Television.ConfiguredName ?? `${accessory.displayName} ${device.remoteType}`,
54
+ Service: accessory.getService(this.hap.Service.Television) ?? accessory.addService(this.hap.Service.Television) as Service,
55
+ Active: accessory.context.Active ?? this.hap.Characteristic.Active.INACTIVE,
56
+ ActiveIdentifier: accessory.context.ActiveIdentifier ?? 1,
57
+ SleepDiscoveryMode: accessory.context.SleepDiscoveryMode ?? this.hap.Characteristic.SleepDiscoveryMode.ALWAYS_DISCOVERABLE,
58
+ RemoteKey: accessory.context.RemoteKey ?? this.hap.Characteristic.RemoteKey.EXIT,
59
59
  };
60
60
 
61
- // default placeholders
62
- if (this.Television.Active === undefined) {
63
- this.Television.Active = this.hap.Characteristic.Active.INACTIVE;
64
- } else {
65
- this.Television.Active = this.accessory.context.Active;
66
- }
67
- if (this.Television.ActiveIdentifier === undefined) {
68
- this.Television.ActiveIdentifier = 1;
69
- } else {
70
- this.Television.ActiveIdentifier = this.accessory.context.ActiveIdentifier;
71
- }
72
-
73
- // set the accessory category
74
- const TelevisionServiceCategory = `${accessory.displayName} ${device.remoteType}`;
75
61
  switch (device.remoteType) {
76
62
  case 'Speaker':
77
63
  case 'DIY Speaker':
78
64
  accessory.category = this.platform.api.hap.Categories.SPEAKER;
79
- (this.Television.Service = accessory.getService(this.hap.Service.Television)
80
- || accessory.addService(this.hap.Service.Television)), TelevisionServiceCategory;
81
65
  break;
82
66
  case 'IPTV':
83
67
  case 'DIY IPTV':
84
68
  accessory.category = this.platform.api.hap.Categories.TV_STREAMING_STICK;
85
- (this.Television.Service = accessory.getService(this.hap.Service.Television)
86
- || accessory.addService(this.hap.Service.Television)), TelevisionServiceCategory;
87
69
  break;
88
70
  case 'DVD':
89
71
  case 'DIY DVD':
90
72
  case 'Set Top Box':
91
73
  case 'DIY Set Top Box':
92
74
  accessory.category = this.platform.api.hap.Categories.TV_SET_TOP_BOX;
93
- (this.Television.Service = accessory.getService(this.hap.Service.Television)
94
- || accessory.addService(this.hap.Service.Television)), TelevisionServiceCategory;
95
75
  break;
96
76
  default:
97
77
  accessory.category = this.platform.api.hap.Categories.TELEVISION;
98
-
99
- // get the Television service if it exists, otherwise create a new Television service
100
- // you can create multiple services for each accessory
101
- (this.Television.Service = accessory.getService(this.hap.Service.Television)
102
- || accessory.addService(this.hap.Service.Television)), TelevisionServiceCategory;
103
78
  }
104
79
 
105
- this.Television.Service.getCharacteristic(this.hap.Characteristic.ConfiguredName);
106
-
107
- // set sleep discovery characteristic
108
- this.Television.Service.setCharacteristic(
109
- this.hap.Characteristic.SleepDiscoveryMode,
110
- this.hap.Characteristic.SleepDiscoveryMode.ALWAYS_DISCOVERABLE,
111
- );
112
-
113
- // handle on / off events using the Active characteristic
114
- this.Television.Service.getCharacteristic(this.hap.Characteristic.Active).onSet(this.ActiveSet.bind(this));
115
-
116
- this.Television.Service.setCharacteristic(this.hap.Characteristic.ActiveIdentifier, 1);
117
-
118
- // handle input source changes
119
- this.Television.Service.getCharacteristic(this.hap.Characteristic.ActiveIdentifier).onSet(this.ActiveIdentifierSet.bind(this));
120
-
121
- // handle remote control input
122
- this.Television.Service.getCharacteristic(this.hap.Characteristic.RemoteKey).onSet(this.RemoteKeySet.bind(this));
123
-
124
- /**
125
- * Create a speaker service to allow volume control
126
- */
127
- // create a new Television Speaker service
128
- const TelevisionSpeakerService = `${accessory.displayName} Speaker`;
129
- (this.TelevisionSpeaker.Service = accessory.getService(this.hap.Service.TelevisionSpeaker)
130
- || accessory.addService(this.hap.Service.TelevisionSpeaker)), TelevisionSpeakerService;
80
+ this.Television.Service
81
+ .setCharacteristic(this.hap.Characteristic.SleepDiscoveryMode, this.hap.Characteristic.SleepDiscoveryMode.ALWAYS_DISCOVERABLE)
82
+ .setCharacteristic(this.hap.Characteristic.ConfiguredName, this.Television.ConfiguredName)
83
+ .getCharacteristic(this.hap.Characteristic.ConfiguredName);
84
+
85
+ this.Television.Service
86
+ .setCharacteristic(this.hap.Characteristic.ActiveIdentifier, 1)
87
+ .getCharacteristic(this.hap.Characteristic.Active)
88
+ .onGet(() => {
89
+ return this.Television.Active;
90
+ })
91
+ .onSet(this.ActiveSet.bind(this));
92
+
93
+ this.Television.Service
94
+ .getCharacteristic(this.hap.Characteristic.ActiveIdentifier)
95
+ .onGet(() => {
96
+ return this.Television.ActiveIdentifier;
97
+ })
98
+ .onSet(this.ActiveIdentifierSet.bind(this));
99
+
100
+ this.Television.Service
101
+ .getCharacteristic(this.hap.Characteristic.RemoteKey)
102
+ .onGet(() => {
103
+ return this.Television.RemoteKey;
104
+ })
105
+ .onSet(this.RemoteKeySet.bind(this));
106
+ accessory.context.Television.Name = this.Television.Name;
107
+
108
+ // Initialize TelevisionSpeaker Service
109
+ if (!accessory.context.TelevisionSpeaker) {
110
+ accessory.context.TelevisionSpeaker = {};
111
+ }
112
+ this.TelevisionSpeaker = {
113
+ Name: accessory.context.TelevisionSpeaker.Name ?? `${accessory.displayName} ${device.remoteType} Speaker`,
114
+ Service: accessory.getService(this.hap.Service.TelevisionSpeaker) ?? accessory.addService(this.hap.Service.TelevisionSpeaker) as Service,
115
+ Active: accessory.context.Active ?? false,
116
+ VolumeControlType: accessory.context.VolumeControlType ?? this.hap.Characteristic.VolumeControlType.ABSOLUTE,
117
+ VolumeSelector: accessory.context.VolumeSelector ?? this.hap.Characteristic.VolumeSelector.INCREMENT,
118
+ };
131
119
 
132
- this.TelevisionSpeaker.Service.setCharacteristic(this.hap.Characteristic.Name, TelevisionSpeakerService);
133
120
  this.TelevisionSpeaker.Service
121
+ .setCharacteristic(this.hap.Characteristic.Name, this.TelevisionSpeaker.Name)
134
122
  .setCharacteristic(this.hap.Characteristic.Active, this.hap.Characteristic.Active.ACTIVE)
135
- .setCharacteristic(this.hap.Characteristic.VolumeControlType, this.hap.Characteristic.VolumeControlType.ABSOLUTE);
136
-
137
- // handle volume control
138
- this.TelevisionSpeaker.Service.getCharacteristic(this.hap.Characteristic.VolumeSelector).onSet(this.VolumeSelectorSet.bind(this));
123
+ .setCharacteristic(this.hap.Characteristic.VolumeControlType, this.hap.Characteristic.VolumeControlType.ABSOLUTE)
124
+ .getCharacteristic(this.hap.Characteristic.VolumeSelector)
125
+ .onGet(() => {
126
+ return this.TelevisionSpeaker.VolumeSelector;
127
+ })
128
+ .onSet(this.VolumeSelectorSet.bind(this));
129
+ accessory.context.TelevisionSpeaker.Name = this.TelevisionSpeaker.Name;
139
130
  }
140
131
 
141
132
  async VolumeSelectorSet(value: CharacteristicValue): Promise<void> {
@@ -18,6 +18,7 @@ import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge
18
18
  export class VacuumCleaner extends irdeviceBase {
19
19
  // Services
20
20
  private Switch: {
21
+ Name: CharacteristicValue;
21
22
  Service: Service;
22
23
  On: CharacteristicValue;
23
24
  };
@@ -29,21 +30,24 @@ export class VacuumCleaner extends irdeviceBase {
29
30
  ) {
30
31
  super(platform, accessory, device);
31
32
 
32
- // Initialize Switch property
33
+ // Initialize Switch Service
34
+ if (!accessory.context.Switch) {
35
+ accessory.context.Switch = {};
36
+ }
33
37
  this.Switch = {
34
- Service: accessory.getService(this.hap.Service.Switch) as Service,
35
- On: accessory.context.On || false,
38
+ Name: accessory.context.Name ?? `${accessory.displayName} ${device.remoteType}`,
39
+ Service: accessory.getService(this.hap.Service.Switch) ?? accessory.addService(this.hap.Service.Switch) as Service,
40
+ On: accessory.context.On ?? false,
36
41
  };
37
42
 
38
- // get the Switch service if it exists, otherwise create a new Switch service
39
- const SwitchService = `${accessory.displayName} ${device.remoteType}`;
40
- (this.Switch.Service = accessory.getService(this.hap.Service.Switch)
41
- || accessory.addService(this.hap.Service.Switch)), SwitchService;
42
-
43
- this.Switch.Service.setCharacteristic(this.hap.Characteristic.Name, accessory.displayName);
44
-
45
- // handle on / off events using the On characteristic
46
- this.Switch.Service.getCharacteristic(this.hap.Characteristic.On).onSet(this.OnSet.bind(this));
43
+ this.Switch.Service
44
+ .setCharacteristic(this.hap.Characteristic.Name, this.Switch.Name)
45
+ .getCharacteristic(this.hap.Characteristic.On)
46
+ .onGet(() => {
47
+ return this.Switch.On;
48
+ })
49
+ .onSet(this.OnSet.bind(this));
50
+ accessory.context.Switch.Name = this.Switch.Name;
47
51
  }
48
52
 
49
53
  async OnSet(value: CharacteristicValue): Promise<void> {
@@ -18,6 +18,7 @@ import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge
18
18
  export class WaterHeater extends irdeviceBase {
19
19
  // Services
20
20
  private Valve: {
21
+ Name: CharacteristicValue;
21
22
  Service: Service;
22
23
  Active: CharacteristicValue;
23
24
  };
@@ -29,25 +30,25 @@ export class WaterHeater extends irdeviceBase {
29
30
  ) {
30
31
  super(platform, accessory, device);
31
32
 
32
- // Initialize Valve property
33
+ // Initialize Switch Service
34
+ if (!accessory.context.Valve) {
35
+ accessory.context.Valve = {};
36
+ }
33
37
  this.Valve = {
34
- Service: accessory.getService(this.hap.Service.Valve) as Service,
35
- Active: accessory.context.Active || this.hap.Characteristic.Active.INACTIVE,
38
+ Name: accessory.context.Name ?? `${accessory.displayName} ${device.remoteType}`,
39
+ Service: accessory.getService(this.hap.Service.Valve) ?? accessory.addService(this.hap.Service.Valve) as Service,
40
+ Active: accessory.context.Active ?? this.hap.Characteristic.Active.INACTIVE,
36
41
  };
37
42
 
38
- // get the Television service if it exists, otherwise create a new Television service
39
- // you can create multiple services for each accessory
40
- const ValveService = `${accessory.displayName} ${device.remoteType}`;
41
- (this.Valve.Service = accessory.getService(this.hap.Service.Valve)
42
- || accessory.addService(this.hap.Service.Valve)), ValveService;
43
-
44
- this.Valve.Service.setCharacteristic(this.hap.Characteristic.Name, accessory.displayName);
45
-
46
- // set sleep discovery characteristic
47
- this.Valve.Service.setCharacteristic(this.hap.Characteristic.ValveType, this.hap.Characteristic.ValveType.GENERIC_VALVE);
48
-
49
- // handle on / off events using the Active characteristic
50
- this.Valve.Service.getCharacteristic(this.hap.Characteristic.Active).onSet(this.ActiveSet.bind(this));
43
+ this.Valve.Service
44
+ .setCharacteristic(this.hap.Characteristic.Name, accessory.displayName)
45
+ .setCharacteristic(this.hap.Characteristic.ValveType, this.hap.Characteristic.ValveType.GENERIC_VALVE)
46
+ .getCharacteristic(this.hap.Characteristic.Active)
47
+ .onGet(() => {
48
+ return this.Valve.Active;
49
+ })
50
+ .onSet(this.ActiveSet.bind(this));
51
+ accessory.context.Valve.Name = this.Valve.Name;
51
52
  }
52
53
 
53
54
  async ActiveSet(value: CharacteristicValue): Promise<void> {