homebridge-yoto 0.0.38 → 0.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/accessory.js +17 -20
- package/lib/platform.js +8 -0
- package/package.json +1 -1
package/lib/accessory.js
CHANGED
|
@@ -950,14 +950,11 @@ export class YotoPlayerAccessory {
|
|
|
950
950
|
|
|
951
951
|
const normalizedPercent = Math.max(0, Math.min(Math.round(requestedPercent), 100))
|
|
952
952
|
const requestedSteps = Math.round((normalizedPercent / 100) * 16)
|
|
953
|
-
const
|
|
954
|
-
? deviceModel.status.maxVolume
|
|
955
|
-
: 16
|
|
956
|
-
const steps = Math.max(0, Math.min(Math.round(requestedSteps), maxVolumeSteps))
|
|
953
|
+
const steps = Math.max(0, Math.min(Math.round(requestedSteps), 16))
|
|
957
954
|
const resultPercent = Math.round((steps / 16) * 100)
|
|
958
955
|
this.#log.debug(
|
|
959
956
|
LOG_PREFIX.ACCESSORY,
|
|
960
|
-
`[${this.#device.name}] Set volume raw=${value} normalizedPercent=${normalizedPercent} requestedSteps=${requestedSteps} -> steps=${steps} percent=${resultPercent}
|
|
957
|
+
`[${this.#device.name}] Set volume raw=${value} normalizedPercent=${normalizedPercent} requestedSteps=${requestedSteps} -> steps=${steps} percent=${resultPercent}`
|
|
961
958
|
)
|
|
962
959
|
|
|
963
960
|
// Track last non-zero volume for unmute
|
|
@@ -1035,8 +1032,8 @@ export class YotoPlayerAccessory {
|
|
|
1035
1032
|
async getOnlineStatus () {
|
|
1036
1033
|
const { Characteristic } = this.#platform
|
|
1037
1034
|
return this.#deviceModel.status.isOnline
|
|
1038
|
-
? Characteristic.ContactSensorState.
|
|
1039
|
-
: Characteristic.ContactSensorState.
|
|
1035
|
+
? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED
|
|
1036
|
+
: Characteristic.ContactSensorState.CONTACT_DETECTED
|
|
1040
1037
|
}
|
|
1041
1038
|
|
|
1042
1039
|
// ==================== Battery Characteristic Handlers ====================
|
|
@@ -1450,7 +1447,7 @@ export class YotoPlayerAccessory {
|
|
|
1450
1447
|
const { Characteristic } = this.#platform
|
|
1451
1448
|
const status = this.#deviceModel.status
|
|
1452
1449
|
const isActive = status.nightlightMode !== 'off'
|
|
1453
|
-
return isActive ? Characteristic.ContactSensorState.
|
|
1450
|
+
return isActive ? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED : Characteristic.ContactSensorState.CONTACT_DETECTED
|
|
1454
1451
|
}
|
|
1455
1452
|
|
|
1456
1453
|
/**
|
|
@@ -1463,7 +1460,7 @@ export class YotoPlayerAccessory {
|
|
|
1463
1460
|
const isDay = status.dayMode === 'day'
|
|
1464
1461
|
const isActive = status.nightlightMode !== 'off'
|
|
1465
1462
|
const isShowing = isDay && isActive
|
|
1466
|
-
return isShowing ? Characteristic.ContactSensorState.
|
|
1463
|
+
return isShowing ? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED : Characteristic.ContactSensorState.CONTACT_DETECTED
|
|
1467
1464
|
}
|
|
1468
1465
|
|
|
1469
1466
|
/**
|
|
@@ -1476,7 +1473,7 @@ export class YotoPlayerAccessory {
|
|
|
1476
1473
|
const isNight = status.dayMode === 'night'
|
|
1477
1474
|
const isActive = status.nightlightMode !== 'off'
|
|
1478
1475
|
const isShowing = isNight && isActive
|
|
1479
|
-
return isShowing ? Characteristic.ContactSensorState.
|
|
1476
|
+
return isShowing ? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED : Characteristic.ContactSensorState.CONTACT_DETECTED
|
|
1480
1477
|
}
|
|
1481
1478
|
|
|
1482
1479
|
// ==================== Card Slot ContactSensor Getter ====================
|
|
@@ -1489,7 +1486,7 @@ export class YotoPlayerAccessory {
|
|
|
1489
1486
|
const { Characteristic } = this.#platform
|
|
1490
1487
|
const status = this.#deviceModel.status
|
|
1491
1488
|
const hasCard = status.cardInsertionState !== 'none'
|
|
1492
|
-
return hasCard ? Characteristic.ContactSensorState.
|
|
1489
|
+
return hasCard ? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED : Characteristic.ContactSensorState.CONTACT_DETECTED
|
|
1493
1490
|
}
|
|
1494
1491
|
|
|
1495
1492
|
// ==================== Night Mode ContactSensor Getter ====================
|
|
@@ -1503,8 +1500,8 @@ export class YotoPlayerAccessory {
|
|
|
1503
1500
|
const status = this.#deviceModel.status
|
|
1504
1501
|
const isNightMode = status.dayMode === 'night'
|
|
1505
1502
|
return isNightMode
|
|
1506
|
-
? Characteristic.ContactSensorState.
|
|
1507
|
-
: Characteristic.ContactSensorState.
|
|
1503
|
+
? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED
|
|
1504
|
+
: Characteristic.ContactSensorState.CONTACT_DETECTED
|
|
1508
1505
|
}
|
|
1509
1506
|
|
|
1510
1507
|
// ==================== Sleep Timer Switch Getter/Setter ====================
|
|
@@ -1765,8 +1762,8 @@ export class YotoPlayerAccessory {
|
|
|
1765
1762
|
this.onlineStatusService
|
|
1766
1763
|
.getCharacteristic(Characteristic.ContactSensorState)
|
|
1767
1764
|
.updateValue(isOnline
|
|
1768
|
-
? Characteristic.ContactSensorState.
|
|
1769
|
-
: Characteristic.ContactSensorState.
|
|
1765
|
+
? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED
|
|
1766
|
+
: Characteristic.ContactSensorState.CONTACT_DETECTED)
|
|
1770
1767
|
}
|
|
1771
1768
|
|
|
1772
1769
|
// Update TemperatureSensor (temperature reading)
|
|
@@ -1846,7 +1843,7 @@ export class YotoPlayerAccessory {
|
|
|
1846
1843
|
const isActive = status.nightlightMode !== 'off'
|
|
1847
1844
|
this.nightlightActiveService
|
|
1848
1845
|
.getCharacteristic(Characteristic.ContactSensorState)
|
|
1849
|
-
.updateValue(isActive ? Characteristic.ContactSensorState.
|
|
1846
|
+
.updateValue(isActive ? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED : Characteristic.ContactSensorState.CONTACT_DETECTED)
|
|
1850
1847
|
}
|
|
1851
1848
|
|
|
1852
1849
|
if (this.dayNightlightActiveService) {
|
|
@@ -1855,7 +1852,7 @@ export class YotoPlayerAccessory {
|
|
|
1855
1852
|
const isShowing = isDay && isActive
|
|
1856
1853
|
this.dayNightlightActiveService
|
|
1857
1854
|
.getCharacteristic(Characteristic.ContactSensorState)
|
|
1858
|
-
.updateValue(isShowing ? Characteristic.ContactSensorState.
|
|
1855
|
+
.updateValue(isShowing ? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED : Characteristic.ContactSensorState.CONTACT_DETECTED)
|
|
1859
1856
|
}
|
|
1860
1857
|
|
|
1861
1858
|
if (this.nightNightlightActiveService) {
|
|
@@ -1864,7 +1861,7 @@ export class YotoPlayerAccessory {
|
|
|
1864
1861
|
const isShowing = isNight && isActive
|
|
1865
1862
|
this.nightNightlightActiveService
|
|
1866
1863
|
.getCharacteristic(Characteristic.ContactSensorState)
|
|
1867
|
-
.updateValue(isShowing ? Characteristic.ContactSensorState.
|
|
1864
|
+
.updateValue(isShowing ? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED : Characteristic.ContactSensorState.CONTACT_DETECTED)
|
|
1868
1865
|
}
|
|
1869
1866
|
}
|
|
1870
1867
|
|
|
@@ -1882,7 +1879,7 @@ export class YotoPlayerAccessory {
|
|
|
1882
1879
|
|
|
1883
1880
|
this.cardSlotService
|
|
1884
1881
|
.getCharacteristic(Characteristic.ContactSensorState)
|
|
1885
|
-
.updateValue(hasCard ? Characteristic.ContactSensorState.
|
|
1882
|
+
.updateValue(hasCard ? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED : Characteristic.ContactSensorState.CONTACT_DETECTED)
|
|
1886
1883
|
}
|
|
1887
1884
|
|
|
1888
1885
|
/**
|
|
@@ -1899,7 +1896,7 @@ export class YotoPlayerAccessory {
|
|
|
1899
1896
|
|
|
1900
1897
|
this.nightModeService
|
|
1901
1898
|
.getCharacteristic(Characteristic.ContactSensorState)
|
|
1902
|
-
.updateValue(isNightMode ? Characteristic.ContactSensorState.
|
|
1899
|
+
.updateValue(isNightMode ? Characteristic.ContactSensorState.CONTACT_NOT_DETECTED : Characteristic.ContactSensorState.CONTACT_DETECTED)
|
|
1903
1900
|
}
|
|
1904
1901
|
|
|
1905
1902
|
/**
|
package/lib/platform.js
CHANGED
|
@@ -188,11 +188,19 @@ export class YotoPlatform {
|
|
|
188
188
|
this.log.info(`Device offline: ${deviceId}${reason}`)
|
|
189
189
|
})
|
|
190
190
|
|
|
191
|
+
/**
|
|
192
|
+
* @param {string} deviceId
|
|
193
|
+
* @returns {string}
|
|
194
|
+
*/
|
|
191
195
|
const getDeviceLabel = (deviceId) => {
|
|
192
196
|
const deviceName = this.yotoAccount?.getDevice(deviceId)?.device?.name
|
|
193
197
|
return deviceName || deviceId
|
|
194
198
|
}
|
|
195
199
|
|
|
200
|
+
/**
|
|
201
|
+
* @param {{ status?: Record<string, unknown> } | null | undefined} message
|
|
202
|
+
* @returns {string}
|
|
203
|
+
*/
|
|
196
204
|
const formatLegacyStatusFields = (message) => {
|
|
197
205
|
const status = message?.status
|
|
198
206
|
if (!status || typeof status !== 'object') return ''
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-yoto",
|
|
3
3
|
"description": "Control your Yoto players through Apple HomeKit with real-time MQTT updates",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.39",
|
|
5
5
|
"author": "Bret Comnes <bcomnes@gmail.com> (https://bret.io)",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/bcomnes/homebridge-yoto/issues"
|