diff --git a/src/devices/bosch.ts b/src/devices/bosch.ts index ad28f41d158f1..9f4c16d7c305a 100644 --- a/src/devices/bosch.ts +++ b/src/devices/bosch.ts @@ -1160,13 +1160,15 @@ const definitions: Definition[] = [ description: 'Room thermostat II (Battery model)', fromZigbee: [fz.humidity, fz.thermostat, fz.battery, fzLocal.bosch_thermostat, fzLocal.bosch_userInterface], toZigbee: [tz.thermostat_occupied_heating_setpoint, tz.thermostat_local_temperature_calibration, - tz.thermostat_local_temperature, tz.thermostat_keypad_lockout, tzLocal.bosch_thermostat, tzLocal.bosch_userInterface], + tz.thermostat_local_temperature, tz.thermostat_keypad_lockout, tz.thermostat_running_state, + tzLocal.bosch_thermostat, tzLocal.bosch_userInterface], exposes: [ e.climate() .withLocalTemperature() .withSetpoint('occupied_heating_setpoint', 5, 30, 0.5) .withLocalTemperatureCalibration(-12, 12, 0.5) - .withSystemMode(['off', 'heat', 'auto']), + .withSystemMode(['off', 'heat', 'auto']) + .withRunningState(['idle', 'heat'], ea.STATE_GET), e.humidity(), e.binary('window_open', ea.ALL, 'ON', 'OFF').withDescription('Window open'), e.child_lock().setAccess('state', ea.ALL), @@ -1182,6 +1184,20 @@ const definitions: Definition[] = [ await reporting.thermostatTemperature(endpoint); await reporting.humidity(endpoint); + // report operating_mode (system_mode) + await endpoint.configureReporting('hvacThermostat', [{ + attribute: {ID: 0x4007, type: Zcl.DataType.enum8}, + minimumReportInterval: 0, + maximumReportInterval: constants.repInterval.HOUR, + reportableChange: 1, + }], manufacturerOptions); + // report pi_heating_demand (valve opening) + await endpoint.configureReporting('hvacThermostat', [{ + attribute: {ID: 0x4020, type: Zcl.DataType.enum8}, + minimumReportInterval: 0, + maximumReportInterval: constants.repInterval.HOUR, + reportableChange: 1, + }], manufacturerOptions); // report is window_open await endpoint.configureReporting('hvacThermostat', [{ attribute: {ID: 0x4042, type: Zcl.DataType.enum8}, @@ -1191,7 +1207,7 @@ const definitions: Definition[] = [ }], manufacturerOptions); await endpoint.read('hvacThermostat', ['localTemperatureCalibration']); - await endpoint.read('hvacThermostat', [0x4007, 0x4042, 0x4043], manufacturerOptions); + await endpoint.read('hvacThermostat', [0x4007, 0x4020, 0x4042], manufacturerOptions); await endpoint.read('hvacUserInterfaceCfg', ['keypadLockout']); await endpoint.read('hvacUserInterfaceCfg', [0x403a, 0x403b], manufacturerOptions); },