diff --git a/src/devices/schneider_electric.ts b/src/devices/schneider_electric.ts index 4dd5224d1acb7..cc9c7c9d79489 100644 --- a/src/devices/schneider_electric.ts +++ b/src/devices/schneider_electric.ts @@ -2197,6 +2197,7 @@ export const definitions: DefinitionWithExtend[] = [ tz.schneider_pilot_mode, tz.schneider_thermostat_keypad_lockout, tz.thermostat_temperature_display_mode, + tz.thermostat_running_state, ], exposes: [ e.binary("keypad_lockout", ea.STATE_SET, "lock1", "unlock").withDescription("Enables/disables physical input on the device"), @@ -2210,7 +2211,9 @@ export const definitions: DefinitionWithExtend[] = [ .withSetpoint("occupied_cooling_setpoint", 4, 30, 0.5) .withLocalTemperature() .withSystemMode(["off", "heat", "cool"]) - .withPiHeatingDemand(), + .withRunningState(["idle", "heat", "cool"]) + .withPiHeatingDemand() + .withPiCoolingDemand(), e.temperature(), e.occupancy(), ], @@ -2220,6 +2223,7 @@ export const definitions: DefinitionWithExtend[] = [ const endpoint4 = device.getEndpoint(4); await reporting.bind(endpoint1, coordinatorEndpoint, ["hvacThermostat"]); await reporting.thermostatPIHeatingDemand(endpoint1); + await reporting.thermostatPICoolingDemand(endpoint1); await reporting.thermostatOccupiedHeatingSetpoint(endpoint1); await reporting.thermostatOccupiedCoolingSetpoint(endpoint1); await reporting.temperature(endpoint2); diff --git a/src/lib/exposes.ts b/src/lib/exposes.ts index 1d239fdcbd74a..def850ff67e46 100644 --- a/src/lib/exposes.ts +++ b/src/lib/exposes.ts @@ -706,6 +706,18 @@ export class Climate extends Base { return this; } + withPiCoolingDemand(access = a.STATE) { + this.addFeature( + new Numeric("pi_cooling_demand", access) + .withLabel("PI cooling demand") + .withValueMin(0) + .withValueMax(100) + .withUnit("%") + .withDescription("Position of the valve (= demanded cooling) where 0% is fully closed and 100% is fully open"), + ); + return this; + } + withControlSequenceOfOperation(modes: string[], access = a.STATE) { const allowed = [ "cooling_only",