From 33ce9ca150295cf1412c2e4ad6884c9f48286101 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Wed, 1 Jan 2025 15:55:34 +0000 Subject: [PATCH 01/25] Add baseline support for `basv3` --- src/main.tsp | 1 + src/vaillant/15.basv3.tsp | 1329 +++++++++++++++++++++++++++++++++++ src/vaillant/_templates.tsp | 9 + 3 files changed, 1339 insertions(+) create mode 100644 src/vaillant/15.basv3.tsp diff --git a/src/main.tsp b/src/main.tsp index b237fbe60..b1205e830 100644 --- a/src/main.tsp +++ b/src/main.tsp @@ -19,6 +19,7 @@ import "./vaillant/15.392.tsp"; import "./vaillant/15.430.tsp"; import "./vaillant/15.470.tsp"; import "./vaillant/15.700.tsp"; +import "./vaillant/15.basv3.tsp"; import "./vaillant/15.ctlv2.tsp"; import "./vaillant/15.e7c.tsp"; import "./vaillant/15.e7f.tsp"; diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp new file mode 100644 index 000000000..c76782fca --- /dev/null +++ b/src/vaillant/15.basv3.tsp @@ -0,0 +1,1329 @@ +import "@ebusd/ebus-typespec"; +import "./_templates.tsp"; +import "./errors_inc.tsp"; +using Ebus; +using Ebus.Num; +using Ebus.Dtm; +using Ebus.Str; +namespace Vaillant; + +// @zz(0x15) +namespace Basv3 { + // ,BASV3,sensoCOMFORT VRC 720/3f via Base Station D (SW=0760;HW=7304) + // ##### General ##### + + /** default *r */ + @base(MF, 0x24, 0x2, 0, 0, 0) + model r_1 { + @maxLength(4) + value: IGN; + } + + /** default *w */ + @write + @base(MF, 0x24, 0x2, 1, 0, 0) + model w_1 {} + + /** default *wi for user level "install" */ + @write + @auth("install") + @base(MF, 0x24, 0x2, 1, 0, 0) + model wi_1 {} + + /** Hwc bivalence point */ + @inherit(r_1, w_1) + @ext(0x1, 0) + model HwcBivalencePoint { + value: tempv; + } + + /** continuos heating */ + @inherit(r_1, w_1) + @ext(0x2, 0) + model ContinuosHeating { + /** -26=off, when the outside temperature falls below this threshold temperature the continuous heating function is started (off <=> function is disabled) */ + value: tempv; + } + + /** frost delay time */ + @inherit(r_1, w_1) + @ext(0x3, 0) + model FrostOverRideTime { + /** Delay before frost protection is activated */ + value: hoursum2; + } + + /** Global System OFF */ + @inherit(r_1, wi_1) + @ext(0x7, 0) + model GlobalSystemOff { + /** For switching system off */ + value: yesno; + } + + /** hwc parallel loading */ + @inherit(r_1, w_1) + @ext(0xa, 0) + model HwcParallelLoading { + value: onoff; + } + + /** max room humidity */ + @inherit(r_1, w_1) + @ext(0xe, 0) + model MaxRoomHumidity { + /** Maximum room humidity */ + value: UIN; + } + + /** adaptive heat curve */ + @inherit(r_1, w_1) + @ext(0x14, 0) + model AdaptHeatCurve { + /** Automatic correction of configured heat curve */ + value: yesno; + } + + /** maximum cylinder charging time */ + @inherit(r_1, w_1) + @ext(0x17, 0) + model MaxCylinderChargeTime { + value: minutes2; + } + + /** hwc lock time */ + @inherit(r_1, w_1) + @ext(0x18, 0) + model HwcLockTime { + value: minutes2; + } + + /** pump additional time */ + @inherit(r_1, w_1) + @ext(0x1b, 0) + model PumpAdditionalTime { + /** Additional time the pump is running */ + value: minutes2; + } + + /** hysteresis cylinder charge */ + @inherit(r_1, w_1) + @ext(0x27, 0) + model CylinderChargeHyst { + /** Hysteresis cylinder charge */ + value: calibrationv; + } + + /** offset cylinder charge */ + @inherit(r_1, w_1) + @ext(0x29, 0) + model CylinderChargeOffset { + value: calibrationv; + } + + /** next maintenance */ + @inherit(r_1, w_1) + @ext(0x2c, 0) + model MaintenanceDate { + /** Date for next maintenance */ + value: date; + } + + /** date */ + @inherit(r_1) + @ext(0x34, 0) + model Date { + /** Current date */ + value: date; + } + + /** time */ + @inherit(r_1) + @ext(0x35, 0) + model Time { + /** Current time */ + value: HTI; + } + + /** hydraulic scheme */ + @inherit(r_1, w_1) + @ext(0x36, 0) + model HydraulicScheme { + value: UIN; + } + + /** water pressure */ + @inherit(r_1) + @ext(0x39, 0) + model WaterPressure { + value: pressv; + } + + /** total solar yield */ + @inherit(r_1) + @ext(0x3d, 0) + model SolarYieldTotal { + value: energy4; + } + + /** total environmental yield */ + @inherit(r_1) + @ext(0x3e, 0) + model EnvYieldTotal { + value: energy4; + } + + /** hwc max flow temp desired */ + @inherit(r_1, w_1) + @ext(0x46, 0) + model HwcMaxFlowTempDesired { + /** Maximum flow temperature setpoint of Hwc */ + value: tempv; + } + + /** system flow temp */ + @inherit(r_1) + @ext(0x4b, 0) + model SystemFlowTemp { + value: tempv; + } + + /** multifunction relay setting */ + @inherit(r_1, w_1) + @ext(0x4d, 0) + model MultiRelaySetting { + value: mamode; + } + + /** this month's fuel consumption heating */ + @inherit(r_1) + @ext(0x4e, 0) + model PrFuelSumHcThisMonth { + /** This month's fuel consumption for heating */ + value: energy4; + } + + /** this month's energy consumption heating */ + @inherit(r_1) + @ext(0x4f, 0) + model PrEnergySumHcThisMonth { + /** This month's energy consumption for heating */ + value: energy4; + } + + /** this month's energy consumption hot water */ + @inherit(r_1) + @ext(0x50, 0) + model PrEnergySumHwcThisMonth { + /** This month's energy consumption for hot water */ + value: energy4; + } + + /** this month's fuel consumption hot water */ + @inherit(r_1) + @ext(0x51, 0) + model PrFuelSumHwcThisMonth { + /** This month's fuel consumption for hot water */ + value: energy4; + } + + /** last month's fuel consumption heating */ + @inherit(r_1) + @ext(0x52, 0) + model PrFuelSumHcLastMonth { + /** Last month's fuel consumption for heating */ + value: energy4; + } + + /** last month's energy consumption heating */ + @inherit(r_1) + @ext(0x53, 0) + model PrEnergySumHcLastMonth { + /** Last month's energy consumption for heating */ + value: energy4; + } + + /** last month's energy consumption hot water */ + @inherit(r_1) + @ext(0x54, 0) + model PrEnergySumHwcLastMonth { + /** Last month's energy consumption for hot water */ + value: energy4; + } + + /** last month's fuel consumption hot water */ + @inherit(r_1) + @ext(0x55, 0) + model PrFuelSumHwcLastMonth { + /** Last month's fuel consumption for hot water */ + value: energy4; + } + + /** total fuel consumption heating */ + @inherit(r_1) + @ext(0x56, 0) + model PrFuelSumHc { + /** Total fuel consumption for heating */ + value: energy4; + } + + /** total energy consumption heating */ + @inherit(r_1) + @ext(0x57, 0) + model PrEnergySumHc { + /** Total energy consumption for heating */ + value: energy4; + } + + /** total energy consumption hot water */ + @inherit(r_1) + @ext(0x58, 0) + model PrEnergySumHwc { + /** Total energy consumption for hot water */ + value: energy4; + } + + /** total fuel consumption hot water */ + @inherit(r_1) + @ext(0x59, 0) + model PrFuelSumHwc { + /** Total fuel consumption for hot water */ + value: energy4; + } + + /** total energy consumption */ + // TODO: invalid position + //@inherit(r_1, w_1) + //@ext(0x5c, 0) + //model PrEnergySum { + /** Total year electricity consumption */ + // value: energy4; + //} + + /** total fuel consumption */ + // TODO: invalid position + //@inherit(r_1, w_1) + //@ext(0x5d, 0) + //model PrFuelSum { + /** Total fuel consumption */ + // value: energy4; + //} + + /** installer name 1 */ + @inherit(r_1, w_1) + @ext(0x6c, 0) + model Installer1 { + /** Installer's name */ + value: shortname; + } + + /** installer name 2 */ + @inherit(r_1, w_1) + @ext(0x6d, 0) + model Installer2 { + /** Installer's name */ + value: shortname; + } + + /** phone number 1 (first part) */ + @inherit(r_1, w_1) + @ext(0x6f, 0) + model PhoneNumber1 { + /** Installer's telephone number */ + value: shortphone; + } + + /** phone number 2 (second part) */ + @inherit(r_1, w_1) + @ext(0x70, 0) + model PhoneNumber2 { + /** Installer's telephone number */ + value: shortphone; + } + + /** outside temperature */ + @inherit(r_1) + @ext(0x73, 0) + model DisplayedOutsideTemp { + value: tempv; + } + + /** code for installer menu */ + @inherit(r_1, w_1) + @ext(0x76, 0) + model KeyCodeforConfigMenu { + /** 000-999; code for the installer's menues */ + value: UIN; + } + + /** average outside temperature */ + @inherit(r_1) + @ext(0x95, 0) + model OutsideTempAvg { + /** Average outside temperature (updated every 3h) */ + value: tempv; + } + + /** maintenance due */ + @inherit(r_1) + @ext(0x96, 0) + model MaintenanceDue { + value: yesno; + } + + /** hwc storage temperature top */ + @inherit(r_1) + @ext(0x9d, 0) + model HwcStorageTempTop { + value: tempv; + } + + /** storage temperature bottom */ + @inherit(r_1) + @ext(0x9e, 0) + model HwcStorageTempBottom { + value: tempv; + } + + /** hc storage temperature top */ + @inherit(r_1) + @ext(0x9f, 0) + model HcStorageTempTop { + value: tempv; + } + + /** hc storage temperature bottom */ + @inherit(r_1) + @ext(0xa0, 0) + model HcStorageTempBottom { + value: tempv; + } + // ##### hot water circuit ##### + + /** default *r */ + @base(MF, 0x24, 0x2, 0, 1, 0) + model r_2 { + @maxLength(4) + value: IGN; + } + + /** default *w */ + @write + @base(MF, 0x24, 0x2, 1, 1, 0) + model w_2 {} + + /** hwc operation mode */ + @inherit(r_2, w_2) + @ext(0x3, 0) + model HwcOpMode { + /** Operation mode of Hwc */ + value: opmode; + } + + /** hwc temperature desired */ + @inherit(r_2, w_2) + @ext(0x4, 0) + model HwcTempDesired { + /** Setpoint of domestic hot water circuit */ + value: tempv; + } + + /** hwc storage temperature */ + @inherit(r_2) + @ext(0x5, 0) + model HwcStorageTemp { + /** Hwc storage temperature */ + value: tempv; + } + + /** hwc flow temperature */ + @inherit(r_2) + @ext(0x8, 0) + model HwcFlowTemp { + /** Desired flow temp for Hwc */ + value: tempv; + } + + /** hwc holiday start period */ + @inherit(r_2, w_2) + @ext(0x9, 0) + model HwcHolidayStartPeriod { + /** Start date of holidays */ + value: hfrom; + } + + /** hwc holiday end period */ + @inherit(r_2, w_2) + @ext(0xa, 0) + model HwcHolidayEndPeriod { + /** End date of holidays */ + value: hto; + } + + /** hwc SF mode */ + @inherit(r_2, w_2) + @ext(0xd, 0) + model HwcSFMode { + value: sfmode; + } + + // ##### heating circuit 1 ##### + + /** default *r */ + @base(MF, 0x24, 0x2, 0, 0x2, 0) + model r_3 { + @maxLength(4) + value: IGN; + } + + /** default *w */ + @write + @base(MF, 0x24, 0x2, 1, 0x2, 0) + model w_3 {} + + /** CircuitType heating circuit 1 */ + @inherit(r_3) + @ext(0x2, 0) + model Hc1CircuitType { + mctype: mctype; + @maxLength(1) ign: IGN; + } + + /** ActualFlowTempDesired heating circuit 1 */ + @inherit(r_3) + @ext(0x7, 0) + model Hc1ActualFlowTempDesired { + /** Current flow temperature setpoint of Hc1 */ + value: tempv; + } + + /** FlowTemp heating circuit 1 */ + @inherit(r_3) + @ext(0x8, 0) + model Hc1FlowTemp { + /** Current flow temperature of Hc1 */ + value: tempv; + } + + /** ExcessTemp heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0xb, 0) + model Hc1ExcessTemp { + /** Excess temperature of Hc1 (flow temperature's setpoint is increased by this value to keep the mixing valve in its control range) */ + value: calibrationv; + } + + /** AutoOffMode heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0xe, 0) + model Hc1AutoOffMode { + /** Operation of Hc1 during the lowering time; no influence if room temperature modulation is set to thermostat */ + value: offmode; + } + + /** HeatCurve heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0xf, 0) + model Hc1HeatCurve { + value: EXP; + } + + /** MaxFlowTempDesired heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0x10, 0) + model Hc1MaxFlowTempDesired { + /** Maximum flow temperature setpoint (end emphasis) of Hc1 */ + value: tempv; + } + + /** MinFlowTempDesired heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0x12, 0) + model Hc1MinFlowTempDesired { + /** Minimum flow temperature setpoint (end emphasis) of Hc1 */ + value: tempv; + } + + /** summer outside switchoff temperature heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0x14, 0) + model Hc1SummerTempLimit { + /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ + value: tempv; + } + + /** RoomTempSwitchOn heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0x15, 0) + model Hc1RoomTempSwitchOn { + /** Room temperature modulation of Hc1 */ + value: rcmode; + } + + /** MixerMovement heating circuit 1 */ + @inherit(r_3) + @ext(0x1a, 0) + model Hc1MixerMovement { + /** Status of mixer (<0 closing, >0 opening) */ + value: EXP; + } + + /** HeatCurveAdaption heating circuit 1 */ + @inherit(r_3) + @ext(0x1c, 0) + model Hc1HeatCurveAdaption { + /** Adaption applied to heating curve of Hc1 */ + value: EXP; + } + + /** Status heating circuit 1 */ + @inherit(r_3) + @ext(0x1b, 0) + model Hc1Status { + value: onoff; + } + + /** PumpStatus heating circuit 1 */ + @inherit(r_3) + @ext(0x1e, 0) + model Hc1PumpStatus { + value: onoff; + } + // ##### heating circuit 2 ##### + + /** default *r */ + @base(MF, 0x24, 0x2, 0, 0x2, 1) + model r_4 { + @maxLength(4) + value: IGN; + } + + /** default *w */ + @write + @base(MF, 0x24, 0x2, 1, 0x2, 1) + model w_4 {} + + /** CircuitType heating circuit 2 */ + @inherit(r_4) + @ext(0x2, 0) + model Hc2CircuitType { + mctype: mctype; + @maxLength(1) ign: IGN; + } + + /** ActualFlowTempDesired heating circuit 2 */ + @inherit(r_4) + @ext(0x7, 0) + model Hc2ActualFlowTempDesired { + /** Current flow temperature setpoint of Hc2 */ + value: tempv; + } + + /** FlowTemp heating circuit 2 */ + @inherit(r_4) + @ext(0x8, 0) + model Hc2FlowTemp { + /** Current flow temperature of Hc2 */ + value: tempv; + } + + /** ExcessTemp heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0xb, 0) + model Hc2ExcessTemp { + /** Excess temperature of Hc2 (flow temperature's setpoint is increased by this value to keep the mixing valve in its control range) */ + value: calibrationv; + } + + /** AutoOffMode heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0xe, 0) + model Hc2AutoOffMode { + /** Operation of Hc2 during the lowering time; no influence if room temperature modulation is set to thermostat */ + value: offmode; + } + + /** HeatCurve heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0xf, 0) + model Hc2HeatCurve { + value: EXP; + } + + /** MaxFlowTempDesired heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0x10, 0) + model Hc2MaxFlowTempDesired { + /** Maximum flow temperature setpoint (end emphasis) of Hc2 */ + value: tempv; + } + + /** MinFlowTempDesired heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0x12, 0) + model Hc2MinFlowTempDesired { + /** Minimum flow temperature setpoint (end emphasis) of Hc2 */ + value: tempv; + } + + /** summer outside switchoff temperature heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0x14, 0) + model Hc2SummerTempLimit { + /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ + value: tempv; + } + + /** RoomTempSwitchOn heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0x15, 0) + model Hc2RoomTempSwitchOn { + /** Room temperature modulation of Hc2 */ + value: rcmode; + } + + /** MixerMovement heating circuit 2 */ + @inherit(r_4) + @ext(0x1a, 0) + model Hc2MixerMovement { + /** Status of mixer (<0 closing, >0 opening) */ + value: EXP; + } + + /** HeatCurveAdaption heating circuit 2 */ + @inherit(r_4) + @ext(0x1c, 0) + model Hc2HeatCurveAdaption { + /** Adaption applied to heating curve of Hc2 */ + value: EXP; + } + + /** Status heating circuit 2 */ + @inherit(r_4) + @ext(0x1b, 0) + model Hc2Status { + value: onoff; + } + + /** PumpStatus heating circuit 2 */ + @inherit(r_4) + @ext(0x1e, 0) + model Hc2PumpStatus { + value: onoff; + } + // ##### heating circuit 3 ##### + + /** default *r */ + @base(MF, 0x24, 0x2, 0, 0x2, 0x2) + model r_5 { + @maxLength(4) + value: IGN; + } + + /** default *w */ + @write + @base(MF, 0x24, 0x2, 1, 0x2, 0x2) + model w_5 {} + + /** CircuitType heating circuit 3 */ + @inherit(r_5) + @ext(0x2, 0) + model Hc3CircuitType { + mctype: mctype; + @maxLength(1) ign: IGN; + } + + /** ActualFlowTempDesired heating circuit 3 */ + @inherit(r_5) + @ext(0x7, 0) + model Hc3ActualFlowTempDesired { + /** Current flow temperature setpoint of Hc3 */ + value: tempv; + } + + /** FlowTemp heating circuit 3 */ + @inherit(r_5) + @ext(0x8, 0) + model Hc3FlowTemp { + /** Current flow temperature of Hc3 */ + value: tempv; + } + + /** ExcessTemp heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0xb, 0) + model Hc3ExcessTemp { + /** Excess temperature of Hc3 (flow temperature's setpoint is increased by this value to keep the mixing valve in its control range) */ + value: calibrationv; + } + + /** AutoOffMode heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0xe, 0) + model Hc3AutoOffMode { + /** Operation of Hc3 during the lowering time; no influence if room temperature modulation is set to thermostat */ + value: offmode; + } + + /** HeatCurve heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0xf, 0) + model Hc3HeatCurve { + value: EXP; + } + + /** MaxFlowTempDesired heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0x10, 0) + model Hc3MaxFlowTempDesired { + /** Maximum flow temperature setpoint (end emphasis) of Hc3 */ + value: tempv; + } + + /** MinFlowTempDesired heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0x12, 0) + model Hc3MinFlowTempDesired { + /** Minimum flow temperature setpoint (end emphasis) of Hc3 */ + value: tempv; + } + + /** summer outside switchoff temperature heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0x14, 0) + model Hc3SummerTempLimit { + /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ + value: tempv; + } + + /** RoomTempSwitchOn heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0x15, 0) + model Hc3RoomTempSwitchOn { + /** Room temperature modulation of Hc3 */ + value: rcmode; + } + + /** MixerMovement heating circuit 3 */ + @inherit(r_5) + @ext(0x1a, 0) + model Hc3MixerMovement { + /** Status of mixer (<0 closing, >0 opening) */ + value: EXP; + } + + /** HeatCurveAdaption heating circuit 3 */ + @inherit(r_5) + @ext(0x1c, 0) + model Hc3HeatCurveAdaption { + /** Adaption applied to heating curve of Hc3 */ + value: EXP; + } + + /** Status heating circuit 3 */ + @inherit(r_5) + @ext(0x1b, 0) + model Hc3Status { + value: onoff; + } + + /** PumpStatus heating circuit 3 */ + @inherit(r_5) + @ext(0x1e, 0) + model Hc3PumpStatus { + value: onoff; + } + + // ##### zone 1 ##### + + /** default *r */ + @base(MF, 0x24, 0x2, 0, 0x3, 0) + model r_6 { + @maxLength(4) + value: IGN; + } + + /** default *w */ + @write + @base(MF, 0x24, 0x2, 1, 0x3, 0) + model w_6 {} + + /** cooling operation mode zone 1 */ + @inherit(r_6, w_6) + @ext(1, 0) + model Z1OpModeCooling { + /** Operation mode for cooling of zone 1 */ + value: opmode; + } + + /** cooling setpoint zone 1 */ + @inherit(r_6, w_6) + @ext(0x2, 0) + model Z1CoolingTemp { + /** Desired cooling setpoint for zone 1 */ + value: tempv; + } + + /** holiday period start zone 1 */ + @inherit(r_6, w_6) + @ext(0x3, 0) + model Z1HolidayStartPeriod { + /** Start date of holidays for zone 1 */ + value: hfrom; + } + + /** holiday period end zone 1 */ + @inherit(r_6, w_6) + @ext(0x4, 0) + model Z1HolidayEndPeriod { + /** End date of holidays for zone 1 */ + value: hto; + } + + /** room setpoint holiday period zone 1 */ + @inherit(r_6, w_6) + @ext(0x5, 0) + model Z1HolidayTemp { + /** Holiday setpoint for zone 1 */ + value: tempv; + } + + /** operation mode zone 1 */ + @inherit(r_6, w_6) + @ext(0x6, 0) + model Z1OpMode { + /** Operation mode of zone 1 */ + value: opmode; + } + + /** desired temperature zone 1 */ + // TODO: verify + //@inherit(r_6, w_6) + //@ext(0x22, 0) + //model Z1DayTemp { + /** Day setpoint for zone 1 */ + // value: tempv; + //} + + /** quick veto temperature zone 1 */ + @inherit(r_6, w_6) + @ext(0x8, 0) + model Z1QuickVetoTemp { + /** Manual override setpoint for zone 1 */ + value: tempv; + } + + /** night temperature zone 1 */ + @inherit(r_6, w_6) + @ext(0x9, 0) + model Z1NightTemp { + /** Night setpoint for zone 1 */ + value: tempv; + } + + /** SF mode zone 1 */ + @inherit(r_6, w_6) + @ext(0xe, 0) + model Z1SFMode { + value: sfmode; + } + + /** room temperature zone 1 */ + @inherit(r_6) + @ext(0xf, 0) + model Z1RoomTemp { + /** Current room temperature in zone 1 */ + value: tempv; + } + + /** valve status zone 1 */ + @inherit(r_6) + @ext(0x12, 0) + model Z1ValveStatus { + value: zonevalve; + } + + /** room zone mapping zone 1 */ + @inherit(r_6, w_6) + @ext(0x13, 0) + model Z1RoomZoneMapping { + /** Configures which room temperature is assigned to zone 1 */ + value: zmapping; + } + + /** room temperature desired zone 1 */ + @inherit(r_6, w_6) + @ext(0x14, 0) + model Z1ActualRoomTempDesired { + /** Current room setpoint considering all basic conditions passed to the control algorithms */ + value: tempv; + } + + /** short name of zone 1 */ + @inherit(r_6, w_6) + @ext(0x16, 0) + model Z1Shortname { + value: shortname; + } + + /** zone 1 label (first part) */ + @inherit(r_6, w_6) + @ext(0x17, 0) + model Z1Name1 { + value: zname; + } + + /** zone 1 label (second part) */ + @inherit(r_6, w_6) + @ext(0x18, 0) + model Z1Name2 { + value: zname; + } + + /** manual heating setpoint zone 1 */ + @inherit(r_6, w_6) + @ext(0x22, 0) + model Z1HeatingTempManual { + /** Desired heating setpoint in manual mode for zone 1 */ + value: tempv; + } + + /** manual cooling setpoint zone 1 */ + @inherit(r_6, w_6) + @ext(0x23, 0) + model Z1CoolingTempManual { + /** Desired cooling setpoint in manual mode for zone 1 */ + value: tempv; + } + + // ##### zone 2 ##### + + /** default *r */ + @base(MF, 0x24, 0x2, 0, 0x3, 1) + model r_7 { + @maxLength(4) + value: IGN; + } + + /** default *w */ + @write + @base(MF, 0x24, 0x2, 1, 0x3, 1) + model w_7 {} + + /** cooling operation mode zone 2 */ + @inherit(r_7, w_7) + @ext(1, 0) + model Z2OpModeCooling { + /** Operation mode for cooling of zone 2 */ + value: opmode; + } + + /** cooling setpoint zone 2 */ + @inherit(r_7, w_7) + @ext(0x2, 0) + model Z2CoolingTemp { + /** Desired cooling setpoint for zone 2 */ + value: tempv; + } + + /** holiday period start zone 2 */ + @inherit(r_7, w_7) + @ext(0x3, 0) + model Z2HolidayStartPeriod { + /** Start date of holidays for zone 2 */ + value: hfrom; + } + + /** holiday period end zone 2 */ + @inherit(r_7, w_7) + @ext(0x4, 0) + model Z2HolidayEndPeriod { + /** End date of holidays for zone 2 */ + value: hto; + } + + /** room setpoint holiday period zone 2 */ + @inherit(r_7, w_7) + @ext(0x5, 0) + model Z2HolidayTemp { + /** Holiday setpoint for zone 2 */ + value: tempv; + } + + /** operation mode zone 2 */ + @inherit(r_7, w_7) + @ext(0x6, 0) + model Z2OpMode { + /** Operation mode of zone 2 */ + value: opmode; + } + + /** desired temperature zone 2 */ + // TODO: verify + //@inherit(r_7, w_7) + //@ext(0x22, 0) + //model Z2DayTemp { + /** Day setpoint for zone 2 */ + // value: tempv; + //} + + /** quick veto temperature zone 2 */ + @inherit(r_7, w_7) + @ext(0x8, 0) + model Z2QuickVetoTemp { + /** Manual override setpoint for zone 2 */ + value: tempv; + } + + /** night temperature zone 2 */ + @inherit(r_7, w_7) + @ext(0x9, 0) + model Z2NightTemp { + /** Night setpoint for zone 2 */ + value: tempv; + } + + /** SF mode zone 2 */ + @inherit(r_7, w_7) + @ext(0xe, 0) + model Z2SFMode { + value: sfmode; + } + + /** room temperature zone 2 */ + @inherit(r_7) + @ext(0xf, 0) + model Z2RoomTemp { + /** Current room temperature in zone 2 */ + value: tempv; + } + + /** valve status zone 2 */ + @inherit(r_7) + @ext(0x12, 0) + model Z2ValveStatus { + value: zonevalve; + } + + /** room zone mapping zone 2 */ + @inherit(r_7, w_7) + @ext(0x13, 0) + model Z2RoomZoneMapping { + /** Configures which room temperature is assigned to zone 2 */ + value: zmapping; + } + + /** room temperature desired zone 2 */ + @inherit(r_7, w_7) + @ext(0x14, 0) + model Z2ActualRoomTempDesired { + /** Current room setpoint considering all basic conditions passed to the control algorithms */ + value: tempv; + } + + /** short name of zone 2 */ + @inherit(r_7, w_7) + @ext(0x16, 0) + model Z2Shortname { + value: shortname; + } + + /** zone 2 label (first part) */ + @inherit(r_7, w_7) + @ext(0x17, 0) + model Z2Name1 { + value: zname; + } + + /** zone 2 label (second part) */ + @inherit(r_7, w_7) + @ext(0x18, 0) + model Z2Name2 { + value: zname; + } + + /** manual heating setpoint zone 2 */ + @inherit(r_7, w_7) + @ext(0x22, 0) + model Z2HeatingTempManual { + /** Desired heating setpoint in manual mode for zone 2 */ + value: tempv; + } + + /** manual cooling setpoint zone 2 */ + @inherit(r_7, w_7) + @ext(0x23, 0) + model Z2CoolingTempManual { + /** Desired cooling setpoint in manual mode for zone 2 */ + value: tempv; + } + + // ##### zone 3 ##### + + /** default *r */ + @base(MF, 0x24, 0x2, 0, 0x3, 0x2) + model r_8 { + @maxLength(4) + value: IGN; + } + + /** default *w */ + @write + @base(MF, 0x24, 0x2, 1, 0x3, 0x2) + model w_8 {} + + /** cooling operation mode zone 3 */ + @inherit(r_8, w_8) + @ext(1, 0) + model Z3OpModeCooling { + /** Operation mode for cooling of zone 3 */ + value: opmode; + } + + /** cooling setpoint zone 3 */ + @inherit(r_8, w_8) + @ext(0x2, 0) + model Z3CoolingTemp { + /** Desired cooling setpoint for zone 3 */ + value: tempv; + } + + /** holiday period start zone 3 */ + @inherit(r_8, w_8) + @ext(0x3, 0) + model Z3HolidayStartPeriod { + /** Start date of holidays for zone 3 */ + value: hfrom; + } + + /** holiday period end zone 3 */ + @inherit(r_8, w_8) + @ext(0x4, 0) + model Z3HolidayEndPeriod { + /** End date of holidays for zone 3 */ + value: hto; + } + + /** room setpoint holiday period zone 3 */ + @inherit(r_8, w_8) + @ext(0x5, 0) + model Z3HolidayTemp { + /** Holiday setpoint for zone 3 */ + value: tempv; + } + + /** operation mode zone 3 */ + @inherit(r_8, w_8) + @ext(0x6, 0) + model Z3OpMode { + /** Operation mode of zone 3 */ + value: opmode; + } + + /** desired temperature zone 3 */ + // TODO: verify + //@inherit(r_8, w_8) + //@ext(0x22, 0) + //model Z3DayTemp { + /** Day setpoint for zone 3 */ + // value: tempv; + //} + + /** quick veto temperature zone 3 */ + @inherit(r_8, w_8) + @ext(0x8, 0) + model Z3QuickVetoTemp { + /** Manual override setpoint for zone 3 */ + value: tempv; + } + + /** night temperature zone 3 */ + @inherit(r_8, w_8) + @ext(0x9, 0) + model Z3NightTemp { + /** Night setpoint for zone 3 */ + value: tempv; + } + + /** SF mode zone 3 */ + @inherit(r_8, w_8) + @ext(0xe, 0) + model Z3SFMode { + value: sfmode; + } + + /** room temperature zone 3 */ + @inherit(r_8) + @ext(0xf, 0) + model Z3RoomTemp { + /** Current room temperature in zone 3 */ + value: tempv; + } + + /** valve status zone 3 */ + @inherit(r_8) + @ext(0x12, 0) + model Z3ValveStatus { + value: zonevalve; + } + + /** room zone mapping zone 3 */ + @inherit(r_8, w_8) + @ext(0x13, 0) + model Z3RoomZoneMapping { + /** Configures which room temperature is assigned to zone 3 */ + value: zmapping; + } + + /** room temperature desired zone 3 */ + @inherit(r_8, w_8) + @ext(0x14, 0) + model Z3ActualRoomTempDesired { + /** Current room setpoint considering all basic conditions passed to the control algorithms */ + value: tempv; + } + + /** short name of zone 3 */ + @inherit(r_8, w_8) + @ext(0x16, 0) + model Z3Shortname { + value: shortname; + } + + /** zone 3 label (first part) */ + @inherit(r_8, w_8) + @ext(0x17, 0) + model Z3Name1 { + value: zname; + } + + /** zone 3 label (second part) */ + @inherit(r_8, w_8) + @ext(0x18, 0) + model Z3Name2 { + value: zname; + } + + /** manual heating setpoint zone 3 */ + @inherit(r_8, w_8) + @ext(0x22, 0) + model Z3HeatingTempManual { + /** Desired heating setpoint in manual mode for zone 3 */ + value: tempv; + } + + /** manual cooling setpoint zone 3 */ + @inherit(r_8, w_8) + @ext(0x23, 0) + model Z3CoolingTempManual { + /** Desired cooling setpoint in manual mode for zone 3 */ + value: tempv; + } + + // includes + + /** included parts */ + union _includes { + Errors_inc, + } +} diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index 2dcbc32f7..4e4939c8d 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -162,6 +162,10 @@ scalar hwcmode2 extends UCH; @values(Values_mixer) scalar mixer extends UCH; +/** zone valve state */ +@values(Values_zonevalve) +scalar zonevalve extends UCH; + /** day/night mode */ @values(Values_daynight) scalar daynight extends UCH; @@ -538,6 +542,11 @@ enum Values_mixer { close: 2, } +enum Values_zonevalve { + close: 0, + open: 1, +} + enum Values_daynight { night: 0, day: 1, From 2fd7676411f3d21e38ce40cbf9983eaf381e8b4a Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Wed, 1 Jan 2025 17:42:38 +0000 Subject: [PATCH 02/25] Make template more generic --- src/vaillant/15.basv3.tsp | 6 +++--- src/vaillant/_templates.tsp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index c76782fca..eee3d75a5 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -940,7 +940,7 @@ namespace Basv3 { @inherit(r_6) @ext(0x12, 0) model Z1ValveStatus { - value: zonevalve; + value: closeopen; } /** room zone mapping zone 1 */ @@ -1102,7 +1102,7 @@ namespace Basv3 { @inherit(r_7) @ext(0x12, 0) model Z2ValveStatus { - value: zonevalve; + value: closeopen; } /** room zone mapping zone 2 */ @@ -1264,7 +1264,7 @@ namespace Basv3 { @inherit(r_8) @ext(0x12, 0) model Z3ValveStatus { - value: zonevalve; + value: closeopen; } /** room zone mapping zone 3 */ diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index 4e4939c8d..e3062e4eb 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -163,8 +163,8 @@ scalar hwcmode2 extends UCH; scalar mixer extends UCH; /** zone valve state */ -@values(Values_zonevalve) -scalar zonevalve extends UCH; +@values(Values_closeopen) +scalar closeopen extends UCH; /** day/night mode */ @values(Values_daynight) @@ -542,7 +542,7 @@ enum Values_mixer { close: 2, } -enum Values_zonevalve { +enum Values_closeopen { close: 0, open: 1, } From 93d53505afe117efae1105d80a8639c5fe266d87 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Sat, 4 Jan 2025 20:05:22 +0000 Subject: [PATCH 03/25] Add definitions from `ctlv3` --- src/vaillant/15.basv3.tsp | 535 ++++++++++++++++++++++++++++-------- src/vaillant/_templates.tsp | 64 +++++ 2 files changed, 492 insertions(+), 107 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index eee3d75a5..01f5bea5a 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -76,6 +76,22 @@ namespace Basv3 { value: UIN; } + /** hybrid manager */ + @inherit(r_1) + @ext(0xf, 0) + model HybridManager { + /** 0=Trivalence (tariff based); 1=Bivalence (Outside temperature based) */ + value: hmmode; + } + + /** tariff aux heater */ + @inherit(r_1) + @ext(0x10, 0) + model TariffAuxHeater { + /** Secondary heater tariff value */ + value: UIN; + } + /** adaptive heat curve */ @inherit(r_1, w_1) @ext(0x14, 0) @@ -106,6 +122,38 @@ namespace Basv3 { value: minutes2; } + /** hc alternative point */ + @inherit(r_1, w_1) + @ext(0x22, 0) + model HcAlternativePoint { + /** exclusively alternate heating below alternative point (-21=off) */ + value: tempv; + } + + /** hc bivalence point */ + @inherit(r_1, w_1) + @ext(0x23, 0) + model HcBivalencePoint { + /** Bivalence point heating */ + value: tempv; + } + + /** backup boiler */ + @inherit(r_1, w_1) + @ext(0x24, 0) + model BackupBoiler { + /** Function of back-up boiler (Off/Hc/Hwc/Hc+Hwc) */ + value: backmode2; + } + + /** hc emergency temperature */ + @inherit(r_1, w_1) + @ext(0x26, 0) + model HcEmergencyTemperature { + /** Emergency operation temperature */ + value: tempv; + } + /** hysteresis cylinder charge */ @inherit(r_1, w_1) @ext(0x27, 0) @@ -121,6 +169,14 @@ namespace Basv3 { value: calibrationv; } + /** offset outside temperature */ + @inherit(r_1, w_1) + @ext(0x2d, 0) + model OffsetOutsideTemp { + /* Offset outside temperature (used to determined DisplayedOutsideTemp) */ + value: calibrationv; + } + /** next maintenance */ @inherit(r_1, w_1) @ext(0x2c, 0) @@ -152,6 +208,14 @@ namespace Basv3 { value: UIN; } + /** cooling outside temperature threshold */ + @inherit(r_1, w_1) + @ext(0x38, 0) + model CoolingOutsideTempThreshold { + /** Activate Cooling when average outside temperature exceeds threshold */ + value: tempv; + } + /** water pressure */ @inherit(r_1) @ext(0x39, 0) @@ -159,6 +223,14 @@ namespace Basv3 { value: pressv; } + /** dew point offset */ + @inherit(r_1, w_1) + @ext(0x3A, 0) + model DewPointOffset { + /** Subtract from Z*RoomTemp to calculate dew point */ + value: tempv; + } + /** total solar yield */ @inherit(r_1) @ext(0x3d, 0) @@ -357,7 +429,7 @@ namespace Basv3 { } /** average outside temperature */ - @inherit(r_1) + @inherit(r_1, w_1) @ext(0x95, 0) model OutsideTempAvg { /** Average outside temperature (updated every 3h) */ @@ -378,7 +450,7 @@ namespace Basv3 { value: tempv; } - /** storage temperature bottom */ + /** hwc storage temperature bottom */ @inherit(r_1) @ext(0x9e, 0) model HwcStorageTempBottom { @@ -398,6 +470,14 @@ namespace Basv3 { model HcStorageTempBottom { value: tempv; } + + /** offset hwc cylinder charge */ + @inherit(r_1, w_1) + @ext(0xa2, 0) + model HwcCylinderOffset { + value: calibrationv; + } + // ##### hot water circuit ##### /** default *r */ @@ -412,6 +492,21 @@ namespace Basv3 { @base(MF, 0x24, 0x2, 1, 1, 0) model w_2 {} + /** hwc enabled */ + @inherit(r_2, w_2) + @ext(0x1, 0) + model HwcEnabled { + value: yesno; + } + + /** hwc circulation pump status */ + @inherit(r_2) + @ext(0x2, 0) + model HwcCircPumpStatus { + /* Hwc circulation pump status (also turns on during a legionella run) */ + value: onoff; + } + /** hwc operation mode */ @inherit(r_2, w_2) @ext(0x3, 0) @@ -436,6 +531,14 @@ namespace Basv3 { value: tempv; } + /** hwc reheating active */ + @inherit(r_2) + @ext(0x6, 0) + model HwcReheatingActive { + /* Indicates ongoing hot/legionella water run */ + value: yesno; + } + /** hwc flow temperature */ @inherit(r_2) @ext(0x8, 0) @@ -467,6 +570,13 @@ namespace Basv3 { value: sfmode; } + /** hwc status */ + @inherit(r_2) + @ext(0xf, 0) + model HwcStatus { + value: zonestatus; + } + // ##### heating circuit 1 ##### /** default *r */ @@ -489,6 +599,28 @@ namespace Basv3 { @maxLength(1) ign: IGN; } + /** DesiredReturnTemp heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0x4, 0) + model Hc1DesiredReturnTemp { + /** Temperature for the increase in return circuit (default 30) */ + value: tempv; + } + + /** DewPointMonitoring heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0x5, 0) + model Hc1DewPointMonitoring { + value: onoff; + } + + /** CoolingEnabled heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0x6, 0) + model Hc1CoolingEnabled { + value: onoff; + } + /** ActualFlowTempDesired heating circuit 1 */ @inherit(r_3) @ext(0x7, 0) @@ -505,6 +637,21 @@ namespace Basv3 { value: tempv; } + /** ExtHwcTempDesired heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0x9, 0) + model Hc1ExtHwcTempDesired { + /** Desired external Hwc temperature */ + value: tempv; + } + + /** DewPointOffset heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0xa, 0) + model Hc1DewPointOffset { + value: calibrationv; + } + /** ExcessTemp heating circuit 1 */ @inherit(r_3, w_3) @ext(0xb, 0) @@ -513,11 +660,26 @@ namespace Basv3 { value: calibrationv; } + /** DesiredTemp heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0xc, 0) + model Hc1DesiredTemp { + value: tempv; + } + + /** DesiredSetbackTemp heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0xd, 0) + model Hc1DesiredSetbackTemp { + /* Target setback temperatur Hc1 (fixed circuit type) */ + value: tempv; + } + /** AutoOffMode heating circuit 1 */ @inherit(r_3, w_3) @ext(0xe, 0) model Hc1AutoOffMode { - /** Operation of Hc1 during the lowering time; no influence if room temperature modulation is set to thermostat */ + /** Operation of Hc1 during the lowering time; no influence if room temperature modulation is set to expanded */ value: offmode; } @@ -528,22 +690,36 @@ namespace Basv3 { value: EXP; } - /** MaxFlowTempDesired heating circuit 1 */ + /** HeatingMaxFlowTempDesired heating circuit 1 */ @inherit(r_3, w_3) @ext(0x10, 0) - model Hc1MaxFlowTempDesired { + model Hc1HeatingMaxFlowTempDesired { /** Maximum flow temperature setpoint (end emphasis) of Hc1 */ value: tempv; } - /** MinFlowTempDesired heating circuit 1 */ + /** CoolingMaxFlowTempDesired heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0x11, 0) + model Hc1CoolingMaxFlowTempDesired { + value: tempv; + } + + /** HeatingMinFlowTempDesired heating circuit 1 */ @inherit(r_3, w_3) @ext(0x12, 0) - model Hc1MinFlowTempDesired { + model Hc1HeatingMinFlowTempDesired { /** Minimum flow temperature setpoint (end emphasis) of Hc1 */ value: tempv; } + /** ExtHwcOpMode heating circuit 1 */ + @inherit(r_3, w_3) + @ext(0x13, 0) + model Hc1ExtHwcOpMode { + value: opmode2; + } + /** summer outside switchoff temperature heating circuit 1 */ @inherit(r_3, w_3) @ext(0x14, 0) @@ -552,12 +728,26 @@ namespace Basv3 { value: tempv; } - /** RoomTempSwitchOn heating circuit 1 */ + /** RoomTempMod heating circuit 1 */ @inherit(r_3, w_3) @ext(0x15, 0) - model Hc1RoomTempSwitchOn { + model Hc1RoomTempMod { /** Room temperature modulation of Hc1 */ - value: rcmode; + value: rcmode2; + } + + /** ExtHwcActive heating circuit 1 */ + @inherit(r_3) + @ext(0x18, 0) + model Hc1ExtHwcActive { + value: onoff; + } + + /** ExtHeatDemand heating circuit 1 */ + @inherit(r_3) + @ext(0x19, 0) + model Hc1ExtHeatDemand { + value: onoff; } /** MixerMovement heating circuit 1 */ @@ -577,7 +767,7 @@ namespace Basv3 { } /** Status heating circuit 1 */ - @inherit(r_3) + @inherit(r_3, w_3) @ext(0x1b, 0) model Hc1Status { value: onoff; @@ -587,8 +777,9 @@ namespace Basv3 { @inherit(r_3) @ext(0x1e, 0) model Hc1PumpStatus { - value: onoff; + value: hcpumpmode; } + // ##### heating circuit 2 ##### /** default *r */ @@ -611,6 +802,28 @@ namespace Basv3 { @maxLength(1) ign: IGN; } + /** DesiredReturnTemp heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0x4, 0) + model Hc2DesiredReturnTemp { + /** Temperature for the increase in return circuit (default 30) */ + value: tempv; + } + + /** DewPointMonitoring heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0x5, 0) + model Hc2DewPointMonitoring { + value: onoff; + } + + /** CoolingEnabled heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0x6, 0) + model Hc2CoolingEnabled { + value: onoff; + } + /** ActualFlowTempDesired heating circuit 2 */ @inherit(r_4) @ext(0x7, 0) @@ -627,6 +840,21 @@ namespace Basv3 { value: tempv; } + /** ExtHwcTempDesired heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0x9, 0) + model Hc2ExtHwcTempDesired { + /** Desired external Hwc temperature */ + value: tempv; + } + + /** DewPointOffset heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0xa, 0) + model Hc2DewPointOffset { + value: calibrationv; + } + /** ExcessTemp heating circuit 2 */ @inherit(r_4, w_4) @ext(0xb, 0) @@ -639,7 +867,7 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0xe, 0) model Hc2AutoOffMode { - /** Operation of Hc2 during the lowering time; no influence if room temperature modulation is set to thermostat */ + /** Operation of Hc2 during the lowering time; no influence if room temperature modulation is set to expanded */ value: offmode; } @@ -650,22 +878,36 @@ namespace Basv3 { value: EXP; } - /** MaxFlowTempDesired heating circuit 2 */ + /** HeatingMaxFlowTempDesired heating circuit 2 */ @inherit(r_4, w_4) @ext(0x10, 0) - model Hc2MaxFlowTempDesired { + model Hc2HeatingMaxFlowTempDesired { /** Maximum flow temperature setpoint (end emphasis) of Hc2 */ value: tempv; } - /** MinFlowTempDesired heating circuit 2 */ + /** CoolingMaxFlowTempDesired heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0x11, 0) + model Hc2CoolingMaxFlowTempDesired { + value: tempv; + } + + /** HeatingMinFlowTempDesired heating circuit 2 */ @inherit(r_4, w_4) @ext(0x12, 0) - model Hc2MinFlowTempDesired { + model Hc2HeatingMinFlowTempDesired { /** Minimum flow temperature setpoint (end emphasis) of Hc2 */ value: tempv; } + /** ExtHwcOpMode heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0x13, 0) + model Hc2ExtHwcOpMode { + value: opmode2; + } + /** summer outside switchoff temperature heating circuit 2 */ @inherit(r_4, w_4) @ext(0x14, 0) @@ -674,14 +916,28 @@ namespace Basv3 { value: tempv; } - /** RoomTempSwitchOn heating circuit 2 */ + /** RoomTempMod heating circuit 2 */ @inherit(r_4, w_4) @ext(0x15, 0) - model Hc2RoomTempSwitchOn { + model Hc2RoomTempMod { /** Room temperature modulation of Hc2 */ - value: rcmode; + value: rcmode2; } + /** ExtHwcActive heating circuit 2 */ + @inherit(r_4) + @ext(0x18, 0) + model Hc2ExtHwcActive { + value: onoff; + } + + /** ExtHeatDemand heating circuit 2 */ + @inherit(r_4) + @ext(0x19, 0) + model Hc2ExtHeatDemand { + value: onoff; + } + /** MixerMovement heating circuit 2 */ @inherit(r_4) @ext(0x1a, 0) @@ -699,7 +955,7 @@ namespace Basv3 { } /** Status heating circuit 2 */ - @inherit(r_4) + @inherit(r_4, w_4) @ext(0x1b, 0) model Hc2Status { value: onoff; @@ -709,8 +965,9 @@ namespace Basv3 { @inherit(r_4) @ext(0x1e, 0) model Hc2PumpStatus { - value: onoff; + value: hcpumpmode; } + // ##### heating circuit 3 ##### /** default *r */ @@ -733,6 +990,28 @@ namespace Basv3 { @maxLength(1) ign: IGN; } + /** DesiredReturnTemp heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0x4, 0) + model Hc3DesiredReturnTemp { + /** Temperature for the increase in return circuit (default 30) */ + value: tempv; + } + + /** DewPointMonitoring heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0x5, 0) + model Hc3DewPointMonitoring { + value: onoff; + } + + /** CoolingEnabled heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0x6, 0) + model Hc3CoolingEnabled { + value: onoff; + } + /** ActualFlowTempDesired heating circuit 3 */ @inherit(r_5) @ext(0x7, 0) @@ -749,6 +1028,21 @@ namespace Basv3 { value: tempv; } + /** ExtHwcTempDesired heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0x9, 0) + model Hc3ExtHwcTempDesired { + /** Desired external Hwc temperature */ + value: tempv; + } + + /** DewPointOffset heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0xa, 0) + model Hc3DewPointOffset { + value: calibrationv; + } + /** ExcessTemp heating circuit 3 */ @inherit(r_5, w_5) @ext(0xb, 0) @@ -761,7 +1055,7 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0xe, 0) model Hc3AutoOffMode { - /** Operation of Hc3 during the lowering time; no influence if room temperature modulation is set to thermostat */ + /** Operation of Hc3 during the lowering time; no influence if room temperature modulation is set to expanded */ value: offmode; } @@ -772,22 +1066,36 @@ namespace Basv3 { value: EXP; } - /** MaxFlowTempDesired heating circuit 3 */ + /** HeatingMaxFlowTempDesired heating circuit 3 */ @inherit(r_5, w_5) @ext(0x10, 0) - model Hc3MaxFlowTempDesired { + model Hc3HeatingMaxFlowTempDesired { /** Maximum flow temperature setpoint (end emphasis) of Hc3 */ value: tempv; } - /** MinFlowTempDesired heating circuit 3 */ + /** CoolingMaxFlowTempDesired heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0x11, 0) + model Hc3CoolingMaxFlowTempDesired { + value: tempv; + } + + /** HeatingMinFlowTempDesired heating circuit 3 */ @inherit(r_5, w_5) @ext(0x12, 0) - model Hc3MinFlowTempDesired { + model Hc3HeatingMinFlowTempDesired { /** Minimum flow temperature setpoint (end emphasis) of Hc3 */ value: tempv; } + /** ExtHwcOpMode heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0x13, 0) + model Hc3ExtHwcOpMode { + value: opmode2; + } + /** summer outside switchoff temperature heating circuit 3 */ @inherit(r_5, w_5) @ext(0x14, 0) @@ -796,12 +1104,26 @@ namespace Basv3 { value: tempv; } - /** RoomTempSwitchOn heating circuit 3 */ + /** RoomTempMod heating circuit 3 */ @inherit(r_5, w_5) @ext(0x15, 0) - model Hc3RoomTempSwitchOn { + model Hc3RoomTempMod { /** Room temperature modulation of Hc3 */ - value: rcmode; + value: rcmode2; + } + + /** ExtHwcActive heating circuit 3 */ + @inherit(r_5) + @ext(0x18, 0) + model Hc3ExtHwcActive { + value: onoff; + } + + /** ExtHeatDemand heating circuit 3 */ + @inherit(r_5) + @ext(0x19, 0) + model Hc3ExtHeatDemand { + value: onoff; } /** MixerMovement heating circuit 3 */ @@ -821,7 +1143,7 @@ namespace Basv3 { } /** Status heating circuit 3 */ - @inherit(r_5) + @inherit(r_5, w_5) @ext(0x1b, 0) model Hc3Status { value: onoff; @@ -831,7 +1153,7 @@ namespace Basv3 { @inherit(r_5) @ext(0x1e, 0) model Hc3PumpStatus { - value: onoff; + value: hcpumpmode; } // ##### zone 1 ##### @@ -850,17 +1172,17 @@ namespace Basv3 { /** cooling operation mode zone 1 */ @inherit(r_6, w_6) - @ext(1, 0) - model Z1OpModeCooling { + @ext(0x1, 0) + model Z1CoolingOpMode { /** Operation mode for cooling of zone 1 */ - value: opmode; + value: opmode2; } /** cooling setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x2, 0) - model Z1CoolingTemp { - /** Desired cooling setpoint for zone 1 */ + model Z1CoolingTempDesiredTimeControlled { + /** Time controlled desired cooling room temperature for zone 1 */ value: tempv; } @@ -888,23 +1210,14 @@ namespace Basv3 { value: tempv; } - /** operation mode zone 1 */ + /** heating operation mode zone 1 */ @inherit(r_6, w_6) @ext(0x6, 0) - model Z1OpMode { + model Z1HeatingOpMode { /** Operation mode of zone 1 */ - value: opmode; + value: opmode2; } - /** desired temperature zone 1 */ - // TODO: verify - //@inherit(r_6, w_6) - //@ext(0x22, 0) - //model Z1DayTemp { - /** Day setpoint for zone 1 */ - // value: tempv; - //} - /** quick veto temperature zone 1 */ @inherit(r_6, w_6) @ext(0x8, 0) @@ -913,11 +1226,11 @@ namespace Basv3 { value: tempv; } - /** night temperature zone 1 */ + /** set back temperature zone 1 */ @inherit(r_6, w_6) @ext(0x9, 0) - model Z1NightTemp { - /** Night setpoint for zone 1 */ + model Z1SetBackTemp { + /** Set back temperature zone 1 (time controlled heating) */ value: tempv; } @@ -925,6 +1238,7 @@ namespace Basv3 { @inherit(r_6, w_6) @ext(0xe, 0) model Z1SFMode { + /* Modes 2=party 4=onedayaway 5=onedayhome officially not supported in VRC720 */ value: sfmode; } @@ -951,11 +1265,19 @@ namespace Basv3 { value: zmapping; } - /** room temperature desired zone 1 */ - @inherit(r_6, w_6) + /** heating room temperature desired zone 1 */ + @inherit(r_6) @ext(0x14, 0) - model Z1ActualRoomTempDesired { - /** Current room setpoint considering all basic conditions passed to the control algorithms */ + model Z1HeatingActualRoomTempDesired { + /** Current room setpoint considering all basic conditions passed to the control algorithms (0 = heating inactive) */ + value: tempv; + } + + /** cooling room temperature desired zone 1 */ + @inherit(r_6) + @ext(0x15, 0) + model Z1CoolingActualRoomTempDesired { + /** Current room setpoint considering all basic conditions passed to the control algorithms (99 = cooling inactive) */ value: tempv; } @@ -983,7 +1305,7 @@ namespace Basv3 { /** manual heating setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x22, 0) - model Z1HeatingTempManual { + model Z1HeatingTempDesiredManual { /** Desired heating setpoint in manual mode for zone 1 */ value: tempv; } @@ -991,7 +1313,7 @@ namespace Basv3 { /** manual cooling setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x23, 0) - model Z1CoolingTempManual { + model Z1CoolingTempDesiredManual { /** Desired cooling setpoint in manual mode for zone 1 */ value: tempv; } @@ -1012,17 +1334,17 @@ namespace Basv3 { /** cooling operation mode zone 2 */ @inherit(r_7, w_7) - @ext(1, 0) - model Z2OpModeCooling { + @ext(0x1, 0) + model Z2CoolingOpMode { /** Operation mode for cooling of zone 2 */ - value: opmode; + value: opmode2; } /** cooling setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x2, 0) - model Z2CoolingTemp { - /** Desired cooling setpoint for zone 2 */ + model Z2CoolingTempDesiredTimeControlled { + /** Time controlled desired cooling room temperature for zone 2 */ value: tempv; } @@ -1053,20 +1375,11 @@ namespace Basv3 { /** operation mode zone 2 */ @inherit(r_7, w_7) @ext(0x6, 0) - model Z2OpMode { + model Z2HeatingOpMode { /** Operation mode of zone 2 */ - value: opmode; + value: opmode2; } - /** desired temperature zone 2 */ - // TODO: verify - //@inherit(r_7, w_7) - //@ext(0x22, 0) - //model Z2DayTemp { - /** Day setpoint for zone 2 */ - // value: tempv; - //} - /** quick veto temperature zone 2 */ @inherit(r_7, w_7) @ext(0x8, 0) @@ -1075,11 +1388,11 @@ namespace Basv3 { value: tempv; } - /** night temperature zone 2 */ + /** set back temperature zone 2 */ @inherit(r_7, w_7) @ext(0x9, 0) - model Z2NightTemp { - /** Night setpoint for zone 2 */ + model Z2SetBackTemp { + /** Set back temperature zone 2 (time controlled heating) */ value: tempv; } @@ -1087,6 +1400,7 @@ namespace Basv3 { @inherit(r_7, w_7) @ext(0xe, 0) model Z2SFMode { + /* Modes 2=party 4=onedayaway 5=onedayhome officially not supported in VRC720 */ value: sfmode; } @@ -1113,11 +1427,19 @@ namespace Basv3 { value: zmapping; } - /** room temperature desired zone 2 */ - @inherit(r_7, w_7) + /** heating room temperature desired zone 2 */ + @inherit(r_7) @ext(0x14, 0) - model Z2ActualRoomTempDesired { - /** Current room setpoint considering all basic conditions passed to the control algorithms */ + model Z2HeatingActualRoomTempDesired { + /** Current room setpoint considering all basic conditions passed to the control algorithms (0 = heating inactive) */ + value: tempv; + } + + /** cooling room temperature desired zone 2 */ + @inherit(r_7) + @ext(0x15, 0) + model Z2CoolingActualRoomTempDesired { + /** Current room setpoint considering all basic conditions passed to the control algorithms (99 = cooling inactive) */ value: tempv; } @@ -1145,7 +1467,7 @@ namespace Basv3 { /** manual heating setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x22, 0) - model Z2HeatingTempManual { + model Z2HeatingTempDesiredManual { /** Desired heating setpoint in manual mode for zone 2 */ value: tempv; } @@ -1153,7 +1475,7 @@ namespace Basv3 { /** manual cooling setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x23, 0) - model Z2CoolingTempManual { + model Z2CoolingTempDesiredManual { /** Desired cooling setpoint in manual mode for zone 2 */ value: tempv; } @@ -1174,17 +1496,17 @@ namespace Basv3 { /** cooling operation mode zone 3 */ @inherit(r_8, w_8) - @ext(1, 0) - model Z3OpModeCooling { + @ext(0x1, 0) + model Z3CoolingOpMode { /** Operation mode for cooling of zone 3 */ - value: opmode; + value: opmode2; } /** cooling setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x2, 0) - model Z3CoolingTemp { - /** Desired cooling setpoint for zone 3 */ + model Z3CoolingTempDesiredTimeControlled { + /** Time controlled desired cooling room temperature for zone 3 */ value: tempv; } @@ -1215,20 +1537,11 @@ namespace Basv3 { /** operation mode zone 3 */ @inherit(r_8, w_8) @ext(0x6, 0) - model Z3OpMode { + model Z3HeatingOpMode { /** Operation mode of zone 3 */ value: opmode; } - /** desired temperature zone 3 */ - // TODO: verify - //@inherit(r_8, w_8) - //@ext(0x22, 0) - //model Z3DayTemp { - /** Day setpoint for zone 3 */ - // value: tempv; - //} - /** quick veto temperature zone 3 */ @inherit(r_8, w_8) @ext(0x8, 0) @@ -1237,11 +1550,11 @@ namespace Basv3 { value: tempv; } - /** night temperature zone 3 */ + /** set back temperature zone 3 */ @inherit(r_8, w_8) @ext(0x9, 0) - model Z3NightTemp { - /** Night setpoint for zone 3 */ + model Z3SetBackTemp { + /** Set back temperature zone 1 (time controlled heating) */ value: tempv; } @@ -1275,11 +1588,19 @@ namespace Basv3 { value: zmapping; } - /** room temperature desired zone 3 */ - @inherit(r_8, w_8) + /** heating room temperature desired zone 3 */ + @inherit(r_8) @ext(0x14, 0) - model Z3ActualRoomTempDesired { - /** Current room setpoint considering all basic conditions passed to the control algorithms */ + model Z3HeatingActualRoomTempDesired { + /** Current room setpoint considering all basic conditions passed to the control algorithms (0 = heating inactive) */ + value: tempv; + } + + /** cooling room temperature desired zone 2 */ + @inherit(r_8) + @ext(0x15, 0) + model Z3CoolingActualRoomTempDesired { + /** Current room setpoint considering all basic conditions passed to the control algorithms (99 = cooling inactive) */ value: tempv; } @@ -1307,7 +1628,7 @@ namespace Basv3 { /** manual heating setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x22, 0) - model Z3HeatingTempManual { + model Z3HeatingTempDesiredManual { /** Desired heating setpoint in manual mode for zone 3 */ value: tempv; } @@ -1315,7 +1636,7 @@ namespace Basv3 { /** manual cooling setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x23, 0) - model Z3CoolingTempManual { + model Z3CoolingTempDesiredManual { /** Desired cooling setpoint in manual mode for zone 3 */ value: tempv; } diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index e3062e4eb..4120e442a 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -138,6 +138,14 @@ scalar hcmode extends UCH; @values(Values_hcmode2) scalar hcmode2 extends UCH; +/** hc pump mode */ +@values(Values_hcpumpmode) +scalar hcpumpmode extends UCH; + +/** hybrid manager mode */ +@values(Values_hmmode) +scalar hmmode extends UCH; + /** mixer mode */ @values(Values_mcmode) scalar mcmode extends UCH; @@ -305,6 +313,9 @@ scalar backtype extends UCH; @values(Values_backmode) scalar backmode extends UCH; +@values(Values_backmode2) +scalar backmode2 extends UCH; + @unit("kW") scalar power extends UCH; @@ -373,12 +384,18 @@ scalar frequency extends UIN; @values(Values_zonesel) scalar zonesel extends UIN; +@values(Values_zonestatus) +scalar zonestatus extends UIN; + @values(Values_sfmode) scalar sfmode extends UCH; @values(Values_opmode) scalar opmode extends UIN; +@values(Values_opmode2) +scalar opmode2 extends UIN; + @values(Values_zmapping) scalar zmapping extends UIN; @@ -411,6 +428,9 @@ scalar offmode extends UIN; @values(Values_rcmode) scalar rcmode extends UIN; +@values(Values_rcmode2) +scalar rcmode2 extends UIN; + /** array index for the zones. Array Index start at 0 for the first element */ scalar slotIndex extends UCH; @@ -494,6 +514,18 @@ enum Values_hcmode2 { water: 4, } +enum Values_hcpumpmode { + off: 0, + heat: 1, + cool: 2, + exthwc: 3, +} + +enum Values_hmmode { + trivalence: 0, + bivalence: 1, +} + enum Values_mcmode { disabled: 0, on: 1, @@ -613,6 +645,13 @@ enum Values_backmode { onlybackup: 2, } +enum Values_backmode2 { + off: 0, + heat: 1, + water: 2, + heatandwater: 3, +} + enum Values_pumppow { _0: 0, _1: 1, @@ -673,6 +712,19 @@ enum Values_zonesel { _6: 6, } +enum Values_zonestatus { + auto: 0, + ventilation: 1, + party: 3, + veto: 4, + onedayaway: 5, + onedayathome: 6, + holidayaway: 7, + holidayathome: 8, + load: 9, + off: 10, +} + enum Values_sfmode { auto: 0, ventilation: 1, @@ -690,6 +742,12 @@ enum Values_opmode { night: 3, } +enum Values_opmode2 { + off: 0, + time_controlled: 1, + manual: 2, +} + enum Values_zmapping { none: 0, VRC700: 1, @@ -716,6 +774,12 @@ enum Values_rcmode { thermostat: 2, } +enum Values_rcmode2 { + inactive: 0, + active: 1, + expanded: 2, +} + enum Values_appliancecode { off: 0, prerun: 1, From 33b72bcae9f3baa95f9e3fa43e85ca8e2fbeceb5 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Sat, 4 Jan 2025 20:27:53 +0000 Subject: [PATCH 04/25] Change `opmode` to `opmode2` --- src/vaillant/15.basv3.tsp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 01f5bea5a..2e38902ef 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -512,7 +512,7 @@ namespace Basv3 { @ext(0x3, 0) model HwcOpMode { /** Operation mode of Hwc */ - value: opmode; + value: opmode2; } /** hwc temperature desired */ @@ -1539,7 +1539,7 @@ namespace Basv3 { @ext(0x6, 0) model Z3HeatingOpMode { /** Operation mode of zone 3 */ - value: opmode; + value: opmode2; } /** quick veto temperature zone 3 */ From 3b2f06827f80ff336d96323f0068bf49b8d78b7c Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Sun, 5 Jan 2025 18:35:53 +0000 Subject: [PATCH 05/25] Add Z*Status, Z*RoomHumidity, and more templates --- src/vaillant/15.basv3.tsp | 90 ++++++++++++++++++++++++++++--------- src/vaillant/_templates.tsp | 29 ++++++++++++ 2 files changed, 98 insertions(+), 21 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 2e38902ef..c9b697043 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -157,7 +157,7 @@ namespace Basv3 { /** hysteresis cylinder charge */ @inherit(r_1, w_1) @ext(0x27, 0) - model CylinderChargeHyst { + model HwcCylinderChargeHyst { /** Hysteresis cylinder charge */ value: calibrationv; } @@ -165,7 +165,7 @@ namespace Basv3 { /** offset cylinder charge */ @inherit(r_1, w_1) @ext(0x29, 0) - model CylinderChargeOffset { + model HwcCylinderChargeOffset { value: calibrationv; } @@ -563,17 +563,19 @@ namespace Basv3 { value: hto; } - /** hwc SF mode */ + /** hwc Special Function (SF) mode */ @inherit(r_2, w_2) @ext(0xd, 0) model HwcSFMode { - value: sfmode; + /** Only auto=0; load=6 supported */ + value: sfmode3; } /** hwc status */ @inherit(r_2) @ext(0xf, 0) model HwcStatus { + /** Only auto=0; holidayaway=7; load=9; off=10 supported */ value: zonestatus; } @@ -675,12 +677,12 @@ namespace Basv3 { value: tempv; } - /** AutoOffMode heating circuit 1 */ + /** SetbackMode heating circuit 1 */ @inherit(r_3, w_3) @ext(0xe, 0) - model Hc1AutoOffMode { + model Hc1SetbackMode { /** Operation of Hc1 during the lowering time; no influence if room temperature modulation is set to expanded */ - value: offmode; + value: offmode2; } /** HeatCurve heating circuit 1 */ @@ -863,12 +865,12 @@ namespace Basv3 { value: calibrationv; } - /** AutoOffMode heating circuit 2 */ + /** SetbackMode heating circuit 2 */ @inherit(r_4, w_4) @ext(0xe, 0) - model Hc2AutoOffMode { + model Hc2SetbackMode { /** Operation of Hc2 during the lowering time; no influence if room temperature modulation is set to expanded */ - value: offmode; + value: offmode2; } /** HeatCurve heating circuit 2 */ @@ -1051,12 +1053,12 @@ namespace Basv3 { value: calibrationv; } - /** AutoOffMode heating circuit 3 */ + /** SetbackMode heating circuit 3 */ @inherit(r_5, w_5) @ext(0xe, 0) - model Hc3AutoOffMode { + model Hc3SetbackMode { /** Operation of Hc3 during the lowering time; no influence if room temperature modulation is set to expanded */ - value: offmode; + value: offmode2; } /** HeatCurve heating circuit 3 */ @@ -1234,12 +1236,12 @@ namespace Basv3 { value: tempv; } - /** SF mode zone 1 */ + /** Special Function (SF) mode zone 1 */ @inherit(r_6, w_6) @ext(0xe, 0) model Z1SFMode { - /* Modes 2=party 4=onedayaway 5=onedayhome officially not supported in VRC720 */ - value: sfmode; + /* Only auto=0; ventilation=1; veto=3 supported */ + value: sfmode2; } /** room temperature zone 1 */ @@ -1302,6 +1304,14 @@ namespace Basv3 { value: zname; } + /** zone 1 status */ + @inherit(r_6) + @ext(0x1b, 0) + model Z1Status { + /** Only auto=0; ventilation=1; veto=4; holidayaway=7; load=9; off=10 supported */ + value: zonestatus; + } + /** manual heating setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x22, 0) @@ -1318,6 +1328,13 @@ namespace Basv3 { value: tempv; } + /** room humidity zone 1 */ + @inherit(r_6) + @ext(0x28, 0) + model Z1RoomHumidity { + value: percentv; + } + // ##### zone 2 ##### /** default *r */ @@ -1396,12 +1413,12 @@ namespace Basv3 { value: tempv; } - /** SF mode zone 2 */ + /** Special Function (SF) mode zone 2 */ @inherit(r_7, w_7) @ext(0xe, 0) model Z2SFMode { - /* Modes 2=party 4=onedayaway 5=onedayhome officially not supported in VRC720 */ - value: sfmode; + /* Only auto=0; ventilation=1; veto=3 supported */ + value: sfmode2; } /** room temperature zone 2 */ @@ -1464,6 +1481,14 @@ namespace Basv3 { value: zname; } + /** zone 2 status */ + @inherit(r_7) + @ext(0x1b, 0) + model Z2Status { + /** Only auto=0; ventilation=1; veto=4; holidayaway=7; load=9; off=10 supported */ + value: zonestatus; + } + /** manual heating setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x22, 0) @@ -1480,6 +1505,13 @@ namespace Basv3 { value: tempv; } + /** room humidity zone 2 */ + @inherit(r_7) + @ext(0x28, 0) + model Z2RoomHumidity { + value: percentv; + } + // ##### zone 3 ##### /** default *r */ @@ -1558,11 +1590,12 @@ namespace Basv3 { value: tempv; } - /** SF mode zone 3 */ + /** Special Function (SF) mode zone 3 */ @inherit(r_8, w_8) @ext(0xe, 0) model Z3SFMode { - value: sfmode; + /* Only auto=0; ventilation=1; veto=3 supported */ + value: sfmode2; } /** room temperature zone 3 */ @@ -1625,6 +1658,14 @@ namespace Basv3 { value: zname; } + /** zone 3 status */ + @inherit(r_8) + @ext(0x1b, 0) + model Z3Status { + /** Only auto=0; ventilation=1; veto=4; holidayaway=7; load=9; off=10 supported */ + value: zonestatus; + } + /** manual heating setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x22, 0) @@ -1641,6 +1682,13 @@ namespace Basv3 { value: tempv; } + /** room humidity zone 3 */ + @inherit(r_8) + @ext(0x28, 0) + model Z3RoomHumidity { + value: percentv; + } + // includes /** included parts */ diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index 4120e442a..f1d3d93cb 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -28,6 +28,10 @@ scalar press extends FLT; @unit("bar") scalar pressv extends EXP; +/** percentage */ +@unit("%") +scalar percentv extends EXP; + /** date */ scalar date extends HDA3; @@ -390,6 +394,12 @@ scalar zonestatus extends UIN; @values(Values_sfmode) scalar sfmode extends UCH; +@values(Values_sfmode2) +scalar sfmode2 extends UCH; + +@values(Values_sfmode3) +scalar sfmode3 extends UCH; + @values(Values_opmode) scalar opmode extends UIN; @@ -425,6 +435,9 @@ scalar mamode extends UIN; @values(Values_offmode) scalar offmode extends UIN; +@values(Values_offmode2) +scalar offmode2 extends UIN; + @values(Values_rcmode) scalar rcmode extends UIN; @@ -735,6 +748,17 @@ enum Values_sfmode { load: 6, } +enum Values_sfmode2 { + auto: 0, + ventilation: 1, + veto: 3, +} + +enum Values_sfmode3 { + auto: 0, + load: 6, +} + enum Values_opmode { off: 0, auto: 1, @@ -768,6 +792,11 @@ enum Values_offmode { night: 1, } +enum Values_offmode2 { + eco: 0, + normal: 1, +} + enum Values_rcmode { off: 0, modulating: 1, From df0307d059c3df7fc62d914c29e3469baadb2783 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Sat, 11 Jan 2025 23:39:56 +0000 Subject: [PATCH 06/25] Add various timers --- src/vaillant/15.basv3.tsp | 1188 ++++++++++++++++++++++++++++++++++- src/vaillant/_templates.tsp | 17 +- 2 files changed, 1197 insertions(+), 8 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index c9b697043..a1d5082c0 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -100,10 +100,10 @@ namespace Basv3 { value: yesno; } - /** maximum cylinder charging time */ + /** hwc cylinder maximum charging time */ @inherit(r_1, w_1) @ext(0x17, 0) - model MaxCylinderChargeTime { + model HwcCylinderChargeMaxTime { value: minutes2; } @@ -169,12 +169,18 @@ namespace Basv3 { value: calibrationv; } - /** offset outside temperature */ + /** hwc legionella time */ @inherit(r_1, w_1) - @ext(0x2d, 0) - model OffsetOutsideTemp { - /* Offset outside temperature (used to determined DisplayedOutsideTemp) */ - value: calibrationv; + @ext(0x2a, 0) + model HwcLegionellaTime { + value: HTM; + } + + /** ohwc legionella day */ + @inherit(r_1, w_1) + @ext(0x2b, 0) + model HwcLegionellaDay { + value: daysel2; } /** next maintenance */ @@ -185,6 +191,14 @@ namespace Basv3 { value: date; } + /** offset outside temperature */ + @inherit(r_1, w_1) + @ext(0x2d, 0) + model OffsetOutsideTemp { + /* Offset outside temperature (used to determined DisplayedOutsideTemp) */ + value: calibrationv; + } + /** date */ @inherit(r_1) @ext(0x34, 0) @@ -579,6 +593,20 @@ namespace Basv3 { value: zonestatus; } + /** hwc holiday start time */ + @inherit(r_2, w_2) + @ext(0x10, 0) + model HwcHolidayStartTime { + value: HTI; + } + + /** hwc holiday end time */ + @inherit(r_2, w_2) + @ext(0x11, 0) + model HwcHolidayEndTime { + value: HTI; + } + // ##### heating circuit 1 ##### /** default *r */ @@ -1689,6 +1717,1152 @@ namespace Basv3 { value: percentv; } + // ##### timers ##### + + /** default *r */ + model r_9 {} + + @inherit(r_9) + @ext(0xb5, 0x55, 0xa0) + model UnknownValue_a0 { + @maxLength(8) + value: HEX; + } + + // timers hot water + + /** default *r */ + @base(MF, 0x55, 0xa5, 0, 0x2) + model r_10 {} + + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 0, 0x2) + model w_9 {} + + /** hwc timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 0, 0x2) + model HwcTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** hwc timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 0, 0x2) + model HwcTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** hwc timer monday read */ + @inherit(r_10) + @ext(0, 0) + model HwcTimer_Monday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer monday write */ + @inherit(w_9) + @ext(0, 0) + model HwcTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer tuesday read */ + @inherit(r_10) + @ext(1, 0) + model HwcTimer_Tuesday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer tuesday write */ + @inherit(w_9) + @ext(1, 0) + model HwcTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer wednesday read */ + @inherit(r_10) + @ext(2, 0) + model HwcTimer_Wednesday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer wednesday write */ + @inherit(w_9) + @ext(2, 0) + model HwcTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer thursday read */ + @inherit(r_10) + @ext(3, 0) + model HwcTimer_Thursday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer thursday write */ + @inherit(w_9) + @ext(3, 0) + model HwcTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer friday read */ + @inherit(r_10) + @ext(4, 0) + model HwcTimer_Friday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer friday write */ + @inherit(w_9) + @ext(4, 0) + model HwcTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer saturday read */ + @inherit(r_10) + @ext(5, 0) + model HwcTimer_Saturday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer saturday write */ + @inherit(w_9) + @ext(5, 0) + model HwcTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer sunday read */ + @inherit(r_10) + @ext(6, 0) + model HwcTimer_Sunday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer sunday write */ + @inherit(w_9) + @ext(6, 0) + model HwcTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } + + // timers circulation pump + + /** default *r */ + @base(MF, 0x55, 0xa5, 0, 0x3) + model r_11 {} + + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 0, 0x3) + model w_10 {} + + /** cc timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 0, 0x3) + model CcTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** cc timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 0, 0x3) + model CcTimer_Timeframes { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** cc timer monday read */ + @inherit(r_11) + @ext(0, 0) + model CcTimer_Monday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer monday write */ + @inherit(w_10) + @ext(0, 0) + model CcTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer tuesday read */ + @inherit(r_11) + @ext(1, 0) + model CcTimer_Tuesday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer tuesday write */ + @inherit(w_10) + @ext(1, 0) + model CcTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer wednesday read */ + @inherit(r_11) + @ext(0x2, 0) + model CcTimer_Wednesday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer wednesday write */ + @inherit(w_10) + @ext(0x2, 0) + model CcTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer thursday read */ + @inherit(r_11) + @ext(0x3, 0) + model CcTimer_Thursday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer thursday write */ + @inherit(w_10) + @ext(0x3, 0) + model CcTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer friday read */ + @inherit(r_11) + @ext(0x4, 0) + model CcTimer_Friday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer friday write */ + @inherit(w_10) + @ext(0x4, 0) + model CcTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer saturday read */ + @inherit(r_11) + @ext(0x5, 0) + model CcTimer_Saturday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer saturday write */ + @inherit(w_10) + @ext(0x5, 0) + model CcTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer sunday read */ + @inherit(r_11) + @ext(0x6, 0) + model CcTimer_Sunday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer sunday write */ + @inherit(w_10) + @ext(0x6, 0) + model CcTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } + + // timers silent mode + + /** default *r */ + @base(MF, 0x55, 0xa5, 0, 0x4) + model r_12 {} + + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 0, 0x4) + model w_11 {} + + /** silent timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 0, 0x4) + model SilentTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** silent timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 0, 0x4) + model SilentTimer_Timeframes { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** silent timer monday read */ + @inherit(r_12) + @ext(0, 0) + model SilentTimer_Monday { + value: rTimeSlotWithoutTemp; + } + + /** silent timer monday write */ + @inherit(w_11) + @ext(0, 0) + model SilentTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** silent timer tuesday read */ + @inherit(r_12) + @ext(1, 0) + model SilentTimer_Tuesday { + value: rTimeSlotWithoutTemp; + } + + /** silent timer tuesday write */ + @inherit(w_11) + @ext(1, 0) + model SilentTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** silent timer wednesday read */ + @inherit(r_12) + @ext(0x2, 0) + model SilentTimer_Wednesday { + value: rTimeSlotWithoutTemp; + } + + /** silent timer wednesday write */ + @inherit(w_11) + @ext(0x2, 0) + model SilentTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** silent timer thursday read */ + @inherit(r_12) + @ext(0x3, 0) + model SilentTimer_Thursday { + value: rTimeSlotWithoutTemp; + } + + /** silent timer thursday write */ + @inherit(w_11) + @ext(0x3, 0) + model SilentTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** silent timer friday read */ + @inherit(r_12) + @ext(0x4, 0) + model SilentTimer_Friday { + value: rTimeSlotWithoutTemp; + } + + /** silent timer friday write */ + @inherit(w_11) + @ext(0x4, 0) + model SilentTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** silent timer saturday read */ + @inherit(r_12) + @ext(0x5, 0) + model SilentTimer_Saturday { + value: rTimeSlotWithoutTemp; + } + + /** silent timer saturday write */ + @inherit(w_11) + @ext(0x5, 0) + model SilentTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** silent timer sunday read */ + @inherit(r_12) + @ext(0x6, 0) + model SilentTimer_Sunday { + value: rTimeSlotWithoutTemp; + } + + /** silent timer sunday write */ + @inherit(w_11) + @ext(0x6, 0) + model SilentTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } + + // heating timers zone 1 + + /** default *r */ + @base(MF, 0x55, 0xa5, 0, 0) + model r_13 {} + + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 0, 0) + model w_12 {} + + /** timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 0, 0) + model Z1HeatingTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 0, 0) + model Z1HeatingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer heating monday read */ + @inherit(r_13) + @ext(0, 0) + model Z1HeatingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer heating monday write */ + @inherit(w_12) + @ext(0, 0) + model Z1HeatingTimer_MondayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating tuesday read */ + @inherit(r_13) + @ext(1, 0) + model Z1HeatingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer heating tuesday write */ + @inherit(w_12) + @ext(1, 0) + model Z1HeatingTimer_TuesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating wednesday read */ + @inherit(r_13) + @ext(0x2, 0) + model Z1HeatingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer heating wednesday write */ + @inherit(w_12) + @ext(0x2, 0) + model Z1HeatingTimer_WednesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating thursday read */ + @inherit(r_13) + @ext(0x3, 0) + model Z1HeatingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer heating thursday write */ + @inherit(w_12) + @ext(0x3, 0) + model Z1HeatingTimer_ThursdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating friday read */ + @inherit(r_13) + @ext(0x4, 0) + model Z1HeatingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer heating friday write */ + @inherit(w_12) + @ext(0x4, 0) + model Z1HeatingTimer_FridayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating saturday read */ + @inherit(r_13) + @ext(0x5, 0) + model Z1HeatingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer heating saturday write */ + @inherit(w_12) + @ext(0x5, 0) + model Z1HeatingTimer_SaturdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating sunday read */ + @inherit(r_13) + @ext(0x6, 0) + model Z1HeatingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer heating sunday write */ + @inherit(w_12) + @ext(0x6, 0) + model Z1HeatingTimer_SundayWrite { + value: wTimeSlotWithTemp; + } + + // cooling timers zone 1 + + /** default *r */ + @base(MF, 0x55, 0xa5, 0, 1) + model r_14 {} + + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 0, 1) + model w_13 {} + + /** timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 0, 1) + model Z1CoolingTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 0, 1) + model Z1CoolingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer cooling monday read */ + @inherit(r_14) + @ext(0, 0) + model Z1CoolingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer cooling monday write */ + @inherit(w_13) + @ext(0, 0) + model Z1CoolingTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling tuesday read */ + @inherit(r_14) + @ext(1, 0) + model Z1CoolingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling tuesday write */ + @inherit(w_13) + @ext(1, 0) + model Z1CoolingTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling wednesday read */ + @inherit(r_14) + @ext(0x2, 0) + model Z1CoolingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling wednesday write */ + @inherit(w_13) + @ext(0x2, 0) + model Z1CoolingTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling thursday read */ + @inherit(r_14) + @ext(0x3, 0) + model Z1CoolingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer cooling thursday write */ + @inherit(w_13) + @ext(0x3, 0) + model Z1CoolingTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling friday read */ + @inherit(r_14) + @ext(0x4, 0) + model Z1CoolingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer cooling friday write */ + @inherit(w_13) + @ext(0x4, 0) + model Z1CoolingTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling saturday read */ + @inherit(r_14) + @ext(0x5, 0) + model Z1CoolingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer cooling saturday write */ + @inherit(w_13) + @ext(0x5, 0) + model Z1CoolingTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling sunday read */ + @inherit(r_14) + @ext(0x6, 0) + model Z1CoolingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer cooling sunday write */ + @inherit(w_13) + @ext(0x6, 0) + model Z1CoolingTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } + + // heating timers zone 2 + + /** default *r */ + @base(MF, 0x55, 0xa5, 1, 0) + model r_15 {} + + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 1, 0) + model w_14 {} + + /** timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 1, 0) + model Z2HeatingTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 1, 0) + model Z2HeatingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer heating monday read */ + @inherit(r_15) + @ext(0, 0) + model Z2HeatingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer heating monday write */ + @inherit(w_14) + @ext(0, 0) + model Z2HeatingTimer_MondayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating tuesday read */ + @inherit(r_15) + @ext(1, 0) + model Z2HeatingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer heating tuesday write */ + @inherit(w_14) + @ext(1, 0) + model Z2HeatingTimer_TuesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating wednesday read */ + @inherit(r_15) + @ext(0x2, 0) + model Z2HeatingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer heating wednesday write */ + @inherit(w_14) + @ext(0x2, 0) + model Z2HeatingTimer_WednesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating thursday read */ + @inherit(r_15) + @ext(0x3, 0) + model Z2HeatingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer heating thursday write */ + @inherit(w_14) + @ext(0x3, 0) + model Z2HeatingTimer_ThursdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating friday read */ + @inherit(r_15) + @ext(0x4, 0) + model Z2HeatingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer heating friday write */ + @inherit(w_14) + @ext(0x4, 0) + model Z2HeatingTimer_FridayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating saturday read */ + @inherit(r_15) + @ext(0x5, 0) + model Z2HeatingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer heating saturday write */ + @inherit(w_14) + @ext(0x5, 0) + model Z2HeatingTimer_SaturdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating sunday read */ + @inherit(r_15) + @ext(0x6, 0) + model Z2HeatingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer heating sunday write */ + @inherit(w_14) + @ext(0x6, 0) + model Z2HeatingTimer_SundayWrite { + value: wTimeSlotWithTemp; + } + + // cooling timers zone 2 + + /** default *r */ + @base(MF, 0x55, 0xa5, 1, 1) + model r_16 {} + + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 1, 1) + model w_15 {} + + /** timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 1, 1) + model Z2CoolingTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 1, 1) + model Z2CoolingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer cooling monday read */ + @inherit(r_16) + @ext(0, 0) + model Z2CoolingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer cooling monday write */ + @inherit(w_15) + @ext(0, 0) + model Z2CoolingTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling tuesday read */ + @inherit(r_16) + @ext(1, 0) + model Z2CoolingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling tuesday write */ + @inherit(w_15) + @ext(1, 0) + model Z2CoolingTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling wednesday read */ + @inherit(r_16) + @ext(0x2, 0) + model Z2CoolingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling wednesday write */ + @inherit(w_15) + @ext(0x2, 0) + model Z2CoolingTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling thursday read */ + @inherit(r_16) + @ext(0x3, 0) + model Z2CoolingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer cooling thursday write */ + @inherit(w_15) + @ext(0x3, 0) + model Z2CoolingTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling friday read */ + @inherit(r_16) + @ext(0x4, 0) + model Z2CoolingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer cooling friday write */ + @inherit(w_15) + @ext(0x4, 0) + model Z2CoolingTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling saturday read */ + @inherit(r_16) + @ext(0x5, 0) + model Z2CoolingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer cooling saturday write */ + @inherit(w_15) + @ext(0x5, 0) + model Z2CoolingTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling sunday read */ + @inherit(r_16) + @ext(0x6, 0) + model Z2CoolingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer cooling sunday write */ + @inherit(w_15) + @ext(0x6, 0) + model Z2CoolingTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } + + // heating timers zone 3 + + /** default *r */ + @base(MF, 0x55, 0xa5, 2, 0) + model r_17 {} + + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 2, 0) + model w_16 {} + + /** timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 2, 0) + model Z3HeatingTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 2, 0) + model Z3HeatingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer heating monday read */ + @inherit(r_17) + @ext(0, 0) + model Z3HeatingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer heating monday write */ + @inherit(w_16) + @ext(0, 0) + model Z3HeatingTimer_MondayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating tuesday read */ + @inherit(r_17) + @ext(1, 0) + model Z3HeatingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer heating tuesday write */ + @inherit(w_16) + @ext(1, 0) + model Z3HeatingTimer_TuesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating wednesday read */ + @inherit(r_17) + @ext(0x2, 0) + model Z3HeatingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer heating wednesday write */ + @inherit(w_16) + @ext(0x2, 0) + model Z3HeatingTimer_WednesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating thursday read */ + @inherit(r_17) + @ext(0x3, 0) + model Z3HeatingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer heating thursday write */ + @inherit(w_16) + @ext(0x3, 0) + model Z3HeatingTimer_ThursdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating friday read */ + @inherit(r_17) + @ext(0x4, 0) + model Z3HeatingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer heating friday write */ + @inherit(w_16) + @ext(0x4, 0) + model Z3HeatingTimer_FridayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating saturday read */ + @inherit(r_17) + @ext(0x5, 0) + model Z3HeatingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer heating saturday write */ + @inherit(w_16) + @ext(0x5, 0) + model Z3HeatingTimer_SaturdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating sunday read */ + @inherit(r_17) + @ext(0x6, 0) + model Z3HeatingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer heating sunday write */ + @inherit(w_16) + @ext(0x6, 0) + model Z3HeatingTimer_SundayWrite { + value: wTimeSlotWithTemp; + } + + // cooling timers zone 3 + + /** default *r */ + @base(MF, 0x55, 0xa5, 2, 1) + model r_18 {} + + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 2, 1) + model w_17 {} + + /** timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 2, 1) + model Z3CoolingTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 2, 1) + model Z3CoolingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer cooling monday read */ + @inherit(r_18) + @ext(0, 0) + model Z3CoolingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer cooling monday write */ + @inherit(w_17) + @ext(0, 0) + model Z3CoolingTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling tuesday read */ + @inherit(r_18) + @ext(1, 0) + model Z3CoolingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling tuesday write */ + @inherit(w_17) + @ext(1, 0) + model Z3CoolingTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling wednesday read */ + @inherit(r_18) + @ext(0x2, 0) + model Z3CoolingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling wednesday write */ + @inherit(w_17) + @ext(0x2, 0) + model Z3CoolingTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling thursday read */ + @inherit(r_18) + @ext(0x3, 0) + model Z3CoolingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer cooling thursday write */ + @inherit(w_17) + @ext(0x3, 0) + model Z3CoolingTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling friday read */ + @inherit(r_18) + @ext(0x4, 0) + model Z3CoolingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer cooling friday write */ + @inherit(w_17) + @ext(0x4, 0) + model Z3CoolingTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling saturday read */ + @inherit(r_18) + @ext(0x5, 0) + model Z3CoolingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer cooling saturday write */ + @inherit(w_17) + @ext(0x5, 0) + model Z3CoolingTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling sunday read */ + @inherit(r_18) + @ext(0x6, 0) + model Z3CoolingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer cooling sunday write */ + @inherit(w_17) + @ext(0x6, 0) + model Z3CoolingTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } + // includes /** included parts */ diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index f1d3d93cb..f22926103 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -42,6 +42,9 @@ scalar day extends BDY; @values(Values_daysel) scalar daysel extends UCH; +@values(Values_daysel2) +scalar daysel2 extends UCH; + /** days */ scalar days extends UCH; @@ -514,6 +517,18 @@ enum Values_daysel { Mo_Su: 3, } +enum Values_daysel2 { + off: 0, + Mon: 1, + Tue: 2, + Wed: 3, + Thu: 4, + Fri: 5, + Sat: 6, + Sun: 7, + daily: 8, +} + enum Values_hcmode { auto: 0, off: 1, @@ -774,7 +789,7 @@ enum Values_opmode2 { enum Values_zmapping { none: 0, - VRC700: 1, + VRC7XX: 1, VR91_1: 2, VR91_2: 3, VR91_3: 4, From 40ab79fef8ee4c3fe53a7f217617efc237efa380 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Sun, 19 Jan 2025 02:45:00 +0000 Subject: [PATCH 07/25] Add QuickVeto, ESCO & more --- src/vaillant/15.basv3.tsp | 145 +++++++++++++++++++++++++++++++++--- src/vaillant/_templates.tsp | 25 +++++++ 2 files changed, 160 insertions(+), 10 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index a1d5082c0..d73802572 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -259,6 +259,13 @@ namespace Basv3 { value: energy4; } + /** esco block function */ + @inherit(r_1, w_1) + @ext(0x45, 0) + model ESCOBlockFunction { + value: escomode; + } + /** hwc max flow temp desired */ @inherit(r_1, w_1) @ext(0x46, 0) @@ -457,17 +464,24 @@ namespace Basv3 { value: yesno; } - /** hwc storage temperature top */ + /** green iq */ + @inherit(r_1) + @ext(0x9a, 0) + model GreenIQ { + value: onoff; + } + + /** hwc cylinder temperature top */ @inherit(r_1) @ext(0x9d, 0) - model HwcStorageTempTop { + model HwcCylinderTempTop { value: tempv; } - /** hwc storage temperature bottom */ + /** hwc cylinder temperature bottom */ @inherit(r_1) @ext(0x9e, 0) - model HwcStorageTempBottom { + model HwcCylinderTempBottom { value: tempv; } @@ -537,11 +551,11 @@ namespace Basv3 { value: tempv; } - /** hwc storage temperature */ + /** hwc cylinder temperature */ @inherit(r_2) @ext(0x5, 0) - model HwcStorageTemp { - /** Hwc storage temperature */ + model HwcCylinderTemp { + /** Hwc cylinder temperature */ value: tempv; } @@ -625,7 +639,7 @@ namespace Basv3 { @inherit(r_3) @ext(0x2, 0) model Hc1CircuitType { - mctype: mctype; + value: hctype; @maxLength(1) ign: IGN; } @@ -828,7 +842,7 @@ namespace Basv3 { @inherit(r_4) @ext(0x2, 0) model Hc2CircuitType { - mctype: mctype; + value: hctype; @maxLength(1) ign: IGN; } @@ -1016,7 +1030,7 @@ namespace Basv3 { @inherit(r_5) @ext(0x2, 0) model Hc3CircuitType { - mctype: mctype; + value: hctype; @maxLength(1) ign: IGN; } @@ -1340,6 +1354,28 @@ namespace Basv3 { value: zonestatus; } + /** quick veto end time zone 1 */ + @inherit(r_6) + @ext(0x1e, 0) + model Z1QuickVetoEndTime { + /** Manual override end time for zone 1 */ + value: HTI; + } + + /** end time of holidays for zone 1 */ + @inherit(r_6, w_6) + @ext(0x20, 0) + model Z1HolidayEndTime { + value: HTI; + } + + /** start time of holidays for zone 1 */ + @inherit(r_6, w_6) + @ext(0x21, 0) + model Z1HolidayStartTime { + value: HTI; + } + /** manual heating setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x22, 0) @@ -1356,6 +1392,21 @@ namespace Basv3 { value: tempv; } + /** quick veto end date zone 1 */ + @inherit(r_6) + @ext(0x24, 0) + model Z1QuickVetoEndDate { + value: date; + } + + /** quick veto duration zone 1 */ + @inherit(r_6, w_6) + @ext(0x26, 0) + model Z1QuickVetoDuration { + /** Valid values are 0.5-12 in 0.5 increments (default 3); writing enables quick veto mode */ + value: EXP; + } + /** room humidity zone 1 */ @inherit(r_6) @ext(0x28, 0) @@ -1517,6 +1568,28 @@ namespace Basv3 { value: zonestatus; } + /** quick veto end time zone 2 */ + @inherit(r_7) + @ext(0x1e, 0) + model Z2QuickVetoEndTime { + /** Manual override end time for zone 2 */ + value: HTI; + } + + /** end time of holidays for zone 2 */ + @inherit(r_7, w_7) + @ext(0x20, 0) + model Z2HolidayEndTime { + value: HTI; + } + + /** start time of holidays for zone 2 */ + @inherit(r_7, w_7) + @ext(0x21, 0) + model Z2HolidayStartTime { + value: HTI; + } + /** manual heating setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x22, 0) @@ -1533,6 +1606,21 @@ namespace Basv3 { value: tempv; } + /** quick veto end date zone 2 */ + @inherit(r_7) + @ext(0x24, 0) + model Z2QuickVetoEndDate { + value: date; + } + + /** quick veto duration zone 2 */ + @inherit(r_7, w_7) + @ext(0x26, 0) + model Z2QuickVetoDuration { + /** Valid values are 0.5-12 in 0.5 increments (default 3); writing enables quick veto mode */ + value: EXP; + } + /** room humidity zone 2 */ @inherit(r_7) @ext(0x28, 0) @@ -1694,6 +1782,28 @@ namespace Basv3 { value: zonestatus; } + /** quick veto end time zone 3 */ + @inherit(r_8) + @ext(0x1e, 0) + model Z3QuickVetoEndTime { + /** Manual override end time for zone 3 */ + value: HTI; + } + + /** end time of holidays for zone 3 */ + @inherit(r_8, w_8) + @ext(0x20, 0) + model Z3HolidayEndTime { + value: HTI; + } + + /** start time of holidays for zone 3 */ + @inherit(r_8, w_8) + @ext(0x21, 0) + model Z3HolidayStartTime { + value: HTI; + } + /** manual heating setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x22, 0) @@ -1710,6 +1820,21 @@ namespace Basv3 { value: tempv; } + /** quick veto end date zone 3 */ + @inherit(r_8) + @ext(0x24, 0) + model Z3QuickVetoEndDate { + value: date; + } + + /** quick veto duration zone 3 */ + @inherit(r_8, w_8) + @ext(0x26, 0) + model Z3QuickVetoDuration { + /** Valid values are 0.5-12 in 0.5 increments (default 3); writing enables quick veto mode */ + value: EXP; + } + /** room humidity zone 3 */ @inherit(r_8) @ext(0x28, 0) diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index f22926103..d1a54c05d 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -165,6 +165,10 @@ scalar mctype extends UCH; @values(Values_mctype7) scalar mctype7 extends BI0_7; +/** hc type */ +@values(Values_hctype) +scalar hctype extends UCH; + /** hot water mode */ @values(Values_hwcmode) scalar hwcmode extends UCH; @@ -188,6 +192,10 @@ scalar daynight extends UCH; /** Status */ scalar status extends UCH; +/** ESCO */ +@values(Values_escomode) +scalar escomode extends UCH; + @values(Values_onoff) scalar onoff extends UCH; @@ -582,6 +590,23 @@ enum Values_mctype7 { circulation: 6, } +enum Values_hctype { + inactive: 0, + heat: 1, + fixed: 2, + water: 3, + returnincr: 4, +} + +enum Values_escomode { + heatpump: 0, + backup: 1, + heatpumpandbackup: 2, + heat: 3, + cool: 4, + heatandcool: 5, +} + enum Values_hwcmode { disabled: 0, on: 1, From 35271a05a4a8ee28e5abb6fcbe940a10402c4256 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Wed, 29 Jan 2025 22:50:22 +0000 Subject: [PATCH 08/25] Minor fixes --- src/vaillant/15.basv3.tsp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index d73802572..c09174a7f 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -1,6 +1,6 @@ import "@ebusd/ebus-typespec"; import "./_templates.tsp"; -import "./errors_inc.tsp"; +//import "./errors_inc.tsp"; using Ebus; using Ebus.Num; using Ebus.Dtm; @@ -1404,6 +1404,7 @@ namespace Basv3 { @ext(0x26, 0) model Z1QuickVetoDuration { /** Valid values are 0.5-12 in 0.5 increments (default 3); writing enables quick veto mode */ + @unit("h") value: EXP; } @@ -1618,6 +1619,7 @@ namespace Basv3 { @ext(0x26, 0) model Z2QuickVetoDuration { /** Valid values are 0.5-12 in 0.5 increments (default 3); writing enables quick veto mode */ + @unit("h") value: EXP; } @@ -1832,6 +1834,7 @@ namespace Basv3 { @ext(0x26, 0) model Z3QuickVetoDuration { /** Valid values are 0.5-12 in 0.5 increments (default 3); writing enables quick veto mode */ + @unit("h") value: EXP; } @@ -2991,7 +2994,9 @@ namespace Basv3 { // includes /** included parts */ +/** union _includes { Errors_inc, } +*/ } From 552143859071c375ddf4daf9df4e746a0e4adbfb Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Thu, 30 Jan 2025 03:13:06 +0000 Subject: [PATCH 09/25] Rename & align registers --- src/vaillant/15.basv3.tsp | 126 +++++++++++++++++++++++--------------- 1 file changed, 78 insertions(+), 48 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index c09174a7f..63706a1fd 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -48,7 +48,7 @@ namespace Basv3 { /** frost delay time */ @inherit(r_1, w_1) @ext(0x3, 0) - model FrostOverRideTime { + model FrostOverrideTime { /** Delay before frost protection is activated */ value: hoursum2; } @@ -195,7 +195,7 @@ namespace Basv3 { @inherit(r_1, w_1) @ext(0x2d, 0) model OffsetOutsideTemp { - /* Offset outside temperature (used to determined DisplayedOutsideTemp) */ + /* Offset outside temperature (used to determined OutsideTemp) */ value: calibrationv; } @@ -266,10 +266,10 @@ namespace Basv3 { value: escomode; } - /** hwc max flow temp desired */ + /** hwc max flow temp */ @inherit(r_1, w_1) @ext(0x46, 0) - model HwcMaxFlowTempDesired { + model HwcFlowTempMax { /** Maximum flow temperature setpoint of Hwc */ value: tempv; } @@ -437,7 +437,7 @@ namespace Basv3 { /** outside temperature */ @inherit(r_1) @ext(0x73, 0) - model DisplayedOutsideTemp { + model OutsideTemp { value: tempv; } @@ -570,7 +570,7 @@ namespace Basv3 { /** hwc flow temperature */ @inherit(r_2) @ext(0x8, 0) - model HwcFlowTemp { + model HwcFlowTempTarget { /** Desired flow temp for Hwc */ value: tempv; } @@ -668,7 +668,7 @@ namespace Basv3 { /** ActualFlowTempDesired heating circuit 1 */ @inherit(r_3) @ext(0x7, 0) - model Hc1ActualFlowTempDesired { + model Hc1FlowTempTarget { /** Current flow temperature setpoint of Hc1 */ value: tempv; } @@ -707,14 +707,14 @@ namespace Basv3 { /** DesiredTemp heating circuit 1 */ @inherit(r_3, w_3) @ext(0xc, 0) - model Hc1DesiredTemp { + model Hc1FixedDesiredTemp { value: tempv; } /** DesiredSetbackTemp heating circuit 1 */ @inherit(r_3, w_3) @ext(0xd, 0) - model Hc1DesiredSetbackTemp { + model Hc1FixedSetbackTemp { /* Target setback temperatur Hc1 (fixed circuit type) */ value: tempv; } @@ -737,7 +737,7 @@ namespace Basv3 { /** HeatingMaxFlowTempDesired heating circuit 1 */ @inherit(r_3, w_3) @ext(0x10, 0) - model Hc1HeatingMaxFlowTempDesired { + model Hc1HeatingFlowTempMax { /** Maximum flow temperature setpoint (end emphasis) of Hc1 */ value: tempv; } @@ -745,14 +745,14 @@ namespace Basv3 { /** CoolingMaxFlowTempDesired heating circuit 1 */ @inherit(r_3, w_3) @ext(0x11, 0) - model Hc1CoolingMaxFlowTempDesired { + model Hc1CoolingFlowTempMax { value: tempv; } /** HeatingMinFlowTempDesired heating circuit 1 */ @inherit(r_3, w_3) @ext(0x12, 0) - model Hc1HeatingMinFlowTempDesired { + model Hc1HeatingFlowTempMin { /** Minimum flow temperature setpoint (end emphasis) of Hc1 */ value: tempv; } @@ -869,9 +869,9 @@ namespace Basv3 { } /** ActualFlowTempDesired heating circuit 2 */ - @inherit(r_4) + @inherit(r_3) @ext(0x7, 0) - model Hc2ActualFlowTempDesired { + model Hc2FlowTempTarget { /** Current flow temperature setpoint of Hc2 */ value: tempv; } @@ -907,6 +907,21 @@ namespace Basv3 { value: calibrationv; } + /** DesiredTemp heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0xc, 0) + model Hc2FixedDesiredTemp { + value: tempv; + } + + /** DesiredSetbackTemp heating circuit 2 */ + @inherit(r_4, w_4) + @ext(0xd, 0) + model Hc2FixedSetbackTemp { + /* Target setback temperatur Hc2 (fixed circuit type) */ + value: tempv; + } + /** SetbackMode heating circuit 2 */ @inherit(r_4, w_4) @ext(0xe, 0) @@ -925,7 +940,7 @@ namespace Basv3 { /** HeatingMaxFlowTempDesired heating circuit 2 */ @inherit(r_4, w_4) @ext(0x10, 0) - model Hc2HeatingMaxFlowTempDesired { + model Hc2HeatingFlowTempMax { /** Maximum flow temperature setpoint (end emphasis) of Hc2 */ value: tempv; } @@ -933,14 +948,14 @@ namespace Basv3 { /** CoolingMaxFlowTempDesired heating circuit 2 */ @inherit(r_4, w_4) @ext(0x11, 0) - model Hc2CoolingMaxFlowTempDesired { + model Hc2CoolingFlowTempMax { value: tempv; } /** HeatingMinFlowTempDesired heating circuit 2 */ @inherit(r_4, w_4) @ext(0x12, 0) - model Hc2HeatingMinFlowTempDesired { + model Hc2HeatingFlowTempMin { /** Minimum flow temperature setpoint (end emphasis) of Hc2 */ value: tempv; } @@ -976,11 +991,11 @@ namespace Basv3 { } /** ExtHeatDemand heating circuit 2 */ - @inherit(r_4) - @ext(0x19, 0) - model Hc2ExtHeatDemand { - value: onoff; - } + @inherit(r_4) + @ext(0x19, 0) + model Hc2ExtHeatDemand { + value: onoff; + } /** MixerMovement heating circuit 2 */ @inherit(r_4) @@ -1059,7 +1074,7 @@ namespace Basv3 { /** ActualFlowTempDesired heating circuit 3 */ @inherit(r_5) @ext(0x7, 0) - model Hc3ActualFlowTempDesired { + model Hc3FlowTempTarget { /** Current flow temperature setpoint of Hc3 */ value: tempv; } @@ -1095,6 +1110,21 @@ namespace Basv3 { value: calibrationv; } + /** DesiredTemp heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0xc, 0) + model Hc3FixedDesiredTemp { + value: tempv; + } + + /** DesiredSetbackTemp heating circuit 3 */ + @inherit(r_5, w_5) + @ext(0xd, 0) + model Hc3FixedSetbackTemp { + /* Target setback temperatur Hc3 (fixed circuit type) */ + value: tempv; + } + /** SetbackMode heating circuit 3 */ @inherit(r_5, w_5) @ext(0xe, 0) @@ -1113,7 +1143,7 @@ namespace Basv3 { /** HeatingMaxFlowTempDesired heating circuit 3 */ @inherit(r_5, w_5) @ext(0x10, 0) - model Hc3HeatingMaxFlowTempDesired { + model Hc3HeatingFlowTempMax { /** Maximum flow temperature setpoint (end emphasis) of Hc3 */ value: tempv; } @@ -1121,14 +1151,14 @@ namespace Basv3 { /** CoolingMaxFlowTempDesired heating circuit 3 */ @inherit(r_5, w_5) @ext(0x11, 0) - model Hc3CoolingMaxFlowTempDesired { + model Hc3CoolingFlowTempMax { value: tempv; } /** HeatingMinFlowTempDesired heating circuit 3 */ @inherit(r_5, w_5) @ext(0x12, 0) - model Hc3HeatingMinFlowTempDesired { + model Hc3HeatingFlowTempMin { /** Minimum flow temperature setpoint (end emphasis) of Hc3 */ value: tempv; } @@ -1225,7 +1255,7 @@ namespace Basv3 { /** cooling setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x2, 0) - model Z1CoolingTempDesiredTimeControlled { + model Z1CoolingSetbackTemp { /** Time controlled desired cooling room temperature for zone 1 */ value: tempv; } @@ -1273,7 +1303,7 @@ namespace Basv3 { /** set back temperature zone 1 */ @inherit(r_6, w_6) @ext(0x9, 0) - model Z1SetBackTemp { + model Z1HeatingSetbackTemp { /** Set back temperature zone 1 (time controlled heating) */ value: tempv; } @@ -1312,7 +1342,7 @@ namespace Basv3 { /** heating room temperature desired zone 1 */ @inherit(r_6) @ext(0x14, 0) - model Z1HeatingActualRoomTempDesired { + model Z1HeatingRoomTempTarget { /** Current room setpoint considering all basic conditions passed to the control algorithms (0 = heating inactive) */ value: tempv; } @@ -1320,7 +1350,7 @@ namespace Basv3 { /** cooling room temperature desired zone 1 */ @inherit(r_6) @ext(0x15, 0) - model Z1CoolingActualRoomTempDesired { + model Z1CoolingRoomTempTarget { /** Current room setpoint considering all basic conditions passed to the control algorithms (99 = cooling inactive) */ value: tempv; } @@ -1379,7 +1409,7 @@ namespace Basv3 { /** manual heating setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x22, 0) - model Z1HeatingTempDesiredManual { + model Z1HeatingSetpointTemp { /** Desired heating setpoint in manual mode for zone 1 */ value: tempv; } @@ -1387,7 +1417,7 @@ namespace Basv3 { /** manual cooling setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x23, 0) - model Z1CoolingTempDesiredManual { + model Z1CoolingSetpointTemp { /** Desired cooling setpoint in manual mode for zone 1 */ value: tempv; } @@ -1440,7 +1470,7 @@ namespace Basv3 { /** cooling setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x2, 0) - model Z2CoolingTempDesiredTimeControlled { + model Z2CoolingSetbackTemp { /** Time controlled desired cooling room temperature for zone 2 */ value: tempv; } @@ -1469,7 +1499,7 @@ namespace Basv3 { value: tempv; } - /** operation mode zone 2 */ + /** heating operation mode zone 2 */ @inherit(r_7, w_7) @ext(0x6, 0) model Z2HeatingOpMode { @@ -1488,7 +1518,7 @@ namespace Basv3 { /** set back temperature zone 2 */ @inherit(r_7, w_7) @ext(0x9, 0) - model Z2SetBackTemp { + model Z2HeatingSetbackTemp { /** Set back temperature zone 2 (time controlled heating) */ value: tempv; } @@ -1527,7 +1557,7 @@ namespace Basv3 { /** heating room temperature desired zone 2 */ @inherit(r_7) @ext(0x14, 0) - model Z2HeatingActualRoomTempDesired { + model Z2HeatingRoomTempTarget { /** Current room setpoint considering all basic conditions passed to the control algorithms (0 = heating inactive) */ value: tempv; } @@ -1535,7 +1565,7 @@ namespace Basv3 { /** cooling room temperature desired zone 2 */ @inherit(r_7) @ext(0x15, 0) - model Z2CoolingActualRoomTempDesired { + model Z2CoolingRoomTempTarget { /** Current room setpoint considering all basic conditions passed to the control algorithms (99 = cooling inactive) */ value: tempv; } @@ -1594,7 +1624,7 @@ namespace Basv3 { /** manual heating setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x22, 0) - model Z2HeatingTempDesiredManual { + model Z2HeatingSetpointTemp { /** Desired heating setpoint in manual mode for zone 2 */ value: tempv; } @@ -1602,7 +1632,7 @@ namespace Basv3 { /** manual cooling setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x23, 0) - model Z2CoolingTempDesiredManual { + model Z2CoolingSetpointTemp { /** Desired cooling setpoint in manual mode for zone 2 */ value: tempv; } @@ -1655,7 +1685,7 @@ namespace Basv3 { /** cooling setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x2, 0) - model Z3CoolingTempDesiredTimeControlled { + model Z3CoolingSetbackTemp { /** Time controlled desired cooling room temperature for zone 3 */ value: tempv; } @@ -1684,7 +1714,7 @@ namespace Basv3 { value: tempv; } - /** operation mode zone 3 */ + /** heating operation mode zone 3 */ @inherit(r_8, w_8) @ext(0x6, 0) model Z3HeatingOpMode { @@ -1703,8 +1733,8 @@ namespace Basv3 { /** set back temperature zone 3 */ @inherit(r_8, w_8) @ext(0x9, 0) - model Z3SetBackTemp { - /** Set back temperature zone 1 (time controlled heating) */ + model Z3HeatingSetbackTemp { + /** Set back temperature zone 3 (time controlled heating) */ value: tempv; } @@ -1742,15 +1772,15 @@ namespace Basv3 { /** heating room temperature desired zone 3 */ @inherit(r_8) @ext(0x14, 0) - model Z3HeatingActualRoomTempDesired { + model Z3HeatingRoomTempTarget { /** Current room setpoint considering all basic conditions passed to the control algorithms (0 = heating inactive) */ value: tempv; } - /** cooling room temperature desired zone 2 */ + /** cooling room temperature desired zone 3 */ @inherit(r_8) @ext(0x15, 0) - model Z3CoolingActualRoomTempDesired { + model Z3CoolingRoomTempTarget { /** Current room setpoint considering all basic conditions passed to the control algorithms (99 = cooling inactive) */ value: tempv; } @@ -1809,7 +1839,7 @@ namespace Basv3 { /** manual heating setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x22, 0) - model Z3HeatingTempDesiredManual { + model Z3HeatingSetpointTemp { /** Desired heating setpoint in manual mode for zone 3 */ value: tempv; } @@ -1817,7 +1847,7 @@ namespace Basv3 { /** manual cooling setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x23, 0) - model Z3CoolingTempDesiredManual { + model Z3CoolingSetpointTemp { /** Desired cooling setpoint in manual mode for zone 3 */ value: tempv; } From 1840a2d0921ba8d4af76a8da58e2a92e93b81043 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Thu, 30 Jan 2025 03:18:39 +0000 Subject: [PATCH 10/25] Fix duplicated id --- src/vaillant/15.basv3.tsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 63706a1fd..c3242e8f3 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -869,7 +869,7 @@ namespace Basv3 { } /** ActualFlowTempDesired heating circuit 2 */ - @inherit(r_3) + @inherit(r_4) @ext(0x7, 0) model Hc2FlowTempTarget { /** Current flow temperature setpoint of Hc2 */ From 00311ccaaec83514610ac2996261a4904e00fb0d Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Thu, 30 Jan 2025 17:04:32 +0000 Subject: [PATCH 11/25] Add register permissions & bounds --- src/vaillant/15.basv3.tsp | 142 ++++++++++++++++++++++++++------------ 1 file changed, 97 insertions(+), 45 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index c3242e8f3..deeee324e 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -19,6 +19,14 @@ namespace Basv3 { value: IGN; } + /** default *ri for user level "install" */ + @auth("install") + @base(MF, 0x24, 0x2, 0, 0, 0) + model ri_1 { + @maxLength(4) + value: IGN; + } + /** default *w */ @write @base(MF, 0x24, 0x2, 1, 0, 0) @@ -31,22 +39,24 @@ namespace Basv3 { model wi_1 {} /** Hwc bivalence point */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x1, 0) model HwcBivalencePoint { + @minValue(-20) @maxValue(50) @step(1) value: tempv; } /** continuos heating */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x2, 0) model ContinuosHeating { + @minValue(-26) @maxValue(10) @step(1) /** -26=off, when the outside temperature falls below this threshold temperature the continuous heating function is started (off <=> function is disabled) */ value: tempv; } /** frost delay time */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x3, 0) model FrostOverrideTime { /** Delay before frost protection is activated */ @@ -54,7 +64,7 @@ namespace Basv3 { } /** Global System OFF */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x7, 0) model GlobalSystemOff { /** For switching system off */ @@ -62,14 +72,14 @@ namespace Basv3 { } /** hwc parallel loading */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0xa, 0) model HwcParallelLoading { value: onoff; } /** max room humidity */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0xe, 0) model MaxRoomHumidity { /** Maximum room humidity */ @@ -77,7 +87,7 @@ namespace Basv3 { } /** hybrid manager */ - @inherit(r_1) + @inherit(ri_1, wi_1) @ext(0xf, 0) model HybridManager { /** 0=Trivalence (tariff based); 1=Bivalence (Outside temperature based) */ @@ -85,7 +95,7 @@ namespace Basv3 { } /** tariff aux heater */ - @inherit(r_1) + @inherit(ri_1) @ext(0x10, 0) model TariffAuxHeater { /** Secondary heater tariff value */ @@ -93,7 +103,7 @@ namespace Basv3 { } /** adaptive heat curve */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x14, 0) model AdaptHeatCurve { /** Automatic correction of configured heat curve */ @@ -101,21 +111,21 @@ namespace Basv3 { } /** hwc cylinder maximum charging time */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x17, 0) model HwcCylinderChargeMaxTime { value: minutes2; } /** hwc lock time */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x18, 0) model HwcLockTime { value: minutes2; } /** pump additional time */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x1b, 0) model PumpAdditionalTime { /** Additional time the pump is running */ @@ -123,23 +133,25 @@ namespace Basv3 { } /** hc alternative point */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x22, 0) model HcAlternativePoint { + @minValue(-21) @maxValue(40) @step(1) /** exclusively alternate heating below alternative point (-21=off) */ value: tempv; } /** hc bivalence point */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x23, 0) model HcBivalencePoint { + @minValue(-20) @maxValue(30) @step(1) /** Bivalence point heating */ value: tempv; } /** backup boiler */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x24, 0) model BackupBoiler { /** Function of back-up boiler (Off/Hc/Hwc/Hc+Hwc) */ @@ -147,44 +159,47 @@ namespace Basv3 { } /** hc emergency temperature */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x26, 0) model HcEmergencyTemperature { + @minValue(20) @maxValue(80) @step(1) /** Emergency operation temperature */ value: tempv; } /** hysteresis cylinder charge */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x27, 0) model HwcCylinderChargeHyst { + @minValue(3) @maxValue(20) @step(0.5) /** Hysteresis cylinder charge */ value: calibrationv; } /** offset cylinder charge */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x29, 0) model HwcCylinderChargeOffset { + @minValue(0) @maxValue(40) @step(1) value: calibrationv; } /** hwc legionella time */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x2a, 0) model HwcLegionellaTime { value: HTM; } /** ohwc legionella day */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x2b, 0) model HwcLegionellaDay { value: daysel2; } /** next maintenance */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x2c, 0) model MaintenanceDate { /** Date for next maintenance */ @@ -195,6 +210,7 @@ namespace Basv3 { @inherit(r_1, w_1) @ext(0x2d, 0) model OffsetOutsideTemp { + @minValue(-3) @maxValue(3) @step(0.5) /* Offset outside temperature (used to determined OutsideTemp) */ value: calibrationv; } @@ -216,16 +232,17 @@ namespace Basv3 { } /** hydraulic scheme */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x36, 0) model HydraulicScheme { value: UIN; } /** cooling outside temperature threshold */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x38, 0) model CoolingOutsideTempThreshold { + @minValue(10) @maxValue(30) @step(1) /** Activate Cooling when average outside temperature exceeds threshold */ value: tempv; } @@ -238,9 +255,10 @@ namespace Basv3 { } /** dew point offset */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x3A, 0) model DewPointOffset { + @minValue(-10) @maxValue(10) @step(1) /** Subtract from Z*RoomTemp to calculate dew point */ value: tempv; } @@ -262,14 +280,15 @@ namespace Basv3 { /** esco block function */ @inherit(r_1, w_1) @ext(0x45, 0) - model ESCOBlockFunction { + model ESCO { value: escomode; } /** hwc max flow temp */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x46, 0) model HwcFlowTempMax { + @minValue(15) @maxValue(80) @step(1) /** Maximum flow temperature setpoint of Hwc */ value: tempv; } @@ -282,7 +301,7 @@ namespace Basv3 { } /** multifunction relay setting */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x4d, 0) model MultiRelaySetting { value: mamode; @@ -403,7 +422,7 @@ namespace Basv3 { //} /** installer name 1 */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x6c, 0) model Installer1 { /** Installer's name */ @@ -411,7 +430,7 @@ namespace Basv3 { } /** installer name 2 */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x6d, 0) model Installer2 { /** Installer's name */ @@ -419,7 +438,7 @@ namespace Basv3 { } /** phone number 1 (first part) */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x6f, 0) model PhoneNumber1 { /** Installer's telephone number */ @@ -427,7 +446,7 @@ namespace Basv3 { } /** phone number 2 (second part) */ - @inherit(r_1, w_1) + @inherit(r_1, wi_1) @ext(0x70, 0) model PhoneNumber2 { /** Installer's telephone number */ @@ -442,15 +461,16 @@ namespace Basv3 { } /** code for installer menu */ - @inherit(r_1, w_1) + @inherit(ri_1, wi_1) @ext(0x76, 0) model KeyCodeforConfigMenu { + @minValue(0) @maxValue(999) @step(1) /** 000-999; code for the installer's menues */ value: UIN; } /** average outside temperature */ - @inherit(r_1, w_1) + @inherit(r_1) @ext(0x95, 0) model OutsideTempAvg { /** Average outside temperature (updated every 3h) */ @@ -485,24 +505,25 @@ namespace Basv3 { value: tempv; } - /** hc storage temperature top */ + /** hc cylinder temperature top */ @inherit(r_1) @ext(0x9f, 0) - model HcStorageTempTop { + model HcCylinderTempTop { value: tempv; } - /** hc storage temperature bottom */ + /** hc cylinder temperature bottom */ @inherit(r_1) @ext(0xa0, 0) - model HcStorageTempBottom { + model HcCylinderTempBottom { value: tempv; } - /** offset hwc cylinder charge */ + /** offset buffer charge */ @inherit(r_1, w_1) @ext(0xa2, 0) - model HwcCylinderOffset { + model BufferChargeOffset { + @minValue(0) @maxValue(15) @step(1) value: calibrationv; } @@ -547,6 +568,7 @@ namespace Basv3 { @inherit(r_2, w_2) @ext(0x4, 0) model HwcTempDesired { + @minValue(35) @maxValue(70) @step(1) /** Setpoint of domestic hot water circuit */ value: tempv; } @@ -647,6 +669,7 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0x4, 0) model Hc1DesiredReturnTemp { + @minValue(15) @maxValue(80) @step(1) /** Temperature for the increase in return circuit (default 30) */ value: tempv; } @@ -693,6 +716,7 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0xa, 0) model Hc1DewPointOffset { + @minValue(-10) @maxValue(10) @step(1) value: calibrationv; } @@ -700,6 +724,7 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0xb, 0) model Hc1ExcessTemp { + @minValue(0) @maxValue(20) @step(1) /** Excess temperature of Hc1 (flow temperature's setpoint is increased by this value to keep the mixing valve in its control range) */ value: calibrationv; } @@ -708,6 +733,7 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0xc, 0) model Hc1FixedDesiredTemp { + @minValue(5) @maxValue(90) @step(1) value: tempv; } @@ -715,6 +741,7 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0xd, 0) model Hc1FixedSetbackTemp { + @minValue(0) @maxValue(90) @step(1) /* Target setback temperatur Hc1 (fixed circuit type) */ value: tempv; } @@ -731,6 +758,7 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0xf, 0) model Hc1HeatCurve { + @minValue(0.1) @maxValue(4) @step(0.05) value: EXP; } @@ -738,14 +766,16 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0x10, 0) model Hc1HeatingFlowTempMax { + @minValue(15) @maxValue(90) @step(1) /** Maximum flow temperature setpoint (end emphasis) of Hc1 */ value: tempv; } - /** CoolingMaxFlowTempDesired heating circuit 1 */ + /** CoolingMinFlowTempDesired heating circuit 1 */ @inherit(r_3, w_3) @ext(0x11, 0) - model Hc1CoolingFlowTempMax { + model Hc1CoolingFlowTempMin { + @minValue(7) @maxValue(24) @step(1) value: tempv; } @@ -753,6 +783,7 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0x12, 0) model Hc1HeatingFlowTempMin { + @minValue(15) @maxValue(90) @step(1) /** Minimum flow temperature setpoint (end emphasis) of Hc1 */ value: tempv; } @@ -768,6 +799,7 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0x14, 0) model Hc1SummerTempLimit { + @minValue(10) @maxValue(99) @step(1) /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ value: tempv; } @@ -850,6 +882,7 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0x4, 0) model Hc2DesiredReturnTemp { + @minValue(15) @maxValue(80) @step(1) /** Temperature for the increase in return circuit (default 30) */ value: tempv; } @@ -896,6 +929,7 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0xa, 0) model Hc2DewPointOffset { + @minValue(-10) @maxValue(10) @step(1) value: calibrationv; } @@ -903,6 +937,7 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0xb, 0) model Hc2ExcessTemp { + @minValue(0) @maxValue(20) @step(1) /** Excess temperature of Hc2 (flow temperature's setpoint is increased by this value to keep the mixing valve in its control range) */ value: calibrationv; } @@ -911,6 +946,7 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0xc, 0) model Hc2FixedDesiredTemp { + @minValue(5) @maxValue(90) @step(1) value: tempv; } @@ -918,6 +954,7 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0xd, 0) model Hc2FixedSetbackTemp { + @minValue(0) @maxValue(90) @step(1) /* Target setback temperatur Hc2 (fixed circuit type) */ value: tempv; } @@ -934,6 +971,7 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0xf, 0) model Hc2HeatCurve { + @minValue(0.1) @maxValue(4) @step(0.05) value: EXP; } @@ -941,14 +979,16 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0x10, 0) model Hc2HeatingFlowTempMax { + @minValue(15) @maxValue(90) @step(1) /** Maximum flow temperature setpoint (end emphasis) of Hc2 */ value: tempv; } - /** CoolingMaxFlowTempDesired heating circuit 2 */ + /** CoolingMinFlowTempDesired heating circuit 2 */ @inherit(r_4, w_4) @ext(0x11, 0) - model Hc2CoolingFlowTempMax { + model Hc2CoolingFlowTempMin { + @minValue(7) @maxValue(24) @step(1) value: tempv; } @@ -956,6 +996,7 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0x12, 0) model Hc2HeatingFlowTempMin { + @minValue(15) @maxValue(90) @step(1) /** Minimum flow temperature setpoint (end emphasis) of Hc2 */ value: tempv; } @@ -971,6 +1012,7 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0x14, 0) model Hc2SummerTempLimit { + @minValue(10) @maxValue(99) @step(1) /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ value: tempv; } @@ -1053,6 +1095,7 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0x4, 0) model Hc3DesiredReturnTemp { + @minValue(15) @maxValue(80) @step(1) /** Temperature for the increase in return circuit (default 30) */ value: tempv; } @@ -1099,6 +1142,7 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0xa, 0) model Hc3DewPointOffset { + @minValue(-10) @maxValue(10) @step(1) value: calibrationv; } @@ -1106,6 +1150,7 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0xb, 0) model Hc3ExcessTemp { + @minValue(0) @maxValue(20) @step(1) /** Excess temperature of Hc3 (flow temperature's setpoint is increased by this value to keep the mixing valve in its control range) */ value: calibrationv; } @@ -1114,6 +1159,7 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0xc, 0) model Hc3FixedDesiredTemp { + @minValue(5) @maxValue(90) @step(1) value: tempv; } @@ -1121,6 +1167,7 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0xd, 0) model Hc3FixedSetbackTemp { + @minValue(0) @maxValue(90) @step(1) /* Target setback temperatur Hc3 (fixed circuit type) */ value: tempv; } @@ -1137,6 +1184,7 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0xf, 0) model Hc3HeatCurve { + @minValue(0.1) @maxValue(4) @step(0.05) value: EXP; } @@ -1144,14 +1192,16 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0x10, 0) model Hc3HeatingFlowTempMax { + @minValue(15) @maxValue(90) @step(1) /** Maximum flow temperature setpoint (end emphasis) of Hc3 */ value: tempv; } - /** CoolingMaxFlowTempDesired heating circuit 3 */ + /** CoolingMinFlowTempDesired heating circuit 3 */ @inherit(r_5, w_5) @ext(0x11, 0) - model Hc3CoolingFlowTempMax { + model Hc3CoolingFlowTempMin { + @minValue(7) @maxValue(24) @step(1) value: tempv; } @@ -1159,6 +1209,7 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0x12, 0) model Hc3HeatingFlowTempMin { + @minValue(15) @maxValue(90) @step(1) /** Minimum flow temperature setpoint (end emphasis) of Hc3 */ value: tempv; } @@ -1174,6 +1225,7 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0x14, 0) model Hc3SummerTempLimit { + @minValue(10) @maxValue(99) @step(1) /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ value: tempv; } From af83a117515217947b58612711f45cfe4685feff Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Fri, 31 Jan 2025 22:32:55 +0000 Subject: [PATCH 12/25] Add conditions & cleanup --- src/vaillant/15.basv3.tsp | 447 +++++++++++++++++++++--------------- src/vaillant/_templates.tsp | 10 + 2 files changed, 268 insertions(+), 189 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index deeee324e..fa5054883 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -1,6 +1,5 @@ import "@ebusd/ebus-typespec"; import "./_templates.tsp"; -//import "./errors_inc.tsp"; using Ebus; using Ebus.Num; using Ebus.Dtm; @@ -39,7 +38,7 @@ namespace Basv3 { model wi_1 {} /** Hwc bivalence point */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x1, 0) model HwcBivalencePoint { @minValue(-20) @maxValue(50) @step(1) @@ -47,19 +46,17 @@ namespace Basv3 { } /** continuos heating */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x2, 0) model ContinuosHeating { @minValue(-26) @maxValue(10) @step(1) - /** -26=off, when the outside temperature falls below this threshold temperature the continuous heating function is started (off <=> function is disabled) */ value: tempv; } /** frost delay time */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x3, 0) model FrostOverrideTime { - /** Delay before frost protection is activated */ value: hoursum2; } @@ -67,7 +64,6 @@ namespace Basv3 { @inherit(r_1, w_1) @ext(0x7, 0) model GlobalSystemOff { - /** For switching system off */ value: yesno; } @@ -79,10 +75,9 @@ namespace Basv3 { } /** max room humidity */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0xe, 0) model MaxRoomHumidity { - /** Maximum room humidity */ value: UIN; } @@ -90,7 +85,6 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0xf, 0) model HybridManager { - /** 0=Trivalence (tariff based); 1=Bivalence (Outside temperature based) */ value: hmmode; } @@ -98,7 +92,6 @@ namespace Basv3 { @inherit(ri_1) @ext(0x10, 0) model TariffAuxHeater { - /** Secondary heater tariff value */ value: UIN; } @@ -106,7 +99,6 @@ namespace Basv3 { @inherit(r_1, wi_1) @ext(0x14, 0) model AdaptHeatCurve { - /** Automatic correction of configured heat curve */ value: yesno; } @@ -125,59 +117,53 @@ namespace Basv3 { } /** pump additional time */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x1b, 0) model PumpAdditionalTime { - /** Additional time the pump is running */ value: minutes2; } /** hc alternative point */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x22, 0) model HcAlternativePoint { @minValue(-21) @maxValue(40) @step(1) - /** exclusively alternate heating below alternative point (-21=off) */ value: tempv; } /** hc bivalence point */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x23, 0) model HcBivalencePoint { @minValue(-20) @maxValue(30) @step(1) - /** Bivalence point heating */ value: tempv; } /** backup boiler */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x24, 0) model BackupBoiler { - /** Function of back-up boiler (Off/Hc/Hwc/Hc+Hwc) */ value: backmode2; } /** hc emergency temperature */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x26, 0) model HcEmergencyTemperature { @minValue(20) @maxValue(80) @step(1) - /** Emergency operation temperature */ value: tempv; } /** hysteresis cylinder charge */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x27, 0) model HwcCylinderChargeHyst { @minValue(3) @maxValue(20) @step(0.5) - /** Hysteresis cylinder charge */ value: calibrationv; } /** offset cylinder charge */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x29, 0) model HwcCylinderChargeOffset { @minValue(0) @maxValue(40) @step(1) @@ -185,24 +171,23 @@ namespace Basv3 { } /** hwc legionella time */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x2a, 0) model HwcLegionellaTime { value: HTM; } /** ohwc legionella day */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x2b, 0) model HwcLegionellaDay { value: daysel2; } /** next maintenance */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x2c, 0) model MaintenanceDate { - /** Date for next maintenance */ value: date; } @@ -211,7 +196,6 @@ namespace Basv3 { @ext(0x2d, 0) model OffsetOutsideTemp { @minValue(-3) @maxValue(3) @step(0.5) - /* Offset outside temperature (used to determined OutsideTemp) */ value: calibrationv; } @@ -219,7 +203,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x34, 0) model Date { - /** Current date */ value: date; } @@ -227,23 +210,21 @@ namespace Basv3 { @inherit(r_1) @ext(0x35, 0) model Time { - /** Current time */ value: HTI; } /** hydraulic scheme */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x36, 0) model HydraulicScheme { value: UIN; } /** cooling outside temperature threshold */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x38, 0) model CoolingOutsideTempThreshold { @minValue(10) @maxValue(30) @step(1) - /** Activate Cooling when average outside temperature exceeds threshold */ value: tempv; } @@ -255,11 +236,10 @@ namespace Basv3 { } /** dew point offset */ - @inherit(r_1, wi_1) + @inherit(ri_1, wi_1) @ext(0x3A, 0) model DewPointOffset { @minValue(-10) @maxValue(10) @step(1) - /** Subtract from Z*RoomTemp to calculate dew point */ value: tempv; } @@ -289,7 +269,6 @@ namespace Basv3 { @ext(0x46, 0) model HwcFlowTempMax { @minValue(15) @maxValue(80) @step(1) - /** Maximum flow temperature setpoint of Hwc */ value: tempv; } @@ -311,7 +290,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x4e, 0) model PrFuelSumHcThisMonth { - /** This month's fuel consumption for heating */ value: energy4; } @@ -319,7 +297,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x4f, 0) model PrEnergySumHcThisMonth { - /** This month's energy consumption for heating */ value: energy4; } @@ -327,7 +304,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x50, 0) model PrEnergySumHwcThisMonth { - /** This month's energy consumption for hot water */ value: energy4; } @@ -335,7 +311,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x51, 0) model PrFuelSumHwcThisMonth { - /** This month's fuel consumption for hot water */ value: energy4; } @@ -343,7 +318,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x52, 0) model PrFuelSumHcLastMonth { - /** Last month's fuel consumption for heating */ value: energy4; } @@ -351,7 +325,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x53, 0) model PrEnergySumHcLastMonth { - /** Last month's energy consumption for heating */ value: energy4; } @@ -359,7 +332,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x54, 0) model PrEnergySumHwcLastMonth { - /** Last month's energy consumption for hot water */ value: energy4; } @@ -367,7 +339,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x55, 0) model PrFuelSumHwcLastMonth { - /** Last month's fuel consumption for hot water */ value: energy4; } @@ -375,7 +346,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x56, 0) model PrFuelSumHc { - /** Total fuel consumption for heating */ value: energy4; } @@ -383,7 +353,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x57, 0) model PrEnergySumHc { - /** Total energy consumption for heating */ value: energy4; } @@ -391,7 +360,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x58, 0) model PrEnergySumHwc { - /** Total energy consumption for hot water */ value: energy4; } @@ -399,33 +367,13 @@ namespace Basv3 { @inherit(r_1) @ext(0x59, 0) model PrFuelSumHwc { - /** Total fuel consumption for hot water */ value: energy4; } - /** total energy consumption */ - // TODO: invalid position - //@inherit(r_1, w_1) - //@ext(0x5c, 0) - //model PrEnergySum { - /** Total year electricity consumption */ - // value: energy4; - //} - - /** total fuel consumption */ - // TODO: invalid position - //@inherit(r_1, w_1) - //@ext(0x5d, 0) - //model PrFuelSum { - /** Total fuel consumption */ - // value: energy4; - //} - /** installer name 1 */ @inherit(r_1, wi_1) @ext(0x6c, 0) model Installer1 { - /** Installer's name */ value: shortname; } @@ -433,7 +381,6 @@ namespace Basv3 { @inherit(r_1, wi_1) @ext(0x6d, 0) model Installer2 { - /** Installer's name */ value: shortname; } @@ -441,7 +388,6 @@ namespace Basv3 { @inherit(r_1, wi_1) @ext(0x6f, 0) model PhoneNumber1 { - /** Installer's telephone number */ value: shortphone; } @@ -449,7 +395,6 @@ namespace Basv3 { @inherit(r_1, wi_1) @ext(0x70, 0) model PhoneNumber2 { - /** Installer's telephone number */ value: shortphone; } @@ -465,7 +410,6 @@ namespace Basv3 { @ext(0x76, 0) model KeyCodeforConfigMenu { @minValue(0) @maxValue(999) @step(1) - /** 000-999; code for the installer's menues */ value: UIN; } @@ -473,7 +417,6 @@ namespace Basv3 { @inherit(r_1) @ext(0x95, 0) model OutsideTempAvg { - /** Average outside temperature (updated every 3h) */ value: tempv; } @@ -551,73 +494,73 @@ namespace Basv3 { /** hwc circulation pump status */ @inherit(r_2) @ext(0x2, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcCircPumpStatus { - /* Hwc circulation pump status (also turns on during a legionella run) */ value: onoff; } /** hwc operation mode */ @inherit(r_2, w_2) @ext(0x3, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcOpMode { - /** Operation mode of Hwc */ value: opmode2; } /** hwc temperature desired */ @inherit(r_2, w_2) @ext(0x4, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTempDesired { @minValue(35) @maxValue(70) @step(1) - /** Setpoint of domestic hot water circuit */ value: tempv; } /** hwc cylinder temperature */ @inherit(r_2) @ext(0x5, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcCylinderTemp { - /** Hwc cylinder temperature */ value: tempv; } /** hwc reheating active */ @inherit(r_2) @ext(0x6, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcReheatingActive { - /* Indicates ongoing hot/legionella water run */ value: yesno; } /** hwc flow temperature */ @inherit(r_2) @ext(0x8, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcFlowTempTarget { - /** Desired flow temp for Hwc */ value: tempv; } /** hwc holiday start period */ @inherit(r_2, w_2) @ext(0x9, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcHolidayStartPeriod { - /** Start date of holidays */ value: hfrom; } /** hwc holiday end period */ @inherit(r_2, w_2) @ext(0xa, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcHolidayEndPeriod { - /** End date of holidays */ value: hto; } /** hwc Special Function (SF) mode */ @inherit(r_2, w_2) @ext(0xd, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcSFMode { - /** Only auto=0; load=6 supported */ value: sfmode3; } @@ -625,13 +568,13 @@ namespace Basv3 { @inherit(r_2) @ext(0xf, 0) model HwcStatus { - /** Only auto=0; holidayaway=7; load=9; off=10 supported */ - value: zonestatus; + value: zonestatus2; } /** hwc holiday start time */ @inherit(r_2, w_2) @ext(0x10, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcHolidayStartTime { value: HTI; } @@ -639,6 +582,7 @@ namespace Basv3 { /** hwc holiday end time */ @inherit(r_2, w_2) @ext(0x11, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcHolidayEndTime { value: HTI; } @@ -668,9 +612,9 @@ namespace Basv3 { /** DesiredReturnTemp heating circuit 1 */ @inherit(r_3, w_3) @ext(0x4, 0) + @condition(Basv3.Hc1CircuitType.value, "4") model Hc1DesiredReturnTemp { @minValue(15) @maxValue(80) @step(1) - /** Temperature for the increase in return circuit (default 30) */ value: tempv; } @@ -692,7 +636,6 @@ namespace Basv3 { @inherit(r_3) @ext(0x7, 0) model Hc1FlowTempTarget { - /** Current flow temperature setpoint of Hc1 */ value: tempv; } @@ -700,7 +643,6 @@ namespace Basv3 { @inherit(r_3) @ext(0x8, 0) model Hc1FlowTemp { - /** Current flow temperature of Hc1 */ value: tempv; } @@ -708,13 +650,14 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0x9, 0) model Hc1ExtHwcTempDesired { - /** Desired external Hwc temperature */ value: tempv; } /** DewPointOffset heating circuit 1 */ @inherit(r_3, w_3) @ext(0xa, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Hc1DewPointOffset { @minValue(-10) @maxValue(10) @step(1) value: calibrationv; @@ -723,15 +666,16 @@ namespace Basv3 { /** ExcessTemp heating circuit 1 */ @inherit(r_3, w_3) @ext(0xb, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Hc1ExcessTemp { @minValue(0) @maxValue(20) @step(1) - /** Excess temperature of Hc1 (flow temperature's setpoint is increased by this value to keep the mixing valve in its control range) */ value: calibrationv; } /** DesiredTemp heating circuit 1 */ @inherit(r_3, w_3) @ext(0xc, 0) + @condition(Basv3.Hc1CircuitType.value, "2") model Hc1FixedDesiredTemp { @minValue(5) @maxValue(90) @step(1) value: tempv; @@ -740,9 +684,9 @@ namespace Basv3 { /** DesiredSetbackTemp heating circuit 1 */ @inherit(r_3, w_3) @ext(0xd, 0) + @condition(Basv3.Hc1CircuitType.value, "2") model Hc1FixedSetbackTemp { @minValue(0) @maxValue(90) @step(1) - /* Target setback temperatur Hc1 (fixed circuit type) */ value: tempv; } @@ -750,7 +694,6 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0xe, 0) model Hc1SetbackMode { - /** Operation of Hc1 during the lowering time; no influence if room temperature modulation is set to expanded */ value: offmode2; } @@ -767,13 +710,14 @@ namespace Basv3 { @ext(0x10, 0) model Hc1HeatingFlowTempMax { @minValue(15) @maxValue(90) @step(1) - /** Maximum flow temperature setpoint (end emphasis) of Hc1 */ value: tempv; } /** CoolingMinFlowTempDesired heating circuit 1 */ @inherit(r_3, w_3) @ext(0x11, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Hc1CoolingFlowTempMin { @minValue(7) @maxValue(24) @step(1) value: tempv; @@ -784,7 +728,6 @@ namespace Basv3 { @ext(0x12, 0) model Hc1HeatingFlowTempMin { @minValue(15) @maxValue(90) @step(1) - /** Minimum flow temperature setpoint (end emphasis) of Hc1 */ value: tempv; } @@ -800,7 +743,6 @@ namespace Basv3 { @ext(0x14, 0) model Hc1SummerTempLimit { @minValue(10) @maxValue(99) @step(1) - /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ value: tempv; } @@ -808,7 +750,6 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0x15, 0) model Hc1RoomTempMod { - /** Room temperature modulation of Hc1 */ value: rcmode2; } @@ -829,8 +770,8 @@ namespace Basv3 { /** MixerMovement heating circuit 1 */ @inherit(r_3) @ext(0x1a, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Hc1MixerMovement { - /** Status of mixer (<0 closing, >0 opening) */ value: EXP; } @@ -838,7 +779,6 @@ namespace Basv3 { @inherit(r_3) @ext(0x1c, 0) model Hc1HeatCurveAdaption { - /** Adaption applied to heating curve of Hc1 */ value: EXP; } @@ -881,9 +821,9 @@ namespace Basv3 { /** DesiredReturnTemp heating circuit 2 */ @inherit(r_4, w_4) @ext(0x4, 0) + @condition(Basv3.Hc1CircuitType.value, "4") model Hc2DesiredReturnTemp { @minValue(15) @maxValue(80) @step(1) - /** Temperature for the increase in return circuit (default 30) */ value: tempv; } @@ -905,7 +845,6 @@ namespace Basv3 { @inherit(r_4) @ext(0x7, 0) model Hc2FlowTempTarget { - /** Current flow temperature setpoint of Hc2 */ value: tempv; } @@ -913,7 +852,6 @@ namespace Basv3 { @inherit(r_4) @ext(0x8, 0) model Hc2FlowTemp { - /** Current flow temperature of Hc2 */ value: tempv; } @@ -921,13 +859,14 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0x9, 0) model Hc2ExtHwcTempDesired { - /** Desired external Hwc temperature */ value: tempv; } /** DewPointOffset heating circuit 2 */ @inherit(r_4, w_4) @ext(0xa, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Hc2DewPointOffset { @minValue(-10) @maxValue(10) @step(1) value: calibrationv; @@ -936,15 +875,16 @@ namespace Basv3 { /** ExcessTemp heating circuit 2 */ @inherit(r_4, w_4) @ext(0xb, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Hc2ExcessTemp { @minValue(0) @maxValue(20) @step(1) - /** Excess temperature of Hc2 (flow temperature's setpoint is increased by this value to keep the mixing valve in its control range) */ value: calibrationv; } /** DesiredTemp heating circuit 2 */ @inherit(r_4, w_4) @ext(0xc, 0) + @condition(Basv3.Hc2CircuitType.value, "2") model Hc2FixedDesiredTemp { @minValue(5) @maxValue(90) @step(1) value: tempv; @@ -953,9 +893,9 @@ namespace Basv3 { /** DesiredSetbackTemp heating circuit 2 */ @inherit(r_4, w_4) @ext(0xd, 0) + @condition(Basv3.Hc2CircuitType.value, "2") model Hc2FixedSetbackTemp { @minValue(0) @maxValue(90) @step(1) - /* Target setback temperatur Hc2 (fixed circuit type) */ value: tempv; } @@ -963,7 +903,6 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0xe, 0) model Hc2SetbackMode { - /** Operation of Hc2 during the lowering time; no influence if room temperature modulation is set to expanded */ value: offmode2; } @@ -980,13 +919,14 @@ namespace Basv3 { @ext(0x10, 0) model Hc2HeatingFlowTempMax { @minValue(15) @maxValue(90) @step(1) - /** Maximum flow temperature setpoint (end emphasis) of Hc2 */ value: tempv; } /** CoolingMinFlowTempDesired heating circuit 2 */ @inherit(r_4, w_4) @ext(0x11, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Hc2CoolingFlowTempMin { @minValue(7) @maxValue(24) @step(1) value: tempv; @@ -997,7 +937,6 @@ namespace Basv3 { @ext(0x12, 0) model Hc2HeatingFlowTempMin { @minValue(15) @maxValue(90) @step(1) - /** Minimum flow temperature setpoint (end emphasis) of Hc2 */ value: tempv; } @@ -1013,7 +952,6 @@ namespace Basv3 { @ext(0x14, 0) model Hc2SummerTempLimit { @minValue(10) @maxValue(99) @step(1) - /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ value: tempv; } @@ -1021,7 +959,6 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0x15, 0) model Hc2RoomTempMod { - /** Room temperature modulation of Hc2 */ value: rcmode2; } @@ -1042,8 +979,8 @@ namespace Basv3 { /** MixerMovement heating circuit 2 */ @inherit(r_4) @ext(0x1a, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Hc2MixerMovement { - /** Status of mixer (<0 closing, >0 opening) */ value: EXP; } @@ -1051,7 +988,6 @@ namespace Basv3 { @inherit(r_4) @ext(0x1c, 0) model Hc2HeatCurveAdaption { - /** Adaption applied to heating curve of Hc2 */ value: EXP; } @@ -1094,9 +1030,9 @@ namespace Basv3 { /** DesiredReturnTemp heating circuit 3 */ @inherit(r_5, w_5) @ext(0x4, 0) + @condition(Basv3.Hc3CircuitType.value, "4") model Hc3DesiredReturnTemp { @minValue(15) @maxValue(80) @step(1) - /** Temperature for the increase in return circuit (default 30) */ value: tempv; } @@ -1118,7 +1054,6 @@ namespace Basv3 { @inherit(r_5) @ext(0x7, 0) model Hc3FlowTempTarget { - /** Current flow temperature setpoint of Hc3 */ value: tempv; } @@ -1126,7 +1061,6 @@ namespace Basv3 { @inherit(r_5) @ext(0x8, 0) model Hc3FlowTemp { - /** Current flow temperature of Hc3 */ value: tempv; } @@ -1134,13 +1068,14 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0x9, 0) model Hc3ExtHwcTempDesired { - /** Desired external Hwc temperature */ value: tempv; } /** DewPointOffset heating circuit 3 */ @inherit(r_5, w_5) @ext(0xa, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Hc3DewPointOffset { @minValue(-10) @maxValue(10) @step(1) value: calibrationv; @@ -1149,15 +1084,16 @@ namespace Basv3 { /** ExcessTemp heating circuit 3 */ @inherit(r_5, w_5) @ext(0xb, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Hc3ExcessTemp { @minValue(0) @maxValue(20) @step(1) - /** Excess temperature of Hc3 (flow temperature's setpoint is increased by this value to keep the mixing valve in its control range) */ value: calibrationv; } /** DesiredTemp heating circuit 3 */ @inherit(r_5, w_5) @ext(0xc, 0) + @condition(Basv3.Hc3CircuitType.value, "2") model Hc3FixedDesiredTemp { @minValue(5) @maxValue(90) @step(1) value: tempv; @@ -1166,9 +1102,9 @@ namespace Basv3 { /** DesiredSetbackTemp heating circuit 3 */ @inherit(r_5, w_5) @ext(0xd, 0) + @condition(Basv3.Hc3CircuitType.value, "2") model Hc3FixedSetbackTemp { @minValue(0) @maxValue(90) @step(1) - /* Target setback temperatur Hc3 (fixed circuit type) */ value: tempv; } @@ -1176,7 +1112,6 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0xe, 0) model Hc3SetbackMode { - /** Operation of Hc3 during the lowering time; no influence if room temperature modulation is set to expanded */ value: offmode2; } @@ -1193,13 +1128,14 @@ namespace Basv3 { @ext(0x10, 0) model Hc3HeatingFlowTempMax { @minValue(15) @maxValue(90) @step(1) - /** Maximum flow temperature setpoint (end emphasis) of Hc3 */ value: tempv; } /** CoolingMinFlowTempDesired heating circuit 3 */ @inherit(r_5, w_5) @ext(0x11, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Hc3CoolingFlowTempMin { @minValue(7) @maxValue(24) @step(1) value: tempv; @@ -1210,7 +1146,6 @@ namespace Basv3 { @ext(0x12, 0) model Hc3HeatingFlowTempMin { @minValue(15) @maxValue(90) @step(1) - /** Minimum flow temperature setpoint (end emphasis) of Hc3 */ value: tempv; } @@ -1226,7 +1161,6 @@ namespace Basv3 { @ext(0x14, 0) model Hc3SummerTempLimit { @minValue(10) @maxValue(99) @step(1) - /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ value: tempv; } @@ -1234,7 +1168,6 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0x15, 0) model Hc3RoomTempMod { - /** Room temperature modulation of Hc3 */ value: rcmode2; } @@ -1255,8 +1188,8 @@ namespace Basv3 { /** MixerMovement heating circuit 3 */ @inherit(r_5) @ext(0x1a, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Hc3MixerMovement { - /** Status of mixer (<0 closing, >0 opening) */ value: EXP; } @@ -1264,7 +1197,6 @@ namespace Basv3 { @inherit(r_5) @ext(0x1c, 0) model Hc3HeatCurveAdaption { - /** Adaption applied to heating curve of Hc3 */ value: EXP; } @@ -1299,72 +1231,74 @@ namespace Basv3 { /** cooling operation mode zone 1 */ @inherit(r_6, w_6) @ext(0x1, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingOpMode { - /** Operation mode for cooling of zone 1 */ value: opmode2; } /** cooling setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x2, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingSetbackTemp { - /** Time controlled desired cooling room temperature for zone 1 */ value: tempv; } /** holiday period start zone 1 */ @inherit(r_6, w_6) @ext(0x3, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HolidayStartPeriod { - /** Start date of holidays for zone 1 */ value: hfrom; } /** holiday period end zone 1 */ @inherit(r_6, w_6) @ext(0x4, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HolidayEndPeriod { - /** End date of holidays for zone 1 */ value: hto; } /** room setpoint holiday period zone 1 */ @inherit(r_6, w_6) @ext(0x5, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HolidayTemp { - /** Holiday setpoint for zone 1 */ value: tempv; } /** heating operation mode zone 1 */ @inherit(r_6, w_6) @ext(0x6, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingOpMode { - /** Operation mode of zone 1 */ value: opmode2; } /** quick veto temperature zone 1 */ @inherit(r_6, w_6) @ext(0x8, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1QuickVetoTemp { - /** Manual override setpoint for zone 1 */ value: tempv; } /** set back temperature zone 1 */ @inherit(r_6, w_6) @ext(0x9, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingSetbackTemp { - /** Set back temperature zone 1 (time controlled heating) */ value: tempv; } /** Special Function (SF) mode zone 1 */ @inherit(r_6, w_6) @ext(0xe, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1SFMode { - /* Only auto=0; ventilation=1; veto=3 supported */ value: sfmode2; } @@ -1372,7 +1306,6 @@ namespace Basv3 { @inherit(r_6) @ext(0xf, 0) model Z1RoomTemp { - /** Current room temperature in zone 1 */ value: tempv; } @@ -1387,23 +1320,23 @@ namespace Basv3 { @inherit(r_6, w_6) @ext(0x13, 0) model Z1RoomZoneMapping { - /** Configures which room temperature is assigned to zone 1 */ value: zmapping; } /** heating room temperature desired zone 1 */ @inherit(r_6) @ext(0x14, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z1HeatingRoomTempTarget { - /** Current room setpoint considering all basic conditions passed to the control algorithms (0 = heating inactive) */ value: tempv; } /** cooling room temperature desired zone 1 */ @inherit(r_6) @ext(0x15, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingRoomTempTarget { - /** Current room setpoint considering all basic conditions passed to the control algorithms (99 = cooling inactive) */ value: tempv; } @@ -1432,21 +1365,21 @@ namespace Basv3 { @inherit(r_6) @ext(0x1b, 0) model Z1Status { - /** Only auto=0; ventilation=1; veto=4; holidayaway=7; load=9; off=10 supported */ value: zonestatus; } /** quick veto end time zone 1 */ @inherit(r_6) @ext(0x1e, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1QuickVetoEndTime { - /** Manual override end time for zone 1 */ value: HTI; } /** end time of holidays for zone 1 */ @inherit(r_6, w_6) @ext(0x20, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HolidayEndTime { value: HTI; } @@ -1454,6 +1387,7 @@ namespace Basv3 { /** start time of holidays for zone 1 */ @inherit(r_6, w_6) @ext(0x21, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HolidayStartTime { value: HTI; } @@ -1461,22 +1395,24 @@ namespace Basv3 { /** manual heating setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x22, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingSetpointTemp { - /** Desired heating setpoint in manual mode for zone 1 */ value: tempv; } /** manual cooling setpoint zone 1 */ @inherit(r_6, w_6) @ext(0x23, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingSetpointTemp { - /** Desired cooling setpoint in manual mode for zone 1 */ value: tempv; } /** quick veto end date zone 1 */ @inherit(r_6) @ext(0x24, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1QuickVetoEndDate { value: date; } @@ -1484,8 +1420,8 @@ namespace Basv3 { /** quick veto duration zone 1 */ @inherit(r_6, w_6) @ext(0x26, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1QuickVetoDuration { - /** Valid values are 0.5-12 in 0.5 increments (default 3); writing enables quick veto mode */ @unit("h") value: EXP; } @@ -1514,72 +1450,74 @@ namespace Basv3 { /** cooling operation mode zone 2 */ @inherit(r_7, w_7) @ext(0x1, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingOpMode { - /** Operation mode for cooling of zone 2 */ value: opmode2; } /** cooling setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x2, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingSetbackTemp { - /** Time controlled desired cooling room temperature for zone 2 */ value: tempv; } /** holiday period start zone 2 */ @inherit(r_7, w_7) @ext(0x3, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HolidayStartPeriod { - /** Start date of holidays for zone 2 */ value: hfrom; } /** holiday period end zone 2 */ @inherit(r_7, w_7) @ext(0x4, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HolidayEndPeriod { - /** End date of holidays for zone 2 */ value: hto; } /** room setpoint holiday period zone 2 */ @inherit(r_7, w_7) @ext(0x5, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HolidayTemp { - /** Holiday setpoint for zone 2 */ value: tempv; } /** heating operation mode zone 2 */ @inherit(r_7, w_7) @ext(0x6, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingOpMode { - /** Operation mode of zone 2 */ value: opmode2; } /** quick veto temperature zone 2 */ @inherit(r_7, w_7) @ext(0x8, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2QuickVetoTemp { - /** Manual override setpoint for zone 2 */ value: tempv; } /** set back temperature zone 2 */ @inherit(r_7, w_7) @ext(0x9, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingSetbackTemp { - /** Set back temperature zone 2 (time controlled heating) */ value: tempv; } /** Special Function (SF) mode zone 2 */ @inherit(r_7, w_7) @ext(0xe, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2SFMode { - /* Only auto=0; ventilation=1; veto=3 supported */ value: sfmode2; } @@ -1587,7 +1525,6 @@ namespace Basv3 { @inherit(r_7) @ext(0xf, 0) model Z2RoomTemp { - /** Current room temperature in zone 2 */ value: tempv; } @@ -1602,23 +1539,23 @@ namespace Basv3 { @inherit(r_7, w_7) @ext(0x13, 0) model Z2RoomZoneMapping { - /** Configures which room temperature is assigned to zone 2 */ value: zmapping; } /** heating room temperature desired zone 2 */ @inherit(r_7) @ext(0x14, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingRoomTempTarget { - /** Current room setpoint considering all basic conditions passed to the control algorithms (0 = heating inactive) */ value: tempv; } /** cooling room temperature desired zone 2 */ @inherit(r_7) @ext(0x15, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingRoomTempTarget { - /** Current room setpoint considering all basic conditions passed to the control algorithms (99 = cooling inactive) */ value: tempv; } @@ -1647,21 +1584,21 @@ namespace Basv3 { @inherit(r_7) @ext(0x1b, 0) model Z2Status { - /** Only auto=0; ventilation=1; veto=4; holidayaway=7; load=9; off=10 supported */ - value: zonestatus; + value: zonestatus2; } /** quick veto end time zone 2 */ @inherit(r_7) @ext(0x1e, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2QuickVetoEndTime { - /** Manual override end time for zone 2 */ value: HTI; } /** end time of holidays for zone 2 */ @inherit(r_7, w_7) @ext(0x20, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HolidayEndTime { value: HTI; } @@ -1669,6 +1606,7 @@ namespace Basv3 { /** start time of holidays for zone 2 */ @inherit(r_7, w_7) @ext(0x21, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HolidayStartTime { value: HTI; } @@ -1676,22 +1614,24 @@ namespace Basv3 { /** manual heating setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x22, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingSetpointTemp { - /** Desired heating setpoint in manual mode for zone 2 */ value: tempv; } /** manual cooling setpoint zone 2 */ @inherit(r_7, w_7) @ext(0x23, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingSetpointTemp { - /** Desired cooling setpoint in manual mode for zone 2 */ value: tempv; } /** quick veto end date zone 2 */ @inherit(r_7) @ext(0x24, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2QuickVetoEndDate { value: date; } @@ -1699,8 +1639,8 @@ namespace Basv3 { /** quick veto duration zone 2 */ @inherit(r_7, w_7) @ext(0x26, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2QuickVetoDuration { - /** Valid values are 0.5-12 in 0.5 increments (default 3); writing enables quick veto mode */ @unit("h") value: EXP; } @@ -1729,72 +1669,74 @@ namespace Basv3 { /** cooling operation mode zone 3 */ @inherit(r_8, w_8) @ext(0x1, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingOpMode { - /** Operation mode for cooling of zone 3 */ value: opmode2; } /** cooling setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x2, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingSetbackTemp { - /** Time controlled desired cooling room temperature for zone 3 */ value: tempv; } /** holiday period start zone 3 */ @inherit(r_8, w_8) @ext(0x3, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HolidayStartPeriod { - /** Start date of holidays for zone 3 */ value: hfrom; } /** holiday period end zone 3 */ @inherit(r_8, w_8) @ext(0x4, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HolidayEndPeriod { - /** End date of holidays for zone 3 */ value: hto; } /** room setpoint holiday period zone 3 */ @inherit(r_8, w_8) @ext(0x5, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HolidayTemp { - /** Holiday setpoint for zone 3 */ value: tempv; } /** heating operation mode zone 3 */ @inherit(r_8, w_8) @ext(0x6, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingOpMode { - /** Operation mode of zone 3 */ value: opmode2; } /** quick veto temperature zone 3 */ @inherit(r_8, w_8) @ext(0x8, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3QuickVetoTemp { - /** Manual override setpoint for zone 3 */ value: tempv; } /** set back temperature zone 3 */ @inherit(r_8, w_8) @ext(0x9, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingSetbackTemp { - /** Set back temperature zone 3 (time controlled heating) */ value: tempv; } /** Special Function (SF) mode zone 3 */ @inherit(r_8, w_8) @ext(0xe, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3SFMode { - /* Only auto=0; ventilation=1; veto=3 supported */ value: sfmode2; } @@ -1802,7 +1744,6 @@ namespace Basv3 { @inherit(r_8) @ext(0xf, 0) model Z3RoomTemp { - /** Current room temperature in zone 3 */ value: tempv; } @@ -1817,23 +1758,23 @@ namespace Basv3 { @inherit(r_8, w_8) @ext(0x13, 0) model Z3RoomZoneMapping { - /** Configures which room temperature is assigned to zone 3 */ value: zmapping; } /** heating room temperature desired zone 3 */ @inherit(r_8) @ext(0x14, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingRoomTempTarget { - /** Current room setpoint considering all basic conditions passed to the control algorithms (0 = heating inactive) */ value: tempv; } /** cooling room temperature desired zone 3 */ @inherit(r_8) @ext(0x15, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingRoomTempTarget { - /** Current room setpoint considering all basic conditions passed to the control algorithms (99 = cooling inactive) */ value: tempv; } @@ -1862,21 +1803,21 @@ namespace Basv3 { @inherit(r_8) @ext(0x1b, 0) model Z3Status { - /** Only auto=0; ventilation=1; veto=4; holidayaway=7; load=9; off=10 supported */ - value: zonestatus; + value: zonestatus2; } /** quick veto end time zone 3 */ @inherit(r_8) @ext(0x1e, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3QuickVetoEndTime { - /** Manual override end time for zone 3 */ value: HTI; } /** end time of holidays for zone 3 */ @inherit(r_8, w_8) @ext(0x20, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HolidayEndTime { value: HTI; } @@ -1884,6 +1825,7 @@ namespace Basv3 { /** start time of holidays for zone 3 */ @inherit(r_8, w_8) @ext(0x21, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HolidayStartTime { value: HTI; } @@ -1891,22 +1833,24 @@ namespace Basv3 { /** manual heating setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x22, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingSetpointTemp { - /** Desired heating setpoint in manual mode for zone 3 */ value: tempv; } /** manual cooling setpoint zone 3 */ @inherit(r_8, w_8) @ext(0x23, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingSetpointTemp { - /** Desired cooling setpoint in manual mode for zone 3 */ value: tempv; } /** quick veto end date zone 3 */ @inherit(r_8) @ext(0x24, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3QuickVetoEndDate { value: date; } @@ -1914,8 +1858,8 @@ namespace Basv3 { /** quick veto duration zone 3 */ @inherit(r_8, w_8) @ext(0x26, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3QuickVetoDuration { - /** Valid values are 0.5-12 in 0.5 increments (default 3); writing enables quick veto mode */ @unit("h") value: EXP; } @@ -2331,6 +2275,7 @@ namespace Basv3 { /** timer Configuration */ @inherit(r_9) @ext(MF, 0x55, 0xa3, 0, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_Config { /** Configuration */ @maxLength(9) @@ -2340,6 +2285,7 @@ namespace Basv3 { /** timer amount */ @inherit(r_9) @ext(MF, 0x55, 0xa4, 0, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_TimeSlotsPerWeekday { /** Amount of configured slots per weekday */ value: slotCountWeek; @@ -2348,6 +2294,7 @@ namespace Basv3 { /** timer heating monday read */ @inherit(r_13) @ext(0, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_Monday { value: rTimeSlotWithTemp; } @@ -2355,6 +2302,7 @@ namespace Basv3 { /** timer heating monday write */ @inherit(w_12) @ext(0, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_MondayWrite { value: wTimeSlotWithTemp; } @@ -2362,6 +2310,7 @@ namespace Basv3 { /** timer heating tuesday read */ @inherit(r_13) @ext(1, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_Tuesday { value: rTimeSlotWithTemp; } @@ -2369,6 +2318,7 @@ namespace Basv3 { /** timer heating tuesday write */ @inherit(w_12) @ext(1, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_TuesdayWrite { value: wTimeSlotWithTemp; } @@ -2376,6 +2326,7 @@ namespace Basv3 { /** timer heating wednesday read */ @inherit(r_13) @ext(0x2, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_Wednesday { value: rTimeSlotWithTemp; } @@ -2383,6 +2334,7 @@ namespace Basv3 { /** timer heating wednesday write */ @inherit(w_12) @ext(0x2, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_WednesdayWrite { value: wTimeSlotWithTemp; } @@ -2390,6 +2342,7 @@ namespace Basv3 { /** timer heating thursday read */ @inherit(r_13) @ext(0x3, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_Thursday { value: rTimeSlotWithTemp; } @@ -2397,6 +2350,7 @@ namespace Basv3 { /** timer heating thursday write */ @inherit(w_12) @ext(0x3, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_ThursdayWrite { value: wTimeSlotWithTemp; } @@ -2404,6 +2358,7 @@ namespace Basv3 { /** timer heating friday read */ @inherit(r_13) @ext(0x4, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_Friday { value: rTimeSlotWithTemp; } @@ -2411,6 +2366,7 @@ namespace Basv3 { /** timer heating friday write */ @inherit(w_12) @ext(0x4, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_FridayWrite { value: wTimeSlotWithTemp; } @@ -2418,6 +2374,7 @@ namespace Basv3 { /** timer heating saturday read */ @inherit(r_13) @ext(0x5, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_Saturday { value: rTimeSlotWithTemp; } @@ -2425,6 +2382,7 @@ namespace Basv3 { /** timer heating saturday write */ @inherit(w_12) @ext(0x5, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_SaturdayWrite { value: wTimeSlotWithTemp; } @@ -2432,6 +2390,7 @@ namespace Basv3 { /** timer heating sunday read */ @inherit(r_13) @ext(0x6, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_Sunday { value: rTimeSlotWithTemp; } @@ -2439,6 +2398,7 @@ namespace Basv3 { /** timer heating sunday write */ @inherit(w_12) @ext(0x6, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingTimer_SundayWrite { value: wTimeSlotWithTemp; } @@ -2466,6 +2426,8 @@ namespace Basv3 { /** timer amount */ @inherit(r_9) @ext(MF, 0x55, 0xa4, 0, 1) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_TimeSlotsPerWeekday { /** Amount of configured slots per weekday */ value: slotCountWeek; @@ -2474,6 +2436,8 @@ namespace Basv3 { /** timer cooling monday read */ @inherit(r_14) @ext(0, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_Monday { value: rTimeSlotWithTemp; } @@ -2481,6 +2445,8 @@ namespace Basv3 { /** timer cooling monday write */ @inherit(w_13) @ext(0, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_MondayWrite { value: wTimeSlotWithoutTemp; } @@ -2488,6 +2454,8 @@ namespace Basv3 { /** timer cooling tuesday read */ @inherit(r_14) @ext(1, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_Tuesday { value: rTimeSlotWithTemp; } @@ -2495,6 +2463,8 @@ namespace Basv3 { /** timer cooling tuesday write */ @inherit(w_13) @ext(1, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_TuesdayWrite { value: wTimeSlotWithoutTemp; } @@ -2502,6 +2472,8 @@ namespace Basv3 { /** timer cooling wednesday read */ @inherit(r_14) @ext(0x2, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_Wednesday { value: rTimeSlotWithTemp; } @@ -2509,6 +2481,8 @@ namespace Basv3 { /** timer cooling wednesday write */ @inherit(w_13) @ext(0x2, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_WednesdayWrite { value: wTimeSlotWithoutTemp; } @@ -2516,6 +2490,8 @@ namespace Basv3 { /** timer cooling thursday read */ @inherit(r_14) @ext(0x3, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_Thursday { value: rTimeSlotWithTemp; } @@ -2523,6 +2499,8 @@ namespace Basv3 { /** timer cooling thursday write */ @inherit(w_13) @ext(0x3, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_ThursdayWrite { value: wTimeSlotWithoutTemp; } @@ -2530,6 +2508,8 @@ namespace Basv3 { /** timer cooling friday read */ @inherit(r_14) @ext(0x4, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_Friday { value: rTimeSlotWithTemp; } @@ -2537,6 +2517,8 @@ namespace Basv3 { /** timer cooling friday write */ @inherit(w_13) @ext(0x4, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_FridayWrite { value: wTimeSlotWithoutTemp; } @@ -2544,6 +2526,8 @@ namespace Basv3 { /** timer cooling saturday read */ @inherit(r_14) @ext(0x5, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_Saturday { value: rTimeSlotWithTemp; } @@ -2551,6 +2535,8 @@ namespace Basv3 { /** timer cooling saturday write */ @inherit(w_13) @ext(0x5, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_SaturdayWrite { value: wTimeSlotWithoutTemp; } @@ -2558,6 +2544,8 @@ namespace Basv3 { /** timer cooling sunday read */ @inherit(r_14) @ext(0x6, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_Sunday { value: rTimeSlotWithTemp; } @@ -2565,6 +2553,8 @@ namespace Basv3 { /** timer cooling sunday write */ @inherit(w_13) @ext(0x6, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingTimer_SundayWrite { value: wTimeSlotWithoutTemp; } @@ -2592,6 +2582,7 @@ namespace Basv3 { /** timer amount */ @inherit(r_9) @ext(MF, 0x55, 0xa4, 1, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_TimeSlotsPerWeekday { /** Amount of configured slots per weekday */ value: slotCountWeek; @@ -2600,6 +2591,7 @@ namespace Basv3 { /** timer heating monday read */ @inherit(r_15) @ext(0, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_Monday { value: rTimeSlotWithTemp; } @@ -2607,6 +2599,7 @@ namespace Basv3 { /** timer heating monday write */ @inherit(w_14) @ext(0, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_MondayWrite { value: wTimeSlotWithTemp; } @@ -2614,6 +2607,7 @@ namespace Basv3 { /** timer heating tuesday read */ @inherit(r_15) @ext(1, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_Tuesday { value: rTimeSlotWithTemp; } @@ -2621,6 +2615,7 @@ namespace Basv3 { /** timer heating tuesday write */ @inherit(w_14) @ext(1, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_TuesdayWrite { value: wTimeSlotWithTemp; } @@ -2628,6 +2623,7 @@ namespace Basv3 { /** timer heating wednesday read */ @inherit(r_15) @ext(0x2, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_Wednesday { value: rTimeSlotWithTemp; } @@ -2635,6 +2631,7 @@ namespace Basv3 { /** timer heating wednesday write */ @inherit(w_14) @ext(0x2, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_WednesdayWrite { value: wTimeSlotWithTemp; } @@ -2642,6 +2639,7 @@ namespace Basv3 { /** timer heating thursday read */ @inherit(r_15) @ext(0x3, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_Thursday { value: rTimeSlotWithTemp; } @@ -2649,6 +2647,7 @@ namespace Basv3 { /** timer heating thursday write */ @inherit(w_14) @ext(0x3, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_ThursdayWrite { value: wTimeSlotWithTemp; } @@ -2656,6 +2655,7 @@ namespace Basv3 { /** timer heating friday read */ @inherit(r_15) @ext(0x4, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_Friday { value: rTimeSlotWithTemp; } @@ -2663,6 +2663,7 @@ namespace Basv3 { /** timer heating friday write */ @inherit(w_14) @ext(0x4, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_FridayWrite { value: wTimeSlotWithTemp; } @@ -2670,6 +2671,7 @@ namespace Basv3 { /** timer heating saturday read */ @inherit(r_15) @ext(0x5, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_Saturday { value: rTimeSlotWithTemp; } @@ -2677,6 +2679,7 @@ namespace Basv3 { /** timer heating saturday write */ @inherit(w_14) @ext(0x5, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_SaturdayWrite { value: wTimeSlotWithTemp; } @@ -2684,6 +2687,7 @@ namespace Basv3 { /** timer heating sunday read */ @inherit(r_15) @ext(0x6, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_Sunday { value: rTimeSlotWithTemp; } @@ -2691,6 +2695,7 @@ namespace Basv3 { /** timer heating sunday write */ @inherit(w_14) @ext(0x6, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingTimer_SundayWrite { value: wTimeSlotWithTemp; } @@ -2726,6 +2731,8 @@ namespace Basv3 { /** timer cooling monday read */ @inherit(r_16) @ext(0, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_Monday { value: rTimeSlotWithTemp; } @@ -2733,6 +2740,8 @@ namespace Basv3 { /** timer cooling monday write */ @inherit(w_15) @ext(0, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_MondayWrite { value: wTimeSlotWithoutTemp; } @@ -2740,6 +2749,8 @@ namespace Basv3 { /** timer cooling tuesday read */ @inherit(r_16) @ext(1, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_Tuesday { value: rTimeSlotWithTemp; } @@ -2747,6 +2758,8 @@ namespace Basv3 { /** timer cooling tuesday write */ @inherit(w_15) @ext(1, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_TuesdayWrite { value: wTimeSlotWithoutTemp; } @@ -2754,6 +2767,8 @@ namespace Basv3 { /** timer cooling wednesday read */ @inherit(r_16) @ext(0x2, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_Wednesday { value: rTimeSlotWithTemp; } @@ -2761,6 +2776,8 @@ namespace Basv3 { /** timer cooling wednesday write */ @inherit(w_15) @ext(0x2, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_WednesdayWrite { value: wTimeSlotWithoutTemp; } @@ -2768,6 +2785,8 @@ namespace Basv3 { /** timer cooling thursday read */ @inherit(r_16) @ext(0x3, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_Thursday { value: rTimeSlotWithTemp; } @@ -2775,6 +2794,8 @@ namespace Basv3 { /** timer cooling thursday write */ @inherit(w_15) @ext(0x3, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_ThursdayWrite { value: wTimeSlotWithoutTemp; } @@ -2782,6 +2803,8 @@ namespace Basv3 { /** timer cooling friday read */ @inherit(r_16) @ext(0x4, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_Friday { value: rTimeSlotWithTemp; } @@ -2789,6 +2812,8 @@ namespace Basv3 { /** timer cooling friday write */ @inherit(w_15) @ext(0x4, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_FridayWrite { value: wTimeSlotWithoutTemp; } @@ -2796,6 +2821,8 @@ namespace Basv3 { /** timer cooling saturday read */ @inherit(r_16) @ext(0x5, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_Saturday { value: rTimeSlotWithTemp; } @@ -2803,6 +2830,8 @@ namespace Basv3 { /** timer cooling saturday write */ @inherit(w_15) @ext(0x5, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_SaturdayWrite { value: wTimeSlotWithoutTemp; } @@ -2810,6 +2839,8 @@ namespace Basv3 { /** timer cooling sunday read */ @inherit(r_16) @ext(0x6, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_Sunday { value: rTimeSlotWithTemp; } @@ -2817,6 +2848,8 @@ namespace Basv3 { /** timer cooling sunday write */ @inherit(w_15) @ext(0x6, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingTimer_SundayWrite { value: wTimeSlotWithoutTemp; } @@ -2844,6 +2877,7 @@ namespace Basv3 { /** timer amount */ @inherit(r_9) @ext(MF, 0x55, 0xa4, 2, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_TimeSlotsPerWeekday { /** Amount of configured slots per weekday */ value: slotCountWeek; @@ -2852,6 +2886,7 @@ namespace Basv3 { /** timer heating monday read */ @inherit(r_17) @ext(0, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_Monday { value: rTimeSlotWithTemp; } @@ -2859,6 +2894,7 @@ namespace Basv3 { /** timer heating monday write */ @inherit(w_16) @ext(0, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_MondayWrite { value: wTimeSlotWithTemp; } @@ -2866,6 +2902,7 @@ namespace Basv3 { /** timer heating tuesday read */ @inherit(r_17) @ext(1, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_Tuesday { value: rTimeSlotWithTemp; } @@ -2873,6 +2910,7 @@ namespace Basv3 { /** timer heating tuesday write */ @inherit(w_16) @ext(1, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_TuesdayWrite { value: wTimeSlotWithTemp; } @@ -2880,6 +2918,7 @@ namespace Basv3 { /** timer heating wednesday read */ @inherit(r_17) @ext(0x2, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_Wednesday { value: rTimeSlotWithTemp; } @@ -2887,6 +2926,7 @@ namespace Basv3 { /** timer heating wednesday write */ @inherit(w_16) @ext(0x2, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_WednesdayWrite { value: wTimeSlotWithTemp; } @@ -2894,6 +2934,7 @@ namespace Basv3 { /** timer heating thursday read */ @inherit(r_17) @ext(0x3, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_Thursday { value: rTimeSlotWithTemp; } @@ -2901,6 +2942,7 @@ namespace Basv3 { /** timer heating thursday write */ @inherit(w_16) @ext(0x3, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_ThursdayWrite { value: wTimeSlotWithTemp; } @@ -2908,6 +2950,7 @@ namespace Basv3 { /** timer heating friday read */ @inherit(r_17) @ext(0x4, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_Friday { value: rTimeSlotWithTemp; } @@ -2915,6 +2958,7 @@ namespace Basv3 { /** timer heating friday write */ @inherit(w_16) @ext(0x4, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_FridayWrite { value: wTimeSlotWithTemp; } @@ -2922,6 +2966,7 @@ namespace Basv3 { /** timer heating saturday read */ @inherit(r_17) @ext(0x5, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_Saturday { value: rTimeSlotWithTemp; } @@ -2929,6 +2974,7 @@ namespace Basv3 { /** timer heating saturday write */ @inherit(w_16) @ext(0x5, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_SaturdayWrite { value: wTimeSlotWithTemp; } @@ -2936,6 +2982,7 @@ namespace Basv3 { /** timer heating sunday read */ @inherit(r_17) @ext(0x6, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_Sunday { value: rTimeSlotWithTemp; } @@ -2943,6 +2990,7 @@ namespace Basv3 { /** timer heating sunday write */ @inherit(w_16) @ext(0x6, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingTimer_SundayWrite { value: wTimeSlotWithTemp; } @@ -2970,6 +3018,8 @@ namespace Basv3 { /** timer amount */ @inherit(r_9) @ext(MF, 0x55, 0xa4, 2, 1) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_TimeSlotsPerWeekday { /** Amount of configured slots per weekday */ value: slotCountWeek; @@ -2978,6 +3028,8 @@ namespace Basv3 { /** timer cooling monday read */ @inherit(r_18) @ext(0, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_Monday { value: rTimeSlotWithTemp; } @@ -2985,6 +3037,8 @@ namespace Basv3 { /** timer cooling monday write */ @inherit(w_17) @ext(0, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_MondayWrite { value: wTimeSlotWithoutTemp; } @@ -2992,6 +3046,8 @@ namespace Basv3 { /** timer cooling tuesday read */ @inherit(r_18) @ext(1, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_Tuesday { value: rTimeSlotWithTemp; } @@ -2999,6 +3055,8 @@ namespace Basv3 { /** timer cooling tuesday write */ @inherit(w_17) @ext(1, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_TuesdayWrite { value: wTimeSlotWithoutTemp; } @@ -3006,6 +3064,8 @@ namespace Basv3 { /** timer cooling wednesday read */ @inherit(r_18) @ext(0x2, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_Wednesday { value: rTimeSlotWithTemp; } @@ -3013,6 +3073,8 @@ namespace Basv3 { /** timer cooling wednesday write */ @inherit(w_17) @ext(0x2, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_WednesdayWrite { value: wTimeSlotWithoutTemp; } @@ -3020,6 +3082,8 @@ namespace Basv3 { /** timer cooling thursday read */ @inherit(r_18) @ext(0x3, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_Thursday { value: rTimeSlotWithTemp; } @@ -3027,6 +3091,8 @@ namespace Basv3 { /** timer cooling thursday write */ @inherit(w_17) @ext(0x3, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_ThursdayWrite { value: wTimeSlotWithoutTemp; } @@ -3034,6 +3100,8 @@ namespace Basv3 { /** timer cooling friday read */ @inherit(r_18) @ext(0x4, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_Friday { value: rTimeSlotWithTemp; } @@ -3041,6 +3109,8 @@ namespace Basv3 { /** timer cooling friday write */ @inherit(w_17) @ext(0x4, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_FridayWrite { value: wTimeSlotWithoutTemp; } @@ -3048,6 +3118,8 @@ namespace Basv3 { /** timer cooling saturday read */ @inherit(r_18) @ext(0x5, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_Saturday { value: rTimeSlotWithTemp; } @@ -3055,6 +3127,8 @@ namespace Basv3 { /** timer cooling saturday write */ @inherit(w_17) @ext(0x5, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_SaturdayWrite { value: wTimeSlotWithoutTemp; } @@ -3062,6 +3136,8 @@ namespace Basv3 { /** timer cooling sunday read */ @inherit(r_18) @ext(0x6, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_Sunday { value: rTimeSlotWithTemp; } @@ -3069,16 +3145,9 @@ namespace Basv3 { /** timer cooling sunday write */ @inherit(w_17) @ext(0x6, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingTimer_SundayWrite { value: wTimeSlotWithoutTemp; } - - // includes - - /** included parts */ -/** - union _includes { - Errors_inc, - } -*/ } diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index d1a54c05d..d19045ad9 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -402,6 +402,9 @@ scalar zonesel extends UIN; @values(Values_zonestatus) scalar zonestatus extends UIN; +@values(Values_zonestatus2) +scalar zonestatus2 extends UIN; + @values(Values_sfmode) scalar sfmode extends UCH; @@ -778,6 +781,13 @@ enum Values_zonestatus { off: 10, } +enum Values_zonestatus2 { + auto: 0, + holidayaway: 7, + load: 9, + off: 10, +} + enum Values_sfmode { auto: 0, ventilation: 1, From 58fd187265b1c4a5063b011f4d76a27f4c6310bb Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Sat, 1 Feb 2025 21:25:26 +0000 Subject: [PATCH 13/25] More conditions & new zone status --- src/vaillant/15.basv3.tsp | 72 +++++++++++++++++++++++++++++-------- src/vaillant/_templates.tsp | 12 +++++++ 2 files changed, 70 insertions(+), 14 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index fa5054883..d1d7ec441 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -68,7 +68,7 @@ namespace Basv3 { } /** hwc parallel loading */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0xa, 0) model HwcParallelLoading { value: onoff; @@ -96,21 +96,21 @@ namespace Basv3 { } /** adaptive heat curve */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x14, 0) model AdaptHeatCurve { value: yesno; } /** hwc cylinder maximum charging time */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x17, 0) model HwcCylinderChargeMaxTime { value: minutes2; } /** hwc lock time */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x18, 0) model HwcLockTime { value: minutes2; @@ -177,7 +177,7 @@ namespace Basv3 { value: HTM; } - /** ohwc legionella day */ + /** hwc legionella day */ @inherit(r_1, w_1) @ext(0x2b, 0) model HwcLegionellaDay { @@ -265,7 +265,7 @@ namespace Basv3 { } /** hwc max flow temp */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x46, 0) model HwcFlowTempMax { @minValue(15) @maxValue(80) @step(1) @@ -280,7 +280,7 @@ namespace Basv3 { } /** multifunction relay setting */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x4d, 0) model MultiRelaySetting { value: mamode; @@ -371,28 +371,28 @@ namespace Basv3 { } /** installer name 1 */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x6c, 0) model Installer1 { value: shortname; } /** installer name 2 */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x6d, 0) model Installer2 { value: shortname; } /** phone number 1 (first part) */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x6f, 0) model PhoneNumber1 { value: shortphone; } /** phone number 2 (second part) */ - @inherit(r_1, wi_1) + @inherit(r_1, w_1) @ext(0x70, 0) model PhoneNumber2 { value: shortphone; @@ -649,6 +649,7 @@ namespace Basv3 { /** ExtHwcTempDesired heating circuit 1 */ @inherit(r_3, w_3) @ext(0x9, 0) + @condition(Basv3.Hc1ExtHwcActive.value, "1") model Hc1ExtHwcTempDesired { value: tempv; } @@ -658,6 +659,7 @@ namespace Basv3 { @ext(0xa, 0) @condition(Basv3.Hc1CircuitType.value, "1") @condition(Basv3.Hc1CoolingEnabled.value, "1") + @condition(Basv3.Hc1DewPointMonitoring.value, "1") model Hc1DewPointOffset { @minValue(-10) @maxValue(10) @step(1) value: calibrationv; @@ -693,6 +695,7 @@ namespace Basv3 { /** SetbackMode heating circuit 1 */ @inherit(r_3, w_3) @ext(0xe, 0) + @condition(Basv3.Hc1CircuitType.value, "1") model Hc1SetbackMode { value: offmode2; } @@ -734,6 +737,7 @@ namespace Basv3 { /** ExtHwcOpMode heating circuit 1 */ @inherit(r_3, w_3) @ext(0x13, 0) + @condition(Basv3.Hc1ExtHwcActive.value, "1") model Hc1ExtHwcOpMode { value: opmode2; } @@ -858,6 +862,7 @@ namespace Basv3 { /** ExtHwcTempDesired heating circuit 2 */ @inherit(r_4, w_4) @ext(0x9, 0) + @condition(Basv3.Hc2ExtHwcActive.value, "1") model Hc2ExtHwcTempDesired { value: tempv; } @@ -867,6 +872,7 @@ namespace Basv3 { @ext(0xa, 0) @condition(Basv3.Hc2CircuitType.value, "1") @condition(Basv3.Hc2CoolingEnabled.value, "1") + @condition(Basv3.Hc2DewPointMonitoring.value, "1") model Hc2DewPointOffset { @minValue(-10) @maxValue(10) @step(1) value: calibrationv; @@ -902,6 +908,7 @@ namespace Basv3 { /** SetbackMode heating circuit 2 */ @inherit(r_4, w_4) @ext(0xe, 0) + @condition(Basv3.Hc2CircuitType.value, "1") model Hc2SetbackMode { value: offmode2; } @@ -943,6 +950,7 @@ namespace Basv3 { /** ExtHwcOpMode heating circuit 2 */ @inherit(r_4, w_4) @ext(0x13, 0) + @condition(Basv3.Hc2ExtHwcActive.value, "1") model Hc2ExtHwcOpMode { value: opmode2; } @@ -1067,6 +1075,7 @@ namespace Basv3 { /** ExtHwcTempDesired heating circuit 3 */ @inherit(r_5, w_5) @ext(0x9, 0) + @condition(Basv3.Hc3ExtHwcActive.value, "1") model Hc3ExtHwcTempDesired { value: tempv; } @@ -1076,6 +1085,7 @@ namespace Basv3 { @ext(0xa, 0) @condition(Basv3.Hc3CircuitType.value, "1") @condition(Basv3.Hc3CoolingEnabled.value, "1") + @condition(Basv3.Hc3DewPointMonitoring.value, "1") model Hc3DewPointOffset { @minValue(-10) @maxValue(10) @step(1) value: calibrationv; @@ -1111,6 +1121,7 @@ namespace Basv3 { /** SetbackMode heating circuit 3 */ @inherit(r_5, w_5) @ext(0xe, 0) + @condition(Basv3.Hc3CircuitType.value, "1") model Hc3SetbackMode { value: offmode2; } @@ -1152,6 +1163,7 @@ namespace Basv3 { /** ExtHwcOpMode heating circuit 3 */ @inherit(r_5, w_5) @ext(0x13, 0) + @condition(Basv3.Hc3ExtHwcActive.value, "1") model Hc3ExtHwcOpMode { value: opmode2; } @@ -1365,7 +1377,7 @@ namespace Basv3 { @inherit(r_6) @ext(0x1b, 0) model Z1Status { - value: zonestatus; + value: zonestatus3; } /** quick veto end time zone 1 */ @@ -1584,7 +1596,7 @@ namespace Basv3 { @inherit(r_7) @ext(0x1b, 0) model Z2Status { - value: zonestatus2; + value: zonestatus3; } /** quick veto end time zone 2 */ @@ -1803,7 +1815,7 @@ namespace Basv3 { @inherit(r_8) @ext(0x1b, 0) model Z3Status { - value: zonestatus2; + value: zonestatus3; } /** quick veto end time zone 3 */ @@ -1897,6 +1909,7 @@ namespace Basv3 { /** hwc timer Configuration */ @inherit(r_9) @ext(MF, 0x55, 0xa3, 0, 0x2) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_Config { /** Configuration */ @maxLength(9) @@ -1906,6 +1919,7 @@ namespace Basv3 { /** hwc timer amount */ @inherit(r_9) @ext(MF, 0x55, 0xa4, 0, 0x2) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_TimeSlotsPerWeekday { /** Amount of configured slots per weekday */ value: slotCountWeek; @@ -1914,6 +1928,7 @@ namespace Basv3 { /** hwc timer monday read */ @inherit(r_10) @ext(0, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_Monday { value: rTimeSlotWithoutTemp; } @@ -1921,6 +1936,7 @@ namespace Basv3 { /** hwc timer monday write */ @inherit(w_9) @ext(0, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_MondayWrite { value: wTimeSlotWithoutTemp; } @@ -1928,6 +1944,7 @@ namespace Basv3 { /** hwc timer tuesday read */ @inherit(r_10) @ext(1, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_Tuesday { value: rTimeSlotWithoutTemp; } @@ -1935,6 +1952,7 @@ namespace Basv3 { /** hwc timer tuesday write */ @inherit(w_9) @ext(1, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_TuesdayWrite { value: wTimeSlotWithoutTemp; } @@ -1942,6 +1960,7 @@ namespace Basv3 { /** hwc timer wednesday read */ @inherit(r_10) @ext(2, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_Wednesday { value: rTimeSlotWithoutTemp; } @@ -1949,6 +1968,7 @@ namespace Basv3 { /** hwc timer wednesday write */ @inherit(w_9) @ext(2, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_WednesdayWrite { value: wTimeSlotWithoutTemp; } @@ -1956,6 +1976,7 @@ namespace Basv3 { /** hwc timer thursday read */ @inherit(r_10) @ext(3, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_Thursday { value: rTimeSlotWithoutTemp; } @@ -1963,6 +1984,7 @@ namespace Basv3 { /** hwc timer thursday write */ @inherit(w_9) @ext(3, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_ThursdayWrite { value: wTimeSlotWithoutTemp; } @@ -1970,6 +1992,7 @@ namespace Basv3 { /** hwc timer friday read */ @inherit(r_10) @ext(4, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_Friday { value: rTimeSlotWithoutTemp; } @@ -1977,6 +2000,7 @@ namespace Basv3 { /** hwc timer friday write */ @inherit(w_9) @ext(4, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_FridayWrite { value: wTimeSlotWithoutTemp; } @@ -1984,6 +2008,7 @@ namespace Basv3 { /** hwc timer saturday read */ @inherit(r_10) @ext(5, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_Saturday { value: rTimeSlotWithoutTemp; } @@ -1991,6 +2016,7 @@ namespace Basv3 { /** hwc timer saturday write */ @inherit(w_9) @ext(5, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_SaturdayWrite { value: wTimeSlotWithoutTemp; } @@ -1998,6 +2024,7 @@ namespace Basv3 { /** hwc timer sunday read */ @inherit(r_10) @ext(6, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_Sunday { value: rTimeSlotWithoutTemp; } @@ -2005,6 +2032,7 @@ namespace Basv3 { /** hwc timer sunday write */ @inherit(w_9) @ext(6, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcTimer_SundayWrite { value: wTimeSlotWithoutTemp; } @@ -2023,6 +2051,7 @@ namespace Basv3 { /** cc timer Configuration */ @inherit(r_9) @ext(MF, 0x55, 0xa3, 0, 0x3) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_Config { /** Configuration */ @maxLength(9) @@ -2032,6 +2061,7 @@ namespace Basv3 { /** cc timer amount */ @inherit(r_9) @ext(MF, 0x55, 0xa4, 0, 0x3) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_Timeframes { /** Amount of configured slots per weekday */ value: slotCountWeek; @@ -2040,6 +2070,7 @@ namespace Basv3 { /** cc timer monday read */ @inherit(r_11) @ext(0, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_Monday { value: rTimeSlotWithoutTemp; } @@ -2047,6 +2078,7 @@ namespace Basv3 { /** cc timer monday write */ @inherit(w_10) @ext(0, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_MondayWrite { value: wTimeSlotWithoutTemp; } @@ -2054,6 +2086,7 @@ namespace Basv3 { /** cc timer tuesday read */ @inherit(r_11) @ext(1, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_Tuesday { value: rTimeSlotWithoutTemp; } @@ -2061,6 +2094,7 @@ namespace Basv3 { /** cc timer tuesday write */ @inherit(w_10) @ext(1, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_TuesdayWrite { value: wTimeSlotWithoutTemp; } @@ -2068,6 +2102,7 @@ namespace Basv3 { /** cc timer wednesday read */ @inherit(r_11) @ext(0x2, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_Wednesday { value: rTimeSlotWithoutTemp; } @@ -2075,6 +2110,7 @@ namespace Basv3 { /** cc timer wednesday write */ @inherit(w_10) @ext(0x2, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_WednesdayWrite { value: wTimeSlotWithoutTemp; } @@ -2082,6 +2118,7 @@ namespace Basv3 { /** cc timer thursday read */ @inherit(r_11) @ext(0x3, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_Thursday { value: rTimeSlotWithoutTemp; } @@ -2089,6 +2126,7 @@ namespace Basv3 { /** cc timer thursday write */ @inherit(w_10) @ext(0x3, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_ThursdayWrite { value: wTimeSlotWithoutTemp; } @@ -2096,6 +2134,7 @@ namespace Basv3 { /** cc timer friday read */ @inherit(r_11) @ext(0x4, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_Friday { value: rTimeSlotWithoutTemp; } @@ -2103,6 +2142,7 @@ namespace Basv3 { /** cc timer friday write */ @inherit(w_10) @ext(0x4, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_FridayWrite { value: wTimeSlotWithoutTemp; } @@ -2110,6 +2150,7 @@ namespace Basv3 { /** cc timer saturday read */ @inherit(r_11) @ext(0x5, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_Saturday { value: rTimeSlotWithoutTemp; } @@ -2117,6 +2158,7 @@ namespace Basv3 { /** cc timer saturday write */ @inherit(w_10) @ext(0x5, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_SaturdayWrite { value: wTimeSlotWithoutTemp; } @@ -2124,6 +2166,7 @@ namespace Basv3 { /** cc timer sunday read */ @inherit(r_11) @ext(0x6, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_Sunday { value: rTimeSlotWithoutTemp; } @@ -2131,6 +2174,7 @@ namespace Basv3 { /** cc timer sunday write */ @inherit(w_10) @ext(0x6, 0) + @condition(Basv3.HwcEnabled.value, "1") model CcTimer_SundayWrite { value: wTimeSlotWithoutTemp; } diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index d19045ad9..20d8742d4 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -405,6 +405,9 @@ scalar zonestatus extends UIN; @values(Values_zonestatus2) scalar zonestatus2 extends UIN; +@values(Values_zonestatus3) +scalar zonestatus3 extends UIN; + @values(Values_sfmode) scalar sfmode extends UCH; @@ -788,6 +791,15 @@ enum Values_zonestatus2 { off: 10, } +enum Values_zonestatus3 { + auto: 0, + ventilation: 1, + veto: 4, + holidayaway: 7, + load: 9, + off: 10, +} + enum Values_sfmode { auto: 0, ventilation: 1, From a34b410aa0067a5dd4f824857d5ff7378f5a3054 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Sat, 1 Feb 2025 22:54:36 +0000 Subject: [PATCH 14/25] Add `@minLength(0)` --- src/vaillant/_templates.tsp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index 20d8742d4..fff74e010 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -431,10 +431,12 @@ scalar zmapping extends UIN; scalar hcname extends STR; /** zone name */ +@minLength(0) @maxLength(5) scalar zname extends STR; /** name */ +@minLength(0) @maxLength(6) scalar shortname extends STR; @@ -443,6 +445,7 @@ scalar shortname extends STR; scalar phone extends STR; /** phone number */ +@minLength(0) @maxLength(6) scalar shortphone extends STR; From 873ba133b191ef5c83d7a0d5dd64a76d2ac2ae26 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Wed, 5 Feb 2025 20:32:22 +0000 Subject: [PATCH 15/25] Add `CurrentErrors` --- src/vaillant/15.basv3.tsp | 85 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 83 insertions(+), 2 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index d1d7ec441..5687d56b4 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -8,8 +8,29 @@ namespace Vaillant; // @zz(0x15) namespace Basv3 { - // ,BASV3,sensoCOMFORT VRC 720/3f via Base Station D (SW=0760;HW=7304) - // ##### General ##### + // BASV3,sensoCOMFORT VRC 720/3f via Base Station D (SW=0760;HW=7304) + + // Errors + + /** default *r */ + @base(MF, 0x3, 0) + model r_0 {} + + model ErrorList { + @values(Values_720ErrorCode) + error: UIN; + error_1: UIN; + error_2: UIN; + error_3: UIN; + error_4: UIN; + } + + /** Current errors */ + @inherit(r_0) + @ext(1) + model CurrentErrors { + value: ErrorList; + } /** default *r */ @base(MF, 0x24, 0x2, 0, 0, 0) @@ -3194,4 +3215,64 @@ namespace Basv3 { model Z3CoolingTimer_SundayWrite { value: wTimeSlotWithoutTemp; } + + enum Values_720ErrorCode { + None: 0, + RECOVAIR_comm_error: 509, + IOModule_comm_error: 511, + AF_Sensor_error: 521, + RF_comm_error: 599, + RC_1_comm_error: 1192, + RC_2_comm_error: 1193, + RC_3_comm_error: 1194, + RC_4_comm_error: 1195, + Boiler_1_comm_error: 1200, + Boiler_2_comm_error: 1201, + Boiler_3_comm_error: 1202, + Boiler_4_comm_error: 1203, + Boiler_5_comm_error: 1204, + Boiler_6_comm_error: 1205, + Heatpump_1_comm_error: 1206, + Heatpump_2_comm_error: 1207, + Heatpump_3_comm_error: 1208, + Heatpump_4_comm_error: 1209, + Heatpump_5_comm_error: 1210, + Heatpump_6_comm_error: 1211, + FM3_1_comm_error: 1212, + FM3_2_comm_error: 1213, + FM3_3_comm_error: 1214, + FM5_comm_error: 1218, + VR92_1_comm_error: 1219, + VR92_2_comm_error: 1220, + VR92_3_comm_error: 1221, + VR92_4_comm_error: 1222, + VPM_W_comm_error: 1227, + VPM_S_comm_error: 1228, + VMS_comm_error: 1229, + FM3_1_config_error: 1231, + FM3_2_config_error: 1232, + FM3_3_config_error: 1233, + Not_supported_VR61: 1237, + Not_supported_VR68: 1238, + Not_supported_VR81: 1239, + Hydraulic_scheme_invalid: 1240, + FM3_missing: 1244, + FM3_sensor_S1_missing: 1245, + Solar_pump_1_error: 1246, + Solar_pump_2_error: 1247, + Not_supported_actoSTOR: 1248, + MA2_VWZ_AI_config_error: 1249, + VR71_config_error: 1251, + Boiler_7_comm_error: 1252, + Boiler_8_comm_error: 1253, + Heatpump_7_comm_error: 1254, + Heatpump_8_comm_error: 1255, + FM3_1_MA_config_error: 1257, + FM5_MA_config_error: 1263, + Room_sensor_error: 1361, + RC_1_temp_sensor_signal_invalid: 1363, + RC_2_temp_sensor_signal_invalid: 1364, + RC_3_temp_sensor_signal_invalid: 1365, + RC_4_temp_sensor_signal_invalid: 1366, + } } From 90ba2a9fc281d6903ac392921ae13985bb971e8d Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Wed, 5 Feb 2025 20:55:21 +0000 Subject: [PATCH 16/25] Add values for error_* --- src/vaillant/15.basv3.tsp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 5687d56b4..12111b6b9 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -19,9 +19,17 @@ namespace Basv3 { model ErrorList { @values(Values_720ErrorCode) error: UIN; + + @values(Values_720ErrorCode) error_1: UIN; + + @values(Values_720ErrorCode) error_2: UIN; + + @values(Values_720ErrorCode) error_3: UIN; + + @values(Values_720ErrorCode) error_4: UIN; } From 9a686b810b07aa6c6020c963a1c371162c3c2c13 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Fri, 9 Jan 2026 19:14:58 +0000 Subject: [PATCH 17/25] Fix obvious problems --- src/vaillant/15.basv3.tsp | 240 ++++++++++++++++++++++++++------------ 1 file changed, 167 insertions(+), 73 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 12111b6b9..8e0f28ee6 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -9,7 +9,7 @@ namespace Vaillant; // @zz(0x15) namespace Basv3 { // BASV3,sensoCOMFORT VRC 720/3f via Base Station D (SW=0760;HW=7304) - + // Errors /** default *r */ @@ -70,7 +70,9 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0x1, 0) model HwcBivalencePoint { - @minValue(-20) @maxValue(50) @step(1) + @minValue(-20) + @maxValue(50) + @step(1) value: tempv; } @@ -78,7 +80,10 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0x2, 0) model ContinuosHeating { - @minValue(-26) @maxValue(10) @step(1) + /** -26=off, when the outside temperature falls below this threshold temperature the continuous heating function is started (off <=> function is disabled) */ + @minValue(-26) + @maxValue(10) + @step(1) value: tempv; } @@ -107,6 +112,7 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0xe, 0) model MaxRoomHumidity { + @unit("%") value: UIN; } @@ -121,6 +127,7 @@ namespace Basv3 { @inherit(ri_1) @ext(0x10, 0) model TariffAuxHeater { + @minValue(0) value: UIN; } @@ -134,7 +141,7 @@ namespace Basv3 { /** hwc cylinder maximum charging time */ @inherit(r_1, w_1) @ext(0x17, 0) - model HwcCylinderChargeMaxTime { + model HwcStorageChargeMaxTime { value: minutes2; } @@ -156,7 +163,9 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0x22, 0) model HcAlternativePoint { - @minValue(-21) @maxValue(40) @step(1) + @minValue(-21) + @maxValue(40) + @step(1) value: tempv; } @@ -164,7 +173,9 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0x23, 0) model HcBivalencePoint { - @minValue(-20) @maxValue(30) @step(1) + @minValue(-20) + @maxValue(30) + @step(1) value: tempv; } @@ -179,23 +190,29 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0x26, 0) model HcEmergencyTemperature { - @minValue(20) @maxValue(80) @step(1) + @minValue(20) + @maxValue(80) + @step(1) value: tempv; } /** hysteresis cylinder charge */ @inherit(r_1, w_1) @ext(0x27, 0) - model HwcCylinderChargeHyst { - @minValue(3) @maxValue(20) @step(0.5) + model HwcStorageChargeHyst { + @minValue(3) + @maxValue(20) + @step(0.5) value: calibrationv; } /** offset cylinder charge */ @inherit(r_1, w_1) @ext(0x29, 0) - model HwcCylinderChargeOffset { - @minValue(0) @maxValue(40) @step(1) + model HwcStorageChargeOffset { + @minValue(0) + @maxValue(40) + @step(1) value: calibrationv; } @@ -224,7 +241,9 @@ namespace Basv3 { @inherit(r_1, w_1) @ext(0x2d, 0) model OffsetOutsideTemp { - @minValue(-3) @maxValue(3) @step(0.5) + @minValue(-3) + @maxValue(3) + @step(0.5) value: calibrationv; } @@ -246,6 +265,9 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0x36, 0) model HydraulicScheme { + @minValue(1) + @maxValue(16) + @step(1) value: UIN; } @@ -253,7 +275,9 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0x38, 0) model CoolingOutsideTempThreshold { - @minValue(10) @maxValue(30) @step(1) + @minValue(10) + @maxValue(30) + @step(1) value: tempv; } @@ -268,21 +292,23 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0x3A, 0) model DewPointOffset { - @minValue(-10) @maxValue(10) @step(1) + @minValue(-10) + @maxValue(10) + @step(1) value: tempv; } /** total solar yield */ - @inherit(r_1) + @inherit(r_1, wi_1) @ext(0x3d, 0) model SolarYieldTotal { value: energy4; } /** total environmental yield */ - @inherit(r_1) + @inherit(r_1, wi_1) @ext(0x3e, 0) - model EnvYieldTotal { + model YieldTotal { value: energy4; } @@ -297,7 +323,9 @@ namespace Basv3 { @inherit(r_1, w_1) @ext(0x46, 0) model HwcFlowTempMax { - @minValue(15) @maxValue(80) @step(1) + @minValue(15) + @maxValue(80) + @step(1) value: tempv; } @@ -438,7 +466,9 @@ namespace Basv3 { @inherit(ri_1, wi_1) @ext(0x76, 0) model KeyCodeforConfigMenu { - @minValue(0) @maxValue(999) @step(1) + @minValue(0) + @maxValue(999) + @step(1) value: UIN; } @@ -466,14 +496,14 @@ namespace Basv3 { /** hwc cylinder temperature top */ @inherit(r_1) @ext(0x9d, 0) - model HwcCylinderTempTop { + model HwcStorageTempTop { value: tempv; } /** hwc cylinder temperature bottom */ @inherit(r_1) @ext(0x9e, 0) - model HwcCylinderTempBottom { + model HwcStorageTempBottom { value: tempv; } @@ -495,7 +525,9 @@ namespace Basv3 { @inherit(r_1, w_1) @ext(0xa2, 0) model BufferChargeOffset { - @minValue(0) @maxValue(15) @step(1) + @minValue(0) + @maxValue(15) + @step(1) value: calibrationv; } @@ -541,7 +573,9 @@ namespace Basv3 { @ext(0x4, 0) @condition(Basv3.HwcEnabled.value, "1") model HwcTempDesired { - @minValue(35) @maxValue(70) @step(1) + @minValue(35) + @maxValue(70) + @step(1) value: tempv; } @@ -549,7 +583,7 @@ namespace Basv3 { @inherit(r_2) @ext(0x5, 0) @condition(Basv3.HwcEnabled.value, "1") - model HwcCylinderTemp { + model HwcStorageTemp { value: tempv; } @@ -565,7 +599,7 @@ namespace Basv3 { @inherit(r_2) @ext(0x8, 0) @condition(Basv3.HwcEnabled.value, "1") - model HwcFlowTempTarget { + model HwcFlowTempDesired { value: tempv; } @@ -590,7 +624,7 @@ namespace Basv3 { @ext(0xd, 0) @condition(Basv3.HwcEnabled.value, "1") model HwcSFMode { - value: sfmode3; + value: sfmodehwc; } /** hwc status */ @@ -643,7 +677,9 @@ namespace Basv3 { @ext(0x4, 0) @condition(Basv3.Hc1CircuitType.value, "4") model Hc1DesiredReturnTemp { - @minValue(15) @maxValue(80) @step(1) + @minValue(15) + @maxValue(80) + @step(1) value: tempv; } @@ -690,7 +726,9 @@ namespace Basv3 { @condition(Basv3.Hc1CoolingEnabled.value, "1") @condition(Basv3.Hc1DewPointMonitoring.value, "1") model Hc1DewPointOffset { - @minValue(-10) @maxValue(10) @step(1) + @minValue(-10) + @maxValue(10) + @step(1) value: calibrationv; } @@ -699,7 +737,9 @@ namespace Basv3 { @ext(0xb, 0) @condition(Basv3.Hc1CircuitType.value, "1") model Hc1ExcessTemp { - @minValue(0) @maxValue(20) @step(1) + @minValue(0) + @maxValue(20) + @step(1) value: calibrationv; } @@ -708,7 +748,9 @@ namespace Basv3 { @ext(0xc, 0) @condition(Basv3.Hc1CircuitType.value, "2") model Hc1FixedDesiredTemp { - @minValue(5) @maxValue(90) @step(1) + @minValue(5) + @maxValue(90) + @step(1) value: tempv; } @@ -716,8 +758,10 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0xd, 0) @condition(Basv3.Hc1CircuitType.value, "2") - model Hc1FixedSetbackTemp { - @minValue(0) @maxValue(90) @step(1) + model Hc1SetbackModeTemp { + @minValue(0) + @maxValue(90) + @step(1) value: tempv; } @@ -733,7 +777,9 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0xf, 0) model Hc1HeatCurve { - @minValue(0.1) @maxValue(4) @step(0.05) + @minValue(0.1) + @maxValue(4) + @step(0.05) value: EXP; } @@ -741,7 +787,9 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0x10, 0) model Hc1HeatingFlowTempMax { - @minValue(15) @maxValue(90) @step(1) + @minValue(15) + @maxValue(90) + @step(1) value: tempv; } @@ -751,7 +799,9 @@ namespace Basv3 { @condition(Basv3.Hc1CircuitType.value, "1") @condition(Basv3.Hc1CoolingEnabled.value, "1") model Hc1CoolingFlowTempMin { - @minValue(7) @maxValue(24) @step(1) + @minValue(7) + @maxValue(24) + @step(1) value: tempv; } @@ -759,7 +809,9 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0x12, 0) model Hc1HeatingFlowTempMin { - @minValue(15) @maxValue(90) @step(1) + @minValue(15) + @maxValue(90) + @step(1) value: tempv; } @@ -775,14 +827,16 @@ namespace Basv3 { @inherit(r_3, w_3) @ext(0x14, 0) model Hc1SummerTempLimit { - @minValue(10) @maxValue(99) @step(1) + @minValue(10) + @maxValue(99) + @step(1) value: tempv; } - /** RoomTempMod heating circuit 1 */ + /** RoomTempModulation heating circuit 1 */ @inherit(r_3, w_3) @ext(0x15, 0) - model Hc1RoomTempMod { + model Hc1RoomTempModulation { value: rcmode2; } @@ -854,9 +908,11 @@ namespace Basv3 { /** DesiredReturnTemp heating circuit 2 */ @inherit(r_4, w_4) @ext(0x4, 0) - @condition(Basv3.Hc1CircuitType.value, "4") + @condition(Basv3.Hc2CircuitType.value, "4") model Hc2DesiredReturnTemp { - @minValue(15) @maxValue(80) @step(1) + @minValue(15) + @maxValue(80) + @step(1) value: tempv; } @@ -903,7 +959,9 @@ namespace Basv3 { @condition(Basv3.Hc2CoolingEnabled.value, "1") @condition(Basv3.Hc2DewPointMonitoring.value, "1") model Hc2DewPointOffset { - @minValue(-10) @maxValue(10) @step(1) + @minValue(-10) + @maxValue(10) + @step(1) value: calibrationv; } @@ -912,7 +970,9 @@ namespace Basv3 { @ext(0xb, 0) @condition(Basv3.Hc2CircuitType.value, "1") model Hc2ExcessTemp { - @minValue(0) @maxValue(20) @step(1) + @minValue(0) + @maxValue(20) + @step(1) value: calibrationv; } @@ -921,7 +981,9 @@ namespace Basv3 { @ext(0xc, 0) @condition(Basv3.Hc2CircuitType.value, "2") model Hc2FixedDesiredTemp { - @minValue(5) @maxValue(90) @step(1) + @minValue(5) + @maxValue(90) + @step(1) value: tempv; } @@ -929,8 +991,10 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0xd, 0) @condition(Basv3.Hc2CircuitType.value, "2") - model Hc2FixedSetbackTemp { - @minValue(0) @maxValue(90) @step(1) + model Hc2SetbackModeTemp { + @minValue(0) + @maxValue(90) + @step(1) value: tempv; } @@ -946,7 +1010,9 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0xf, 0) model Hc2HeatCurve { - @minValue(0.1) @maxValue(4) @step(0.05) + @minValue(0.1) + @maxValue(4) + @step(0.05) value: EXP; } @@ -954,7 +1020,9 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0x10, 0) model Hc2HeatingFlowTempMax { - @minValue(15) @maxValue(90) @step(1) + @minValue(15) + @maxValue(90) + @step(1) value: tempv; } @@ -964,7 +1032,9 @@ namespace Basv3 { @condition(Basv3.Hc2CircuitType.value, "1") @condition(Basv3.Hc2CoolingEnabled.value, "1") model Hc2CoolingFlowTempMin { - @minValue(7) @maxValue(24) @step(1) + @minValue(7) + @maxValue(24) + @step(1) value: tempv; } @@ -972,7 +1042,9 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0x12, 0) model Hc2HeatingFlowTempMin { - @minValue(15) @maxValue(90) @step(1) + @minValue(15) + @maxValue(90) + @step(1) value: tempv; } @@ -988,14 +1060,16 @@ namespace Basv3 { @inherit(r_4, w_4) @ext(0x14, 0) model Hc2SummerTempLimit { - @minValue(10) @maxValue(99) @step(1) + @minValue(10) + @maxValue(99) + @step(1) value: tempv; } - /** RoomTempMod heating circuit 2 */ + /** RoomTempModulation heating circuit 2 */ @inherit(r_4, w_4) @ext(0x15, 0) - model Hc2RoomTempMod { + model Hc2RoomTempModulation { value: rcmode2; } @@ -1069,7 +1143,9 @@ namespace Basv3 { @ext(0x4, 0) @condition(Basv3.Hc3CircuitType.value, "4") model Hc3DesiredReturnTemp { - @minValue(15) @maxValue(80) @step(1) + @minValue(15) + @maxValue(80) + @step(1) value: tempv; } @@ -1116,7 +1192,9 @@ namespace Basv3 { @condition(Basv3.Hc3CoolingEnabled.value, "1") @condition(Basv3.Hc3DewPointMonitoring.value, "1") model Hc3DewPointOffset { - @minValue(-10) @maxValue(10) @step(1) + @minValue(-10) + @maxValue(10) + @step(1) value: calibrationv; } @@ -1125,7 +1203,9 @@ namespace Basv3 { @ext(0xb, 0) @condition(Basv3.Hc3CircuitType.value, "1") model Hc3ExcessTemp { - @minValue(0) @maxValue(20) @step(1) + @minValue(0) + @maxValue(20) + @step(1) value: calibrationv; } @@ -1134,7 +1214,9 @@ namespace Basv3 { @ext(0xc, 0) @condition(Basv3.Hc3CircuitType.value, "2") model Hc3FixedDesiredTemp { - @minValue(5) @maxValue(90) @step(1) + @minValue(5) + @maxValue(90) + @step(1) value: tempv; } @@ -1142,8 +1224,10 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0xd, 0) @condition(Basv3.Hc3CircuitType.value, "2") - model Hc3FixedSetbackTemp { - @minValue(0) @maxValue(90) @step(1) + model Hc3SetbackModeTemp { + @minValue(0) + @maxValue(90) + @step(1) value: tempv; } @@ -1159,7 +1243,9 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0xf, 0) model Hc3HeatCurve { - @minValue(0.1) @maxValue(4) @step(0.05) + @minValue(0.1) + @maxValue(4) + @step(0.05) value: EXP; } @@ -1167,7 +1253,9 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0x10, 0) model Hc3HeatingFlowTempMax { - @minValue(15) @maxValue(90) @step(1) + @minValue(15) + @maxValue(90) + @step(1) value: tempv; } @@ -1177,7 +1265,9 @@ namespace Basv3 { @condition(Basv3.Hc3CircuitType.value, "1") @condition(Basv3.Hc3CoolingEnabled.value, "1") model Hc3CoolingFlowTempMin { - @minValue(7) @maxValue(24) @step(1) + @minValue(7) + @maxValue(24) + @step(1) value: tempv; } @@ -1185,7 +1275,9 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0x12, 0) model Hc3HeatingFlowTempMin { - @minValue(15) @maxValue(90) @step(1) + @minValue(15) + @maxValue(90) + @step(1) value: tempv; } @@ -1201,14 +1293,16 @@ namespace Basv3 { @inherit(r_5, w_5) @ext(0x14, 0) model Hc3SummerTempLimit { - @minValue(10) @maxValue(99) @step(1) + @minValue(10) + @maxValue(99) + @step(1) value: tempv; } - /** RoomTempMod heating circuit 3 */ + /** RoomTempModulation heating circuit 3 */ @inherit(r_5, w_5) @ext(0x15, 0) - model Hc3RoomTempMod { + model Hc3RoomTempModulation { value: rcmode2; } @@ -1340,7 +1434,7 @@ namespace Basv3 { @ext(0xe, 0) @condition(Basv3.Hc1CircuitType.value, "1") model Z1SFMode { - value: sfmode2; + value: sfmodezone; } /** room temperature zone 1 */ @@ -1354,7 +1448,7 @@ namespace Basv3 { @inherit(r_6) @ext(0x12, 0) model Z1ValveStatus { - value: closeopen; + value: openclose; } /** room zone mapping zone 1 */ @@ -1367,7 +1461,7 @@ namespace Basv3 { /** heating room temperature desired zone 1 */ @inherit(r_6) @ext(0x14, 0) - @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingRoomTempTarget { value: tempv; } @@ -1559,7 +1653,7 @@ namespace Basv3 { @ext(0xe, 0) @condition(Basv3.Hc2CircuitType.value, "1") model Z2SFMode { - value: sfmode2; + value: sfmodezone; } /** room temperature zone 2 */ @@ -1573,7 +1667,7 @@ namespace Basv3 { @inherit(r_7) @ext(0x12, 0) model Z2ValveStatus { - value: closeopen; + value: openclose; } /** room zone mapping zone 2 */ @@ -1778,7 +1872,7 @@ namespace Basv3 { @ext(0xe, 0) @condition(Basv3.Hc3CircuitType.value, "1") model Z3SFMode { - value: sfmode2; + value: sfmodezone; } /** room temperature zone 3 */ @@ -1792,7 +1886,7 @@ namespace Basv3 { @inherit(r_8) @ext(0x12, 0) model Z3ValveStatus { - value: closeopen; + value: openclose; } /** room zone mapping zone 3 */ From 01c9760750f9c00fcaeb3be7a84d970601a29583 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Fri, 9 Jan 2026 22:03:38 +0000 Subject: [PATCH 18/25] Add additional namespaces --- src/vaillant/15.basv3.tsp | 2109 +++++++++++++++++-------------------- 1 file changed, 981 insertions(+), 1128 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 8e0f28ee6..d7165767e 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -552,81 +552,6 @@ namespace Basv3 { value: yesno; } - /** hwc circulation pump status */ - @inherit(r_2) - @ext(0x2, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcCircPumpStatus { - value: onoff; - } - - /** hwc operation mode */ - @inherit(r_2, w_2) - @ext(0x3, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcOpMode { - value: opmode2; - } - - /** hwc temperature desired */ - @inherit(r_2, w_2) - @ext(0x4, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTempDesired { - @minValue(35) - @maxValue(70) - @step(1) - value: tempv; - } - - /** hwc cylinder temperature */ - @inherit(r_2) - @ext(0x5, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcStorageTemp { - value: tempv; - } - - /** hwc reheating active */ - @inherit(r_2) - @ext(0x6, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcReheatingActive { - value: yesno; - } - - /** hwc flow temperature */ - @inherit(r_2) - @ext(0x8, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcFlowTempDesired { - value: tempv; - } - - /** hwc holiday start period */ - @inherit(r_2, w_2) - @ext(0x9, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcHolidayStartPeriod { - value: hfrom; - } - - /** hwc holiday end period */ - @inherit(r_2, w_2) - @ext(0xa, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcHolidayEndPeriod { - value: hto; - } - - /** hwc Special Function (SF) mode */ - @inherit(r_2, w_2) - @ext(0xd, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcSFMode { - value: sfmodehwc; - } - /** hwc status */ @inherit(r_2) @ext(0xf, 0) @@ -634,20 +559,87 @@ namespace Basv3 { value: zonestatus2; } - /** hwc holiday start time */ - @inherit(r_2, w_2) - @ext(0x10, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcHolidayStartTime { - value: HTI; - } - - /** hwc holiday end time */ - @inherit(r_2, w_2) - @ext(0x11, 0) @condition(Basv3.HwcEnabled.value, "1") - model HwcHolidayEndTime { - value: HTI; + namespace HotWaterCircuit { + /** hwc circulation pump status */ + @inherit(r_2) + @ext(0x2, 0) + model HwcCircPumpStatus { + value: onoff; + } + + /** hwc operation mode */ + @inherit(r_2, w_2) + @ext(0x3, 0) + model HwcOpMode { + value: opmode2; + } + + /** hwc temperature desired */ + @inherit(r_2, w_2) + @ext(0x4, 0) + model HwcTempDesired { + @minValue(35) + @maxValue(70) + @step(1) + value: tempv; + } + + /** hwc cylinder temperature */ + @inherit(r_2) + @ext(0x5, 0) + model HwcStorageTemp { + value: tempv; + } + + /** hwc reheating active */ + @inherit(r_2) + @ext(0x6, 0) + model HwcReheatingActive { + value: yesno; + } + + /** hwc flow temperature */ + @inherit(r_2) + @ext(0x8, 0) + model HwcFlowTempDesired { + value: tempv; + } + + /** hwc holiday start period */ + @inherit(r_2, w_2) + @ext(0x9, 0) + model HwcHolidayStartPeriod { + value: hfrom; + } + + /** hwc holiday end period */ + @inherit(r_2, w_2) + @ext(0xa, 0) + model HwcHolidayEndPeriod { + value: hto; + } + + /** hwc Special Function (SF) mode */ + @inherit(r_2, w_2) + @ext(0xd, 0) + model HwcSFMode { + value: sfmodehwc; + } + + /** hwc holiday start time */ + @inherit(r_2, w_2) + @ext(0x10, 0) + model HwcHolidayStartTime { + value: HTI; + } + + /** hwc holiday end time */ + @inherit(r_2, w_2) + @ext(0x11, 0) + model HwcHolidayEndTime { + value: HTI; + } } // ##### heating circuit 1 ##### @@ -2011,15 +2003,16 @@ namespace Basv3 { /** default *r */ model r_9 {} + /** @inherit(r_9) @ext(0xb5, 0x55, 0xa0) model UnknownValue_a0 { @maxLength(8) value: HEX; } + */ // timers hot water - /** default *r */ @base(MF, 0x55, 0xa5, 0, 0x2) model r_10 {} @@ -2029,135 +2022,122 @@ namespace Basv3 { @base(MF, 0x55, 0xa6, 0, 0x2) model w_9 {} - /** hwc timer Configuration */ - @inherit(r_9) - @ext(MF, 0x55, 0xa3, 0, 0x2) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_Config { - /** Configuration */ - @maxLength(9) - value: HEX; - } - - /** hwc timer amount */ - @inherit(r_9) - @ext(MF, 0x55, 0xa4, 0, 0x2) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_TimeSlotsPerWeekday { - /** Amount of configured slots per weekday */ - value: slotCountWeek; - } - - /** hwc timer monday read */ - @inherit(r_10) - @ext(0, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_Monday { - value: rTimeSlotWithoutTemp; - } - - /** hwc timer monday write */ - @inherit(w_9) - @ext(0, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_MondayWrite { - value: wTimeSlotWithoutTemp; - } - - /** hwc timer tuesday read */ - @inherit(r_10) - @ext(1, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_Tuesday { - value: rTimeSlotWithoutTemp; - } - - /** hwc timer tuesday write */ - @inherit(w_9) - @ext(1, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_TuesdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** hwc timer wednesday read */ - @inherit(r_10) - @ext(2, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_Wednesday { - value: rTimeSlotWithoutTemp; - } - - /** hwc timer wednesday write */ - @inherit(w_9) - @ext(2, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_WednesdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** hwc timer thursday read */ - @inherit(r_10) - @ext(3, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_Thursday { - value: rTimeSlotWithoutTemp; - } - - /** hwc timer thursday write */ - @inherit(w_9) - @ext(3, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_ThursdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** hwc timer friday read */ - @inherit(r_10) - @ext(4, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_Friday { - value: rTimeSlotWithoutTemp; - } - - /** hwc timer friday write */ - @inherit(w_9) - @ext(4, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_FridayWrite { - value: wTimeSlotWithoutTemp; - } - - /** hwc timer saturday read */ - @inherit(r_10) - @ext(5, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_Saturday { - value: rTimeSlotWithoutTemp; - } - - /** hwc timer saturday write */ - @inherit(w_9) - @ext(5, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_SaturdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** hwc timer sunday read */ - @inherit(r_10) - @ext(6, 0) - @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_Sunday { - value: rTimeSlotWithoutTemp; - } - - /** hwc timer sunday write */ - @inherit(w_9) - @ext(6, 0) @condition(Basv3.HwcEnabled.value, "1") - model HwcTimer_SundayWrite { - value: wTimeSlotWithoutTemp; + namespace HotWaterCircutTimer { + /** hwc timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 0, 0x2) + model HwcTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** hwc timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 0, 0x2) + model HwcTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** hwc timer monday read */ + @inherit(r_10) + @ext(0, 0) + model HwcTimer_Monday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer monday write */ + @inherit(w_9) + @ext(0, 0) + model HwcTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer tuesday read */ + @inherit(r_10) + @ext(1, 0) + model HwcTimer_Tuesday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer tuesday write */ + @inherit(w_9) + @ext(1, 0) + model HwcTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer wednesday read */ + @inherit(r_10) + @ext(2, 0) + model HwcTimer_Wednesday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer wednesday write */ + @inherit(w_9) + @ext(2, 0) + model HwcTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer thursday read */ + @inherit(r_10) + @ext(3, 0) + model HwcTimer_Thursday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer thursday write */ + @inherit(w_9) + @ext(3, 0) + model HwcTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer friday read */ + @inherit(r_10) + @ext(4, 0) + model HwcTimer_Friday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer friday write */ + @inherit(w_9) + @ext(4, 0) + model HwcTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer saturday read */ + @inherit(r_10) + @ext(5, 0) + model HwcTimer_Saturday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer saturday write */ + @inherit(w_9) + @ext(5, 0) + model HwcTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** hwc timer sunday read */ + @inherit(r_10) + @ext(6, 0) + model HwcTimer_Sunday { + value: rTimeSlotWithoutTemp; + } + + /** hwc timer sunday write */ + @inherit(w_9) + @ext(6, 0) + model HwcTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } } // timers circulation pump @@ -2171,135 +2151,122 @@ namespace Basv3 { @base(MF, 0x55, 0xa6, 0, 0x3) model w_10 {} - /** cc timer Configuration */ - @inherit(r_9) - @ext(MF, 0x55, 0xa3, 0, 0x3) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_Config { - /** Configuration */ - @maxLength(9) - value: HEX; - } - - /** cc timer amount */ - @inherit(r_9) - @ext(MF, 0x55, 0xa4, 0, 0x3) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_Timeframes { - /** Amount of configured slots per weekday */ - value: slotCountWeek; - } - - /** cc timer monday read */ - @inherit(r_11) - @ext(0, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_Monday { - value: rTimeSlotWithoutTemp; - } - - /** cc timer monday write */ - @inherit(w_10) - @ext(0, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_MondayWrite { - value: wTimeSlotWithoutTemp; - } - - /** cc timer tuesday read */ - @inherit(r_11) - @ext(1, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_Tuesday { - value: rTimeSlotWithoutTemp; - } - - /** cc timer tuesday write */ - @inherit(w_10) - @ext(1, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_TuesdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** cc timer wednesday read */ - @inherit(r_11) - @ext(0x2, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_Wednesday { - value: rTimeSlotWithoutTemp; - } - - /** cc timer wednesday write */ - @inherit(w_10) - @ext(0x2, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_WednesdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** cc timer thursday read */ - @inherit(r_11) - @ext(0x3, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_Thursday { - value: rTimeSlotWithoutTemp; - } - - /** cc timer thursday write */ - @inherit(w_10) - @ext(0x3, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_ThursdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** cc timer friday read */ - @inherit(r_11) - @ext(0x4, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_Friday { - value: rTimeSlotWithoutTemp; - } - - /** cc timer friday write */ - @inherit(w_10) - @ext(0x4, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_FridayWrite { - value: wTimeSlotWithoutTemp; - } - - /** cc timer saturday read */ - @inherit(r_11) - @ext(0x5, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_Saturday { - value: rTimeSlotWithoutTemp; - } - - /** cc timer saturday write */ - @inherit(w_10) - @ext(0x5, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_SaturdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** cc timer sunday read */ - @inherit(r_11) - @ext(0x6, 0) @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_Sunday { - value: rTimeSlotWithoutTemp; - } - - /** cc timer sunday write */ - @inherit(w_10) - @ext(0x6, 0) - @condition(Basv3.HwcEnabled.value, "1") - model CcTimer_SundayWrite { - value: wTimeSlotWithoutTemp; + namespace CirculationCircuitTimer { + /** cc timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 0, 0x3) + model CcTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** cc timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 0, 0x3) + model CcTimer_Timeframes { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** cc timer monday read */ + @inherit(r_11) + @ext(0, 0) + model CcTimer_Monday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer monday write */ + @inherit(w_10) + @ext(0, 0) + model CcTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer tuesday read */ + @inherit(r_11) + @ext(1, 0) + model CcTimer_Tuesday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer tuesday write */ + @inherit(w_10) + @ext(1, 0) + model CcTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer wednesday read */ + @inherit(r_11) + @ext(0x2, 0) + model CcTimer_Wednesday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer wednesday write */ + @inherit(w_10) + @ext(0x2, 0) + model CcTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer thursday read */ + @inherit(r_11) + @ext(0x3, 0) + model CcTimer_Thursday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer thursday write */ + @inherit(w_10) + @ext(0x3, 0) + model CcTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer friday read */ + @inherit(r_11) + @ext(0x4, 0) + model CcTimer_Friday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer friday write */ + @inherit(w_10) + @ext(0x4, 0) + model CcTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer saturday read */ + @inherit(r_11) + @ext(0x5, 0) + model CcTimer_Saturday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer saturday write */ + @inherit(w_10) + @ext(0x5, 0) + model CcTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** cc timer sunday read */ + @inherit(r_11) + @ext(0x6, 0) + model CcTimer_Sunday { + value: rTimeSlotWithoutTemp; + } + + /** cc timer sunday write */ + @inherit(w_10) + @ext(0x6, 0) + model CcTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } } // timers silent mode @@ -2439,303 +2406,264 @@ namespace Basv3 { @base(MF, 0x55, 0xa6, 0, 0) model w_12 {} + @condition(Basv3.Hc1CircuitType.value, "1") + namespace Zone1HeatingTimer { + /** timer Configuration */ + @inherit(r_9) + @ext(MF, 0x55, 0xa3, 0, 0) + model Z1HeatingTimer_Config { + /** Configuration */ + @maxLength(9) + value: HEX; + } + + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 0, 0) + model Z1HeatingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer heating monday read */ + @inherit(r_13) + @ext(0, 0) + model Z1HeatingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer heating monday write */ + @inherit(w_12) + @ext(0, 0) + model Z1HeatingTimer_MondayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating tuesday read */ + @inherit(r_13) + @ext(1, 0) + model Z1HeatingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer heating tuesday write */ + @inherit(w_12) + @ext(1, 0) + model Z1HeatingTimer_TuesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating wednesday read */ + @inherit(r_13) + @ext(0x2, 0) + model Z1HeatingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer heating wednesday write */ + @inherit(w_12) + @ext(0x2, 0) + model Z1HeatingTimer_WednesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating thursday read */ + @inherit(r_13) + @ext(0x3, 0) + model Z1HeatingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer heating thursday write */ + @inherit(w_12) + @ext(0x3, 0) + model Z1HeatingTimer_ThursdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating friday read */ + @inherit(r_13) + @ext(0x4, 0) + model Z1HeatingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer heating friday write */ + @inherit(w_12) + @ext(0x4, 0) + model Z1HeatingTimer_FridayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating saturday read */ + @inherit(r_13) + @ext(0x5, 0) + model Z1HeatingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer heating saturday write */ + @inherit(w_12) + @ext(0x5, 0) + model Z1HeatingTimer_SaturdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating sunday read */ + @inherit(r_13) + @ext(0x6, 0) + model Z1HeatingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer heating sunday write */ + @inherit(w_12) + @ext(0x6, 0) + model Z1HeatingTimer_SundayWrite { + value: wTimeSlotWithTemp; + } + } + + // cooling timers zone 1 + + /** default *r */ + @base(MF, 0x55, 0xa5, 0, 1) + model r_14 {} + + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 0, 1) + model w_13 {} + /** timer Configuration */ @inherit(r_9) - @ext(MF, 0x55, 0xa3, 0, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_Config { + @ext(MF, 0x55, 0xa3, 0, 1) + model Z1CoolingTimer_Config { /** Configuration */ @maxLength(9) value: HEX; } - /** timer amount */ - @inherit(r_9) - @ext(MF, 0x55, 0xa4, 0, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_TimeSlotsPerWeekday { - /** Amount of configured slots per weekday */ - value: slotCountWeek; - } - - /** timer heating monday read */ - @inherit(r_13) - @ext(0, 0) @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_Monday { - value: rTimeSlotWithTemp; + @condition(Basv3.Hc1CoolingEnabled.value, "1") + namespace Zone1CoolingTimer { + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 0, 1) + model Z1CoolingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer cooling monday read */ + @inherit(r_14) + @ext(0, 0) + model Z1CoolingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer cooling monday write */ + @inherit(w_13) + @ext(0, 0) + model Z1CoolingTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling tuesday read */ + @inherit(r_14) + @ext(1, 0) + model Z1CoolingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling tuesday write */ + @inherit(w_13) + @ext(1, 0) + model Z1CoolingTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling wednesday read */ + @inherit(r_14) + @ext(0x2, 0) + model Z1CoolingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling wednesday write */ + @inherit(w_13) + @ext(0x2, 0) + model Z1CoolingTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling thursday read */ + @inherit(r_14) + @ext(0x3, 0) + model Z1CoolingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer cooling thursday write */ + @inherit(w_13) + @ext(0x3, 0) + model Z1CoolingTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling friday read */ + @inherit(r_14) + @ext(0x4, 0) + model Z1CoolingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer cooling friday write */ + @inherit(w_13) + @ext(0x4, 0) + model Z1CoolingTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling saturday read */ + @inherit(r_14) + @ext(0x5, 0) + model Z1CoolingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer cooling saturday write */ + @inherit(w_13) + @ext(0x5, 0) + model Z1CoolingTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling sunday read */ + @inherit(r_14) + @ext(0x6, 0) + model Z1CoolingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer cooling sunday write */ + @inherit(w_13) + @ext(0x6, 0) + model Z1CoolingTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } } - /** timer heating monday write */ - @inherit(w_12) - @ext(0, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_MondayWrite { - value: wTimeSlotWithTemp; - } + // heating timers zone 2 - /** timer heating tuesday read */ - @inherit(r_13) - @ext(1, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_Tuesday { - value: rTimeSlotWithTemp; - } + /** default *r */ + @base(MF, 0x55, 0xa5, 1, 0) + model r_15 {} - /** timer heating tuesday write */ - @inherit(w_12) - @ext(1, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_TuesdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating wednesday read */ - @inherit(r_13) - @ext(0x2, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_Wednesday { - value: rTimeSlotWithTemp; - } - - /** timer heating wednesday write */ - @inherit(w_12) - @ext(0x2, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_WednesdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating thursday read */ - @inherit(r_13) - @ext(0x3, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_Thursday { - value: rTimeSlotWithTemp; - } - - /** timer heating thursday write */ - @inherit(w_12) - @ext(0x3, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_ThursdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating friday read */ - @inherit(r_13) - @ext(0x4, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_Friday { - value: rTimeSlotWithTemp; - } - - /** timer heating friday write */ - @inherit(w_12) - @ext(0x4, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_FridayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating saturday read */ - @inherit(r_13) - @ext(0x5, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_Saturday { - value: rTimeSlotWithTemp; - } - - /** timer heating saturday write */ - @inherit(w_12) - @ext(0x5, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_SaturdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating sunday read */ - @inherit(r_13) - @ext(0x6, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_Sunday { - value: rTimeSlotWithTemp; - } - - /** timer heating sunday write */ - @inherit(w_12) - @ext(0x6, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingTimer_SundayWrite { - value: wTimeSlotWithTemp; - } - - // cooling timers zone 1 - - /** default *r */ - @base(MF, 0x55, 0xa5, 0, 1) - model r_14 {} - - /** default *w */ - @write - @base(MF, 0x55, 0xa6, 0, 1) - model w_13 {} - - /** timer Configuration */ - @inherit(r_9) - @ext(MF, 0x55, 0xa3, 0, 1) - model Z1CoolingTimer_Config { - /** Configuration */ - @maxLength(9) - value: HEX; - } - - /** timer amount */ - @inherit(r_9) - @ext(MF, 0x55, 0xa4, 0, 1) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_TimeSlotsPerWeekday { - /** Amount of configured slots per weekday */ - value: slotCountWeek; - } - - /** timer cooling monday read */ - @inherit(r_14) - @ext(0, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_Monday { - value: rTimeSlotWithTemp; - } - - /** timer cooling monday write */ - @inherit(w_13) - @ext(0, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_MondayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling tuesday read */ - @inherit(r_14) - @ext(1, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_Tuesday { - value: rTimeSlotWithTemp; - } - - /** timer cooling tuesday write */ - @inherit(w_13) - @ext(1, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_TuesdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling wednesday read */ - @inherit(r_14) - @ext(0x2, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_Wednesday { - value: rTimeSlotWithTemp; - } - - /** timer cooling wednesday write */ - @inherit(w_13) - @ext(0x2, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_WednesdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling thursday read */ - @inherit(r_14) - @ext(0x3, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_Thursday { - value: rTimeSlotWithTemp; - } - - /** timer cooling thursday write */ - @inherit(w_13) - @ext(0x3, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_ThursdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling friday read */ - @inherit(r_14) - @ext(0x4, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_Friday { - value: rTimeSlotWithTemp; - } - - /** timer cooling friday write */ - @inherit(w_13) - @ext(0x4, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_FridayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling saturday read */ - @inherit(r_14) - @ext(0x5, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_Saturday { - value: rTimeSlotWithTemp; - } - - /** timer cooling saturday write */ - @inherit(w_13) - @ext(0x5, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_SaturdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling sunday read */ - @inherit(r_14) - @ext(0x6, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_Sunday { - value: rTimeSlotWithTemp; - } - - /** timer cooling sunday write */ - @inherit(w_13) - @ext(0x6, 0) - @condition(Basv3.Hc1CircuitType.value, "1") - @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingTimer_SundayWrite { - value: wTimeSlotWithoutTemp; - } - - // heating timers zone 2 - - /** default *r */ - @base(MF, 0x55, 0xa5, 1, 0) - model r_15 {} - - /** default *w */ - @write - @base(MF, 0x55, 0xa6, 1, 0) - model w_14 {} + /** default *w */ + @write + @base(MF, 0x55, 0xa6, 1, 0) + model w_14 {} /** timer Configuration */ @inherit(r_9) @@ -2746,125 +2674,113 @@ namespace Basv3 { value: HEX; } - /** timer amount */ - @inherit(r_9) - @ext(MF, 0x55, 0xa4, 1, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_TimeSlotsPerWeekday { - /** Amount of configured slots per weekday */ - value: slotCountWeek; - } - - /** timer heating monday read */ - @inherit(r_15) - @ext(0, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_Monday { - value: rTimeSlotWithTemp; - } - - /** timer heating monday write */ - @inherit(w_14) - @ext(0, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_MondayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating tuesday read */ - @inherit(r_15) - @ext(1, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_Tuesday { - value: rTimeSlotWithTemp; - } - - /** timer heating tuesday write */ - @inherit(w_14) - @ext(1, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_TuesdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating wednesday read */ - @inherit(r_15) - @ext(0x2, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_Wednesday { - value: rTimeSlotWithTemp; - } - - /** timer heating wednesday write */ - @inherit(w_14) - @ext(0x2, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_WednesdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating thursday read */ - @inherit(r_15) - @ext(0x3, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_Thursday { - value: rTimeSlotWithTemp; - } - - /** timer heating thursday write */ - @inherit(w_14) - @ext(0x3, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_ThursdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating friday read */ - @inherit(r_15) - @ext(0x4, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_Friday { - value: rTimeSlotWithTemp; - } - - /** timer heating friday write */ - @inherit(w_14) - @ext(0x4, 0) @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_FridayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating saturday read */ - @inherit(r_15) - @ext(0x5, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_Saturday { - value: rTimeSlotWithTemp; - } - - /** timer heating saturday write */ - @inherit(w_14) - @ext(0x5, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_SaturdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating sunday read */ - @inherit(r_15) - @ext(0x6, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_Sunday { - value: rTimeSlotWithTemp; - } - - /** timer heating sunday write */ - @inherit(w_14) - @ext(0x6, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingTimer_SundayWrite { - value: wTimeSlotWithTemp; + namespace Zone2HeatingTimer { + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 1, 0) + model Z2HeatingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer heating monday read */ + @inherit(r_15) + @ext(0, 0) + model Z2HeatingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer heating monday write */ + @inherit(w_14) + @ext(0, 0) + model Z2HeatingTimer_MondayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating tuesday read */ + @inherit(r_15) + @ext(1, 0) + model Z2HeatingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer heating tuesday write */ + @inherit(w_14) + @ext(1, 0) + model Z2HeatingTimer_TuesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating wednesday read */ + @inherit(r_15) + @ext(0x2, 0) + model Z2HeatingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer heating wednesday write */ + @inherit(w_14) + @ext(0x2, 0) + model Z2HeatingTimer_WednesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating thursday read */ + @inherit(r_15) + @ext(0x3, 0) + model Z2HeatingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer heating thursday write */ + @inherit(w_14) + @ext(0x3, 0) + model Z2HeatingTimer_ThursdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating friday read */ + @inherit(r_15) + @ext(0x4, 0) + model Z2HeatingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer heating friday write */ + @inherit(w_14) + @ext(0x4, 0) + model Z2HeatingTimer_FridayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating saturday read */ + @inherit(r_15) + @ext(0x5, 0) + model Z2HeatingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer heating saturday write */ + @inherit(w_14) + @ext(0x5, 0) + model Z2HeatingTimer_SaturdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating sunday read */ + @inherit(r_15) + @ext(0x6, 0) + model Z2HeatingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer heating sunday write */ + @inherit(w_14) + @ext(0x6, 0) + model Z2HeatingTimer_SundayWrite { + value: wTimeSlotWithTemp; + } } // cooling timers zone 2 @@ -2887,138 +2803,114 @@ namespace Basv3 { value: HEX; } - /** timer amount */ - @inherit(r_9) - @ext(MF, 0x55, 0xa4, 1, 1) - model Z2CoolingTimer_TimeSlotsPerWeekday { - /** Amount of configured slots per weekday */ - value: slotCountWeek; - } - - /** timer cooling monday read */ - @inherit(r_16) - @ext(0, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_Monday { - value: rTimeSlotWithTemp; - } - - /** timer cooling monday write */ - @inherit(w_15) - @ext(0, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_MondayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling tuesday read */ - @inherit(r_16) - @ext(1, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_Tuesday { - value: rTimeSlotWithTemp; - } - - /** timer cooling tuesday write */ - @inherit(w_15) - @ext(1, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_TuesdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling wednesday read */ - @inherit(r_16) - @ext(0x2, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_Wednesday { - value: rTimeSlotWithTemp; - } - - /** timer cooling wednesday write */ - @inherit(w_15) - @ext(0x2, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_WednesdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling thursday read */ - @inherit(r_16) - @ext(0x3, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_Thursday { - value: rTimeSlotWithTemp; - } - - /** timer cooling thursday write */ - @inherit(w_15) - @ext(0x3, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_ThursdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling friday read */ - @inherit(r_16) - @ext(0x4, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_Friday { - value: rTimeSlotWithTemp; - } - - /** timer cooling friday write */ - @inherit(w_15) - @ext(0x4, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_FridayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling saturday read */ - @inherit(r_16) - @ext(0x5, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_Saturday { - value: rTimeSlotWithTemp; - } - - /** timer cooling saturday write */ - @inherit(w_15) - @ext(0x5, 0) @condition(Basv3.Hc2CircuitType.value, "1") @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_SaturdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling sunday read */ - @inherit(r_16) - @ext(0x6, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_Sunday { - value: rTimeSlotWithTemp; - } - - /** timer cooling sunday write */ - @inherit(w_15) - @ext(0x6, 0) - @condition(Basv3.Hc2CircuitType.value, "1") - @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingTimer_SundayWrite { - value: wTimeSlotWithoutTemp; + namespace Zone2CoolingTimer { + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 1, 1) + model Z2CoolingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer cooling monday read */ + @inherit(r_16) + @ext(0, 0) + model Z2CoolingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer cooling monday write */ + @inherit(w_15) + @ext(0, 0) + model Z2CoolingTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling tuesday read */ + @inherit(r_16) + @ext(1, 0) + model Z2CoolingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling tuesday write */ + @inherit(w_15) + @ext(1, 0) + model Z2CoolingTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling wednesday read */ + @inherit(r_16) + @ext(0x2, 0) + model Z2CoolingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling wednesday write */ + @inherit(w_15) + @ext(0x2, 0) + model Z2CoolingTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling thursday read */ + @inherit(r_16) + @ext(0x3, 0) + model Z2CoolingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer cooling thursday write */ + @inherit(w_15) + @ext(0x3, 0) + model Z2CoolingTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling friday read */ + @inherit(r_16) + @ext(0x4, 0) + model Z2CoolingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer cooling friday write */ + @inherit(w_15) + @ext(0x4, 0) + model Z2CoolingTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling saturday read */ + @inherit(r_16) + @ext(0x5, 0) + model Z2CoolingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer cooling saturday write */ + @inherit(w_15) + @ext(0x5, 0) + model Z2CoolingTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling sunday read */ + @inherit(r_16) + @ext(0x6, 0) + model Z2CoolingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer cooling sunday write */ + @inherit(w_15) + @ext(0x6, 0) + model Z2CoolingTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } } // heating timers zone 3 @@ -3041,125 +2933,112 @@ namespace Basv3 { value: HEX; } - /** timer amount */ - @inherit(r_9) - @ext(MF, 0x55, 0xa4, 2, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_TimeSlotsPerWeekday { - /** Amount of configured slots per weekday */ - value: slotCountWeek; - } - - /** timer heating monday read */ - @inherit(r_17) - @ext(0, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_Monday { - value: rTimeSlotWithTemp; - } - - /** timer heating monday write */ - @inherit(w_16) - @ext(0, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_MondayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating tuesday read */ - @inherit(r_17) - @ext(1, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_Tuesday { - value: rTimeSlotWithTemp; - } - - /** timer heating tuesday write */ - @inherit(w_16) - @ext(1, 0) @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_TuesdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating wednesday read */ - @inherit(r_17) - @ext(0x2, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_Wednesday { - value: rTimeSlotWithTemp; - } - - /** timer heating wednesday write */ - @inherit(w_16) - @ext(0x2, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_WednesdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating thursday read */ - @inherit(r_17) - @ext(0x3, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_Thursday { - value: rTimeSlotWithTemp; - } - - /** timer heating thursday write */ - @inherit(w_16) - @ext(0x3, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_ThursdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating friday read */ - @inherit(r_17) - @ext(0x4, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_Friday { - value: rTimeSlotWithTemp; - } - - /** timer heating friday write */ - @inherit(w_16) - @ext(0x4, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_FridayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating saturday read */ - @inherit(r_17) - @ext(0x5, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_Saturday { - value: rTimeSlotWithTemp; - } - - /** timer heating saturday write */ - @inherit(w_16) - @ext(0x5, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_SaturdayWrite { - value: wTimeSlotWithTemp; - } - - /** timer heating sunday read */ - @inherit(r_17) - @ext(0x6, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_Sunday { - value: rTimeSlotWithTemp; - } - - /** timer heating sunday write */ - @inherit(w_16) - @ext(0x6, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingTimer_SundayWrite { - value: wTimeSlotWithTemp; + namespace Zone3HeatingTimer { + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 2, 0) + model Z3HeatingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer heating monday read */ + @inherit(r_17) + @ext(0, 0) + model Z3HeatingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer heating monday write */ + @inherit(w_16) + model Z3HeatingTimer_MondayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating tuesday read */ + @inherit(r_17) + @ext(1, 0) + model Z3HeatingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer heating tuesday write */ + @inherit(w_16) + @ext(1, 0) + model Z3HeatingTimer_TuesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating wednesday read */ + @inherit(r_17) + @ext(0x2, 0) + model Z3HeatingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer heating wednesday write */ + @inherit(w_16) + @ext(0x2, 0) + model Z3HeatingTimer_WednesdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating thursday read */ + @inherit(r_17) + @ext(0x3, 0) + model Z3HeatingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer heating thursday write */ + @inherit(w_16) + @ext(0x3, 0) + model Z3HeatingTimer_ThursdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating friday read */ + @inherit(r_17) + @ext(0x4, 0) + model Z3HeatingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer heating friday write */ + @inherit(w_16) + @ext(0x4, 0) + model Z3HeatingTimer_FridayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating saturday read */ + @inherit(r_17) + @ext(0x5, 0) + model Z3HeatingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer heating saturday write */ + @inherit(w_16) + @ext(0x5, 0) + model Z3HeatingTimer_SaturdayWrite { + value: wTimeSlotWithTemp; + } + + /** timer heating sunday read */ + @inherit(r_17) + @ext(0x6, 0) + model Z3HeatingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer heating sunday write */ + @inherit(w_16) + @ext(0x6, 0) + model Z3HeatingTimer_SundayWrite { + value: wTimeSlotWithTemp; + } } // cooling timers zone 3 @@ -3182,140 +3061,114 @@ namespace Basv3 { value: HEX; } - /** timer amount */ - @inherit(r_9) - @ext(MF, 0x55, 0xa4, 2, 1) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_TimeSlotsPerWeekday { - /** Amount of configured slots per weekday */ - value: slotCountWeek; - } - - /** timer cooling monday read */ - @inherit(r_18) - @ext(0, 0) @condition(Basv3.Hc3CircuitType.value, "1") @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_Monday { - value: rTimeSlotWithTemp; - } - - /** timer cooling monday write */ - @inherit(w_17) - @ext(0, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_MondayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling tuesday read */ - @inherit(r_18) - @ext(1, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_Tuesday { - value: rTimeSlotWithTemp; - } - - /** timer cooling tuesday write */ - @inherit(w_17) - @ext(1, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_TuesdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling wednesday read */ - @inherit(r_18) - @ext(0x2, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_Wednesday { - value: rTimeSlotWithTemp; - } - - /** timer cooling wednesday write */ - @inherit(w_17) - @ext(0x2, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_WednesdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling thursday read */ - @inherit(r_18) - @ext(0x3, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_Thursday { - value: rTimeSlotWithTemp; - } - - /** timer cooling thursday write */ - @inherit(w_17) - @ext(0x3, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_ThursdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling friday read */ - @inherit(r_18) - @ext(0x4, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_Friday { - value: rTimeSlotWithTemp; - } - - /** timer cooling friday write */ - @inherit(w_17) - @ext(0x4, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_FridayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling saturday read */ - @inherit(r_18) - @ext(0x5, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_Saturday { - value: rTimeSlotWithTemp; - } - - /** timer cooling saturday write */ - @inherit(w_17) - @ext(0x5, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_SaturdayWrite { - value: wTimeSlotWithoutTemp; - } - - /** timer cooling sunday read */ - @inherit(r_18) - @ext(0x6, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_Sunday { - value: rTimeSlotWithTemp; - } - - /** timer cooling sunday write */ - @inherit(w_17) - @ext(0x6, 0) - @condition(Basv3.Hc3CircuitType.value, "1") - @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingTimer_SundayWrite { - value: wTimeSlotWithoutTemp; + namespace Zone3CoolingTimer { + /** timer amount */ + @inherit(r_9) + @ext(MF, 0x55, 0xa4, 2, 1) + model Z3CoolingTimer_TimeSlotsPerWeekday { + /** Amount of configured slots per weekday */ + value: slotCountWeek; + } + + /** timer cooling monday read */ + @inherit(r_18) + @ext(0, 0) + model Z3CoolingTimer_Monday { + value: rTimeSlotWithTemp; + } + + /** timer cooling monday write */ + @inherit(w_17) + @ext(0, 0) + model Z3CoolingTimer_MondayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling tuesday read */ + @inherit(r_18) + @ext(1, 0) + model Z3CoolingTimer_Tuesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling tuesday write */ + @inherit(w_17) + @ext(1, 0) + model Z3CoolingTimer_TuesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling wednesday read */ + @inherit(r_18) + @ext(0x2, 0) + model Z3CoolingTimer_Wednesday { + value: rTimeSlotWithTemp; + } + + /** timer cooling wednesday write */ + @inherit(w_17) + @ext(0x2, 0) + model Z3CoolingTimer_WednesdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling thursday read */ + @inherit(r_18) + @ext(0x3, 0) + model Z3CoolingTimer_Thursday { + value: rTimeSlotWithTemp; + } + + /** timer cooling thursday write */ + @inherit(w_17) + @ext(0x3, 0) + model Z3CoolingTimer_ThursdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling friday read */ + @inherit(r_18) + @ext(0x4, 0) + model Z3CoolingTimer_Friday { + value: rTimeSlotWithTemp; + } + + /** timer cooling friday write */ + @inherit(w_17) + @ext(0x4, 0) + model Z3CoolingTimer_FridayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling saturday read */ + @inherit(r_18) + @ext(0x5, 0) + model Z3CoolingTimer_Saturday { + value: rTimeSlotWithTemp; + } + + /** timer cooling saturday write */ + @inherit(w_17) + @ext(0x5, 0) + model Z3CoolingTimer_SaturdayWrite { + value: wTimeSlotWithoutTemp; + } + + /** timer cooling sunday read */ + @inherit(r_18) + @ext(0x6, 0) + model Z3CoolingTimer_Sunday { + value: rTimeSlotWithTemp; + } + + /** timer cooling sunday write */ + @inherit(w_17) + @ext(0x6, 0) + model Z3CoolingTimer_SundayWrite { + value: wTimeSlotWithoutTemp; + } } enum Values_720ErrorCode { From 64c1d9edc5a9eba30059fbb211749e766b1cfc17 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Fri, 9 Jan 2026 22:10:32 +0000 Subject: [PATCH 19/25] Rename `Z*HeatingRoomTempTarget` --- src/vaillant/15.basv3.tsp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index d7165767e..0f23db949 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -1454,7 +1454,7 @@ namespace Basv3 { @inherit(r_6) @ext(0x14, 0) @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingRoomTempTarget { + model Z1EffectiveHeatingRoomTempDesired { value: tempv; } @@ -1673,7 +1673,7 @@ namespace Basv3 { @inherit(r_7) @ext(0x14, 0) @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingRoomTempTarget { + model Z2EffectiveHeatingRoomTempDesired { value: tempv; } @@ -1892,7 +1892,7 @@ namespace Basv3 { @inherit(r_8) @ext(0x14, 0) @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingRoomTempTarget { + model Z3EffectiveHeatingRoomTempDesired { value: tempv; } From dc5992a256075d6311f9638ec91af7966cdeb006 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Sat, 10 Jan 2026 01:48:10 +0000 Subject: [PATCH 20/25] Add error lists & additional ranges --- src/vaillant/15.basv3.tsp | 127 +++++++++++++++++++++++++++++++++++++- 1 file changed, 125 insertions(+), 2 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 0f23db949..836b940ec 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -14,7 +14,7 @@ namespace Basv3 { /** default *r */ @base(MF, 0x3, 0) - model r_0 {} + model r_0a {} model ErrorList { @values(Values_720ErrorCode) @@ -34,12 +34,51 @@ namespace Basv3 { } /** Current errors */ - @inherit(r_0) + @inherit(r_0a) @ext(1) model CurrentErrors { value: ErrorList; } + /** default *r */ + @base(MF, 0x3, 1) + model r_0b {} + + /** default *wi for user level "install" */ + @write + @auth("install") + @base(MF, 0x3, 0x2) + model wi_0b {} + + model ErrorHistoryEntry { + @values(Values_720ErrorStatus) + status: UCH; + + time: BTM; + date: BDA3; + + @values(Values_720ErrorCode) + error: UIN; + } + + /** Error history */ + @inherit(r_0b) + @ext(1) + model ErrorHistory { + @out + index: UCH; + + errorhistory: ErrorHistoryEntry; + } + + /** Clear error history */ + @inherit(wi_0b) + @ext(1) + model ClearErrorHistory { + @in + cleared: yesno; + } + /** default *r */ @base(MF, 0x24, 0x2, 0, 0, 0) model r_1 { @@ -141,6 +180,7 @@ namespace Basv3 { /** hwc cylinder maximum charging time */ @inherit(r_1, w_1) @ext(0x17, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcStorageChargeMaxTime { value: minutes2; } @@ -148,6 +188,7 @@ namespace Basv3 { /** hwc lock time */ @inherit(r_1, w_1) @ext(0x18, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcLockTime { value: minutes2; } @@ -199,6 +240,7 @@ namespace Basv3 { /** hysteresis cylinder charge */ @inherit(r_1, w_1) @ext(0x27, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcStorageChargeHyst { @minValue(3) @maxValue(20) @@ -209,6 +251,7 @@ namespace Basv3 { /** offset cylinder charge */ @inherit(r_1, w_1) @ext(0x29, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcStorageChargeOffset { @minValue(0) @maxValue(40) @@ -219,6 +262,7 @@ namespace Basv3 { /** hwc legionella time */ @inherit(r_1, w_1) @ext(0x2a, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcLegionellaTime { value: HTM; } @@ -226,6 +270,7 @@ namespace Basv3 { /** hwc legionella day */ @inherit(r_1, w_1) @ext(0x2b, 0) + @condition(Basv3.HwcEnabled.value, "1") model HwcLegionellaDay { value: daysel2; } @@ -678,6 +723,9 @@ namespace Basv3 { /** DewPointMonitoring heating circuit 1 */ @inherit(r_3, w_3) @ext(0x5, 0) + @condition(Basv3.Hc1CircuitType.value, "1") + @condition(Basv3.Hc1CoolingEnabled.value, "1") + @condition(Basv3.Hc1RoomTempModulation.value, ">=1") model Hc1DewPointMonitoring { value: onoff; } @@ -911,6 +959,9 @@ namespace Basv3 { /** DewPointMonitoring heating circuit 2 */ @inherit(r_4, w_4) @ext(0x5, 0) + @condition(Basv3.Hc2CircuitType.value, "1") + @condition(Basv3.Hc2CoolingEnabled.value, "1") + @condition(Basv3.Hc2RoomTempModulation.value, ">=1") model Hc2DewPointMonitoring { value: onoff; } @@ -1144,6 +1195,9 @@ namespace Basv3 { /** DewPointMonitoring heating circuit 3 */ @inherit(r_5, w_5) @ext(0x5, 0) + @condition(Basv3.Hc3CircuitType.value, "1") + @condition(Basv3.Hc3CoolingEnabled.value, "1") + @condition(Basv3.Hc3RoomTempModulation.value, ">=1") model Hc3DewPointMonitoring { value: onoff; } @@ -1370,6 +1424,9 @@ namespace Basv3 { @condition(Basv3.Hc1CircuitType.value, "1") @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingSetbackTemp { + @minValue(15) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1394,6 +1451,9 @@ namespace Basv3 { @ext(0x5, 0) @condition(Basv3.Hc1CircuitType.value, "1") model Z1HolidayTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1410,6 +1470,9 @@ namespace Basv3 { @ext(0x8, 0) @condition(Basv3.Hc1CircuitType.value, "1") model Z1QuickVetoTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1418,6 +1481,9 @@ namespace Basv3 { @ext(0x9, 0) @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingSetbackTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1524,6 +1590,9 @@ namespace Basv3 { @ext(0x22, 0) @condition(Basv3.Hc1CircuitType.value, "1") model Z1HeatingSetpointTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1533,6 +1602,9 @@ namespace Basv3 { @condition(Basv3.Hc1CircuitType.value, "1") @condition(Basv3.Hc1CoolingEnabled.value, "1") model Z1CoolingSetpointTemp { + @minValue(15) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1549,6 +1621,9 @@ namespace Basv3 { @ext(0x26, 0) @condition(Basv3.Hc1CircuitType.value, "1") model Z1QuickVetoDuration { + @minValue(0.5) + @maxValue(12) + @step(0.5) @unit("h") value: EXP; } @@ -1589,6 +1664,9 @@ namespace Basv3 { @condition(Basv3.Hc2CircuitType.value, "1") @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingSetbackTemp { + @minValue(15) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1613,6 +1691,9 @@ namespace Basv3 { @ext(0x5, 0) @condition(Basv3.Hc2CircuitType.value, "1") model Z2HolidayTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1629,6 +1710,9 @@ namespace Basv3 { @ext(0x8, 0) @condition(Basv3.Hc2CircuitType.value, "1") model Z2QuickVetoTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1637,6 +1721,9 @@ namespace Basv3 { @ext(0x9, 0) @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingSetbackTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1743,6 +1830,9 @@ namespace Basv3 { @ext(0x22, 0) @condition(Basv3.Hc2CircuitType.value, "1") model Z2HeatingSetpointTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1752,6 +1842,9 @@ namespace Basv3 { @condition(Basv3.Hc2CircuitType.value, "1") @condition(Basv3.Hc2CoolingEnabled.value, "1") model Z2CoolingSetpointTemp { + @minValue(15) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1768,6 +1861,9 @@ namespace Basv3 { @ext(0x26, 0) @condition(Basv3.Hc2CircuitType.value, "1") model Z2QuickVetoDuration { + @minValue(0.5) + @maxValue(12) + @step(0.5) @unit("h") value: EXP; } @@ -1808,6 +1904,9 @@ namespace Basv3 { @condition(Basv3.Hc3CircuitType.value, "1") @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingSetbackTemp { + @minValue(15) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1832,6 +1931,9 @@ namespace Basv3 { @ext(0x5, 0) @condition(Basv3.Hc3CircuitType.value, "1") model Z3HolidayTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1848,6 +1950,9 @@ namespace Basv3 { @ext(0x8, 0) @condition(Basv3.Hc3CircuitType.value, "1") model Z3QuickVetoTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1856,6 +1961,9 @@ namespace Basv3 { @ext(0x9, 0) @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingSetbackTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1962,6 +2070,9 @@ namespace Basv3 { @ext(0x22, 0) @condition(Basv3.Hc3CircuitType.value, "1") model Z3HeatingSetpointTemp { + @minValue(5) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1971,6 +2082,9 @@ namespace Basv3 { @condition(Basv3.Hc3CircuitType.value, "1") @condition(Basv3.Hc3CoolingEnabled.value, "1") model Z3CoolingSetpointTemp { + @minValue(15) + @maxValue(30) + @step(0.5) value: tempv; } @@ -1987,6 +2101,9 @@ namespace Basv3 { @ext(0x26, 0) @condition(Basv3.Hc3CircuitType.value, "1") model Z3QuickVetoDuration { + @minValue(0.5) + @maxValue(12) + @step(0.5) @unit("h") value: EXP; } @@ -3230,4 +3347,10 @@ namespace Basv3 { RC_3_temp_sensor_signal_invalid: 1365, RC_4_temp_sensor_signal_invalid: 1366, } + + enum Values_720ErrorStatus { + none: 0, + ongoing: 1, + resolved: 2, + } } From f8b5ce998dadb1fbfef1086b31956df7c239953d Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Sat, 10 Jan 2026 16:24:18 +0000 Subject: [PATCH 21/25] Add #556 & `mamode2` --- src/vaillant/15.basv3.tsp | 13 ++++++------- src/vaillant/_templates.tsp | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 836b940ec..8dcc8f2bb 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -264,7 +264,7 @@ namespace Basv3 { @ext(0x2a, 0) @condition(Basv3.HwcEnabled.value, "1") model HwcLegionellaTime { - value: HTM; + value: HTI; } /** hwc legionella day */ @@ -272,7 +272,7 @@ namespace Basv3 { @ext(0x2b, 0) @condition(Basv3.HwcEnabled.value, "1") model HwcLegionellaDay { - value: daysel2; + value: daysel3; } /** next maintenance */ @@ -385,7 +385,7 @@ namespace Basv3 { @inherit(r_1, w_1) @ext(0x4d, 0) model MultiRelaySetting { - value: mamode; + value: mamode2; } /** this month's fuel consumption heating */ @@ -3289,7 +3289,6 @@ namespace Basv3 { } enum Values_720ErrorCode { - None: 0, RECOVAIR_comm_error: 509, IOModule_comm_error: 511, AF_Sensor_error: 521, @@ -3349,8 +3348,8 @@ namespace Basv3 { } enum Values_720ErrorStatus { - none: 0, - ongoing: 1, - resolved: 2, + None: 0, + Ongoing: 1, + Resolved: 2, } } diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index 66008bc68..af81888a2 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -46,6 +46,10 @@ scalar daysel extends UCH; @values(Values_daysel2) scalar daysel2 extends UCH; +/** day selector */ +@values(Values_daysel2) +scalar daysel3 extends UIN; + /** days */ scalar days extends UCH; @@ -458,6 +462,9 @@ scalar shortphone extends STR; @values(Values_mamode) scalar mamode extends UIN; +@values(Values_mamode2) +scalar mamode2 extends UIN; + @values(Values_offmode) scalar offmode extends UIN; @@ -856,7 +863,7 @@ enum Values_opmode2 { enum Values_zmapping { none: 0, - VRC7XX: 1, + VRC720: 1, VR91_1: 2, VR91_2: 3, VR91_3: 4, @@ -869,6 +876,15 @@ enum Values_mamode { legiopump: 3, } +enum Values_mamode2 { + circulation_pump: 0, + dehumidifier: 1, + zone: 2, + anti_legio_pump: 3, + not_connected: 4, + active_cool_period: 5, +} + enum Values_offmode { eco: 0, night: 1, From 98adb1bc7829c58972eadb13d715dfb9382bba96 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Tue, 13 Jan 2026 20:06:11 +0000 Subject: [PATCH 22/25] More concise register naming --- src/vaillant/15.basv3.tsp | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 8dcc8f2bb..44dc4e411 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -181,6 +181,7 @@ namespace Basv3 { @inherit(r_1, w_1) @ext(0x17, 0) @condition(Basv3.HwcEnabled.value, "1") + /** 15min=no limit */ model HwcStorageChargeMaxTime { value: minutes2; } @@ -740,7 +741,7 @@ namespace Basv3 { /** ActualFlowTempDesired heating circuit 1 */ @inherit(r_3) @ext(0x7, 0) - model Hc1FlowTempTarget { + model Hc1FlowTempDesired { value: tempv; } @@ -976,7 +977,7 @@ namespace Basv3 { /** ActualFlowTempDesired heating circuit 2 */ @inherit(r_4) @ext(0x7, 0) - model Hc2FlowTempTarget { + model Hc2FlowTempDesired { value: tempv; } @@ -1212,7 +1213,7 @@ namespace Basv3 { /** ActualFlowTempDesired heating circuit 3 */ @inherit(r_5) @ext(0x7, 0) - model Hc3FlowTempTarget { + model Hc3FlowTempDesired { value: tempv; } @@ -1520,7 +1521,7 @@ namespace Basv3 { @inherit(r_6) @ext(0x14, 0) @condition(Basv3.Hc1CircuitType.value, "1") - model Z1EffectiveHeatingRoomTempDesired { + model Z1HeatingTempDesired { value: tempv; } @@ -1529,7 +1530,7 @@ namespace Basv3 { @ext(0x15, 0) @condition(Basv3.Hc1CircuitType.value, "1") @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingRoomTempTarget { + model Z1CoolingTempDesired { value: tempv; } @@ -1589,7 +1590,7 @@ namespace Basv3 { @inherit(r_6, w_6) @ext(0x22, 0) @condition(Basv3.Hc1CircuitType.value, "1") - model Z1HeatingSetpointTemp { + model Z1HeatingManualTemp { @minValue(5) @maxValue(30) @step(0.5) @@ -1601,7 +1602,7 @@ namespace Basv3 { @ext(0x23, 0) @condition(Basv3.Hc1CircuitType.value, "1") @condition(Basv3.Hc1CoolingEnabled.value, "1") - model Z1CoolingSetpointTemp { + model Z1CoolingManualTemp { @minValue(15) @maxValue(30) @step(0.5) @@ -1760,7 +1761,7 @@ namespace Basv3 { @inherit(r_7) @ext(0x14, 0) @condition(Basv3.Hc2CircuitType.value, "1") - model Z2EffectiveHeatingRoomTempDesired { + model Z2HeatingTempDesired { value: tempv; } @@ -1769,7 +1770,7 @@ namespace Basv3 { @ext(0x15, 0) @condition(Basv3.Hc2CircuitType.value, "1") @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingRoomTempTarget { + model Z2CoolingTempDesired { value: tempv; } @@ -1829,7 +1830,7 @@ namespace Basv3 { @inherit(r_7, w_7) @ext(0x22, 0) @condition(Basv3.Hc2CircuitType.value, "1") - model Z2HeatingSetpointTemp { + model Z2HeatingManualTemp { @minValue(5) @maxValue(30) @step(0.5) @@ -1841,7 +1842,7 @@ namespace Basv3 { @ext(0x23, 0) @condition(Basv3.Hc2CircuitType.value, "1") @condition(Basv3.Hc2CoolingEnabled.value, "1") - model Z2CoolingSetpointTemp { + model Z2CoolingManualTemp { @minValue(15) @maxValue(30) @step(0.5) @@ -2000,7 +2001,7 @@ namespace Basv3 { @inherit(r_8) @ext(0x14, 0) @condition(Basv3.Hc3CircuitType.value, "1") - model Z3EffectiveHeatingRoomTempDesired { + model Z3HeatingTempDesired { value: tempv; } @@ -2009,7 +2010,7 @@ namespace Basv3 { @ext(0x15, 0) @condition(Basv3.Hc3CircuitType.value, "1") @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingRoomTempTarget { + model Z3CoolingTempDesired { value: tempv; } @@ -2069,7 +2070,7 @@ namespace Basv3 { @inherit(r_8, w_8) @ext(0x22, 0) @condition(Basv3.Hc3CircuitType.value, "1") - model Z3HeatingSetpointTemp { + model Z3HeatingManualTemp { @minValue(5) @maxValue(30) @step(0.5) @@ -2081,7 +2082,7 @@ namespace Basv3 { @ext(0x23, 0) @condition(Basv3.Hc3CircuitType.value, "1") @condition(Basv3.Hc3CoolingEnabled.value, "1") - model Z3CoolingSetpointTemp { + model Z3CoolingManualTemp { @minValue(15) @maxValue(30) @step(0.5) From 50998456a30044ab740a26b5f951c8d3c334842e Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:50:56 +0000 Subject: [PATCH 23/25] Fix missing conditions --- src/vaillant/15.basv3.tsp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 44dc4e411..06a9a9d02 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -765,7 +765,7 @@ namespace Basv3 { @ext(0xa, 0) @condition(Basv3.Hc1CircuitType.value, "1") @condition(Basv3.Hc1CoolingEnabled.value, "1") - @condition(Basv3.Hc1DewPointMonitoring.value, "1") + @condition(Basv3.Hc1RoomTempModulation.value, ">=1") model Hc1DewPointOffset { @minValue(-10) @maxValue(10) @@ -1001,7 +1001,7 @@ namespace Basv3 { @ext(0xa, 0) @condition(Basv3.Hc2CircuitType.value, "1") @condition(Basv3.Hc2CoolingEnabled.value, "1") - @condition(Basv3.Hc2DewPointMonitoring.value, "1") + @condition(Basv3.Hc2RoomTempModulation.value, ">=1") model Hc2DewPointOffset { @minValue(-10) @maxValue(10) @@ -1237,7 +1237,7 @@ namespace Basv3 { @ext(0xa, 0) @condition(Basv3.Hc3CircuitType.value, "1") @condition(Basv3.Hc3CoolingEnabled.value, "1") - @condition(Basv3.Hc3DewPointMonitoring.value, "1") + @condition(Basv3.Hc3RoomTempModulation.value, ">=1") model Hc3DewPointOffset { @minValue(-10) @maxValue(10) From 11859092abea223cd860a1107dadee8a8389fd39 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:58:56 +0000 Subject: [PATCH 24/25] Add notes --- src/vaillant/15.basv3.tsp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index 06a9a9d02..c259d723e 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -1625,7 +1625,7 @@ namespace Basv3 { @minValue(0.5) @maxValue(12) @step(0.5) - @unit("h") + @unit("h") // TODO: Causes to be detected as read-only sensor value: EXP; } @@ -1865,7 +1865,7 @@ namespace Basv3 { @minValue(0.5) @maxValue(12) @step(0.5) - @unit("h") + @unit("h") // TODO: Causes to be detected as read-only sensor value: EXP; } @@ -2105,7 +2105,7 @@ namespace Basv3 { @minValue(0.5) @maxValue(12) @step(0.5) - @unit("h") + @unit("h") // TODO: Causes to be detected as read-only sensor value: EXP; } From e6e6acee6f7fb632cb2c4c46544d0ec21da4f4b7 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Thu, 15 Jan 2026 23:30:33 +0100 Subject: [PATCH 25/25] Update src/vaillant/15.basv3.tsp Co-authored-by: Samuel Cabrero --- src/vaillant/15.basv3.tsp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vaillant/15.basv3.tsp b/src/vaillant/15.basv3.tsp index c259d723e..7b1bbe8d3 100644 --- a/src/vaillant/15.basv3.tsp +++ b/src/vaillant/15.basv3.tsp @@ -3070,6 +3070,7 @@ namespace Basv3 { /** timer heating monday write */ @inherit(w_16) + @ext(0, 0) model Z3HeatingTimer_MondayWrite { value: wTimeSlotWithTemp; }