Skip to content

Commit 08a164e

Browse files
Solves issue with deviceRefreshStatus method usage (#1217)
## ♻️ Current situation As reported in the ticket #1209 (comment) the update of the parameters of some sensors connected to hub 2 does not seem to work correctly. I extended the explanation in this comment in that thread: #1209 (comment) To report the information here too: The problem seems to be that the response obtained from the status of a device is destructured by recovering only the body, thus losing the statusCode, subsequently the method that verifies the response from the status code returns false, not finding the data present in the variable `deviceStatus` ```ts const response = await this.deviceRefreshStatus() const deviceStatus: any = response.body // ... if (await this.successfulStatusCodes(deviceStatus)) { // This cant check the statusCode cause it's not present in the `response.body` but in the `response.statusCode` // ... ``` ## 💡 Proposed solution Change the usage of data obtained from the `pushChangeRequest` and `deviceRefreshStatus` methods. ## ⚙️ Release Notes - Solves issue with status code check from API responses in some cases. ## ➕ Additional Information *If applicable, provide additional context in this section.* ### Testing *Which tests were added? Which existing tests were adapted/changed? Which situations are covered, and what edge cases are missing?* ### Reviewer Nudging It is probably easier to review starting from the `src/device/device.ts` file and then review the other changes which are very similar to each other. -- I apologize if this is not the correct way to open a PR or if there are other inaccuracies. Thank you very much and good work 😄
1 parent ab23ec5 commit 08a164e

31 files changed

Lines changed: 62 additions & 116 deletions

src/device/blindtilt.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -516,8 +516,7 @@ export class BlindTilt extends deviceBase {
516516
async openAPIRefreshStatus(): Promise<void> {
517517
this.debugLog('openAPIRefreshStatus')
518518
try {
519-
const response = await this.deviceRefreshStatus()
520-
const deviceStatus: any = response.body
519+
const deviceStatus = await this.deviceRefreshStatus<blindTiltStatus>()
521520
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
522521
if (await this.successfulStatusCodes(deviceStatus)) {
523522
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -652,8 +651,7 @@ export class BlindTilt extends deviceBase {
652651
}
653652
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
654653
try {
655-
const response = await this.pushChangeRequest(bodyChange)
656-
const deviceStatus: any = response.body
654+
const deviceStatus = await this.pushChangeRequest(bodyChange)
657655
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
658656
if (await this.successfulStatusCodes(deviceStatus)) {
659657
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)

src/device/bot.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,8 +432,7 @@ export class Bot extends deviceBase {
432432
async openAPIRefreshStatus(): Promise<void> {
433433
this.debugLog('openAPIRefreshStatus')
434434
try {
435-
const response = await this.deviceRefreshStatus()
436-
const deviceStatus: any = response.body
435+
const deviceStatus = await this.deviceRefreshStatus<botStatus>()
437436
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
438437
if (await this.successfulStatusCodes(deviceStatus)) {
439438
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -597,8 +596,7 @@ export class Bot extends deviceBase {
597596
}
598597
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
599598
try {
600-
const response = await this.pushChangeRequest(bodyChange)
601-
const deviceStatus: any = response.body
599+
const deviceStatus = await this.pushChangeRequest(bodyChange)
602600
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
603601
if (await this.successfulStatusCodes(deviceStatus)) {
604602
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)

src/device/ceilinglight.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -342,8 +342,7 @@ export class CeilingLight extends deviceBase {
342342
async openAPIRefreshStatus(): Promise<void> {
343343
this.debugLog('openAPIRefreshStatus')
344344
try {
345-
const response = await this.deviceRefreshStatus()
346-
const deviceStatus: any = response.body
345+
const deviceStatus = await this.deviceRefreshStatus<ceilingLightStatus | ceilingLightProStatus>()
347346
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
348347
if (await this.successfulStatusCodes(deviceStatus)) {
349348
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -484,8 +483,7 @@ export class CeilingLight extends deviceBase {
484483
}
485484
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
486485
try {
487-
const response = await this.pushChangeRequest(bodyChange)
488-
const deviceStatus: any = response.body
486+
const deviceStatus = await this.pushChangeRequest(bodyChange)
489487
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
490488
if (await this.successfulStatusCodes(deviceStatus)) {
491489
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -516,8 +514,7 @@ export class CeilingLight extends deviceBase {
516514
}
517515
this.debugLog(`(pushHueSaturationChanges) SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
518516
try {
519-
const response = await this.pushChangeRequest(bodyChange)
520-
const deviceStatus: any = response.body
517+
const deviceStatus = await this.pushChangeRequest(bodyChange)
521518
this.debugLog(`(pushHueSaturationChanges) statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
522519
if (await this.successfulStatusCodes(deviceStatus)) {
523520
this.debugSuccessLog(`(pushHueSaturationChanges) statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -546,8 +543,7 @@ export class CeilingLight extends deviceBase {
546543
}
547544
this.debugLog(`(pushColorTemperatureChanges) SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
548545
try {
549-
const response = await this.pushChangeRequest(bodyChange)
550-
const deviceStatus: any = response.body
546+
const deviceStatus = await this.pushChangeRequest(bodyChange)
551547
this.debugLog(`(pushColorTemperatureChanges) statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
552548
if (await this.successfulStatusCodes(deviceStatus)) {
553549
this.debugSuccessLog(`(pushColorTemperatureChanges) statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -574,8 +570,7 @@ export class CeilingLight extends deviceBase {
574570
}
575571
this.debugLog(`(pushBrightnessChanges) SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
576572
try {
577-
const response = await this.pushChangeRequest(bodyChange)
578-
const deviceStatus: any = response.body
573+
const deviceStatus = await this.pushChangeRequest(bodyChange)
579574
this.debugLog(`(pushBrightnessChanges) statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
580575
if (await this.successfulStatusCodes(deviceStatus)) {
581576
this.debugSuccessLog(`(pushBrightnessChanges) statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)

src/device/colorbulb.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -377,8 +377,7 @@ export class ColorBulb extends deviceBase {
377377
async openAPIRefreshStatus(): Promise<void> {
378378
this.debugLog('openAPIRefreshStatus')
379379
try {
380-
const response = await this.deviceRefreshStatus()
381-
const deviceStatus: any = response.body
380+
const deviceStatus = await this.deviceRefreshStatus<colorBulbStatus>()
382381
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
383382
if (await this.successfulStatusCodes(deviceStatus)) {
384383
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -646,8 +645,7 @@ export class ColorBulb extends deviceBase {
646645
}
647646
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
648647
try {
649-
const response = await this.pushChangeRequest(bodyChange)
650-
const deviceStatus: any = response.body
648+
const deviceStatus = await this.pushChangeRequest(bodyChange)
651649
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
652650
if (await this.successfulStatusCodes(deviceStatus)) {
653651
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -677,8 +675,7 @@ export class ColorBulb extends deviceBase {
677675
}
678676
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
679677
try {
680-
const response = await this.pushChangeRequest(bodyChange)
681-
const deviceStatus: any = response.body
678+
const deviceStatus = await this.pushChangeRequest(bodyChange)
682679
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
683680
if (await this.successfulStatusCodes(deviceStatus)) {
684681
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -707,8 +704,7 @@ export class ColorBulb extends deviceBase {
707704
}
708705
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
709706
try {
710-
const response = await this.pushChangeRequest(bodyChange)
711-
const deviceStatus: any = response.body
707+
const deviceStatus = await this.pushChangeRequest(bodyChange)
712708
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
713709
if (await this.successfulStatusCodes(deviceStatus)) {
714710
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -735,8 +731,7 @@ export class ColorBulb extends deviceBase {
735731
}
736732
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
737733
try {
738-
const response = await this.pushChangeRequest(bodyChange)
739-
const deviceStatus: any = response.body
734+
const deviceStatus = await this.pushChangeRequest(bodyChange)
740735
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
741736
if (await this.successfulStatusCodes(deviceStatus)) {
742737
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)

src/device/contact.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,8 +358,7 @@ export class Contact extends deviceBase {
358358
async openAPIRefreshStatus(): Promise<void> {
359359
this.debugLog('openAPIRefreshStatus')
360360
try {
361-
const response = await this.deviceRefreshStatus()
362-
const deviceStatus: any = response.body
361+
const deviceStatus = await this.deviceRefreshStatus<contactSensorStatus>()
363362
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
364363
if (await this.successfulStatusCodes(deviceStatus)) {
365364
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)

src/device/curtain.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -332,8 +332,8 @@ export class Curtain extends deviceBase {
332332
filename: `${hostname().split('.')[0]}_${this.device.bleMac}_persist.json`,
333333
})
334334
const motion: Service
335-
= this.accessory.getService(this.hap.Service.MotionSensor)
336-
|| this.accessory.addService(this.hap.Service.MotionSensor, 'Motion')
335+
= this.accessory.getService(this.hap.Service.MotionSensor)
336+
|| this.accessory.addService(this.hap.Service.MotionSensor, 'Motion')
337337
motion.addOptionalCharacteristic(this.platform.eve.Characteristics.LastActivation)
338338
motion.getCharacteristic(this.platform.eve.Characteristics.LastActivation).onGet(() => {
339339
const lastActivation = this.accessory.context.lastActivation
@@ -512,8 +512,7 @@ export class Curtain extends deviceBase {
512512
async openAPIRefreshStatus(): Promise<void> {
513513
this.debugLog('openAPIRefreshStatus')
514514
try {
515-
const { body } = await this.deviceRefreshStatus()
516-
const deviceStatus: any = body
515+
const deviceStatus = await this.deviceRefreshStatus<curtainStatus>()
517516
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
518517
if (await this.successfulStatusCodes(deviceStatus)) {
519518
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -673,8 +672,7 @@ export class Curtain extends deviceBase {
673672
}
674673
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
675674
try {
676-
const response = await this.pushChangeRequest(bodyChange)
677-
const deviceStatus: any = response.body
675+
const deviceStatus = await this.pushChangeRequest(bodyChange)
678676
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
679677
if (await this.successfulStatusCodes(deviceStatus)) {
680678
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)

src/device/device.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -367,17 +367,17 @@ export abstract class deviceBase {
367367
}
368368
}
369369

370-
async pushChangeRequest(bodyChange: bodyChange): Promise<{ body: pushResponse['body'], statusCode: pushResponse['statusCode'] }> {
370+
async pushChangeRequest<T extends pushResponse['body']>(bodyChange: bodyChange): Promise<{ body: T, statusCode: pushResponse['statusCode'] }> {
371371
const { response, statusCode } = await this.platform.retryCommand(this.device, bodyChange, this.deviceMaxRetries, this.deviceDelayBetweenRetries)
372372
return { body: response, statusCode }
373373
}
374374

375-
async deviceRefreshStatus(): Promise<{ body: deviceStatus, statusCode: deviceStatusRequest['statusCode'] }> {
375+
async deviceRefreshStatus<T extends deviceStatus>(): Promise<{ body: T, statusCode: deviceStatusRequest['statusCode'] }> {
376376
const { response, statusCode } = await this.platform.retryRequest(this.device, this.deviceMaxRetries, this.deviceDelayBetweenRetries)
377377
return { body: response, statusCode }
378378
}
379379

380-
async successfulStatusCodes(deviceStatus: deviceStatusRequest) {
380+
async successfulStatusCodes<T extends { statusCode: number }>(deviceStatus: T) {
381381
return (deviceStatus.statusCode === 200 || deviceStatus.statusCode === 100)
382382
}
383383

src/device/fan.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -380,8 +380,7 @@ export class Fan extends deviceBase {
380380
async openAPIRefreshStatus(): Promise<void> {
381381
this.debugLog('openAPIRefreshStatus')
382382
try {
383-
const response = await this.deviceRefreshStatus()
384-
const deviceStatus: any = response.body
383+
const deviceStatus = await this.deviceRefreshStatus<batteryCirculatorFanStatus>()
385384
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
386385
if (await this.successfulStatusCodes(deviceStatus)) {
387386
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -516,8 +515,7 @@ export class Fan extends deviceBase {
516515
}
517516
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
518517
try {
519-
const response = await this.pushChangeRequest(bodyChange)
520-
const deviceStatus: any = response.body
518+
const deviceStatus = await this.pushChangeRequest(bodyChange)
521519
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
522520
if (await this.successfulStatusCodes(deviceStatus)) {
523521
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -544,8 +542,7 @@ export class Fan extends deviceBase {
544542
}
545543
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
546544
try {
547-
const response = await this.pushChangeRequest(bodyChange)
548-
const deviceStatus: any = response.body
545+
const deviceStatus = await this.pushChangeRequest(bodyChange)
549546
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
550547
if (await this.successfulStatusCodes(deviceStatus)) {
551548
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -573,8 +570,7 @@ export class Fan extends deviceBase {
573570
}
574571
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
575572
try {
576-
const response = await this.pushChangeRequest(bodyChange)
577-
const deviceStatus: any = response.body
573+
const deviceStatus = await this.pushChangeRequest(bodyChange)
578574
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
579575
if (await this.successfulStatusCodes(deviceStatus)) {
580576
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)

src/device/hub.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,7 @@ export class Hub extends deviceBase {
347347
async openAPIRefreshStatus(): Promise<void> {
348348
this.debugLog('openAPIRefreshStatus')
349349
try {
350-
const response = await this.deviceRefreshStatus()
351-
const deviceStatus: any = response.body
350+
const deviceStatus = await this.deviceRefreshStatus<hub2Status>()
352351
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
353352
if (await this.successfulStatusCodes(deviceStatus)) {
354353
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)

src/device/humidifier.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -377,8 +377,7 @@ export class Humidifier extends deviceBase {
377377
async openAPIRefreshStatus(): Promise<void> {
378378
this.debugLog('openAPIRefreshStatus')
379379
try {
380-
const response = await this.deviceRefreshStatus()
381-
const deviceStatus: any = response.body
380+
const deviceStatus = await this.deviceRefreshStatus<humidifierStatus | humidifier2Status>()
382381
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
383382
if (await this.successfulStatusCodes(deviceStatus)) {
384383
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -487,8 +486,7 @@ export class Humidifier extends deviceBase {
487486
}
488487
this.debugLog(`SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
489488
try {
490-
const response = await this.pushChangeRequest(bodyChange)
491-
const deviceStatus: any = response.body
489+
const deviceStatus = await this.pushChangeRequest(bodyChange)
492490
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
493491
if (await this.successfulStatusCodes(deviceStatus)) {
494492
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -521,8 +519,7 @@ export class Humidifier extends deviceBase {
521519
}
522520
this.debugLog(`pushAutoChanges, SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
523521
try {
524-
const response = await this.pushChangeRequest(bodyChange)
525-
const deviceStatus: any = response.body
522+
const deviceStatus = await this.pushChangeRequest(bodyChange)
526523
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
527524
if (await this.successfulStatusCodes(deviceStatus)) {
528525
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
@@ -553,8 +550,7 @@ export class Humidifier extends deviceBase {
553550
}
554551
this.debugLog(`pushActiveChanges, SwitchBot OpenAPI bodyChange: ${JSON.stringify(bodyChange)}`)
555552
try {
556-
const response = await this.pushChangeRequest(bodyChange)
557-
const deviceStatus: any = response.body
553+
const deviceStatus = await this.pushChangeRequest(bodyChange)
558554
this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)
559555
if (await this.successfulStatusCodes(deviceStatus)) {
560556
this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`)

0 commit comments

Comments
 (0)