homebridge-smarthq-client 1.0.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.
- package/LICENSE +21 -0
- package/Readme.md +138 -0
- package/config.schema.json +146 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/platform.d.ts +40 -0
- package/dist/platform.js +243 -0
- package/dist/platform.js.map +1 -0
- package/dist/refrigerator/controlLock.d.ts +19 -0
- package/dist/refrigerator/controlLock.js +85 -0
- package/dist/refrigerator/controlLock.js.map +1 -0
- package/dist/refrigerator/convertibleDrawer.d.ts +27 -0
- package/dist/refrigerator/convertibleDrawer.js +317 -0
- package/dist/refrigerator/convertibleDrawer.js.map +1 -0
- package/dist/refrigerator/dispenserLight.d.ts +19 -0
- package/dist/refrigerator/dispenserLight.js +85 -0
- package/dist/refrigerator/dispenserLight.js.map +1 -0
- package/dist/refrigerator/energy.d.ts +19 -0
- package/dist/refrigerator/energy.js +93 -0
- package/dist/refrigerator/energy.js.map +1 -0
- package/dist/refrigerator/freezer.d.ts +41 -0
- package/dist/refrigerator/freezer.js +188 -0
- package/dist/refrigerator/freezer.js.map +1 -0
- package/dist/refrigerator/iceMaker.d.ts +19 -0
- package/dist/refrigerator/iceMaker.js +81 -0
- package/dist/refrigerator/iceMaker.js.map +1 -0
- package/dist/refrigerator/interiorLight.d.ts +21 -0
- package/dist/refrigerator/interiorLight.js +100 -0
- package/dist/refrigerator/interiorLight.js.map +1 -0
- package/dist/refrigerator/refrigerator.d.ts +41 -0
- package/dist/refrigerator/refrigerator.js +204 -0
- package/dist/refrigerator/refrigerator.js.map +1 -0
- package/dist/refrigerator/refrigeratorAlerts.d.ts +36 -0
- package/dist/refrigerator/refrigeratorAlerts.js +204 -0
- package/dist/refrigerator/refrigeratorAlerts.js.map +1 -0
- package/dist/refrigerator/sabbathMode.d.ts +20 -0
- package/dist/refrigerator/sabbathMode.js +91 -0
- package/dist/refrigerator/sabbathMode.js.map +1 -0
- package/dist/refrigerator/temperatureUnits.d.ts +21 -0
- package/dist/refrigerator/temperatureUnits.js +147 -0
- package/dist/refrigerator/temperatureUnits.js.map +1 -0
- package/dist/refrigerator/turboCoolMode.d.ts +23 -0
- package/dist/refrigerator/turboCoolMode.js +134 -0
- package/dist/refrigerator/turboCoolMode.js.map +1 -0
- package/dist/refrigerator/waterFilter.d.ts +19 -0
- package/dist/refrigerator/waterFilter.js +89 -0
- package/dist/refrigerator/waterFilter.js.map +1 -0
- package/dist/refrigeratorServices.d.ts +5 -0
- package/dist/refrigeratorServices.js +54 -0
- package/dist/refrigeratorServices.js.map +1 -0
- package/dist/settings.d.ts +12 -0
- package/dist/settings.js +13 -0
- package/dist/settings.js.map +1 -0
- package/dist/smartHqApi.d.ts +29 -0
- package/dist/smartHqApi.js +267 -0
- package/dist/smartHqApi.js.map +1 -0
- package/dist/smarthq-types.d.ts +29 -0
- package/dist/smarthq-types.js +2 -0
- package/dist/smarthq-types.js.map +1 -0
- package/eslint.config.js +12 -0
- package/images/homebridge.svg +1 -0
- package/package.json +61 -0
- package/src/@types/homebridge-lib.d.ts +14 -0
- package/src/index.ts +11 -0
- package/src/platform.ts +300 -0
- package/src/refrigerator/controlLock.ts +103 -0
- package/src/refrigerator/convertibleDrawer.ts +381 -0
- package/src/refrigerator/dispenserLight.ts +103 -0
- package/src/refrigerator/energy.ts +106 -0
- package/src/refrigerator/freezer.ts +227 -0
- package/src/refrigerator/iceMaker.ts +100 -0
- package/src/refrigerator/interiorLight.ts +118 -0
- package/src/refrigerator/refrigerator.ts +241 -0
- package/src/refrigerator/refrigeratorAlerts.ts +228 -0
- package/src/refrigerator/sabbathMode.ts +111 -0
- package/src/refrigerator/temperatureUnits.ts +178 -0
- package/src/refrigerator/turboCoolMode.ts +164 -0
- package/src/refrigerator/waterFilter.ts +107 -0
- package/src/refrigeratorServices.ts +60 -0
- package/src/settings.ts +14 -0
- package/src/smartHqApi.ts +305 -0
- package/src/smarthq-types.ts +31 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { SmartHqApi } from '../smartHqApi.js';
|
|
2
|
+
/**
|
|
3
|
+
* Platform Accessory
|
|
4
|
+
* An instance of this class is created for each accessory your platform registers
|
|
5
|
+
* Each accessory may expose multiple services of different service types.
|
|
6
|
+
*/
|
|
7
|
+
export class EnergySensor {
|
|
8
|
+
platform;
|
|
9
|
+
accessory;
|
|
10
|
+
deviceServices;
|
|
11
|
+
deviceId;
|
|
12
|
+
smartHqApi;
|
|
13
|
+
log;
|
|
14
|
+
prevKwhReading = 0;
|
|
15
|
+
constructor(platform, accessory, deviceServices, deviceId) {
|
|
16
|
+
this.platform = platform;
|
|
17
|
+
this.accessory = accessory;
|
|
18
|
+
this.deviceServices = deviceServices;
|
|
19
|
+
this.deviceId = deviceId;
|
|
20
|
+
this.platform = platform;
|
|
21
|
+
this.accessory = accessory;
|
|
22
|
+
this.deviceServices = deviceServices;
|
|
23
|
+
this.deviceId = deviceId;
|
|
24
|
+
this.log = platform.log;
|
|
25
|
+
this.smartHqApi = new SmartHqApi(this.platform);
|
|
26
|
+
//=====================================================================================
|
|
27
|
+
// Check to see if the device has any supported Energy Sensor services
|
|
28
|
+
// If not, then don't add a service for device that doesn't support it
|
|
29
|
+
//=====================================================================================
|
|
30
|
+
if (!this.platform.deviceSupportsThisService(this.deviceServices, 'cloud.smarthq.device.meter', 'cloud.smarthq.service.meter', 'cloud.smarthq.domain.energy')) {
|
|
31
|
+
this.log.info('No supported Energy Sensor services found for device: ' + this.accessory.displayName);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this.platform.debug('green', 'Adding an Energy Sensor');
|
|
35
|
+
//=====================================================================================
|
|
36
|
+
// create a new water FilterMaintenance service for the Refrigerator
|
|
37
|
+
// This works in Homebridge and HomeKit has a native FilterMaintenance service type but the Home app does not implement it yet
|
|
38
|
+
// so no sensor/accessory will show up in the Home app for this service type.
|
|
39
|
+
//=====================================================================================
|
|
40
|
+
const displayName = "Watts/hr";
|
|
41
|
+
const energySensor = this.accessory.getService(displayName)
|
|
42
|
+
|| this.accessory.addService(this.platform.Service.TemperatureSensor, displayName, 'energy-2');
|
|
43
|
+
energySensor.addOptionalCharacteristic(this.platform.Characteristic.ConfiguredName);
|
|
44
|
+
energySensor.setCharacteristic(this.platform.Characteristic.ConfiguredName, displayName);
|
|
45
|
+
const energyCurrent = energySensor.getCharacteristic(this.platform.Characteristic.CurrentTemperature);
|
|
46
|
+
//=====================================================================================
|
|
47
|
+
// Now modify the properties for each characteristic to make the temperature sensor
|
|
48
|
+
// function as an energy readout in kWh
|
|
49
|
+
//=====================================================================================
|
|
50
|
+
try {
|
|
51
|
+
energyCurrent.setProps({
|
|
52
|
+
unit: 'kWh',
|
|
53
|
+
minValue: -30.0,
|
|
54
|
+
maxValue: 50000000.0,
|
|
55
|
+
minStep: 1.0
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.platform.debug('blue', 'Error setting Energy sensor properties: ' + error);
|
|
60
|
+
}
|
|
61
|
+
//energySensor.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
62
|
+
// .onGet(this.getEnergyChange.bind(this));
|
|
63
|
+
//=====================================================================================
|
|
64
|
+
// Poll every 1800 seconds for new energy data
|
|
65
|
+
//=====================================================================================
|
|
66
|
+
setInterval(() => {
|
|
67
|
+
this.getEnergyChange().then(temp => {
|
|
68
|
+
energySensor.getCharacteristic(this.platform.Characteristic.CurrentTemperature).updateValue(temp);
|
|
69
|
+
});
|
|
70
|
+
}, 30 * 60 * 1000);
|
|
71
|
+
}
|
|
72
|
+
//=====================================================================================
|
|
73
|
+
async getEnergyChange() {
|
|
74
|
+
let kwhReading = 0;
|
|
75
|
+
for (const service of this.deviceServices) {
|
|
76
|
+
if (service.serviceDeviceType === 'cloud.smarthq.device.meter'
|
|
77
|
+
&& service.serviceType === 'cloud.smarthq.service.meter') {
|
|
78
|
+
const state = await this.smartHqApi.getServiceState(this.deviceId, service.serviceId);
|
|
79
|
+
if (state?.meterValue == null) {
|
|
80
|
+
this.platform.debug('blue', 'No state.meterValue returned from getEnergyChange state');
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
kwhReading = state?.meterValue;
|
|
84
|
+
const intervalDelta = kwhReading - this.prevKwhReading;
|
|
85
|
+
kwhReading = (intervalDelta * 2 - 32) / 1.8; // Interval is 30 minutes so double to get hourly rate
|
|
86
|
+
this.prevKwhReading = state?.meterValue;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return kwhReading; // Interval is 30 minutes so double to get hourly rate
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=energy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"energy.js","sourceRoot":"","sources":["../../src/refrigerator/energy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CharacteristicValue, PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { SmartHqPlatform } from '../platform.js';
|
|
3
|
+
import { DevService } from '../smarthq-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Platform Accessory
|
|
6
|
+
* An instance of this class is created for each accessory your platform registers
|
|
7
|
+
* Each accessory may expose multiple services of different service types.
|
|
8
|
+
*/
|
|
9
|
+
export declare class Freezer {
|
|
10
|
+
private readonly platform;
|
|
11
|
+
private readonly accessory;
|
|
12
|
+
readonly deviceServices: DevService[];
|
|
13
|
+
readonly deviceId: string;
|
|
14
|
+
private freezerTargetTemperature;
|
|
15
|
+
private readonly smartHqApi;
|
|
16
|
+
private log;
|
|
17
|
+
constructor(platform: SmartHqPlatform, accessory: PlatformAccessory, deviceServices: DevService[], deviceId: string);
|
|
18
|
+
getFreezerTemperature(): Promise<CharacteristicValue>;
|
|
19
|
+
setFreezerTemperature(value: CharacteristicValue): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Handle requests to get the current value of the "Current Heating Cooling State" characteristic
|
|
22
|
+
*/
|
|
23
|
+
getCurrentHeatingCoolingState(): number;
|
|
24
|
+
/**
|
|
25
|
+
* Handle requests to get the current value of the "Target Heating Cooling State" characteristic
|
|
26
|
+
*/
|
|
27
|
+
setCurrentHeatingCoolingState(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Handle requests to set the "Target Heating Cooling State" characteristic
|
|
30
|
+
*/
|
|
31
|
+
setTargetHeatingCoolingState(value: CharacteristicValue): number;
|
|
32
|
+
/**
|
|
33
|
+
* Handle requests to get the current value of the "Target Temperature" characteristic
|
|
34
|
+
*/
|
|
35
|
+
getFreezerTargetTemperature(): number;
|
|
36
|
+
handleTemperatureDisplayUnitsGet(): number;
|
|
37
|
+
/**
|
|
38
|
+
* Handle requests to set the "Temperature Display Units" characteristic
|
|
39
|
+
*/
|
|
40
|
+
handleTemperatureDisplayUnitsSet(value: CharacteristicValue): void;
|
|
41
|
+
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { SmartHqApi } from '../smartHqApi.js';
|
|
2
|
+
/**
|
|
3
|
+
* Platform Accessory
|
|
4
|
+
* An instance of this class is created for each accessory your platform registers
|
|
5
|
+
* Each accessory may expose multiple services of different service types.
|
|
6
|
+
*/
|
|
7
|
+
export class Freezer {
|
|
8
|
+
platform;
|
|
9
|
+
accessory;
|
|
10
|
+
deviceServices;
|
|
11
|
+
deviceId;
|
|
12
|
+
// Default temperatures for a GE Profile Refrigerator
|
|
13
|
+
freezerTargetTemperature = -17.77; // Default 0F
|
|
14
|
+
smartHqApi;
|
|
15
|
+
log;
|
|
16
|
+
constructor(platform, accessory, deviceServices, deviceId) {
|
|
17
|
+
this.platform = platform;
|
|
18
|
+
this.accessory = accessory;
|
|
19
|
+
this.deviceServices = deviceServices;
|
|
20
|
+
this.deviceId = deviceId;
|
|
21
|
+
this.platform = platform;
|
|
22
|
+
this.accessory = accessory;
|
|
23
|
+
this.deviceServices = deviceServices;
|
|
24
|
+
this.deviceId = deviceId;
|
|
25
|
+
this.log = platform.log;
|
|
26
|
+
this.smartHqApi = new SmartHqApi(this.platform);
|
|
27
|
+
this.platform.debug('green', 'Adding Freezer Thermostat');
|
|
28
|
+
//=====================================================================================
|
|
29
|
+
// create a new Thermostat service for the Freezer
|
|
30
|
+
//=====================================================================================
|
|
31
|
+
const displayName = "Freezer";
|
|
32
|
+
const freezerThermostat = this.accessory.getService(displayName)
|
|
33
|
+
|| this.accessory.addService(this.platform.Service.Thermostat, displayName, 'freezer-thermo1');
|
|
34
|
+
freezerThermostat.setCharacteristic(this.platform.Characteristic.Name, displayName);
|
|
35
|
+
freezerThermostat.addOptionalCharacteristic(this.platform.Characteristic.ConfiguredName);
|
|
36
|
+
freezerThermostat.setCharacteristic(this.platform.Characteristic.ConfiguredName, displayName);
|
|
37
|
+
const currentHeatCoolCharacteristicFreezer = freezerThermostat.getCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState);
|
|
38
|
+
const targetHeatCoolCharacteristicFreezer = freezerThermostat.getCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState);
|
|
39
|
+
const currentTempCharacteristicFreezer = freezerThermostat.getCharacteristic(this.platform.Characteristic.CurrentTemperature);
|
|
40
|
+
const targetTempCharacteristicFreezer = freezerThermostat.getCharacteristic(this.platform.Characteristic.TargetTemperature);
|
|
41
|
+
//=====================================================================================
|
|
42
|
+
// Now modify the properties for each characteristic to match the freezer capabilities
|
|
43
|
+
//=====================================================================================
|
|
44
|
+
currentHeatCoolCharacteristicFreezer.setProps({
|
|
45
|
+
minValue: this.platform.Characteristic.CurrentHeatingCoolingState.OFF,
|
|
46
|
+
maxValue: this.platform.Characteristic.CurrentHeatingCoolingState.COOL,
|
|
47
|
+
validValues: [this.platform.Characteristic.CurrentHeatingCoolingState.COOL]
|
|
48
|
+
});
|
|
49
|
+
targetHeatCoolCharacteristicFreezer.setProps({
|
|
50
|
+
minValue: this.platform.Characteristic.TargetHeatingCoolingState.OFF,
|
|
51
|
+
maxValue: this.platform.Characteristic.TargetHeatingCoolingState.COOL,
|
|
52
|
+
validValues: [this.platform.Characteristic.TargetHeatingCoolingState.COOL]
|
|
53
|
+
});
|
|
54
|
+
try {
|
|
55
|
+
currentTempCharacteristicFreezer.setProps({
|
|
56
|
+
minValue: -21.111, // -6F
|
|
57
|
+
maxValue: -15.0, // 5F
|
|
58
|
+
minStep: 0.1
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
this.platform.debug('blue', 'Error setting Freezer Current Temperature properties: ' + error);
|
|
63
|
+
}
|
|
64
|
+
//=====================================================================================
|
|
65
|
+
// Change properties for the characteristic for a GE Profile Refrigerator temperature range is -21.111C (-6F) to -15C (5F)
|
|
66
|
+
// Values obtained from SmartHQ Api service config for refrigerator.freezer.temperature see HB log output when debug is enabled
|
|
67
|
+
//=====================================================================================
|
|
68
|
+
try {
|
|
69
|
+
targetTempCharacteristicFreezer.setProps({
|
|
70
|
+
minValue: -21.111,
|
|
71
|
+
maxValue: -15.0,
|
|
72
|
+
minStep: 0.1
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
this.platform.debug('blue', 'Error setting Freezer Target Temperature properties: ' + error);
|
|
77
|
+
}
|
|
78
|
+
// create handlers for required characteristics
|
|
79
|
+
freezerThermostat.getCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState)
|
|
80
|
+
.onGet(this.getCurrentHeatingCoolingState.bind(this));
|
|
81
|
+
freezerThermostat.getCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState)
|
|
82
|
+
.onGet(this.getCurrentHeatingCoolingState.bind(this))
|
|
83
|
+
.onSet(this.setTargetHeatingCoolingState.bind(this));
|
|
84
|
+
freezerThermostat.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
85
|
+
.onGet(this.getFreezerTemperature.bind(this));
|
|
86
|
+
freezerThermostat.getCharacteristic(this.platform.Characteristic.TargetTemperature)
|
|
87
|
+
.onGet(this.getFreezerTargetTemperature.bind(this))
|
|
88
|
+
.onSet(this.setFreezerTemperature.bind(this));
|
|
89
|
+
freezerThermostat.getCharacteristic(this.platform.Characteristic.TemperatureDisplayUnits)
|
|
90
|
+
.onGet(this.handleTemperatureDisplayUnitsGet.bind(this))
|
|
91
|
+
.onSet(this.handleTemperatureDisplayUnitsSet.bind(this));
|
|
92
|
+
//=====================================================================================
|
|
93
|
+
// Updating characteristics values asynchronously.
|
|
94
|
+
//=====================================================================================
|
|
95
|
+
setInterval(() => {
|
|
96
|
+
// push the new value to HomeKit
|
|
97
|
+
this.getFreezerTemperature().then(temp => {
|
|
98
|
+
freezerThermostat.getCharacteristic(this.platform.Characteristic.CurrentTemperature).updateValue(temp);
|
|
99
|
+
});
|
|
100
|
+
}, 10000); // every 10 seconds
|
|
101
|
+
}
|
|
102
|
+
//=====================================================================================
|
|
103
|
+
async getFreezerTemperature() {
|
|
104
|
+
let temp = 0;
|
|
105
|
+
for (const service of this.deviceServices) {
|
|
106
|
+
if (service.serviceDeviceType === 'cloud.smarthq.device.refrigerator.freezer'
|
|
107
|
+
&& service.serviceType === 'cloud.smarthq.service.temperature') {
|
|
108
|
+
const state = await this.smartHqApi.getServiceState(this.deviceId, service.serviceId);
|
|
109
|
+
if (state?.celsiusConverted == null) {
|
|
110
|
+
this.platform.debug('blue', 'No celsiusConverted returned from getFreezerTemperature state');
|
|
111
|
+
return -17.77; // Return -17.77C (0F) if no data
|
|
112
|
+
}
|
|
113
|
+
temp = state?.celsiusConverted;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return temp;
|
|
118
|
+
}
|
|
119
|
+
//=====================================================================================
|
|
120
|
+
async setFreezerTemperature(value) {
|
|
121
|
+
this.platform.debug('blue', "Triggered setTemperature");
|
|
122
|
+
const cmdBody = {
|
|
123
|
+
command: {
|
|
124
|
+
commandType: 'cloud.smarthq.command.temperature.set',
|
|
125
|
+
celsius: value
|
|
126
|
+
},
|
|
127
|
+
kind: 'service#command',
|
|
128
|
+
deviceId: this.deviceId,
|
|
129
|
+
serviceDeviceType: 'cloud.smarthq.device.refrigerator.freezer',
|
|
130
|
+
serviceType: 'cloud.smarthq.service.temperature',
|
|
131
|
+
domainType: 'cloud.smarthq.domain.setpoint'
|
|
132
|
+
};
|
|
133
|
+
const response = await this.smartHqApi.command(JSON.stringify(cmdBody));
|
|
134
|
+
if (response == null) {
|
|
135
|
+
this.platform.debug('blue', 'No response from setFreezerTemperature command');
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
;
|
|
140
|
+
/**
|
|
141
|
+
* Handle requests to get the current value of the "Current Heating Cooling State" characteristic
|
|
142
|
+
*/
|
|
143
|
+
//=====================================================================================
|
|
144
|
+
getCurrentHeatingCoolingState() {
|
|
145
|
+
// set this to a valid value for CurrentHeatingCoolingState
|
|
146
|
+
const currentValue = this.platform.Characteristic.CurrentHeatingCoolingState.COOL;
|
|
147
|
+
return currentValue;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Handle requests to get the current value of the "Target Heating Cooling State" characteristic
|
|
151
|
+
*/
|
|
152
|
+
//=====================================================================================
|
|
153
|
+
setCurrentHeatingCoolingState() {
|
|
154
|
+
// set this to a valid value for TargetHeatingCoolingState
|
|
155
|
+
const currentValue = this.platform.Characteristic.TargetHeatingCoolingState.COOL;
|
|
156
|
+
return currentValue;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Handle requests to set the "Target Heating Cooling State" characteristic
|
|
160
|
+
*/
|
|
161
|
+
//=====================================================================================
|
|
162
|
+
setTargetHeatingCoolingState(value) {
|
|
163
|
+
// Nothing to do since refrigerator can only be in COOL mode
|
|
164
|
+
const currentValue = this.platform.Characteristic.TargetHeatingCoolingState.COOL;
|
|
165
|
+
this.platform.debug('blue', 'setTargetHeatingCoolingState value: ' + value + ', returning: ' + currentValue);
|
|
166
|
+
return currentValue;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Handle requests to get the current value of the "Target Temperature" characteristic
|
|
170
|
+
*/
|
|
171
|
+
getFreezerTargetTemperature() {
|
|
172
|
+
const currentValue = this.freezerTargetTemperature;
|
|
173
|
+
return currentValue;
|
|
174
|
+
}
|
|
175
|
+
handleTemperatureDisplayUnitsGet() {
|
|
176
|
+
// set this to a valid value for TemperatureDisplayUnits
|
|
177
|
+
const currentValue = this.platform.Characteristic.TemperatureDisplayUnits.CELSIUS;
|
|
178
|
+
return currentValue;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Handle requests to set the "Temperature Display Units" characteristic
|
|
182
|
+
*/
|
|
183
|
+
//=====================================================================================
|
|
184
|
+
handleTemperatureDisplayUnitsSet(value) {
|
|
185
|
+
this.platform.debug('blue', 'handleTemperatureDisplayUnitsSet value: ' + value);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=freezer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freezer.js","sourceRoot":"","sources":["../../src/refrigerator/freezer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CharacteristicValue, PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { SmartHqPlatform } from '../platform.js';
|
|
3
|
+
import { DevService } from '../smarthq-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Platform Accessory
|
|
6
|
+
* An instance of this class is created for each accessory your platform registers
|
|
7
|
+
* Each accessory may expose multiple services of different service types.
|
|
8
|
+
*/
|
|
9
|
+
export declare class IceMaker {
|
|
10
|
+
private readonly platform;
|
|
11
|
+
private readonly accessory;
|
|
12
|
+
readonly deviceServices: DevService[];
|
|
13
|
+
readonly deviceId: string;
|
|
14
|
+
private readonly smartHqApi;
|
|
15
|
+
private log;
|
|
16
|
+
constructor(platform: SmartHqPlatform, accessory: PlatformAccessory, deviceServices: DevService[], deviceId: string);
|
|
17
|
+
geticeMaker(): Promise<CharacteristicValue>;
|
|
18
|
+
seticeMaker(value: CharacteristicValue): Promise<void>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { SmartHqApi } from '../smartHqApi.js';
|
|
2
|
+
/**
|
|
3
|
+
* Platform Accessory
|
|
4
|
+
* An instance of this class is created for each accessory your platform registers
|
|
5
|
+
* Each accessory may expose multiple services of different service types.
|
|
6
|
+
*/
|
|
7
|
+
export class IceMaker {
|
|
8
|
+
platform;
|
|
9
|
+
accessory;
|
|
10
|
+
deviceServices;
|
|
11
|
+
deviceId;
|
|
12
|
+
smartHqApi;
|
|
13
|
+
log;
|
|
14
|
+
constructor(platform, accessory, deviceServices, deviceId) {
|
|
15
|
+
this.platform = platform;
|
|
16
|
+
this.accessory = accessory;
|
|
17
|
+
this.deviceServices = deviceServices;
|
|
18
|
+
this.deviceId = deviceId;
|
|
19
|
+
this.platform = platform;
|
|
20
|
+
this.accessory = accessory;
|
|
21
|
+
this.deviceServices = deviceServices;
|
|
22
|
+
this.deviceId = deviceId;
|
|
23
|
+
this.log = platform.log;
|
|
24
|
+
this.smartHqApi = new SmartHqApi(this.platform);
|
|
25
|
+
if (!this.platform.deviceSupportsThisService(this.deviceServices, 'cloud.smarthq.device.icemaker.1', 'cloud.smarthq.service.toggle', 'cloud.smarthq.domain.power')) {
|
|
26
|
+
this.log.info('No supported Ice Maker service found for device: ' + this.accessory.displayName);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.platform.debug('green', 'Adding Ice Maker Switch');
|
|
30
|
+
//=====================================================================================
|
|
31
|
+
// create a Ice Maker switch for the Refrigerator
|
|
32
|
+
//=====================================================================================
|
|
33
|
+
const displayName = "Ice Maker";
|
|
34
|
+
const iceMaker = this.accessory.getService(displayName)
|
|
35
|
+
|| this.accessory.addService(this.platform.Service.Switch, displayName, 'ice-maker-123');
|
|
36
|
+
iceMaker.setCharacteristic(this.platform.Characteristic.Name, displayName);
|
|
37
|
+
iceMaker.addOptionalCharacteristic(this.platform.Characteristic.ConfiguredName);
|
|
38
|
+
iceMaker.setCharacteristic(this.platform.Characteristic.ConfiguredName, displayName);
|
|
39
|
+
iceMaker.getCharacteristic(this.platform.Characteristic.On)
|
|
40
|
+
.onGet(this.geticeMaker.bind(this))
|
|
41
|
+
.onSet(this.seticeMaker.bind(this));
|
|
42
|
+
}
|
|
43
|
+
//=====================================================================================
|
|
44
|
+
async geticeMaker() {
|
|
45
|
+
let isOn = false;
|
|
46
|
+
for (const service of this.deviceServices) {
|
|
47
|
+
if (service.serviceDeviceType === 'cloud.smarthq.device.icemaker.1'
|
|
48
|
+
&& service.serviceType === 'cloud.smarthq.service.toggle'
|
|
49
|
+
&& service.domainType === 'cloud.smarthq.domain.power') {
|
|
50
|
+
const state = await this.smartHqApi.getServiceState(this.deviceId, service.serviceId);
|
|
51
|
+
if (state?.on == null) {
|
|
52
|
+
this.platform.debug('blue', 'No state.On returned from geticeMaker state');
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
isOn = state?.on;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return isOn;
|
|
59
|
+
}
|
|
60
|
+
//=====================================================================================
|
|
61
|
+
async seticeMaker(value) {
|
|
62
|
+
this.platform.debug('blue', "Triggered seticeMaker toggle");
|
|
63
|
+
const cmdBody = {
|
|
64
|
+
command: {
|
|
65
|
+
commandType: 'cloud.smarthq.command.toggle.set',
|
|
66
|
+
on: value
|
|
67
|
+
},
|
|
68
|
+
kind: 'service#command',
|
|
69
|
+
deviceId: this.deviceId,
|
|
70
|
+
serviceDeviceType: 'cloud.smarthq.device.icemaker.1',
|
|
71
|
+
serviceType: 'cloud.smarthq.service.toggle',
|
|
72
|
+
domainType: 'cloud.smarthq.domain.power'
|
|
73
|
+
};
|
|
74
|
+
const response = await this.smartHqApi.command(JSON.stringify(cmdBody));
|
|
75
|
+
if (response == null) {
|
|
76
|
+
this.platform.debug('blue', 'No response from seticeMaker command');
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=iceMaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iceMaker.js","sourceRoot":"","sources":["../../src/refrigerator/iceMaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CharacteristicValue, PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { SmartHqPlatform } from '../platform.js';
|
|
3
|
+
import { DevService } from '../smarthq-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Platform Accessory
|
|
6
|
+
* An instance of this class is created for each accessory your platform registers
|
|
7
|
+
* Each accessory may expose multiple services of different service types.
|
|
8
|
+
*/
|
|
9
|
+
export declare class InteriorLight {
|
|
10
|
+
private readonly platform;
|
|
11
|
+
private readonly accessory;
|
|
12
|
+
readonly deviceServices: DevService[];
|
|
13
|
+
readonly deviceId: string;
|
|
14
|
+
private readonly smartHqApi;
|
|
15
|
+
private log;
|
|
16
|
+
constructor(platform: SmartHqPlatform, accessory: PlatformAccessory, deviceServices: DevService[], deviceId: string);
|
|
17
|
+
getFridgeBackLight(): Promise<CharacteristicValue>;
|
|
18
|
+
setFridgeBackLight(value: CharacteristicValue): Promise<void>;
|
|
19
|
+
getRefrigBrightnessLightOn(): Promise<boolean>;
|
|
20
|
+
setRefrigBrightnessLightOn(value: CharacteristicValue): Promise<void>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { SmartHqApi } from '../smartHqApi.js';
|
|
2
|
+
/**
|
|
3
|
+
* Platform Accessory
|
|
4
|
+
* An instance of this class is created for each accessory your platform registers
|
|
5
|
+
* Each accessory may expose multiple services of different service types.
|
|
6
|
+
*/
|
|
7
|
+
export class InteriorLight {
|
|
8
|
+
platform;
|
|
9
|
+
accessory;
|
|
10
|
+
deviceServices;
|
|
11
|
+
deviceId;
|
|
12
|
+
smartHqApi;
|
|
13
|
+
log;
|
|
14
|
+
constructor(platform, accessory, deviceServices, deviceId) {
|
|
15
|
+
this.platform = platform;
|
|
16
|
+
this.accessory = accessory;
|
|
17
|
+
this.deviceServices = deviceServices;
|
|
18
|
+
this.deviceId = deviceId;
|
|
19
|
+
this.platform = platform;
|
|
20
|
+
this.accessory = accessory;
|
|
21
|
+
this.deviceServices = deviceServices;
|
|
22
|
+
this.deviceId = deviceId;
|
|
23
|
+
this.log = platform.log;
|
|
24
|
+
this.smartHqApi = new SmartHqApi(this.platform);
|
|
25
|
+
if (!this.platform.deviceSupportsThisService(this.deviceServices, 'cloud.smarthq.device.refrigerator', 'cloud.smarthq.service.integer', 'cloud.smarthq.domain.brightness.light')) {
|
|
26
|
+
this.log.info('No supported Interior Light service found for device: ' + this.accessory.displayName);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.platform.debug('green', 'Adding Interior Light Switch');
|
|
30
|
+
// set accessory information
|
|
31
|
+
//=====================================================================================
|
|
32
|
+
// create a new Lightbulb service for the Refrigerator Wall Brightness Light
|
|
33
|
+
//=====================================================================================
|
|
34
|
+
const displayName = "Fridge Light";
|
|
35
|
+
const refrigeratorLight = this.accessory.getService(displayName)
|
|
36
|
+
|| this.accessory.addService(this.platform.Service.Lightbulb, displayName, 'brightness-light-2');
|
|
37
|
+
refrigeratorLight.setCharacteristic(this.platform.Characteristic.Name, displayName);
|
|
38
|
+
refrigeratorLight.addOptionalCharacteristic(this.platform.Characteristic.ConfiguredName);
|
|
39
|
+
refrigeratorLight.setCharacteristic(this.platform.Characteristic.ConfiguredName, displayName);
|
|
40
|
+
refrigeratorLight.getCharacteristic(this.platform.Characteristic.On).updateValue(true);
|
|
41
|
+
refrigeratorLight.getCharacteristic(this.platform.Characteristic.On)
|
|
42
|
+
.onGet(this.getRefrigBrightnessLightOn.bind(this))
|
|
43
|
+
.onSet(this.setRefrigBrightnessLightOn.bind(this));
|
|
44
|
+
refrigeratorLight.getCharacteristic(this.platform.Characteristic.Brightness)
|
|
45
|
+
.onGet(this.getFridgeBackLight.bind(this))
|
|
46
|
+
.onSet(this.setFridgeBackLight.bind(this));
|
|
47
|
+
}
|
|
48
|
+
//=====================================================================================
|
|
49
|
+
async getFridgeBackLight() {
|
|
50
|
+
let brightness = 0;
|
|
51
|
+
for (const service of this.deviceServices) {
|
|
52
|
+
if (service.serviceDeviceType === 'cloud.smarthq.device.refrigerator'
|
|
53
|
+
&& service.serviceType === 'cloud.smarthq.service.integer') {
|
|
54
|
+
const state = await this.smartHqApi.getServiceState(this.deviceId, service.serviceId);
|
|
55
|
+
if (state?.value == null) {
|
|
56
|
+
this.platform.debug('blue', 'No state.value returned from getFridgeBackLight state');
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
brightness = state?.value;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return brightness;
|
|
64
|
+
}
|
|
65
|
+
//=====================================================================================
|
|
66
|
+
// Set handler for Brightness characteristics for Lightbulb service
|
|
67
|
+
//=====================================================================================
|
|
68
|
+
async setFridgeBackLight(value) {
|
|
69
|
+
const cmdBody = {
|
|
70
|
+
command: {
|
|
71
|
+
commandType: 'cloud.smarthq.command.integer.set',
|
|
72
|
+
value: value
|
|
73
|
+
},
|
|
74
|
+
kind: 'service#command',
|
|
75
|
+
deviceId: this.deviceId,
|
|
76
|
+
serviceDeviceType: 'cloud.smarthq.device.refrigerator',
|
|
77
|
+
serviceType: 'cloud.smarthq.service.integer',
|
|
78
|
+
domainType: 'cloud.smarthq.domain.brightness.light'
|
|
79
|
+
};
|
|
80
|
+
const response = await this.smartHqApi.command(JSON.stringify(cmdBody));
|
|
81
|
+
if (response == null) {
|
|
82
|
+
this.platform.debug('blue', 'No response from setFridgeBackLight command');
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
;
|
|
87
|
+
//=====================================================================================
|
|
88
|
+
async getRefrigBrightnessLightOn() {
|
|
89
|
+
// SmartHQ API does not have an On/Off command for the refrigerator brightness light only brightness level 0-100
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
//=====================================================================================
|
|
93
|
+
async setRefrigBrightnessLightOn(value) {
|
|
94
|
+
// SmartHQ API does not have an On/Off command for the refrigerator brightness light only brightness level 0-100
|
|
95
|
+
if (value === false) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=interiorLight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interiorLight.js","sourceRoot":"","sources":["../../src/refrigerator/interiorLight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CharacteristicValue, PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { SmartHqPlatform } from '../platform.js';
|
|
3
|
+
import { DevService } from '../smarthq-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Platform Accessory
|
|
6
|
+
* An instance of this class is created for each accessory your platform registers
|
|
7
|
+
* Each accessory may expose multiple services of different service types.
|
|
8
|
+
*/
|
|
9
|
+
export declare class Refrigerator {
|
|
10
|
+
private readonly platform;
|
|
11
|
+
private readonly accessory;
|
|
12
|
+
readonly deviceServices: DevService[];
|
|
13
|
+
readonly deviceId: string;
|
|
14
|
+
private refrigeratorTargetTemperature;
|
|
15
|
+
private readonly smartHqApi;
|
|
16
|
+
private log;
|
|
17
|
+
constructor(platform: SmartHqPlatform, accessory: PlatformAccessory, deviceServices: DevService[], deviceId: string);
|
|
18
|
+
getFridgeTemperature(): Promise<CharacteristicValue>;
|
|
19
|
+
setFridgeTemperature(value: CharacteristicValue): Promise<void>;
|
|
20
|
+
getCurrentHeatingCoolingState(): number;
|
|
21
|
+
/**
|
|
22
|
+
* Handle requests to get the current value of the "Target Heating Cooling State" characteristic
|
|
23
|
+
*/
|
|
24
|
+
setCurrentHeatingCoolingState(): number;
|
|
25
|
+
/**
|
|
26
|
+
* Handle requests to set the "Target Heating Cooling State" characteristic
|
|
27
|
+
*/
|
|
28
|
+
setTargetHeatingCoolingState(value: CharacteristicValue): number;
|
|
29
|
+
/**
|
|
30
|
+
* Handle requests to get the current value of the "Target Temperature" characteristic
|
|
31
|
+
*/
|
|
32
|
+
getTargetTemperatureGet(): number;
|
|
33
|
+
/**
|
|
34
|
+
* Handle requests to get the current value of the "Temperature Display Units" characteristic
|
|
35
|
+
*/
|
|
36
|
+
handleTemperatureDisplayUnitsGet(): number;
|
|
37
|
+
/**
|
|
38
|
+
* Handle requests to set the "Temperature Display Units" characteristic
|
|
39
|
+
*/
|
|
40
|
+
handleTemperatureDisplayUnitsSet(value: CharacteristicValue): void;
|
|
41
|
+
}
|