@switchbot/homebridge-switchbot 2.9.0-beta.8 → 2.9.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.
Files changed (137) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/config.schema.json +21 -5
  3. package/dist/device/blindtilt.d.ts +1 -1
  4. package/dist/device/blindtilt.d.ts.map +1 -1
  5. package/dist/device/blindtilt.js +38 -17
  6. package/dist/device/blindtilt.js.map +1 -1
  7. package/dist/device/bot.d.ts +1 -1
  8. package/dist/device/bot.d.ts.map +1 -1
  9. package/dist/device/bot.js +64 -17
  10. package/dist/device/bot.js.map +1 -1
  11. package/dist/device/ceilinglight.d.ts +1 -1
  12. package/dist/device/ceilinglight.d.ts.map +1 -1
  13. package/dist/device/ceilinglight.js +34 -17
  14. package/dist/device/ceilinglight.js.map +1 -1
  15. package/dist/device/colorbulb.d.ts +1 -1
  16. package/dist/device/colorbulb.d.ts.map +1 -1
  17. package/dist/device/colorbulb.js +31 -17
  18. package/dist/device/colorbulb.js.map +1 -1
  19. package/dist/device/contact.d.ts +1 -1
  20. package/dist/device/contact.d.ts.map +1 -1
  21. package/dist/device/contact.js +41 -17
  22. package/dist/device/contact.js.map +1 -1
  23. package/dist/device/curtain.d.ts +1 -1
  24. package/dist/device/curtain.d.ts.map +1 -1
  25. package/dist/device/curtain.js +38 -17
  26. package/dist/device/curtain.js.map +1 -1
  27. package/dist/device/hub.d.ts +8 -9
  28. package/dist/device/hub.d.ts.map +1 -1
  29. package/dist/device/hub.js +172 -55
  30. package/dist/device/hub.js.map +1 -1
  31. package/dist/device/humidifier.d.ts +1 -1
  32. package/dist/device/humidifier.d.ts.map +1 -1
  33. package/dist/device/humidifier.js +37 -17
  34. package/dist/device/humidifier.js.map +1 -1
  35. package/dist/device/iosensor.d.ts +1 -1
  36. package/dist/device/iosensor.d.ts.map +1 -1
  37. package/dist/device/iosensor.js +41 -18
  38. package/dist/device/iosensor.js.map +1 -1
  39. package/dist/device/lightstrip.d.ts +1 -1
  40. package/dist/device/lightstrip.d.ts.map +1 -1
  41. package/dist/device/lightstrip.js +34 -17
  42. package/dist/device/lightstrip.js.map +1 -1
  43. package/dist/device/lock.d.ts +1 -1
  44. package/dist/device/lock.d.ts.map +1 -1
  45. package/dist/device/lock.js +38 -17
  46. package/dist/device/lock.js.map +1 -1
  47. package/dist/device/meter.d.ts +1 -9
  48. package/dist/device/meter.d.ts.map +1 -1
  49. package/dist/device/meter.js +47 -32
  50. package/dist/device/meter.js.map +1 -1
  51. package/dist/device/meterplus.d.ts +4 -7
  52. package/dist/device/meterplus.d.ts.map +1 -1
  53. package/dist/device/meterplus.js +69 -50
  54. package/dist/device/meterplus.js.map +1 -1
  55. package/dist/device/motion.d.ts +1 -1
  56. package/dist/device/motion.d.ts.map +1 -1
  57. package/dist/device/motion.js +38 -17
  58. package/dist/device/motion.js.map +1 -1
  59. package/dist/device/plug.d.ts +1 -1
  60. package/dist/device/plug.d.ts.map +1 -1
  61. package/dist/device/plug.js +35 -17
  62. package/dist/device/plug.js.map +1 -1
  63. package/dist/device/robotvacuumcleaner.d.ts +1 -1
  64. package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
  65. package/dist/device/robotvacuumcleaner.js +35 -17
  66. package/dist/device/robotvacuumcleaner.js.map +1 -1
  67. package/dist/irdevice/airconditioner.d.ts +1 -1
  68. package/dist/irdevice/airconditioner.d.ts.map +1 -1
  69. package/dist/irdevice/airconditioner.js +28 -14
  70. package/dist/irdevice/airconditioner.js.map +1 -1
  71. package/dist/irdevice/airpurifier.d.ts +1 -1
  72. package/dist/irdevice/airpurifier.d.ts.map +1 -1
  73. package/dist/irdevice/airpurifier.js +28 -14
  74. package/dist/irdevice/airpurifier.js.map +1 -1
  75. package/dist/irdevice/camera.d.ts +1 -1
  76. package/dist/irdevice/camera.d.ts.map +1 -1
  77. package/dist/irdevice/camera.js +28 -14
  78. package/dist/irdevice/camera.js.map +1 -1
  79. package/dist/irdevice/fan.d.ts +1 -1
  80. package/dist/irdevice/fan.d.ts.map +1 -1
  81. package/dist/irdevice/fan.js +28 -14
  82. package/dist/irdevice/fan.js.map +1 -1
  83. package/dist/irdevice/light.d.ts +1 -1
  84. package/dist/irdevice/light.d.ts.map +1 -1
  85. package/dist/irdevice/light.js +28 -14
  86. package/dist/irdevice/light.js.map +1 -1
  87. package/dist/irdevice/other.d.ts +1 -1
  88. package/dist/irdevice/other.d.ts.map +1 -1
  89. package/dist/irdevice/other.js +39 -15
  90. package/dist/irdevice/other.js.map +1 -1
  91. package/dist/irdevice/tv.d.ts +1 -1
  92. package/dist/irdevice/tv.d.ts.map +1 -1
  93. package/dist/irdevice/tv.js +28 -14
  94. package/dist/irdevice/tv.js.map +1 -1
  95. package/dist/irdevice/vacuumcleaner.d.ts +1 -1
  96. package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
  97. package/dist/irdevice/vacuumcleaner.js +28 -14
  98. package/dist/irdevice/vacuumcleaner.js.map +1 -1
  99. package/dist/irdevice/waterheater.d.ts +1 -1
  100. package/dist/irdevice/waterheater.d.ts.map +1 -1
  101. package/dist/irdevice/waterheater.js +28 -14
  102. package/dist/irdevice/waterheater.js.map +1 -1
  103. package/dist/platform.d.ts.map +1 -1
  104. package/dist/platform.js +4 -0
  105. package/dist/platform.js.map +1 -1
  106. package/dist/settings.d.ts +1 -0
  107. package/dist/settings.d.ts.map +1 -1
  108. package/dist/settings.js.map +1 -1
  109. package/package.json +11 -11
  110. package/src/device/blindtilt.ts +38 -18
  111. package/src/device/bot.ts +55 -18
  112. package/src/device/ceilinglight.ts +34 -19
  113. package/src/device/colorbulb.ts +31 -18
  114. package/src/device/contact.ts +41 -19
  115. package/src/device/curtain.ts +38 -18
  116. package/src/device/hub.ts +188 -65
  117. package/src/device/humidifier.ts +37 -19
  118. package/src/device/iosensor.ts +41 -20
  119. package/src/device/lightstrip.ts +34 -18
  120. package/src/device/lock.ts +39 -20
  121. package/src/device/meter.ts +48 -40
  122. package/src/device/meterplus.ts +74 -60
  123. package/src/device/motion.ts +38 -20
  124. package/src/device/plug.ts +35 -19
  125. package/src/device/robotvacuumcleaner.ts +35 -18
  126. package/src/irdevice/airconditioner.ts +28 -15
  127. package/src/irdevice/airpurifier.ts +30 -15
  128. package/src/irdevice/camera.ts +30 -15
  129. package/src/irdevice/fan.ts +30 -15
  130. package/src/irdevice/light.ts +30 -15
  131. package/src/irdevice/other.ts +40 -16
  132. package/src/irdevice/tv.ts +30 -15
  133. package/src/irdevice/vacuumcleaner.ts +30 -15
  134. package/src/irdevice/waterheater.ts +30 -15
  135. package/src/platform.ts +4 -0
  136. package/src/settings.ts +1 -0
  137. package/.github/npm-version-script.js +0 -81
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "Homebridge SwitchBot",
3
3
  "name": "@switchbot/homebridge-switchbot",
4
- "version": "2.9.0-beta.8",
4
+ "version": "2.9.0",
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
6
  "author": "SwitchBot <support@wondertechlabs.com> (https://github.com/SwitchBot)",
7
7
  "license": "ISC",
@@ -59,27 +59,27 @@
59
59
  "async-mqtt": "^2.6.3",
60
60
  "crypto-js": "^4.1.1",
61
61
  "fakegato-history": "^0.6.4",
62
- "homebridge-lib": "^6.4.1",
62
+ "homebridge-lib": "^6.5.0",
63
63
  "rxjs": "^7.8.1",
64
- "undici": "^5.23.0"
64
+ "undici": "^5.24.0"
65
65
  },
66
66
  "optionalDependencies": {
67
67
  "@abandonware/bluetooth-hci-socket": "^0.5.3-10",
68
68
  "@abandonware/noble": "^1.9.2-23",
69
- "node-switchbot": "^1.8.2"
69
+ "node-switchbot": "^1.9.0"
70
70
  },
71
71
  "devDependencies": {
72
- "@types/crypto-js": "^4.1.1",
73
- "@types/node": "^20.5.7",
74
- "@typescript-eslint/eslint-plugin": "^6.5.0",
75
- "@typescript-eslint/parser": "^6.5.0",
76
- "eslint": "^8.48.0",
72
+ "@types/crypto-js": "^4.1.2",
73
+ "@types/node": "^20.6.2",
74
+ "@typescript-eslint/eslint-plugin": "^6.7.0",
75
+ "@typescript-eslint/parser": "^6.7.0",
76
+ "eslint": "^8.49.0",
77
77
  "eslint-config-prettier": "9.0.0",
78
78
  "eslint-plugin-prettier": "5.0.0",
79
79
  "homebridge": "^1.6.1",
80
80
  "nodemon": "^3.0.1",
81
- "npm-check-updates": "^16.13.2",
82
- "prettier": "3.0.2",
81
+ "npm-check-updates": "^16.14.3",
82
+ "prettier": "3.0.3",
83
83
  "rimraf": "^5.0.1",
84
84
  "ts-node": "^10.9.1",
85
85
  "typescript": "^5.2.2"
@@ -114,10 +114,20 @@ export class BlindTilt {
114
114
  .getService(this.platform.Service.AccessoryInformation)!
115
115
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'SwitchBot')
116
116
  .setCharacteristic(this.platform.Characteristic.Model, 'W2701600')
117
- .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId)
118
- .setCharacteristic(this.platform.Characteristic.FirmwareRevision, this.setFirmwareRevision(accessory, device))
119
- .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
120
- .updateValue(this.setFirmwareRevision(accessory, device));
117
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId!);
118
+
119
+ if (accessory.context.FirmwareRevision) {
120
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName}`
121
+ + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`);
122
+ accessory
123
+ .getService(this.platform.Service.AccessoryInformation)!
124
+ .setCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
125
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
126
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
127
+ .updateValue(accessory.context.FirmwareRevision);
128
+ } else {
129
+ this.setFirmwareRevision(accessory, device);
130
+ }
121
131
 
122
132
  // get the WindowCovering service if it exists, otherwise create a new WindowCovering service
123
133
  // you can create multiple services for each accessory
@@ -895,8 +905,11 @@ export class BlindTilt {
895
905
  this.mqttPublish('FirmwareRevision', this.FirmwareRevision);
896
906
  }
897
907
  this.accessory.context.FirmwareRevision = this.FirmwareRevision;
898
- this.accessory.getService(this.platform.Service.AccessoryInformation)!
899
- .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
908
+ this.batteryService.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
909
+ this.windowCoveringService.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
910
+ if (!this.device.blindTilt?.hide_lightsensor) {
911
+ this.lightSensorService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
912
+ }
900
913
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} `
901
914
  + `updateCharacteristic FirmwareRevision: ${this.FirmwareRevision}`);
902
915
  }
@@ -1132,23 +1145,30 @@ export class BlindTilt {
1132
1145
  //throw new this.platform.api.hap.HapStatusError(HAPStatus.SERVICE_COMMUNICATION_FAILURE);
1133
1146
  }
1134
1147
 
1135
- setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig): CharacteristicValue {
1136
- this.debugLog(
1137
- `${this.device.deviceType}: ${this.accessory.displayName}` + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`,
1138
- );
1139
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1140
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1148
+ async setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig) {
1149
+ await this.refreshStatus();
1141
1150
  if (device.firmware) {
1142
- this.FirmwareRevision = device.firmware;
1151
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1152
+ accessory.context.FirmwareRevision = device.firmware;
1153
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
1154
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware, FirmwareRevision: ${this.FirmwareRevision}`);
1143
1155
  } else if (device.version) {
1144
- this.FirmwareRevision = device.version;
1145
- } else if (accessory.context.FirmwareRevision) {
1156
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version: ${device.version}`);
1157
+ accessory.context.FirmwareRevision = device.version;
1146
1158
  this.FirmwareRevision = accessory.context.FirmwareRevision;
1159
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version, FirmwareRevision: ${this.FirmwareRevision}`);
1147
1160
  } else {
1148
- this.FirmwareRevision = this.platform.version;
1161
+ this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1162
+ accessory.context.FirmwareRevision = this.platform.version;
1163
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
1164
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version, FirmwareRevision: ${this.FirmwareRevision}`);
1149
1165
  }
1150
- this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
1151
- return this.FirmwareRevision;
1166
+ this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
1167
+ accessory
1168
+ .getService(this.platform.Service.AccessoryInformation)!
1169
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
1170
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
1171
+ .updateValue(this.FirmwareRevision);
1152
1172
  }
1153
1173
 
1154
1174
  async context() {
package/src/device/bot.ts CHANGED
@@ -94,10 +94,20 @@ export class Bot {
94
94
  .getService(this.platform.Service.AccessoryInformation)!
95
95
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'SwitchBot')
96
96
  .setCharacteristic(this.platform.Characteristic.Model, 'SWITCHBOT-BOT-S1')
97
- .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId!)
98
- .setCharacteristic(this.platform.Characteristic.FirmwareRevision, this.setFirmwareRevision(accessory, device))
99
- .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
100
- .updateValue(this.setFirmwareRevision(accessory, device));
97
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId!);
98
+
99
+ if (accessory.context.FirmwareRevision) {
100
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName}`
101
+ + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`);
102
+ accessory
103
+ .getService(this.platform.Service.AccessoryInformation)!
104
+ .setCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
105
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
106
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
107
+ .updateValue(accessory.context.FirmwareRevision);
108
+ } else {
109
+ this.setFirmwareRevision(accessory, device);
110
+ }
101
111
 
102
112
  // deviceType
103
113
  if (this.botDeviceType === 'switch') {
@@ -1037,8 +1047,28 @@ export class Bot {
1037
1047
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} FirmwareRevision: ${this.FirmwareRevision}`);
1038
1048
  } else {
1039
1049
  this.accessory.context.FirmwareRevision = this.FirmwareRevision;
1040
- this.accessory.getService(this.platform.Service.AccessoryInformation)!
1041
- .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1050
+ this.batteryService.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1051
+ if (this.botDeviceType === 'garagedoor') {
1052
+ this.garageDoorService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1053
+ } else if (this.botDeviceType === 'door') {
1054
+ this.doorService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1055
+ } else if (this.botDeviceType === 'window') {
1056
+ this.windowService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1057
+ } else if (this.botDeviceType === 'windowcovering') {
1058
+ this.windowCoveringService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1059
+ } else if (this.botDeviceType === 'lock') {
1060
+ this.lockService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1061
+ } else if (this.botDeviceType === 'faucet') {
1062
+ this.faucetService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1063
+ } else if (this.botDeviceType === 'fan') {
1064
+ this.fanService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1065
+ } else if (this.botDeviceType === 'stateful') {
1066
+ this.statefulProgrammableSwitchService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1067
+ } else if (this.botDeviceType === 'switch') {
1068
+ this.switchService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1069
+ } else {
1070
+ this.outletService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1071
+ }
1042
1072
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} `
1043
1073
  + `updateCharacteristic FirmwareRevision: ${this.FirmwareRevision}`);
1044
1074
  }
@@ -1333,23 +1363,30 @@ export class Bot {
1333
1363
  this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
1334
1364
  }
1335
1365
 
1336
- setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig): CharacteristicValue {
1337
- this.debugLog(
1338
- `${this.device.deviceType}: ${this.accessory.displayName}` + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`,
1339
- );
1340
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1341
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1366
+ async setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig) {
1367
+ await this.refreshStatus();
1342
1368
  if (device.firmware) {
1343
- this.FirmwareRevision = device.firmware;
1369
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1370
+ accessory.context.FirmwareRevision = device.firmware;
1371
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
1372
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware, FirmwareRevision: ${this.FirmwareRevision}`);
1344
1373
  } else if (device.version) {
1345
- this.FirmwareRevision = device.version;
1346
- } if (accessory.context.FirmwareRevision) {
1374
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version: ${device.version}`);
1375
+ accessory.context.FirmwareRevision = device.version;
1347
1376
  this.FirmwareRevision = accessory.context.FirmwareRevision;
1377
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version, FirmwareRevision: ${this.FirmwareRevision}`);
1348
1378
  } else {
1349
- this.FirmwareRevision = this.platform.version;
1379
+ this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1380
+ accessory.context.FirmwareRevision = this.platform.version;
1381
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
1382
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version, FirmwareRevision: ${this.FirmwareRevision}`);
1350
1383
  }
1351
- this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
1352
- return this.FirmwareRevision;
1384
+ this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
1385
+ accessory
1386
+ .getService(this.platform.Service.AccessoryInformation)!
1387
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
1388
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
1389
+ .updateValue(this.FirmwareRevision);
1353
1390
  }
1354
1391
 
1355
1392
  async deviceType(device: device & devicesConfig): Promise<void> {
@@ -88,10 +88,20 @@ export class CeilingLight {
88
88
  .getService(this.platform.Service.AccessoryInformation)!
89
89
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'SwitchBot')
90
90
  .setCharacteristic(this.platform.Characteristic.Model, this.model(device))
91
- .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId!)
92
- .setCharacteristic(this.platform.Characteristic.FirmwareRevision, this.setFirmwareRevision(accessory, device))
93
- .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
94
- .updateValue(this.setFirmwareRevision(accessory, device));
91
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId!);
92
+
93
+ if (accessory.context.FirmwareRevision) {
94
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName}`
95
+ + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`);
96
+ accessory
97
+ .getService(this.platform.Service.AccessoryInformation)!
98
+ .setCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
99
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
100
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
101
+ .updateValue(accessory.context.FirmwareRevision);
102
+ } else {
103
+ this.setFirmwareRevision(accessory, device);
104
+ }
95
105
 
96
106
  // get the Lightbulb service if it exists, otherwise create a new Lightbulb service
97
107
  // you can create multiple services for each accessory
@@ -852,8 +862,7 @@ export class CeilingLight {
852
862
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} FirmwareRevision: ${this.FirmwareRevision}`);
853
863
  } else {
854
864
  this.accessory.context.FirmwareRevision = this.FirmwareRevision;
855
- this.accessory.getService(this.platform.Service.AccessoryInformation)!
856
- .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
865
+ this.lightBulbService.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
857
866
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} `
858
867
  + `updateCharacteristic FirmwareRevision: ${this.FirmwareRevision}`);
859
868
  }
@@ -1013,24 +1022,30 @@ export class CeilingLight {
1013
1022
  this.lightBulbService.updateCharacteristic(this.platform.Characteristic.ColorTemperature, e);
1014
1023
  }
1015
1024
 
1016
- setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig): CharacteristicValue {
1017
-
1018
- this.debugLog(
1019
- `${this.device.deviceType}: ${this.accessory.displayName}` + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`,
1020
- );
1021
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1022
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1025
+ async setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig) {
1026
+ await this.refreshStatus();
1023
1027
  if (device.firmware) {
1024
- this.FirmwareRevision = device.firmware;
1028
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1029
+ accessory.context.FirmwareRevision = device.firmware;
1030
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
1031
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware, FirmwareRevision: ${this.FirmwareRevision}`);
1025
1032
  } else if (device.version) {
1026
- this.FirmwareRevision = device.version;
1027
- } else if (accessory.context.FirmwareRevision) {
1033
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version: ${device.version}`);
1034
+ accessory.context.FirmwareRevision = device.version;
1028
1035
  this.FirmwareRevision = accessory.context.FirmwareRevision;
1036
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version, FirmwareRevision: ${this.FirmwareRevision}`);
1029
1037
  } else {
1030
- this.FirmwareRevision = this.platform.version;
1038
+ this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1039
+ accessory.context.FirmwareRevision = this.platform.version;
1040
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
1041
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version, FirmwareRevision: ${this.FirmwareRevision}`);
1031
1042
  }
1032
- this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
1033
- return this.FirmwareRevision;
1043
+ this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
1044
+ accessory
1045
+ .getService(this.platform.Service.AccessoryInformation)!
1046
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
1047
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
1048
+ .updateValue(this.FirmwareRevision);
1034
1049
  }
1035
1050
 
1036
1051
  async context() {
@@ -94,10 +94,20 @@ export class ColorBulb {
94
94
  .getService(this.platform.Service.AccessoryInformation)!
95
95
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'SwitchBot')
96
96
  .setCharacteristic(this.platform.Characteristic.Model, 'W1401400')
97
- .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId!)
98
- .setCharacteristic(this.platform.Characteristic.FirmwareRevision, this.setFirmwareRevision(accessory, device))
99
- .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
100
- .updateValue(this.setFirmwareRevision(accessory, device));
97
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId!);
98
+
99
+ if (accessory.context.FirmwareRevision) {
100
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName}`
101
+ + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`);
102
+ accessory
103
+ .getService(this.platform.Service.AccessoryInformation)!
104
+ .setCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
105
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
106
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
107
+ .updateValue(accessory.context.FirmwareRevision);
108
+ } else {
109
+ this.setFirmwareRevision(accessory, device);
110
+ }
101
111
 
102
112
  // get the Lightbulb service if it exists, otherwise create a new Lightbulb service
103
113
  // you can create multiple services for each accessory
@@ -1019,8 +1029,7 @@ export class ColorBulb {
1019
1029
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} FirmwareRevision: ${this.FirmwareRevision}`);
1020
1030
  } else {
1021
1031
  this.accessory.context.FirmwareRevision = this.FirmwareRevision;
1022
- this.accessory.getService(this.platform.Service.AccessoryInformation)!
1023
- .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1032
+ this.lightBulbService.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
1024
1033
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} `
1025
1034
  + `updateCharacteristic FirmwareRevision: ${this.FirmwareRevision}`);
1026
1035
  }
@@ -1180,26 +1189,30 @@ export class ColorBulb {
1180
1189
  this.lightBulbService.updateCharacteristic(this.platform.Characteristic.ColorTemperature, e);
1181
1190
  }
1182
1191
 
1183
- setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig): CharacteristicValue {
1184
- this.debugLog(
1185
- `${this.device.deviceType}: ${this.accessory.displayName}` + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`,
1186
- );
1187
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1188
- this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version: ${device.version}`);
1189
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1192
+ async setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig) {
1193
+ await this.refreshStatus();
1190
1194
  if (device.firmware) {
1195
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1191
1196
  accessory.context.FirmwareRevision = device.firmware;
1192
1197
  this.FirmwareRevision = accessory.context.FirmwareRevision;
1198
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware, FirmwareRevision: ${this.FirmwareRevision}`);
1193
1199
  } else if (device.version) {
1200
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version: ${device.version}`);
1194
1201
  accessory.context.FirmwareRevision = device.version;
1195
1202
  this.FirmwareRevision = accessory.context.FirmwareRevision;
1196
- } if (accessory.context.FirmwareRevision) {
1197
- this.FirmwareRevision = accessory.context.FirmwareRevision;
1203
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version, FirmwareRevision: ${this.FirmwareRevision}`);
1198
1204
  } else {
1199
- this.FirmwareRevision = this.platform.version;
1205
+ this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1206
+ accessory.context.FirmwareRevision = this.platform.version;
1207
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
1208
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version, FirmwareRevision: ${this.FirmwareRevision}`);
1200
1209
  }
1201
- this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
1202
- return this.FirmwareRevision;
1210
+ this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
1211
+ accessory
1212
+ .getService(this.platform.Service.AccessoryInformation)!
1213
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
1214
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
1215
+ .updateValue(this.FirmwareRevision);
1203
1216
  }
1204
1217
 
1205
1218
  async context() {
@@ -83,10 +83,20 @@ export class Contact {
83
83
  .getService(this.platform.Service.AccessoryInformation)!
84
84
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'SwitchBot')
85
85
  .setCharacteristic(this.platform.Characteristic.Model, 'W1201500')
86
- .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId!)
87
- .setCharacteristic(this.platform.Characteristic.FirmwareRevision, this.setFirmwareRevision(accessory, device))
88
- .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
89
- .updateValue(this.setFirmwareRevision(accessory, device));
86
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId!);
87
+
88
+ if (accessory.context.FirmwareRevision) {
89
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName}`
90
+ + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`);
91
+ accessory
92
+ .getService(this.platform.Service.AccessoryInformation)!
93
+ .setCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
94
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
95
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
96
+ .updateValue(accessory.context.FirmwareRevision);
97
+ } else {
98
+ this.setFirmwareRevision(accessory, device);
99
+ }
90
100
 
91
101
  // get the Contact service if it exists, otherwise create a new Contact service
92
102
  // you can create multiple services for each accessory
@@ -460,8 +470,14 @@ export class Contact {
460
470
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} FirmwareRevision: ${this.FirmwareRevision}`);
461
471
  } else {
462
472
  this.accessory.context.FirmwareRevision = this.FirmwareRevision;
463
- this.accessory.getService(this.platform.Service.AccessoryInformation)!
464
- .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
473
+ this.batteryService.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
474
+ this.contactSensorservice.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
475
+ if (!this.device.contact?.hide_motionsensor) {
476
+ this.motionService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
477
+ }
478
+ if (!this.device.contact?.hide_lightsensor) {
479
+ this.lightSensorService!.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
480
+ }
465
481
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} `
466
482
  + `updateCharacteristic FirmwareRevision: ${this.FirmwareRevision}`);
467
483
  }
@@ -596,24 +612,30 @@ export class Contact {
596
612
  this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
597
613
  }
598
614
 
599
- setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig): CharacteristicValue {
600
-
601
- this.debugLog(
602
- `${this.device.deviceType}: ${this.accessory.displayName}` + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`,
603
- );
604
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
605
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
615
+ async setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig) {
616
+ await this.refreshStatus();
606
617
  if (device.firmware) {
607
- this.FirmwareRevision = device.firmware;
618
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
619
+ accessory.context.FirmwareRevision = device.firmware;
620
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
621
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware, FirmwareRevision: ${this.FirmwareRevision}`);
608
622
  } else if (device.version) {
609
- this.FirmwareRevision = device.version;
610
- } else if (accessory.context.FirmwareRevision) {
623
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version: ${device.version}`);
624
+ accessory.context.FirmwareRevision = device.version;
611
625
  this.FirmwareRevision = accessory.context.FirmwareRevision;
626
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version, FirmwareRevision: ${this.FirmwareRevision}`);
612
627
  } else {
613
- this.FirmwareRevision = this.platform.version;
628
+ this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
629
+ accessory.context.FirmwareRevision = this.platform.version;
630
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
631
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version, FirmwareRevision: ${this.FirmwareRevision}`);
614
632
  }
615
- this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
616
- return this.FirmwareRevision;
633
+ this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
634
+ accessory
635
+ .getService(this.platform.Service.AccessoryInformation)!
636
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
637
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
638
+ .updateValue(this.FirmwareRevision);
617
639
  }
618
640
 
619
641
  async context() {
@@ -102,10 +102,20 @@ export class Curtain {
102
102
  .getService(this.platform.Service.AccessoryInformation)!
103
103
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'SwitchBot')
104
104
  .setCharacteristic(this.platform.Characteristic.Model, 'W0701600')
105
- .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId)
106
- .setCharacteristic(this.platform.Characteristic.FirmwareRevision, this.setFirmwareRevision(accessory, device))
107
- .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
108
- .updateValue(this.setFirmwareRevision(accessory, device));
105
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId!);
106
+
107
+ if (accessory.context.FirmwareRevision) {
108
+ this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName}`
109
+ + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`);
110
+ accessory
111
+ .getService(this.platform.Service.AccessoryInformation)!
112
+ .setCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
113
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
114
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
115
+ .updateValue(accessory.context.FirmwareRevision);
116
+ } else {
117
+ this.setFirmwareRevision(accessory, device);
118
+ }
109
119
 
110
120
  // get the WindowCovering service if it exists, otherwise create a new WindowCovering service
111
121
  // you can create multiple services for each accessory
@@ -873,8 +883,11 @@ export class Curtain {
873
883
  this.mqttPublish('FirmwareRevision', this.FirmwareRevision);
874
884
  }
875
885
  this.accessory.context.FirmwareRevision = this.FirmwareRevision;
876
- this.accessory.getService(this.platform.Service.AccessoryInformation)!
877
- .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
886
+ this.batteryService.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
887
+ this.windowCoveringService.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
888
+ if (this.device.curtain?.hide_lightsensor) {
889
+ this.windowCoveringService.updateCharacteristic(this.platform.Characteristic.FirmwareRevision, this.FirmwareRevision);
890
+ }
878
891
  this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} `
879
892
  + `updateCharacteristic FirmwareRevision: ${this.FirmwareRevision}`);
880
893
  }
@@ -1109,23 +1122,30 @@ export class Curtain {
1109
1122
  //throw new this.platform.api.hap.HapStatusError(HAPStatus.SERVICE_COMMUNICATION_FAILURE);
1110
1123
  }
1111
1124
 
1112
- setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig): CharacteristicValue {
1113
- this.debugLog(
1114
- `${this.device.deviceType}: ${this.accessory.displayName}` + ` accessory.context.FirmwareRevision: ${accessory.context.FirmwareRevision}`,
1115
- );
1116
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1117
- this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1125
+ async setFirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig) {
1126
+ await this.refreshStatus();
1118
1127
  if (device.firmware) {
1119
- this.FirmwareRevision = device.firmware;
1128
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
1129
+ accessory.context.FirmwareRevision = device.firmware;
1130
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
1131
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware, FirmwareRevision: ${this.FirmwareRevision}`);
1120
1132
  } else if (device.version) {
1121
- this.FirmwareRevision = device.version;
1122
- } if (accessory.context.FirmwareRevision) {
1133
+ this.warnLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version: ${device.version}`);
1134
+ accessory.context.FirmwareRevision = device.version;
1123
1135
  this.FirmwareRevision = accessory.context.FirmwareRevision;
1136
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} device.version, FirmwareRevision: ${this.FirmwareRevision}`);
1124
1137
  } else {
1125
- this.FirmwareRevision = this.platform.version;
1138
+ this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
1139
+ accessory.context.FirmwareRevision = this.platform.version;
1140
+ this.FirmwareRevision = accessory.context.FirmwareRevision;
1141
+ this.errorLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version, FirmwareRevision: ${this.FirmwareRevision}`);
1126
1142
  }
1127
- this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
1128
- return this.FirmwareRevision;
1143
+ this.infoLog(`${this.device.deviceType}: ${this.accessory.displayName} setFirmwareRevision: ${this.FirmwareRevision}`);
1144
+ accessory
1145
+ .getService(this.platform.Service.AccessoryInformation)!
1146
+ .updateCharacteristic(this.platform.Characteristic.FirmwareRevision, accessory.context.FirmwareRevision)
1147
+ .getCharacteristic(this.platform.Characteristic.FirmwareRevision)
1148
+ .updateValue(this.FirmwareRevision);
1129
1149
  }
1130
1150
 
1131
1151
  async context() {