Skip to content

Commit

Permalink
tweaks to processing mqtt
Browse files Browse the repository at this point in the history
  • Loading branch information
dkerr64 committed Jul 25, 2024
1 parent c8318e3 commit b77ad28
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 23 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"displayName": "Homebridge YoLink",
"name": "homebridge-yolink",
"version": "1.5.8-beta.5",
"version": "1.5.8-beta.6",
"description": "Connect to YoLink.",
"license": "Apache-2.0",
"repository": {
Expand Down
46 changes: 24 additions & 22 deletions src/valveDevice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,9 +163,9 @@ async function handleGet(this: YoLinkPlatformAccessory, type: string, devSensor
? platform.api.hap.Characteristic.Active.ACTIVE
: platform.api.hap.Characteristic.Active.INACTIVE);
case 'thermo':
return (device.data?.temperature);
return (device.data.temperature);
case 'leak':
return ((device.data?.alarm?.leak)
return ((device.data.alarm?.leak)
? platform.api.hap.Characteristic.LeakDetected.LEAK_DETECTED
: platform.api.hap.Characteristic.LeakDetected.LEAK_NOT_DETECTED);
case 'flowing':
Expand Down Expand Up @@ -216,14 +216,14 @@ async function handleGetBlocking(this: YoLinkPlatformAccessory, type: string, de
this.logDeviceState(device, `Valve (${devSensor}): ${device.data.state.valve}, Battery: ${device.data.battery}`);
break;
case 'thermo':
rc = device.data?.temperature;
this.logDeviceState(device, `Valve (${devSensor}): ${device.data?.temperature}, Battery: ${device.data.battery}`);
rc = device.data.temperature;
this.logDeviceState(device, `Valve (${devSensor}): ${device.data.temperature}, Battery: ${device.data.battery}`);
break;
case 'leak':
rc = (device.data?.alarm?.leak)
rc = (device.data.alarm?.leak)
? platform.api.hap.Characteristic.LeakDetected.LEAK_DETECTED
: platform.api.hap.Characteristic.LeakDetected.LEAK_NOT_DETECTED;
this.logDeviceState(device, `Valve (${devSensor}): ${device.data?.alarm?.leak}, Battery: ${device.data.battery}`);
this.logDeviceState(device, `Valve (${devSensor}): ${device.data.alarm?.leak}, Battery: ${device.data.battery}`);
break;
case 'flowing':
if (Object.prototype.hasOwnProperty.call(device.data.state, 'waterFlowing')) {
Expand Down Expand Up @@ -506,46 +506,48 @@ export async function mqttValveDevice(this: YoLinkPlatformAccessory, message): P
}
// Merge received data into existing data object
Object.assign(device.data, message.data);
if (Object.prototype.hasOwnProperty.call(message.data.state, 'valve')) {
if (Object.prototype.hasOwnProperty.call(device.data.state, 'valve')) {
// WaterMeterController...
this.logDeviceState(device, `Valve: ${message.data.state.valve}, Water flowing: ${message.data.state?.waterFlowing},` +
` Battery: ${message.data.battery} (MQTT: ${message.event})`);
this.logDeviceState(device, `Valve: ${device.data.state.valve}, Water flowing: ${device.data.state.waterFlowing},` +
` Battery: ${device.data.battery} (MQTT: ${message.event})`);
this.valveService
.updateCharacteristic(platform.Characteristic.Active, (message.data.state.valve === 'open')
.updateCharacteristic(platform.Characteristic.Active, (device.data.state.valve === 'open')
? platform.api.hap.Characteristic.Active.ACTIVE
: platform.api.hap.Characteristic.Active.INACTIVE);
if (Object.prototype.hasOwnProperty.call(message.data.state, 'waterFlowing')) {
if (Object.prototype.hasOwnProperty.call(device.data.state, 'waterFlowing')) {
this.valveService
.updateCharacteristic(platform.Characteristic.InUse, (message.data.state.waterFlowing)
.updateCharacteristic(platform.Characteristic.InUse, (device.data.state.waterFlowing)
? platform.api.hap.Characteristic.InUse.IN_USE
: platform.api.hap.Characteristic.InUse.NOT_IN_USE);
} else {
this.valveService
.updateCharacteristic(platform.Characteristic.InUse, (message.data.state.valve === 'open')
.updateCharacteristic(platform.Characteristic.InUse, (device.data.state.valve === 'open')
? platform.api.hap.Characteristic.InUse.IN_USE
: platform.api.hap.Characteristic.InUse.NOT_IN_USE);
}
this.thermoService
?.updateCharacteristic(platform.Characteristic.CurrentTemperature, message.data?.temperature);
?.updateCharacteristic(platform.Characteristic.CurrentTemperature, device.data.temperature);
this.leakService
?.updateCharacteristic(platform.Characteristic.LeakDetected, (device.data?.alarm?.leak)
?.updateCharacteristic(platform.Characteristic.LeakDetected, (device.data.alarm?.leak)
? platform.api.hap.Characteristic.LeakDetected.LEAK_DETECTED
: platform.api.hap.Characteristic.LeakDetected.LEAK_NOT_DETECTED);

this.valveService
.updateCharacteristic(platform.Characteristic.StatusFault, (device.data.alarm?.valveError)
? platform.api.hap.Characteristic.StatusFault.GENERAL_FAULT
: platform.api.hap.Characteristic.StatusFault.NO_FAULT);
} else {
// Manipulator...
this.logDeviceState(device, `Valve: ${message.data.state}, Battery: ${message.data.battery} (MQTT: ${message.event})`);
this.logDeviceState(device, `Valve: ${device.data.state}, Battery: ${device.data.battery} (MQTT: ${message.event})`);
this.valveService
.updateCharacteristic(platform.Characteristic.Active, (message.data.state === 'open')
.updateCharacteristic(platform.Characteristic.Active, (device.data.state === 'open')
? platform.api.hap.Characteristic.Active.ACTIVE
: platform.api.hap.Characteristic.Active.INACTIVE)
.updateCharacteristic(platform.Characteristic.InUse, (message.data.state === 'open')
.updateCharacteristic(platform.Characteristic.InUse, (device.data.state === 'open')
? platform.api.hap.Characteristic.InUse.IN_USE
: platform.api.hap.Characteristic.InUse.NOT_IN_USE)
.updateCharacteristic(platform.Characteristic.StatusFault, false);
.updateCharacteristic(platform.Characteristic.StatusFault,
platform.api.hap.Characteristic.StatusFault.NO_FAULT);
}
this.valveService
.updateCharacteristic(platform.Characteristic.StatusFault, false);
break;
case 'setTimeZone':
// nothing to update in HomeKit
Expand Down

0 comments on commit b77ad28

Please sign in to comment.