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

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 (108) hide show
  1. package/dist/device/blindtilt.d.ts.map +1 -1
  2. package/dist/device/blindtilt.js +7 -6
  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 +31 -21
  6. package/dist/device/bot.js.map +1 -1
  7. package/dist/device/ceilinglight.d.ts.map +1 -1
  8. package/dist/device/ceilinglight.js +4 -3
  9. package/dist/device/ceilinglight.js.map +1 -1
  10. package/dist/device/colorbulb.d.ts.map +1 -1
  11. package/dist/device/colorbulb.js +1 -2
  12. package/dist/device/colorbulb.js.map +1 -1
  13. package/dist/device/contact.d.ts.map +1 -1
  14. package/dist/device/contact.js +14 -10
  15. package/dist/device/contact.js.map +1 -1
  16. package/dist/device/device.js +11 -10
  17. package/dist/device/device.js.map +1 -1
  18. package/dist/device/fan.d.ts.map +1 -1
  19. package/dist/device/fan.js +7 -5
  20. package/dist/device/fan.js.map +1 -1
  21. package/dist/device/hub.d.ts.map +1 -1
  22. package/dist/device/hub.js +9 -6
  23. package/dist/device/hub.js.map +1 -1
  24. package/dist/device/humidifier.d.ts.map +1 -1
  25. package/dist/device/humidifier.js +6 -4
  26. package/dist/device/humidifier.js.map +1 -1
  27. package/dist/device/iosensor.d.ts.map +1 -1
  28. package/dist/device/iosensor.js +10 -6
  29. package/dist/device/iosensor.js.map +1 -1
  30. package/dist/device/lightstrip.d.ts.map +1 -1
  31. package/dist/device/lightstrip.js +3 -2
  32. package/dist/device/lightstrip.js.map +1 -1
  33. package/dist/device/lock.d.ts.map +1 -1
  34. package/dist/device/lock.js +12 -8
  35. package/dist/device/lock.js.map +1 -1
  36. package/dist/device/meter.d.ts.map +1 -1
  37. package/dist/device/meter.js +8 -5
  38. package/dist/device/meter.js.map +1 -1
  39. package/dist/device/meterplus.d.ts.map +1 -1
  40. package/dist/device/meterplus.js +9 -6
  41. package/dist/device/meterplus.js.map +1 -1
  42. package/dist/device/motion.d.ts.map +1 -1
  43. package/dist/device/motion.js +9 -5
  44. package/dist/device/motion.js.map +1 -1
  45. package/dist/device/plug.d.ts.map +1 -1
  46. package/dist/device/plug.js +3 -2
  47. package/dist/device/plug.js.map +1 -1
  48. package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
  49. package/dist/device/robotvacuumcleaner.js +6 -4
  50. package/dist/device/robotvacuumcleaner.js.map +1 -1
  51. package/dist/device/waterdetector.d.ts.map +1 -1
  52. package/dist/device/waterdetector.js +4 -2
  53. package/dist/device/waterdetector.js.map +1 -1
  54. package/dist/irdevice/airconditioner.d.ts.map +1 -1
  55. package/dist/irdevice/airconditioner.js +5 -5
  56. package/dist/irdevice/airconditioner.js.map +1 -1
  57. package/dist/irdevice/airpurifier.d.ts.map +1 -1
  58. package/dist/irdevice/airpurifier.js +6 -10
  59. package/dist/irdevice/airpurifier.js.map +1 -1
  60. package/dist/irdevice/camera.d.ts.map +1 -1
  61. package/dist/irdevice/camera.js +3 -5
  62. package/dist/irdevice/camera.js.map +1 -1
  63. package/dist/irdevice/fan.d.ts.map +1 -1
  64. package/dist/irdevice/fan.js +3 -6
  65. package/dist/irdevice/fan.js.map +1 -1
  66. package/dist/irdevice/light.d.ts.map +1 -1
  67. package/dist/irdevice/light.js +7 -13
  68. package/dist/irdevice/light.js.map +1 -1
  69. package/dist/irdevice/other.d.ts.map +1 -1
  70. package/dist/irdevice/other.js +34 -55
  71. package/dist/irdevice/other.js.map +1 -1
  72. package/dist/irdevice/tv.d.ts.map +1 -1
  73. package/dist/irdevice/tv.js +4 -8
  74. package/dist/irdevice/tv.js.map +1 -1
  75. package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
  76. package/dist/irdevice/vacuumcleaner.js +3 -5
  77. package/dist/irdevice/vacuumcleaner.js.map +1 -1
  78. package/dist/irdevice/waterheater.d.ts.map +1 -1
  79. package/dist/irdevice/waterheater.js +3 -5
  80. package/dist/irdevice/waterheater.js.map +1 -1
  81. package/package.json +1 -1
  82. package/src/device/blindtilt.ts +7 -6
  83. package/src/device/bot.ts +31 -21
  84. package/src/device/ceilinglight.ts +4 -3
  85. package/src/device/colorbulb.ts +1 -2
  86. package/src/device/contact.ts +14 -10
  87. package/src/device/device.ts +11 -11
  88. package/src/device/fan.ts +7 -5
  89. package/src/device/hub.ts +9 -6
  90. package/src/device/humidifier.ts +6 -4
  91. package/src/device/iosensor.ts +10 -6
  92. package/src/device/lightstrip.ts +3 -2
  93. package/src/device/lock.ts +12 -8
  94. package/src/device/meter.ts +8 -5
  95. package/src/device/meterplus.ts +9 -6
  96. package/src/device/motion.ts +9 -5
  97. package/src/device/plug.ts +3 -2
  98. package/src/device/robotvacuumcleaner.ts +6 -4
  99. package/src/device/waterdetector.ts +4 -2
  100. package/src/irdevice/airconditioner.ts +5 -6
  101. package/src/irdevice/airpurifier.ts +6 -11
  102. package/src/irdevice/camera.ts +3 -5
  103. package/src/irdevice/fan.ts +3 -7
  104. package/src/irdevice/light.ts +7 -15
  105. package/src/irdevice/other.ts +34 -55
  106. package/src/irdevice/tv.ts +4 -8
  107. package/src/irdevice/vacuumcleaner.ts +3 -5
  108. package/src/irdevice/waterheater.ts +3 -5
package/src/device/hub.ts CHANGED
@@ -52,11 +52,13 @@ export class Hub extends deviceBase {
52
52
  this.TemperatureSensor!.Service = this.accessory.getService(this.hap.Service.TemperatureSensor) as Service;
53
53
  accessory.removeService(this.TemperatureSensor!.Service);
54
54
  } else {
55
+ accessory.context.TemperatureSensor = accessory.context.TemperatureSensor ?? {};
55
56
  this.TemperatureSensor = {
56
- Name: accessory.context.TemperatureSensorName ?? `${accessory.displayName} Temperature Sensor`,
57
+ Name: accessory.context.TemperatureSensor.Name ?? `${accessory.displayName} Temperature Sensor`,
57
58
  Service: accessory.getService(this.hap.Service.TemperatureSensor) ?? this.accessory.addService(this.hap.Service.TemperatureSensor) as Service,
58
59
  CurrentTemperature: accessory.context.CurrentTemperature ?? 0,
59
60
  };
61
+ accessory.context.TemperatureSensor = this.TemperatureSensor as object;
60
62
 
61
63
  // Initialize Temperature Sensor Characteristic
62
64
  this.TemperatureSensor.Service
@@ -72,7 +74,6 @@ export class Hub extends deviceBase {
72
74
  .onGet(() => {
73
75
  return this.TemperatureSensor!.CurrentTemperature;
74
76
  });
75
- accessory.context.TemperatureSensorName = this.TemperatureSensor.Name;
76
77
  }
77
78
 
78
79
  // Initialize Humidity Sensor Service
@@ -81,11 +82,13 @@ export class Hub extends deviceBase {
81
82
  this.HumiditySensor!.Service = this.accessory.getService(this.hap.Service.HumiditySensor) as Service;
82
83
  accessory.removeService(this.HumiditySensor!.Service);
83
84
  } else {
85
+ accessory.context.HumiditySensor = accessory.context.HumiditySensor ?? {};
84
86
  this.HumiditySensor = {
85
- Name: accessory.context.HumiditySensorName ?? `${accessory.displayName} Humidity Sensor`,
87
+ Name: accessory.context.HumiditySensor.Name ?? `${accessory.displayName} Humidity Sensor`,
86
88
  Service: accessory.getService(this.hap.Service.HumiditySensor) ?? this.accessory.addService(this.hap.Service.HumiditySensor) as Service,
87
89
  CurrentRelativeHumidity: accessory.context.CurrentRelativeHumidity ?? 0,
88
90
  };
91
+ accessory.context.HumiditySensor = this.HumiditySensor as object;
89
92
 
90
93
  // Initialize Humidity Sensor Characteristics
91
94
  this.HumiditySensor!.Service
@@ -97,7 +100,6 @@ export class Hub extends deviceBase {
97
100
  .onGet(() => {
98
101
  return this.HumiditySensor!.CurrentRelativeHumidity;
99
102
  });
100
- accessory.context.HumiditySensorName = this.HumiditySensor.Name;
101
103
  }
102
104
 
103
105
  // Initialize Light Sensor Service
@@ -106,11 +108,13 @@ export class Hub extends deviceBase {
106
108
  this.LightSensor!.Service = this.accessory.getService(this.hap.Service.LightSensor) as Service;
107
109
  accessory.removeService(this.LightSensor!.Service);
108
110
  } else {
111
+ accessory.context.LightSensor = accessory.context.LightSensor ?? {};
109
112
  this.LightSensor = {
110
- Name: accessory.context.LightSensorName ?? `${accessory.displayName} Light Sensor`,
113
+ Name: accessory.context.LightSensor.Name ?? `${accessory.displayName} Light Sensor`,
111
114
  Service: accessory.getService(this.hap.Service.LightSensor) ?? this.accessory.addService(this.hap.Service.LightSensor) as Service,
112
115
  CurrentAmbientLightLevel: accessory.context.CurrentAmbientLightLevel ?? 0.0001,
113
116
  };
117
+ accessory.context.LightSensor = this.LightSensor as object;
114
118
 
115
119
  // Initialize Light Sensor Characteristics
116
120
  this.LightSensor!.Service
@@ -122,7 +126,6 @@ export class Hub extends deviceBase {
122
126
  .onGet(() => {
123
127
  return this.LightSensor!.CurrentAmbientLightLevel;
124
128
  });
125
- accessory.context.LightSensorName = this.LightSensor.Name;
126
129
  }
127
130
 
128
131
  // Retrieve initial values and updateHomekit
@@ -48,8 +48,9 @@ export class Humidifier extends deviceBase {
48
48
  this.humidifierUpdateInProgress = false;
49
49
 
50
50
  // Initialize the HumidifierDehumidifier Service
51
+ accessory.context.HumidifierDehumidifier = accessory.context.HumidifierDehumidifier ?? {};
51
52
  this.HumidifierDehumidifier = {
52
- Name: accessory.context.HumidifierDehumidifierName ?? accessory.displayName,
53
+ Name: accessory.context.HumidifierDehumidifier.Name ?? accessory.displayName,
53
54
  Service: accessory.getService(this.hap.Service.HumidifierDehumidifier)
54
55
  ?? accessory.addService(this.hap.Service.HumidifierDehumidifier) as Service,
55
56
  Active: accessory.context.Active ?? this.hap.Characteristic.Active.ACTIVE,
@@ -61,6 +62,7 @@ export class Humidifier extends deviceBase {
61
62
  ?? this.hap.Characteristic.CurrentHumidifierDehumidifierState.INACTIVE,
62
63
  RelativeHumidityHumidifierThreshold: accessory.context.RelativeHumidityHumidifierThreshold ?? 50,
63
64
  };
65
+ accessory.context.HumidifierDehumidifier = this.HumidifierDehumidifier as object;
64
66
 
65
67
  // Initialize the HumidifierDehumidifier Characteristics
66
68
  this.HumidifierDehumidifier.Service
@@ -98,7 +100,6 @@ export class Humidifier extends deviceBase {
98
100
  return this.HumidifierDehumidifier.RelativeHumidityHumidifierThreshold;
99
101
  })
100
102
  .onSet(this.RelativeHumidityHumidifierThresholdSet.bind(this));
101
- accessory.context.HumidifierDehumidifierName = this.HumidifierDehumidifier.Name;
102
103
 
103
104
  // Initialize the Temperature Sensor Service
104
105
  if (device.humidifier?.hide_temperature) {
@@ -106,11 +107,13 @@ export class Humidifier extends deviceBase {
106
107
  this.TemperatureSensor!.Service = this.accessory.getService(this.hap.Service.TemperatureSensor) as Service;
107
108
  accessory.removeService(this.TemperatureSensor!.Service);
108
109
  } else {
110
+ accessory.context.TemperatureSensor = accessory.context.TemperatureSensor ?? {};
109
111
  this.TemperatureSensor = {
110
- Name: accessory.context.TemperatureSensorName ?? `${accessory.displayName} Temperature Sensor`,
112
+ Name: accessory.context.TemperatureSensor.Name ?? `${accessory.displayName} Temperature Sensor`,
111
113
  Service: accessory.getService(this.hap.Service.TemperatureSensor) ?? this.accessory.addService(this.hap.Service.TemperatureSensor) as Service,
112
114
  CurrentTemperature: accessory.context.CurrentTemperature || 30,
113
115
  };
116
+ accessory.context.TemperatureSensor = this.TemperatureSensor as object;
114
117
 
115
118
  // Initialize the Temperature Sensor Characteristics
116
119
  this.TemperatureSensor.Service
@@ -125,7 +128,6 @@ export class Humidifier extends deviceBase {
125
128
  .onGet(() => {
126
129
  return this.TemperatureSensor!.CurrentTemperature;
127
130
  });
128
- accessory.context.TemperatureSensorName = this.TemperatureSensor.Name;
129
131
  }
130
132
 
131
133
  // Retrieve initial values and updateHomekit
@@ -52,13 +52,15 @@ export class IOSensor extends deviceBase {
52
52
  this.doIOSensorUpdate = new Subject();
53
53
  this.ioSensorUpdateInProgress = false;
54
54
 
55
- // Initialize Battery property
55
+ // Initialize Battery Service
56
+ accessory.context.Battery = accessory.context.Battery ?? {};
56
57
  this.Battery = {
57
- Name: accessory.context.BatteryName ?? `${accessory.displayName} Battery`,
58
+ Name: accessory.context.Battery.Name ?? `${accessory.displayName} Battery`,
58
59
  Service: accessory.getService(this.hap.Service.Battery) ?? accessory.addService(this.hap.Service.Battery) as Service,
59
60
  BatteryLevel: accessory.context.BatteryLevel ?? 100,
60
61
  StatusLowBattery: accessory.context.StatusLowBattery ?? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL,
61
62
  };
63
+ accessory.context.Battery = this.Battery as object;
62
64
 
63
65
  // Initialize Battery Characteristics
64
66
  this.Battery.Service
@@ -82,11 +84,13 @@ export class IOSensor extends deviceBase {
82
84
  this.TemperatureSensor!.Service = this.accessory.getService(this.hap.Service.TemperatureSensor) as Service;
83
85
  accessory.removeService(this.TemperatureSensor!.Service);
84
86
  } else {
87
+ accessory.context.TemperatureSensor = accessory.context.TemperatureSensor ?? {};
85
88
  this.TemperatureSensor = {
86
- Name: accessory.context.TemperatureSensorName ?? `${accessory.displayName} Temperature Sensor`,
89
+ Name: accessory.context.TemperatureSensor.Name ?? `${accessory.displayName} Temperature Sensor`,
87
90
  Service: accessory.getService(this.hap.Service.TemperatureSensor) ?? this.accessory.addService(this.hap.Service.TemperatureSensor) as Service,
88
91
  CurrentTemperature: accessory.context.CurrentTemperature ?? 30,
89
92
  };
93
+ accessory.context.TemperatureSensor = this.TemperatureSensor as object;
90
94
 
91
95
  // Initialize Temperature Sensor Characteristics
92
96
  this.TemperatureSensor.Service
@@ -102,7 +106,6 @@ export class IOSensor extends deviceBase {
102
106
  .onGet(() => {
103
107
  return this.TemperatureSensor!.CurrentTemperature;
104
108
  });
105
- accessory.context.TemperatureSensorName = this.TemperatureSensor.Name;
106
109
  }
107
110
 
108
111
  // Initialize Humidity Sensor Service
@@ -111,11 +114,13 @@ export class IOSensor extends deviceBase {
111
114
  this.HumiditySensor!.Service = this.accessory.getService(this.hap.Service.HumiditySensor) as Service;
112
115
  accessory.removeService(this.HumiditySensor!.Service);
113
116
  } else {
117
+ accessory.context.HumiditySensor = accessory.context.HumiditySensor ?? {};
114
118
  this.HumiditySensor = {
115
- Name: accessory.context.HumiditySensorName ?? `${accessory.displayName} Humidity Sensor`,
119
+ Name: accessory.context.HumiditySensor.Name ?? `${accessory.displayName} Humidity Sensor`,
116
120
  Service: accessory.getService(this.hap.Service.HumiditySensor) ?? this.accessory.addService(this.hap.Service.HumiditySensor) as Service,
117
121
  CurrentRelativeHumidity: accessory.context.CurrentRelativeHumidity ?? 50,
118
122
  };
123
+ accessory.context.HumiditySensor = this.HumiditySensor as object;
119
124
 
120
125
  // Initialize Humidity Sensor Characteristics
121
126
  this.HumiditySensor.Service
@@ -127,7 +132,6 @@ export class IOSensor extends deviceBase {
127
132
  .onGet(() => {
128
133
  return this.HumiditySensor!.CurrentRelativeHumidity;
129
134
  });
130
- accessory.context.HumiditySensorName = this.HumiditySensor.Name;
131
135
  }
132
136
 
133
137
  // Retrieve initial values and updateHomekit
@@ -46,8 +46,9 @@ export class StripLight extends deviceBase {
46
46
  this.stripLightUpdateInProgress = false;
47
47
 
48
48
  // Initialize the LightBulb Service
49
+ accessory.context.LightBulb = accessory.context.LightBulb ?? {};
49
50
  this.LightBulb = {
50
- Name: accessory.context.LightBulbName ?? accessory.displayName,
51
+ Name: accessory.context.LightBulb.Name ?? accessory.displayName,
51
52
  Service: accessory.getService(this.hap.Service.Lightbulb) ?? accessory.addService(this.hap.Service.Lightbulb) as Service,
52
53
  On: accessory.context.On ?? false,
53
54
  Hue: accessory.context.Hue ?? 0,
@@ -55,6 +56,7 @@ export class StripLight extends deviceBase {
55
56
  Brightness: accessory.context.Brightness ?? 0,
56
57
  ColorTemperature: accessory.context.ColorTemperature ?? 140,
57
58
  };
59
+ accessory.context.LightBulb = this.LightBulb as object;
58
60
 
59
61
  // Adaptive Lighting
60
62
  if (this.adaptiveLightingShift === -1 && this.accessory.context.adaptiveLighting) {
@@ -137,7 +139,6 @@ export class StripLight extends deviceBase {
137
139
  return this.LightBulb.Saturation;
138
140
  })
139
141
  .onSet(this.SaturationSet.bind(this));
140
- accessory.context.LightBulbName = this.LightBulb.Name;
141
142
 
142
143
  // Retrieve initial values and updateHomekit
143
144
  this.refreshStatus();
@@ -51,12 +51,14 @@ export class Lock extends deviceBase {
51
51
  this.lockUpdateInProgress = false;
52
52
 
53
53
  // Initialize LockMechanism Service
54
+ accessory.context.LockMechanism = accessory.context.LockMechanism ?? {};
54
55
  this.LockMechanism = {
55
- Name: accessory.context.LockMechanismName ?? accessory.displayName,
56
+ Name: accessory.context.LockMechanism.Name ?? accessory.displayName,
56
57
  Service: accessory.getService(this.hap.Service.LockMechanism) ?? accessory.addService(this.hap.Service.LockMechanism) as Service,
57
58
  LockTargetState: accessory.context.LockTargetState ?? this.hap.Characteristic.LockTargetState.SECURED,
58
59
  LockCurrentState: accessory.context.LockCurrentState ?? this.hap.Characteristic.LockCurrentState.SECURED,
59
60
  };
61
+ accessory.context.LockMechanism = this.LockMechanism as object;
60
62
 
61
63
  // Initialize LockMechanism Characteristics
62
64
  this.LockMechanism.Service
@@ -66,15 +68,16 @@ export class Lock extends deviceBase {
66
68
  return this.LockMechanism.LockTargetState;
67
69
  })
68
70
  .onSet(this.LockTargetStateSet.bind(this));
69
- accessory.context.LockMechanismName = this.LockMechanism.Name;
70
71
 
71
72
  // Initialize Battery property
73
+ accessory.context.Battery = accessory.context.Battery ?? {};
72
74
  this.Battery = {
73
- Name: accessory.context.BatteryName ?? `${accessory.displayName} Battery`,
75
+ Name: accessory.context.Battery.Name ?? `${accessory.displayName} Battery`,
74
76
  Service: accessory.getService(this.hap.Service.Battery) ?? accessory.addService(this.hap.Service.Battery) as Service,
75
77
  BatteryLevel: accessory.context.BatteryLevel ?? 100,
76
78
  StatusLowBattery: accessory.context.StatusLowBattery ?? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL,
77
79
  };
80
+ accessory.context.Battery = this.Battery as object;
78
81
 
79
82
  // Initialize Battery Characteristics
80
83
  this.Battery.Service
@@ -90,7 +93,6 @@ export class Lock extends deviceBase {
90
93
  .onGet(() => {
91
94
  return this.Battery.StatusLowBattery;
92
95
  });
93
- accessory.context.BatteryName = this.Battery.Name;
94
96
 
95
97
  // Contact Sensor Service
96
98
  if (device.lock?.hide_contactsensor) {
@@ -98,11 +100,13 @@ export class Lock extends deviceBase {
98
100
  this.ContactSensor!.Service = this.accessory.getService(this.hap.Service.ContactSensor) as Service;
99
101
  accessory.removeService(this.ContactSensor!.Service);
100
102
  } else {
103
+ accessory.context.ContactSensor = accessory.context.ContactSensor ?? {};
101
104
  this.ContactSensor = {
102
- Name: accessory.context.ContactSensorName ?? `${accessory.displayName} Contact Sensor`,
105
+ Name: accessory.context.ContactSensor.Name ?? `${accessory.displayName} Contact Sensor`,
103
106
  Service: accessory.getService(this.hap.Service.ContactSensor) ?? this.accessory.addService(this.hap.Service.ContactSensor) as Service,
104
107
  ContactSensorState: accessory.context.ContactSensorState ?? this.hap.Characteristic.ContactSensorState.CONTACT_DETECTED,
105
108
  };
109
+ accessory.context.ContactSensor = this.ContactSensor as object;
106
110
 
107
111
  // Initialize Contact Sensor Characteristics
108
112
  this.ContactSensor.Service
@@ -112,7 +116,6 @@ export class Lock extends deviceBase {
112
116
  .onGet(() => {
113
117
  return this.ContactSensor!.ContactSensorState;
114
118
  });
115
- accessory.context.ContactSensorName = this.ContactSensor.Name;
116
119
  }
117
120
 
118
121
  // Initialize Latch Button Service
@@ -121,11 +124,13 @@ export class Lock extends deviceBase {
121
124
  this.Switch!.Service = accessory.getService(this.hap.Service.Switch) as Service;
122
125
  accessory.removeService(this.Switch!.Service);
123
126
  } else {
127
+ accessory.context.Switch = accessory.context.Switch ?? {};
124
128
  this.Switch = {
125
- Name: accessory.context.SwitchName ?? `${accessory.displayName} Latch`,
129
+ Name: accessory.context.Switch.Name ?? `${accessory.displayName} Latch`,
126
130
  Service: accessory.getService(this.hap.Service.Switch) ?? accessory.addService(this.hap.Service.Switch) as Service,
127
131
  On: accessory.context.On ?? false,
128
132
  };
133
+ accessory.context.Switch = this.Switch as object;
129
134
 
130
135
  // Initialize Latch Button Characteristics
131
136
  this.Switch.Service
@@ -135,7 +140,6 @@ export class Lock extends deviceBase {
135
140
  return this.Switch!.On;
136
141
  })
137
142
  .onSet(this.OnSet.bind(this));
138
- accessory.context.SwitchName = this.Switch.Name;
139
143
  }
140
144
 
141
145
  // Retrieve initial values and updateHomekit
@@ -48,12 +48,14 @@ export class Meter extends deviceBase {
48
48
  this.meterUpdateInProgress = false;
49
49
 
50
50
  // Initialize Battery Service
51
+ accessory.context.Battery = accessory.context.Battery ?? {};
51
52
  this.Battery = {
52
- Name: accessory.context.BatteryName ?? `${accessory.displayName} Battery`,
53
+ Name: accessory.context.Battery.Name ?? `${accessory.displayName} Battery`,
53
54
  Service: accessory.getService(this.hap.Service.Battery) ?? accessory.addService(this.hap.Service.Battery) as Service,
54
55
  BatteryLevel: accessory.context.BatteryLevel ?? 100,
55
56
  StatusLowBattery: accessory.context.StatusLowBattery ?? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL,
56
57
  };
58
+ accessory.context.Battery = this.Battery as object;
57
59
 
58
60
  // Initialize Battery Characteristics
59
61
  this.Battery.Service
@@ -69,7 +71,6 @@ export class Meter extends deviceBase {
69
71
  .onGet(() => {
70
72
  return this.Battery.StatusLowBattery;
71
73
  });
72
- accessory.context.BatteryName = this.Battery.Name;
73
74
 
74
75
  // Initialize Temperature Sensor Service
75
76
  if (device.meter?.hide_temperature) {
@@ -77,11 +78,13 @@ export class Meter extends deviceBase {
77
78
  this.TemperatureSensor!.Service = this.accessory.getService(this.hap.Service.TemperatureSensor) as Service;
78
79
  accessory.removeService(this.TemperatureSensor!.Service);
79
80
  } else {
81
+ accessory.context.TemperatureSensor = accessory.context.TemperatureSensor ?? {};
80
82
  this.TemperatureSensor = {
81
- Name: accessory.context.TemperatureSensorName ?? `${accessory.displayName} Temperature Sensor`,
83
+ Name: accessory.context.TemperatureSensor.Name ?? `${accessory.displayName} Temperature Sensor`,
82
84
  Service: accessory.getService(this.hap.Service.TemperatureSensor) ?? this.accessory.addService(this.hap.Service.TemperatureSensor) as Service,
83
85
  CurrentTemperature: accessory.context.CurrentTemperature ?? 30,
84
86
  };
87
+ accessory.context.TemperatureSensor = this.TemperatureSensor as object;
85
88
 
86
89
  // Initialize Temperature Sensor Characteristics
87
90
  this.TemperatureSensor.Service
@@ -97,7 +100,6 @@ export class Meter extends deviceBase {
97
100
  .onGet(() => {
98
101
  return this.TemperatureSensor!.CurrentTemperature!;
99
102
  });
100
- accessory.context.TemperatureSensorName = this.TemperatureSensor.Name;
101
103
  }
102
104
  // Initialize Humidity Sensor Service
103
105
  if (device.meter?.hide_humidity) {
@@ -105,11 +107,13 @@ export class Meter extends deviceBase {
105
107
  this.HumiditySensor!.Service = this.accessory.getService(this.hap.Service.HumiditySensor) as Service;
106
108
  accessory.removeService(this.HumiditySensor!.Service);
107
109
  } else {
110
+ accessory.context.HumiditySensor = accessory.context.HumiditySensor ?? {};
108
111
  this.HumiditySensor = {
109
112
  Name: accessory.context.HumiditySensorName ?? `${accessory.displayName} Humidity Sensor`,
110
113
  Service: accessory.getService(this.hap.Service.HumiditySensor) ?? this.accessory.addService(this.hap.Service.HumiditySensor) as Service,
111
114
  CurrentRelativeHumidity: accessory.context.CurrentRelativeHumidity ?? 50,
112
115
  };
116
+ accessory.context.HumiditySensor = this.HumiditySensor as object;
113
117
 
114
118
  // Initialize Humidity Sensor Characteristics
115
119
  this.HumiditySensor!.Service
@@ -121,7 +125,6 @@ export class Meter extends deviceBase {
121
125
  .onGet(() => {
122
126
  return this.HumiditySensor!.CurrentRelativeHumidity!;
123
127
  });
124
- accessory.context.HumiditySensorName = this.HumiditySensor.Name;
125
128
  }
126
129
 
127
130
  // Retrieve initial values and updateHomekit
@@ -52,12 +52,14 @@ export class MeterPlus extends deviceBase {
52
52
  this.meterUpdateInProgress = false;
53
53
 
54
54
  // Initialize Battery Service
55
+ accessory.context.Battery = accessory.context.Battery ?? {};
55
56
  this.Battery = {
56
- Name: accessory.context.BatteryName ?? `${accessory.displayName} Battery`,
57
+ Name: accessory.context.Battery.Name ?? `${accessory.displayName} Battery`,
57
58
  Service: accessory.getService(this.hap.Service.Battery) ?? accessory.addService(this.hap.Service.Battery) as Service,
58
59
  BatteryLevel: accessory.context.BatteryLevel ?? 100,
59
60
  StatusLowBattery: accessory.context.StatusLowBattery ?? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL,
60
61
  };
62
+ accessory.context.Battery = this.Battery as object;
61
63
 
62
64
  // Initialize Battery Characteristics
63
65
  this.Battery.Service
@@ -73,7 +75,6 @@ export class MeterPlus extends deviceBase {
73
75
  .onGet(() => {
74
76
  return this.Battery.StatusLowBattery;
75
77
  });
76
- accessory.context.BatteryName = this.Battery.Name;
77
78
 
78
79
  // Initialize Temperature Sensor Service
79
80
  if (device.meter?.hide_temperature) {
@@ -81,11 +82,13 @@ export class MeterPlus extends deviceBase {
81
82
  this.TemperatureSensor!.Service = this.accessory.getService(this.hap.Service.TemperatureSensor) as Service;
82
83
  accessory.removeService(this.TemperatureSensor!.Service);
83
84
  } else {
85
+ accessory.context.TemperatureSensor = accessory.context.TemperatureSensor ?? {};
84
86
  this.TemperatureSensor = {
85
- Name: accessory.context.TemperatureSensorName ?? `${accessory.displayName} Temperature Sensor`,
87
+ Name: accessory.context.TemperatureSensor.Name ?? `${accessory.displayName} Temperature Sensor`,
86
88
  Service: accessory.getService(this.hap.Service.TemperatureSensor) ?? this.accessory.addService(this.hap.Service.TemperatureSensor) as Service,
87
89
  CurrentTemperature: accessory.context.CurrentTemperature ?? 30,
88
90
  };
91
+ accessory.context.TemperatureSensor = this.TemperatureSensor as object;
89
92
 
90
93
  // Initialize Temperature Sensor Characteristics
91
94
  this.TemperatureSensor.Service
@@ -101,7 +104,6 @@ export class MeterPlus extends deviceBase {
101
104
  .onGet(() => {
102
105
  return this.TemperatureSensor!.CurrentTemperature!;
103
106
  });
104
- accessory.context.TemperatureSensorName = this.TemperatureSensor.Name;
105
107
  }
106
108
  // Initialize Humidity Sensor Service
107
109
  if (device.meter?.hide_humidity) {
@@ -109,11 +111,13 @@ export class MeterPlus extends deviceBase {
109
111
  this.HumiditySensor!.Service = this.accessory.getService(this.hap.Service.HumiditySensor) as Service;
110
112
  accessory.removeService(this.HumiditySensor!.Service);
111
113
  } else {
114
+ accessory.context.HumiditySensor = accessory.context.HumiditySensor ?? {};
112
115
  this.HumiditySensor = {
113
- Name: accessory.context.HumiditySensorName ?? `${accessory.displayName} Humidity Sensor`,
116
+ Name: accessory.context.HumiditySensor.Name ?? `${accessory.displayName} Humidity Sensor`,
114
117
  Service: accessory.getService(this.hap.Service.HumiditySensor) ?? this.accessory.addService(this.hap.Service.HumiditySensor) as Service,
115
118
  CurrentRelativeHumidity: accessory.context.CurrentRelativeHumidity ?? 50,
116
119
  };
120
+ accessory.context.HumiditySensor = this.HumiditySensor as object;
117
121
 
118
122
  // Initialize Humidity Sensor Characteristics
119
123
  this.HumiditySensor!.Service
@@ -125,7 +129,6 @@ export class MeterPlus extends deviceBase {
125
129
  .onGet(() => {
126
130
  return this.HumiditySensor!.CurrentRelativeHumidity!;
127
131
  });
128
- accessory.context.HumiditySensorName = this.HumiditySensor.Name;
129
132
  }
130
133
 
131
134
  // Retrieve initial values and updateHomekit
@@ -52,11 +52,13 @@ export class Motion extends deviceBase {
52
52
  this.motionUbpdateInProgress = false;
53
53
 
54
54
  // Initialize Motion Sensor property
55
+ accessory.context.MotionSensor = accessory.context.MotionSensor ?? {};
55
56
  this.MotionSensor = {
56
- Name: accessory.context.MotionSensorName ?? `${accessory.displayName} Motion Sensor`,
57
+ Name: accessory.context.MotionSensor.Name ?? `${accessory.displayName} Motion Sensor`,
57
58
  Service: accessory.getService(this.hap.Service.MotionSensor) ?? accessory.addService(this.hap.Service.MotionSensor) as Service,
58
59
  MotionDetected: accessory.context.MotionDetected ?? false,
59
60
  };
61
+ accessory.context.MotionSensor = this.MotionSensor as object;
60
62
 
61
63
  // Initialize Motion Sensor Characteristics
62
64
  this.MotionSensor.Service
@@ -69,12 +71,14 @@ export class Motion extends deviceBase {
69
71
  accessory.context.MotionSensorName = this.MotionSensor.Name;
70
72
 
71
73
  // Initialize Battery Service
74
+ accessory.context.Battery = accessory.context.Battery ?? {};
72
75
  this.Battery = {
73
- Name: accessory.context.BatteryName ?? `${accessory.displayName} Battery`,
76
+ Name: accessory.context.Battery.Name ?? `${accessory.displayName} Battery`,
74
77
  Service: accessory.getService(this.hap.Service.Battery) ?? accessory.addService(this.hap.Service.Battery) as Service,
75
78
  BatteryLevel: accessory.context.BatteryLevel ?? 100,
76
79
  StatusLowBattery: accessory.context.StatusLowBattery ?? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL,
77
80
  };
81
+ accessory.context.Battery = this.Battery as object;
78
82
 
79
83
  // Initialize Battery Characteristics
80
84
  this.Battery.Service
@@ -91,7 +95,6 @@ export class Motion extends deviceBase {
91
95
  .onGet(() => {
92
96
  return this.Battery.StatusLowBattery;
93
97
  });
94
- accessory.context.BatteryName = this.Battery.Name;
95
98
 
96
99
  // Initialize Light Sensor Service
97
100
  if (device.motion?.hide_lightsensor) {
@@ -99,11 +102,13 @@ export class Motion extends deviceBase {
99
102
  this.LightSensor!.Service = this.accessory.getService(this.hap.Service.LightSensor) as Service;
100
103
  accessory.removeService(this.LightSensor!.Service);
101
104
  } else {
105
+ accessory.context.LightSensor = accessory.context.LightSensor ?? {};
102
106
  this.LightSensor = {
103
- Name: accessory.context.LightSensorName ?? `${accessory.displayName} Light Sensor`,
107
+ Name: accessory.context.LightSensor.Name ?? `${accessory.displayName} Light Sensor`,
104
108
  Service: accessory.getService(this.hap.Service.LightSensor) ?? this.accessory.addService(this.hap.Service.LightSensor) as Service,
105
109
  CurrentAmbientLightLevel: accessory.context.CurrentAmbientLightLevel ?? 0.0001,
106
110
  };
111
+ accessory.context.LightSensor = this.LightSensor as object;
107
112
 
108
113
  // Initialize LightSensor Characteristics
109
114
  this.LightSensor!.Service
@@ -113,7 +118,6 @@ export class Motion extends deviceBase {
113
118
  .onGet(() => {
114
119
  return this.LightSensor!.CurrentAmbientLightLevel;
115
120
  });
116
- accessory.context.LightSensorName = this.LightSensor.Name;
117
121
  };
118
122
 
119
123
 
@@ -33,11 +33,13 @@ export class Plug extends deviceBase {
33
33
  this.plugUpdateInProgress = false;
34
34
 
35
35
  // Initialize Outlet Service
36
+ accessory.context.Outlet = accessory.context.Outlet ?? {};
36
37
  this.Outlet = {
37
- Name: accessory.context.OutletName ?? accessory.displayName,
38
+ Name: accessory.context.Outlet.Name ?? accessory.displayName,
38
39
  Service: accessory.getService(this.hap.Service.Outlet) ?? accessory.addService(this.hap.Service.Outlet) as Service,
39
40
  On: accessory.context.On || false,
40
41
  };
42
+ accessory.context.Outlet = this.Outlet as object;
41
43
 
42
44
  // Initialize Outlet Characteristics
43
45
  this.Outlet.Service
@@ -47,7 +49,6 @@ export class Plug extends deviceBase {
47
49
  return this.Outlet.On;
48
50
  })
49
51
  .onSet(this.OnSet.bind(this));
50
- accessory.context.OutletName = this.Outlet.Name;
51
52
 
52
53
  // Retrieve initial values and updateHomekit
53
54
  this.refreshStatus();
@@ -44,12 +44,14 @@ export class RobotVacuumCleaner extends deviceBase {
44
44
  this.robotVacuumCleanerUpdateInProgress = false;
45
45
 
46
46
  // Initialize Lightbulb Service
47
+ accessory.context.LightBulb = accessory.context.LightBulb ?? {};
47
48
  this.LightBulb = {
48
- Name: accessory.context.LightBulbName ?? accessory.displayName,
49
+ Name: accessory.context.LightBulb.Name ?? accessory.displayName,
49
50
  Service: accessory.getService(this.hap.Service.Lightbulb) ?? accessory.addService(this.hap.Service.Lightbulb) as Service,
50
51
  On: accessory.context.On ?? false,
51
52
  Brightness: accessory.context.Brightness ?? 0,
52
53
  };
54
+ accessory.context.LightBulb = this.LightBulb as object;
53
55
 
54
56
  // Initialize LightBulb Characteristics
55
57
  this.LightBulb.Service
@@ -74,16 +76,17 @@ export class RobotVacuumCleaner extends deviceBase {
74
76
  return this.LightBulb.Brightness;
75
77
  })
76
78
  .onSet(this.BrightnessSet.bind(this));
77
- accessory.context.LightBulbName = this.LightBulb.Name;
78
79
 
79
80
  // Initialize Battery Service
81
+ accessory.context.Battery = accessory.context.Battery ?? {};
80
82
  this.Battery = {
81
- Name: accessory.context.BatteryName ?? `${accessory.displayName} Battery`,
83
+ Name: accessory.context.Battery.Name ?? `${accessory.displayName} Battery`,
82
84
  Service: accessory.getService(this.hap.Service.Battery) ?? accessory.addService(this.hap.Service.Battery) as Service,
83
85
  BatteryLevel: accessory.context.BatteryLevel ?? 100,
84
86
  StatusLowBattery: accessory.context.StatusLowBattery ?? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL,
85
87
  ChargingState: accessory.context.ChargingState ?? this.hap.Characteristic.ChargingState.NOT_CHARGING,
86
88
  };
89
+ accessory.context.Battery = this.Battery as object;
87
90
 
88
91
  // Initialize Battery Characteristics
89
92
  this.Battery.Service
@@ -104,7 +107,6 @@ export class RobotVacuumCleaner extends deviceBase {
104
107
  .onGet(() => {
105
108
  return this.Battery.ChargingState;
106
109
  });
107
- accessory.context.BatteryName = this.Battery.Name;
108
110
 
109
111
  // Retrieve initial values and updateHomekit
110
112
  this.refreshStatus();
@@ -51,6 +51,7 @@ export class WaterDetector extends deviceBase {
51
51
  this.WaterDetectorUpdateInProgress = false;
52
52
 
53
53
  // Initialize Battery Service
54
+ accessory.context.Battery = accessory.context.Battery ?? {};
54
55
  this.Battery = {
55
56
  Name: accessory.context.Battery.Name ?? `${accessory.displayName} Battery`,
56
57
  Service: accessory.getService(this.hap.Service.Battery) ?? accessory.addService(this.hap.Service.Battery) as Service,
@@ -58,6 +59,7 @@ export class WaterDetector extends deviceBase {
58
59
  StatusLowBattery: accessory.context.StatusLowBattery ?? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL,
59
60
  ChargingState: accessory.context.ChargingState ?? this.hap.Characteristic.ChargingState.NOT_CHARGEABLE,
60
61
  };
62
+ accessory.context.Battery = this.Battery as object;
61
63
 
62
64
  // Initialize Battery Characteristic
63
65
  this.Battery.Service
@@ -73,7 +75,6 @@ export class WaterDetector extends deviceBase {
73
75
  .onGet(() => {
74
76
  return this.Battery.StatusLowBattery;
75
77
  });
76
- accessory.context.Battery.Name = this.Battery.Name;
77
78
 
78
79
  // Initialize Leak Sensor Service
79
80
  if (device.waterdetector?.hide_leak) {
@@ -81,12 +82,14 @@ export class WaterDetector extends deviceBase {
81
82
  this.LeakSensor!.Service = this.accessory.getService(this.hap.Service.LeakSensor) as Service;
82
83
  accessory.removeService(this.LeakSensor!.Service);
83
84
  } else {
85
+ accessory.context.LeakSensor = accessory.context.LeakSensor ?? {};
84
86
  this.LeakSensor = {
85
87
  Name: accessory.context.LeakSensor.Name ?? `${accessory.displayName} Leak Sensor`,
86
88
  Service: accessory.getService(this.hap.Service.LeakSensor) ?? this.accessory.addService(this.hap.Service.LeakSensor) as Service,
87
89
  StatusActive: accessory.context.StatusActive ?? false,
88
90
  LeakDetected: accessory.context.LeakDetected ?? this.hap.Characteristic.LeakDetected.LEAK_NOT_DETECTED,
89
91
  };
92
+ accessory.context.LeakSensor = this.LeakSensor as object;
90
93
 
91
94
  // Initialize LeakSensor Characteristic
92
95
  this.LeakSensor!.Service
@@ -96,7 +99,6 @@ export class WaterDetector extends deviceBase {
96
99
  .onGet(() => {
97
100
  return this.LeakSensor!.LeakDetected;
98
101
  });
99
- accessory.context.LeakSensor.Name = this.LeakSensor.Name;
100
102
  }
101
103
 
102
104
  // Retrieve initial values and updateHomekit
@@ -64,9 +64,7 @@ export class AirConditioner extends irdeviceBase {
64
64
 
65
65
 
66
66
  // Initialize HeaterCooler Service
67
- if (!accessory.context.HeaterCooler) {
68
- accessory.context.HeaterCooler = {};
69
- }
67
+ accessory.context.HeaterCooler = accessory.context.HeaterCooler ?? {};
70
68
  this.HeaterCooler = {
71
69
  Name: accessory.context.HeaterCooler.Name ?? `${accessory.displayName} ${device.remoteType}`,
72
70
  Service: accessory.getService(this.hap.Service.HeaterCooler) ?? accessory.addService(this.hap.Service.HeaterCooler) as Service,
@@ -77,7 +75,7 @@ export class AirConditioner extends irdeviceBase {
77
75
  ThresholdTemperature: accessory.context.ThresholdTemperature ?? 24,
78
76
  RotationSpeed: accessory.context.RotationSpeed ?? 4,
79
77
  };
80
-
78
+ accessory.context.HeaterCooler = this.HeaterCooler as object;
81
79
 
82
80
  this.HeaterCooler.Service
83
81
  .setCharacteristic(this.hap.Characteristic.Name, this.HeaterCooler.Name)
@@ -145,18 +143,19 @@ export class AirConditioner extends irdeviceBase {
145
143
  return await this.RotationSpeedGet();
146
144
  })
147
145
  .onSet(this.RotationSpeedSet.bind(this));
148
- accessory.context.HeaterCooler.Name = this.HeaterCooler.Name;
149
146
 
150
147
  // Initialize HumiditySensor property
151
148
 
152
149
  if (this.device.irair?.meterType && this.device.irair?.meterId) {
153
150
  const meterUuid = this.platform.api.hap.uuid.generate(`${this.device.irair.meterId}-${this.device.irair.meterType}`);
154
151
  this.meter = this.platform.accessories.find((accessory) => accessory.UUID === meterUuid);
152
+ accessory.context.HumiditySensor = accessory.context.HumiditySensor ?? {};
155
153
  this.HumiditySensor = {
156
- Name: this.meter!.displayName,
154
+ Name: accessory.context.HumiditySensor ?? this.meter!.displayName,
157
155
  Service: this.meter!.getService(this.hap.Service.HumiditySensor) ?? this.meter!.addService(this.hap.Service.HumiditySensor) as Service,
158
156
  CurrentRelativeHumidity: this.meter!.context.CurrentRelativeHumidity || 0,
159
157
  };
158
+ accessory.context.HumiditySensor = this.HumiditySensor as object;
160
159
  }
161
160
 
162
161
  if (this.device.irair?.meterType && this.device.irair?.meterId) {