From 62c6d648d3ab5b76f0ebcc77b9e39e5fb14d01a0 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Wed, 1 Jan 2025 15:56:59 +0000 Subject: [PATCH 01/12] 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 a645fa42a..54268ed4c 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -158,6 +158,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; @@ -534,6 +538,11 @@ enum Values_mixer { close: 2, } +enum Values_zonevalve { + close: 0, + open: 1, +} + enum Values_daynight { night: 0, day: 1, From 93401aad77cd9806e310d9ec71d3cd65f1cb946c 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/12] 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 54268ed4c..1e3f62261 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -159,8 +159,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) @@ -538,7 +538,7 @@ enum Values_mixer { close: 2, } -enum Values_zonevalve { +enum Values_closeopen { close: 0, open: 1, } From 94e3a77fd1cc751cc1c87131348060072000559c 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/12] 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 1e3f62261..ab3c5829c 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -134,6 +134,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; @@ -301,6 +309,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; @@ -369,12 +380,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; @@ -407,6 +424,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; @@ -490,6 +510,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, @@ -609,6 +641,13 @@ enum Values_backmode { onlybackup: 2, } +enum Values_backmode2 { + off: 0, + heat: 1, + water: 2, + heatandwater: 3, +} + enum Values_pumppow { _0: 0, _1: 1, @@ -669,6 +708,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, @@ -686,6 +738,12 @@ enum Values_opmode { night: 3, } +enum Values_opmode2 { + off: 0, + time_controlled: 1, + manual: 2, +} + enum Values_zmapping { none: 0, VRC700: 1, @@ -712,6 +770,12 @@ enum Values_rcmode { thermostat: 2, } +enum Values_rcmode2 { + inactive: 0, + active: 1, + expanded: 2, +} + enum Values_appliancecode { off: 0, prerun: 1, From 042a1273d0d030d3049572f3e98124dba7619dfa 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/12] 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 ad8a3887a38270eb9baaff64ce25c4368ee95020 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/12] 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 ab3c5829c..5caaa38c4 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; @@ -386,6 +390,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; @@ -421,6 +431,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; @@ -731,6 +744,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, @@ -764,6 +788,11 @@ enum Values_offmode { night: 1, } +enum Values_offmode2 { + eco: 0, + normal: 1, +} + enum Values_rcmode { off: 0, modulating: 1, From 13d0a1d7ec158bda13b44ec66a16997196d6f6d1 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/12] 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 8787919b393b6c52b61ee025886dfabfc2254886 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Wed, 15 Jan 2025 23:12:37 +0000 Subject: [PATCH 07/12] Add baseline support for `08.hmu.HW5103` --- src/main.tsp | 1 + src/vaillant/08.hmu.HW5103.tsp | 335 +++++++++++++++++++++++++++++++++ src/vaillant/_templates.tsp | 60 ++++++ 3 files changed, 396 insertions(+) create mode 100644 src/vaillant/08.hmu.HW5103.tsp diff --git a/src/main.tsp b/src/main.tsp index b1205e830..2d12cc123 100644 --- a/src/main.tsp +++ b/src/main.tsp @@ -9,6 +9,7 @@ import "./vaillant/06.vms.tsp"; import "./vaillant/08.bai.tsp"; import "./vaillant/08.ehp.tsp"; import "./vaillant/08.hmu.tsp"; +import "./vaillant/08.hmu.HW5103.tsp"; import "./vaillant/08.recov.tsp"; import "./vaillant/08.v3x.tsp"; import "./vaillant/0a.pmw.hwc.tsp"; diff --git a/src/vaillant/08.hmu.HW5103.tsp b/src/vaillant/08.hmu.HW5103.tsp new file mode 100644 index 000000000..d9bf9e6b6 --- /dev/null +++ b/src/vaillant/08.hmu.HW5103.tsp @@ -0,0 +1,335 @@ +import "@ebusd/ebus-typespec"; +import "./_templates.tsp"; +using Ebus; +using Ebus.Num; +using Ebus.Dtm; +using Ebus.Str; +namespace Vaillant; + +// @zz(0x08) +namespace Hmu.Hw5103 { + /** default *r */ + @base(MF, 0x1a, 0x5, 0xff, 0x32) + model r_2 { + @maxLength(3) + value: IGN; + } + + @inherit(r_2) + @ext(0) + model YieldHcDay { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_2) + @ext(1) + model YieldCoolDay { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_2) + @ext(0x2) + model YieldHwcDay { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_2) + @ext(0xe) + model YieldHcMonth { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_2) + @ext(0xf) + model CopHcMonth { + @divisor(10) + value: UIN; + } + + @inherit(r_2) + @ext(0x10) + model YieldHc { + @unit("kWh") + value: energy; + } + + @inherit(r_2) + @ext(0x11) + model CopHc { + @divisor(10) + value: UIN; + } + + @inherit(r_2) + @ext(0x12) + model YieldHwcMonth { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_2) + @ext(0x13) + model CopHwcMonth { + @divisor(10) + value: UIN; + } + + /** energy yield hot water */ + @inherit(r_2) + @ext(0x16) + model YieldHwc { + value: energy4; + } + + @inherit(r_2) + @ext(0x17) + model CopHwc { + @divisor(10) + value: UIN; + } + + /** current energy integral */ + @inherit(r_2) + @ext(0x21) + model EnergyIntegral { + value: integral; + } + + /** current yielded energy from the environment */ + @inherit(r_2) + @ext(0x23) + model CurrentYieldPower { + @unit("kW") + @divisor(10) + value: D1B; + } + + /** current compressor utilization */ + @inherit(r_2) + @ext(0x25) + model CurrentCompressorUtil { + @unit("%") + value: D1B; + } + + @inherit(r_2) + @ext(0x3c) + model BuildingCircuitFlow { + @unit("l/h") + value: UIN; + } + + @inherit(r_2) + @ext(0x3d) + model FlowPressure { + @unit("bar") + @divisor(4) + value: D2C; + } + + @inherit(r_2) + @ext(0x4d) + model TotalEnergyUsage { + @unit("kWh") + value: energy; + } + + /** default *r */ + @base(MF, 0x9, 0x54, 0x2, 0) + model r_7 { + @maxLength(4) + value: IGN; + } + + @inherit(r_7) + @ext(0xd, 0xa) + model CompressorSpeed { + @unit("rps") + value: EXP; + } + + /** (EEV Position in different scale?) */ + @inherit(r_7) + @ext(0x28, 0xa) + model EEVPositionAbs { + value: UIN; + } + + @inherit(r_7) + @ext(0x47, 0xa) + model Fan1Speed { + @unit("rpm") + value: EXP; + } + + @inherit(r_7) + @ext(0x49, 0xa) + model Fan2Speed { + @unit("rpm") + value: EXP; + } + + @inherit(r_7) + @ext(0x53, 0xd) + model Statuscode { + value: hmucode; + } + + @inherit(r_7) + @ext(0x5b, 0xd) + model ElectricPowerConsumption { + /** current electrical power consumption (Watt) */ + @unit("W") + value: EXP; + } + + @inherit(r_7) + @ext(0x6a, 0x9) + model HighPressure { + value: pressv; + } + + @inherit(r_7) + @ext(0x98, 0x8) + model CompressorInletTemp { + value: tempv; + } + + @inherit(r_7) + @ext(0xa2, 0x8) + model CompressorOutletTemp { + value: tempv; + } + + @inherit(r_7) + @ext(0xac, 0x8) + model EEVOutletTemp { + value: tempv; + } + + @inherit(r_7) + @ext(0xb8, 0xb) + model HMUHours { + value: hoursum2; + } + + @inherit(r_7) + @ext(0xb9, 0xb) + model HcHours { + value: hoursum2; + } + + @inherit(r_7) + @ext(0xbc, 0xb) + model HwcHours { + /** total runtime of Hwc mode */ + value: hoursum2; + } + + @inherit(r_7) + @ext(0xc2, 0xb) + model CompressorHours { + value: hoursum2; + } + + @inherit(r_7) + @ext(0xc3, 0xb) + model CompressorStarts { + value: cntstarts2; + } + + @inherit(r_7) + @ext(0xc4, 0xb) + model BuildingCircuitPumpHours { + value: hoursum2; + } + + @inherit(r_7) + @ext(0xc5, 0x9) + model BuildingCircuitPumpPower { + @unit("%") + value: EXP; + } + + @inherit(r_7) + @ext(0xc5, 0xb) + model BuildingCircuitPumpStarts { + /** total starts of building circuit pump */ + value: cntstarts2; + } + + @inherit(r_7) + @ext(0xc8, 0xb) + model FourPortValveHours { + value: hoursum2; + } + + @inherit(r_7) + @ext(0xc9, 0xb) + model FourPortValveSwitches { + value: cntstarts2; + } + + @inherit(r_7) + @ext(0xd7, 0xb) + model Fan1Hours { + value: hoursum2; + } + + @inherit(r_7) + @ext(0xd8, 0xb) + model Fan1Starts { + value: cntstarts2; + } + + @inherit(r_7) + @ext(0xd9, 0xb) + model Fan2Hours { + value: hoursum2; + } + + @inherit(r_7) + @ext(0xda, 0xb) + model Fan2Starts { + value: cntstarts2; + } + + @inherit(r_7) + @ext(0xde, 0x8) + model AirInletTemp { + value: tempv; + } + + /** default *r */ + @base(MF, 0x11) + model r_8 {} + + /** compressor runtime in min and starts in Hc mode */ + @inherit(r_8) + @ext(0x18, 1) + model CompressorRuntimeHc { + @maxLength(1) ign: IGN; + runtime: minutes4; + cycles: cntstarts; + } + + /** compressor runtime in min and starts in Hwc mode */ + @inherit(r_8) + @ext(0x18, 0x2) + model CompressorRuntimeHwc { + @maxLength(1) ign: IGN; + runtime: minutes4; + cycles: cntstarts; + } + + +} diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index f22926103..95f925488 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -510,6 +510,10 @@ model rTimeSlotWithoutTemp { @values(Values_appliancecode) scalar appliancecode extends UCH; +/** HMU Status code */ +@values(Values_hmucode) +scalar hmucode extends UIN; + enum Values_daysel { selected: 0, Mo_Fr: 1, @@ -847,6 +851,62 @@ enum Values_appliancecode { frost_protect: 34, } +enum Values_hmucode { + frost_protect: 34, + standby: 100, + heat_compressor_shutdown: 101, + heat_compressor_blocked: 102, + heat_prerun: 103, + heat_compressor_active: 104, + heat_overrun: 107, + cool_compressor_shutdown: 111, + cool_compressor_blocked: 112, + cool_prerun: 113, + cool_compressor_active: 114, + cool_overrun: 117, + heat_immersion_heater_active: 125, + hwc_compressor_blocked: 132, + hwc_prerun: 133, + hwc_compressor_active: 134, + hwc_immersion_heater_active: 135, + hwc_overrun: 137, + heat_immersion_heater_shutdown: 141, + heat_immersion_heater_blocked: 142, + hwc_immersion_heater_shutdown: 151, + hwc_immersion_heater_blocked: 152, + air_purging_program_active: 202, + compressor_oil_heating_activated: 240, + fan1_blocked: 252, + fan1_airinlet_too_high: 255, + fan1_airinlet_too_low: 256, + fan2_blocked: 260, + building_circuit_flow_too_low: 275, + building_circuit_pump_fault: 277, + frequency_converter_fault_compressor: 280, + frequency_converter_fault_mains_voltage: 281, + frequency_converter_fault_overheating: 282, + deicing_time_too_long: 283, + deicing_flow_temperature_too_low: 284, + compressor_outlet_temperature_too_high: 285, + hot_gas_temperature_switch_open: 286, + fan1_wind: 287, + fan2_wind: 288, + current_limt_active: 289, + high_pressure_switch_open: 302, + compressor_outlet_temperature_too_high_1: 303, + evaporation_temperature_too_low: 304, + condensation_temperature_too_low: 305, + evaporation_temperature_too_high: 306, + condensation_temperature_too_high: 308, + building_circuit_return_temperature_too_low: 312, + building_circuit_return_temperature_too_high: 314, + immersion_heater_flow_temperature_too_high: 351, + deicing_active: 516, + frequency_converter_fault: 575, + connection_fault_frequency_converter: 581, + four_port_valve_position_fault: 590, +} + /** default *r for register */ @base(MF, 0x9, 0xd) model r {} From 8abf05e1d107da7a2a7f59c4aee18604acb70017 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Fri, 17 Jan 2025 15:42:12 +0000 Subject: [PATCH 08/12] Add baseline VWZ support --- src/vaillant/76.vwz.HW5103.tsp | 176 +++++++++++++++++++++++++++++++ src/vaillant/76.vwzio.HW5103.tsp | 1 + src/vaillant/_templates.tsp | 17 +++ 3 files changed, 194 insertions(+) create mode 100644 src/vaillant/76.vwz.HW5103.tsp create mode 120000 src/vaillant/76.vwzio.HW5103.tsp diff --git a/src/vaillant/76.vwz.HW5103.tsp b/src/vaillant/76.vwz.HW5103.tsp new file mode 100644 index 000000000..5a785e805 --- /dev/null +++ b/src/vaillant/76.vwz.HW5103.tsp @@ -0,0 +1,176 @@ +import "@ebusd/ebus-typespec"; +import "./_templates.tsp"; +using Ebus; +using Ebus.Num; +using Ebus.Dtm; +using Ebus.Str; +namespace Vaillant; + +// @zz(0x76) +namespace Vwz.Hw5103 { + /** default *r */ + @base(MF, 0x9, 0x54, 0x2, 0) + model r_2 { + @maxLength(4) + value: IGN; + } + + @inherit(r_2) + @ext(0x6, 0x9) + model ReturnFlowTemp { + value: tempv; + } + + @inherit(r_2) + @ext(0x74, 0x9) + model SystemPressure { + value: pressv; + } + + @inherit(r_2) + @ext(0xad, 0xd) + model ImmersionHeater { + value: onoff; + } + + @inherit(r_2) + @ext(0xb6, 0x08) + model CondensorOutletTemp { + value: tempv; + } + + @inherit(r_2) + @ext(0xb8, 0xb) + model VwzHours { + @maxLength(2) ign: IGN; + value: hoursum2; + } + + @inherit(r_2) + @ext(0xb9, 0xb) + model VwzHoursHc { + @maxLength(2) ign: IGN; + value: hoursum2; + } + + @inherit(r_2) + @ext(0xbd, 0xb) + model ImmersionHeaterHours { + @maxLength(2) ign: IGN; + value: hours; + } + + @inherit(r_2) + @ext(0xc0, 0xb) + model ImmersionHeaterStarts { + @maxLength(2) ign: IGN; + value: cntstarts2; + } + + @inherit(r_2) + @ext(0xc1, 0xb) + model PrioritySwitchingValveOps { + @maxLength(2) ign: IGN; + value: cntstarts2; + } + + // @inherit(r_2) + // @ext(0xc4, 0xb) + // model BuildingCircuitPumpHours { + // @maxLength(2) ign: IGN; + // value: hours; + // } + + // @inherit(r_2) + // @ext(0xc5, 0x9) + // model BuildingCircuitPumpPower { + // @unit("%") + // value: EXP; + // } + + // @inherit(r_2) + // @ext(0xc5, 0xb) + // model BuildingCircuitPumpStarts { + // @maxLength(2) ign: IGN; + // value: cntstarts2; + // } + + @inherit(r_2) + @ext(0xfc, 0x8) + model SupplyFlowTemp { + value: tempv; + } + + /** default *r */ + @base(MF, 0x14, 0x5) + model r_3 { + @maxLength(2) + value: IGN; + } + + @inherit(r_3) + @ext(0x2, 0x3, 0xff, 0xff) + model PrioritySwitchingValve { + @maxLength(2) ign: IGN; + value: switchvalve3; + } + + @inherit(r_3) + @ext(0x28, 0x03, 0xff, 0xff) + model SupplyTemp { + @divisor(10) + value: temps2; + } + + @inherit(r_3) + @ext(0x29, 0x03, 0xff, 0xff) + model ReturnTemp { + @divisor(10) + value: temps2; + } + + @inherit(r_3) + @ext(0x2c, 0x03, 0xff, 0xff) + model HwcTemp { + @divisor(10) + value: temps2; + } + + @inherit(r_3) + @ext(0x7c, 0x03, 0xff, 0xff) + model ElectricHeaterTempSwitch { + value: openclose; + } + + @inherit(r_3) + @ext(0x7d, 0x03, 0xff, 0xff) + model MI1Input { + value: onoff; + } + + @inherit(r_3) + @ext(0x7e, 0x03, 0xff, 0xff) + model MA2Output { + value: onoff; + } + + @inherit(r_3) + @ext(0x7f, 0x03, 0xff, 0xff) + model MA0Output { + value: onoff; + } + + @inherit(r_3) + @ext(0x81, 0x03, 0xff, 0xff) + model CondensorInletTemp { + @divisor(10) + value: temps2; + } + + @inherit(r_3) + @ext(0x82, 0x03, 0xff, 0xff) + model ElectricHeaterSupplyTemp { + @divisor(10) + value: temps2; + } +} diff --git a/src/vaillant/76.vwzio.HW5103.tsp b/src/vaillant/76.vwzio.HW5103.tsp new file mode 120000 index 000000000..3c771e6db --- /dev/null +++ b/src/vaillant/76.vwzio.HW5103.tsp @@ -0,0 +1 @@ +76.vwz.HW5103.tsp \ No newline at end of file diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index 95f925488..97d334c2a 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -181,6 +181,9 @@ scalar mixer extends UCH; @values(Values_closeopen) scalar closeopen extends UCH; +@values(Values_openclose) +scalar openclose extends UCH; + /** day/night mode */ @values(Values_daynight) scalar daynight extends UCH; @@ -365,6 +368,10 @@ scalar switchvalve extends UCH; @values(Values_switchvalve2) scalar switchvalve2 extends UCH; +/** valve position */ +@values(Values_switchvalve3) +scalar switchvalve3 extends UIN; + /** holiday period from */ scalar hfrom extends HDA3; @@ -611,6 +618,11 @@ enum Values_closeopen { open: 1, } +enum Values_openclose { + open: 0, + close: 1, +} + enum Values_daynight { night: 0, day: 1, @@ -726,6 +738,11 @@ enum Values_switchvalve2 { standby: 254, } +enum Values_switchvalve3 { + heat: 0, + water: 1, +} + enum Values_hpstatus { off: 0, heat: 3, From b6203581b8181b5a4fe9cd470af609c831a9118a Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Fri, 17 Jan 2025 16:10:47 +0000 Subject: [PATCH 09/12] Import HW5103-specifc config --- src/main.tsp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main.tsp b/src/main.tsp index 2d12cc123..131b4564f 100644 --- a/src/main.tsp +++ b/src/main.tsp @@ -54,6 +54,8 @@ import "./vaillant/64.v65.tsp"; import "./vaillant/75.rcc.tsp"; import "./vaillant/75.v81.tsp"; import "./vaillant/76.vwz.tsp"; +import "./vaillant/76.vwz.HW5103.tsp"; +import "./vaillant/76.vwzio.HW5103.tsp"; import "./vaillant/84.zeo.tsp"; import "./vaillant/a0.sol.hwc.tsp"; import "./vaillant/a1.sol.cc.tsp"; From 9954d022eb70808dc3c18f9c30d3bb7bb0570f92 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Sat, 18 Jan 2025 02:48:56 +0000 Subject: [PATCH 10/12] Revert VWZ --- src/main.tsp | 2 - src/vaillant/08.hmu.HW5103.tsp | 6 +- src/vaillant/76.vwz.HW5103.tsp | 176 ------------------------------- src/vaillant/76.vwzio.HW5103.tsp | 1 - src/vaillant/_templates.tsp | 17 --- 5 files changed, 4 insertions(+), 198 deletions(-) delete mode 100644 src/vaillant/76.vwz.HW5103.tsp delete mode 120000 src/vaillant/76.vwzio.HW5103.tsp diff --git a/src/main.tsp b/src/main.tsp index 131b4564f..2d12cc123 100644 --- a/src/main.tsp +++ b/src/main.tsp @@ -54,8 +54,6 @@ import "./vaillant/64.v65.tsp"; import "./vaillant/75.rcc.tsp"; import "./vaillant/75.v81.tsp"; import "./vaillant/76.vwz.tsp"; -import "./vaillant/76.vwz.HW5103.tsp"; -import "./vaillant/76.vwzio.HW5103.tsp"; import "./vaillant/84.zeo.tsp"; import "./vaillant/a0.sol.hwc.tsp"; import "./vaillant/a1.sol.cc.tsp"; diff --git a/src/vaillant/08.hmu.HW5103.tsp b/src/vaillant/08.hmu.HW5103.tsp index d9bf9e6b6..84435c285 100644 --- a/src/vaillant/08.hmu.HW5103.tsp +++ b/src/vaillant/08.hmu.HW5103.tsp @@ -128,6 +128,7 @@ namespace Hmu.Hw5103 { value: UIN; } + @condition(Id.Id.sw, ">=902") @inherit(r_2) @ext(0x3d) model FlowPressure { @@ -313,6 +314,7 @@ namespace Hmu.Hw5103 { @base(MF, 0x11) model r_8 {} + @condition(Id.Id.sw, ">=902") /** compressor runtime in min and starts in Hc mode */ @inherit(r_8) @ext(0x18, 1) @@ -322,6 +324,7 @@ namespace Hmu.Hw5103 { cycles: cntstarts; } + @condition(Id.Id.sw, ">=902") /** compressor runtime in min and starts in Hwc mode */ @inherit(r_8) @ext(0x18, 0x2) @@ -330,6 +333,5 @@ namespace Hmu.Hw5103 { runtime: minutes4; cycles: cntstarts; } - - } + diff --git a/src/vaillant/76.vwz.HW5103.tsp b/src/vaillant/76.vwz.HW5103.tsp deleted file mode 100644 index 5a785e805..000000000 --- a/src/vaillant/76.vwz.HW5103.tsp +++ /dev/null @@ -1,176 +0,0 @@ -import "@ebusd/ebus-typespec"; -import "./_templates.tsp"; -using Ebus; -using Ebus.Num; -using Ebus.Dtm; -using Ebus.Str; -namespace Vaillant; - -// @zz(0x76) -namespace Vwz.Hw5103 { - /** default *r */ - @base(MF, 0x9, 0x54, 0x2, 0) - model r_2 { - @maxLength(4) - value: IGN; - } - - @inherit(r_2) - @ext(0x6, 0x9) - model ReturnFlowTemp { - value: tempv; - } - - @inherit(r_2) - @ext(0x74, 0x9) - model SystemPressure { - value: pressv; - } - - @inherit(r_2) - @ext(0xad, 0xd) - model ImmersionHeater { - value: onoff; - } - - @inherit(r_2) - @ext(0xb6, 0x08) - model CondensorOutletTemp { - value: tempv; - } - - @inherit(r_2) - @ext(0xb8, 0xb) - model VwzHours { - @maxLength(2) ign: IGN; - value: hoursum2; - } - - @inherit(r_2) - @ext(0xb9, 0xb) - model VwzHoursHc { - @maxLength(2) ign: IGN; - value: hoursum2; - } - - @inherit(r_2) - @ext(0xbd, 0xb) - model ImmersionHeaterHours { - @maxLength(2) ign: IGN; - value: hours; - } - - @inherit(r_2) - @ext(0xc0, 0xb) - model ImmersionHeaterStarts { - @maxLength(2) ign: IGN; - value: cntstarts2; - } - - @inherit(r_2) - @ext(0xc1, 0xb) - model PrioritySwitchingValveOps { - @maxLength(2) ign: IGN; - value: cntstarts2; - } - - // @inherit(r_2) - // @ext(0xc4, 0xb) - // model BuildingCircuitPumpHours { - // @maxLength(2) ign: IGN; - // value: hours; - // } - - // @inherit(r_2) - // @ext(0xc5, 0x9) - // model BuildingCircuitPumpPower { - // @unit("%") - // value: EXP; - // } - - // @inherit(r_2) - // @ext(0xc5, 0xb) - // model BuildingCircuitPumpStarts { - // @maxLength(2) ign: IGN; - // value: cntstarts2; - // } - - @inherit(r_2) - @ext(0xfc, 0x8) - model SupplyFlowTemp { - value: tempv; - } - - /** default *r */ - @base(MF, 0x14, 0x5) - model r_3 { - @maxLength(2) - value: IGN; - } - - @inherit(r_3) - @ext(0x2, 0x3, 0xff, 0xff) - model PrioritySwitchingValve { - @maxLength(2) ign: IGN; - value: switchvalve3; - } - - @inherit(r_3) - @ext(0x28, 0x03, 0xff, 0xff) - model SupplyTemp { - @divisor(10) - value: temps2; - } - - @inherit(r_3) - @ext(0x29, 0x03, 0xff, 0xff) - model ReturnTemp { - @divisor(10) - value: temps2; - } - - @inherit(r_3) - @ext(0x2c, 0x03, 0xff, 0xff) - model HwcTemp { - @divisor(10) - value: temps2; - } - - @inherit(r_3) - @ext(0x7c, 0x03, 0xff, 0xff) - model ElectricHeaterTempSwitch { - value: openclose; - } - - @inherit(r_3) - @ext(0x7d, 0x03, 0xff, 0xff) - model MI1Input { - value: onoff; - } - - @inherit(r_3) - @ext(0x7e, 0x03, 0xff, 0xff) - model MA2Output { - value: onoff; - } - - @inherit(r_3) - @ext(0x7f, 0x03, 0xff, 0xff) - model MA0Output { - value: onoff; - } - - @inherit(r_3) - @ext(0x81, 0x03, 0xff, 0xff) - model CondensorInletTemp { - @divisor(10) - value: temps2; - } - - @inherit(r_3) - @ext(0x82, 0x03, 0xff, 0xff) - model ElectricHeaterSupplyTemp { - @divisor(10) - value: temps2; - } -} diff --git a/src/vaillant/76.vwzio.HW5103.tsp b/src/vaillant/76.vwzio.HW5103.tsp deleted file mode 120000 index 3c771e6db..000000000 --- a/src/vaillant/76.vwzio.HW5103.tsp +++ /dev/null @@ -1 +0,0 @@ -76.vwz.HW5103.tsp \ No newline at end of file diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index 97d334c2a..95f925488 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -181,9 +181,6 @@ scalar mixer extends UCH; @values(Values_closeopen) scalar closeopen extends UCH; -@values(Values_openclose) -scalar openclose extends UCH; - /** day/night mode */ @values(Values_daynight) scalar daynight extends UCH; @@ -368,10 +365,6 @@ scalar switchvalve extends UCH; @values(Values_switchvalve2) scalar switchvalve2 extends UCH; -/** valve position */ -@values(Values_switchvalve3) -scalar switchvalve3 extends UIN; - /** holiday period from */ scalar hfrom extends HDA3; @@ -618,11 +611,6 @@ enum Values_closeopen { open: 1, } -enum Values_openclose { - open: 0, - close: 1, -} - enum Values_daynight { night: 0, day: 1, @@ -738,11 +726,6 @@ enum Values_switchvalve2 { standby: 254, } -enum Values_switchvalve3 { - heat: 0, - water: 1, -} - enum Values_hpstatus { off: 0, heat: 3, From b61a45a9c8e7a24733342d578d2b7d992453e280 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:20:49 +0000 Subject: [PATCH 11/12] Remove `basv3` --- src/main.tsp | 1 - src/vaillant/15.basv3.tsp | 2872 ----------------------------------- src/vaillant/_templates.tsp | 119 +- 3 files changed, 1 insertion(+), 2991 deletions(-) delete mode 100644 src/vaillant/15.basv3.tsp diff --git a/src/main.tsp b/src/main.tsp index 2d12cc123..c04270a3f 100644 --- a/src/main.tsp +++ b/src/main.tsp @@ -20,7 +20,6 @@ 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 deleted file mode 100644 index a1d5082c0..000000000 --- a/src/vaillant/15.basv3.tsp +++ /dev/null @@ -1,2872 +0,0 @@ -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; - } - - /** 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) - model AdaptHeatCurve { - /** Automatic correction of configured heat curve */ - value: yesno; - } - - /** hwc cylinder maximum charging time */ - @inherit(r_1, w_1) - @ext(0x17, 0) - model HwcCylinderChargeMaxTime { - 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; - } - - /** 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) - model HwcCylinderChargeHyst { - /** Hysteresis cylinder charge */ - value: calibrationv; - } - - /** offset cylinder charge */ - @inherit(r_1, w_1) - @ext(0x29, 0) - model HwcCylinderChargeOffset { - value: calibrationv; - } - - /** hwc legionella time */ - @inherit(r_1, w_1) - @ext(0x2a, 0) - model HwcLegionellaTime { - value: HTM; - } - - /** ohwc legionella day */ - @inherit(r_1, w_1) - @ext(0x2b, 0) - model HwcLegionellaDay { - value: daysel2; - } - - /** next maintenance */ - @inherit(r_1, w_1) - @ext(0x2c, 0) - model MaintenanceDate { - /** Date for next maintenance */ - 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) - 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; - } - - /** 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) - model WaterPressure { - 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) - 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, w_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; - } - - /** hwc 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; - } - - /** offset hwc cylinder charge */ - @inherit(r_1, w_1) - @ext(0xa2, 0) - model HwcCylinderOffset { - value: calibrationv; - } - - // ##### 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 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) - model HwcOpMode { - /** Operation mode of Hwc */ - value: opmode2; - } - - /** 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 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) - 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 Special Function (SF) mode */ - @inherit(r_2, w_2) - @ext(0xd, 0) - model HwcSFMode { - /** 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; - } - - /** 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 */ - @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; - } - - /** 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) - 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; - } - - /** 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) - 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; - } - - /** 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; - } - - /** SetbackMode heating circuit 1 */ - @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; - } - - /** HeatCurve heating circuit 1 */ - @inherit(r_3, w_3) - @ext(0xf, 0) - model Hc1HeatCurve { - value: EXP; - } - - /** HeatingMaxFlowTempDesired heating circuit 1 */ - @inherit(r_3, w_3) - @ext(0x10, 0) - model Hc1HeatingMaxFlowTempDesired { - /** Maximum flow temperature setpoint (end emphasis) of Hc1 */ - value: tempv; - } - - /** 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 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) - model Hc1SummerTempLimit { - /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ - value: tempv; - } - - /** RoomTempMod heating circuit 1 */ - @inherit(r_3, w_3) - @ext(0x15, 0) - model Hc1RoomTempMod { - /** Room temperature modulation of Hc1 */ - 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 */ - @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, w_3) - @ext(0x1b, 0) - model Hc1Status { - value: onoff; - } - - /** PumpStatus heating circuit 1 */ - @inherit(r_3) - @ext(0x1e, 0) - model Hc1PumpStatus { - value: hcpumpmode; - } - - // ##### 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; - } - - /** 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) - 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; - } - - /** 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) - 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; - } - - /** SetbackMode heating circuit 2 */ - @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; - } - - /** HeatCurve heating circuit 2 */ - @inherit(r_4, w_4) - @ext(0xf, 0) - model Hc2HeatCurve { - value: EXP; - } - - /** HeatingMaxFlowTempDesired heating circuit 2 */ - @inherit(r_4, w_4) - @ext(0x10, 0) - model Hc2HeatingMaxFlowTempDesired { - /** Maximum flow temperature setpoint (end emphasis) of Hc2 */ - value: tempv; - } - - /** 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 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) - model Hc2SummerTempLimit { - /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ - value: tempv; - } - - /** RoomTempMod heating circuit 2 */ - @inherit(r_4, w_4) - @ext(0x15, 0) - model Hc2RoomTempMod { - /** Room temperature modulation of Hc2 */ - 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) - 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, w_4) - @ext(0x1b, 0) - model Hc2Status { - value: onoff; - } - - /** PumpStatus heating circuit 2 */ - @inherit(r_4) - @ext(0x1e, 0) - model Hc2PumpStatus { - value: hcpumpmode; - } - - // ##### 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; - } - - /** 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) - 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; - } - - /** 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) - 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; - } - - /** SetbackMode heating circuit 3 */ - @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; - } - - /** HeatCurve heating circuit 3 */ - @inherit(r_5, w_5) - @ext(0xf, 0) - model Hc3HeatCurve { - value: EXP; - } - - /** HeatingMaxFlowTempDesired heating circuit 3 */ - @inherit(r_5, w_5) - @ext(0x10, 0) - model Hc3HeatingMaxFlowTempDesired { - /** Maximum flow temperature setpoint (end emphasis) of Hc3 */ - value: tempv; - } - - /** 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 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) - model Hc3SummerTempLimit { - /** If outside temperature > summer limit => heating is OFF;applies to comfort and night setback setpoint */ - value: tempv; - } - - /** RoomTempMod heating circuit 3 */ - @inherit(r_5, w_5) - @ext(0x15, 0) - model Hc3RoomTempMod { - /** Room temperature modulation of Hc3 */ - 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 */ - @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, w_5) - @ext(0x1b, 0) - model Hc3Status { - value: onoff; - } - - /** PumpStatus heating circuit 3 */ - @inherit(r_5) - @ext(0x1e, 0) - model Hc3PumpStatus { - value: hcpumpmode; - } - - // ##### 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(0x1, 0) - model Z1CoolingOpMode { - /** Operation mode for cooling of zone 1 */ - value: opmode2; - } - - /** cooling setpoint zone 1 */ - @inherit(r_6, w_6) - @ext(0x2, 0) - model Z1CoolingTempDesiredTimeControlled { - /** Time controlled desired cooling room temperature 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; - } - - /** heating operation mode zone 1 */ - @inherit(r_6, w_6) - @ext(0x6, 0) - model Z1HeatingOpMode { - /** Operation mode of zone 1 */ - value: opmode2; - } - - /** quick veto temperature zone 1 */ - @inherit(r_6, w_6) - @ext(0x8, 0) - model Z1QuickVetoTemp { - /** Manual override setpoint for zone 1 */ - value: tempv; - } - - /** set back temperature zone 1 */ - @inherit(r_6, w_6) - @ext(0x9, 0) - model Z1SetBackTemp { - /** Set back temperature zone 1 (time controlled heating) */ - value: tempv; - } - - /** Special Function (SF) mode zone 1 */ - @inherit(r_6, w_6) - @ext(0xe, 0) - model Z1SFMode { - /* Only auto=0; ventilation=1; veto=3 supported */ - value: sfmode2; - } - - /** 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: closeopen; - } - - /** 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; - } - - /** heating room temperature desired zone 1 */ - @inherit(r_6) - @ext(0x14, 0) - 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; - } - - /** 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; - } - - /** 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) - model Z1HeatingTempDesiredManual { - /** 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 Z1CoolingTempDesiredManual { - /** Desired cooling setpoint in manual mode for zone 1 */ - value: tempv; - } - - /** room humidity zone 1 */ - @inherit(r_6) - @ext(0x28, 0) - model Z1RoomHumidity { - value: percentv; - } - - // ##### 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(0x1, 0) - model Z2CoolingOpMode { - /** Operation mode for cooling of zone 2 */ - value: opmode2; - } - - /** cooling setpoint zone 2 */ - @inherit(r_7, w_7) - @ext(0x2, 0) - model Z2CoolingTempDesiredTimeControlled { - /** Time controlled desired cooling room temperature 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 Z2HeatingOpMode { - /** Operation mode of zone 2 */ - value: opmode2; - } - - /** quick veto temperature zone 2 */ - @inherit(r_7, w_7) - @ext(0x8, 0) - model Z2QuickVetoTemp { - /** Manual override setpoint for zone 2 */ - value: tempv; - } - - /** set back temperature zone 2 */ - @inherit(r_7, w_7) - @ext(0x9, 0) - model Z2SetBackTemp { - /** Set back temperature zone 2 (time controlled heating) */ - value: tempv; - } - - /** Special Function (SF) mode zone 2 */ - @inherit(r_7, w_7) - @ext(0xe, 0) - model Z2SFMode { - /* Only auto=0; ventilation=1; veto=3 supported */ - value: sfmode2; - } - - /** 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: closeopen; - } - - /** 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; - } - - /** heating room temperature desired zone 2 */ - @inherit(r_7) - @ext(0x14, 0) - 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; - } - - /** 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; - } - - /** 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) - model Z2HeatingTempDesiredManual { - /** 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 Z2CoolingTempDesiredManual { - /** Desired cooling setpoint in manual mode for zone 2 */ - value: tempv; - } - - /** room humidity zone 2 */ - @inherit(r_7) - @ext(0x28, 0) - model Z2RoomHumidity { - value: percentv; - } - - // ##### 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(0x1, 0) - model Z3CoolingOpMode { - /** Operation mode for cooling of zone 3 */ - value: opmode2; - } - - /** cooling setpoint zone 3 */ - @inherit(r_8, w_8) - @ext(0x2, 0) - model Z3CoolingTempDesiredTimeControlled { - /** Time controlled desired cooling room temperature 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 Z3HeatingOpMode { - /** Operation mode of zone 3 */ - value: opmode2; - } - - /** quick veto temperature zone 3 */ - @inherit(r_8, w_8) - @ext(0x8, 0) - model Z3QuickVetoTemp { - /** Manual override setpoint for zone 3 */ - value: tempv; - } - - /** set back temperature zone 3 */ - @inherit(r_8, w_8) - @ext(0x9, 0) - model Z3SetBackTemp { - /** Set back temperature zone 1 (time controlled heating) */ - value: tempv; - } - - /** Special Function (SF) mode zone 3 */ - @inherit(r_8, w_8) - @ext(0xe, 0) - model Z3SFMode { - /* Only auto=0; ventilation=1; veto=3 supported */ - value: sfmode2; - } - - /** 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: closeopen; - } - - /** 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; - } - - /** heating room temperature desired zone 3 */ - @inherit(r_8) - @ext(0x14, 0) - 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; - } - - /** 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; - } - - /** 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) - model Z3HeatingTempDesiredManual { - /** 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 Z3CoolingTempDesiredManual { - /** Desired cooling setpoint in manual mode for zone 3 */ - value: tempv; - } - - /** room humidity zone 3 */ - @inherit(r_8) - @ext(0x28, 0) - model Z3RoomHumidity { - 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 */ - union _includes { - Errors_inc, - } -} diff --git a/src/vaillant/_templates.tsp b/src/vaillant/_templates.tsp index 95f925488..e13b214a0 100644 --- a/src/vaillant/_templates.tsp +++ b/src/vaillant/_templates.tsp @@ -28,10 +28,6 @@ scalar press extends FLT; @unit("bar") scalar pressv extends EXP; -/** percentage */ -@unit("%") -scalar percentv extends EXP; - /** date */ scalar date extends HDA3; @@ -42,9 +38,6 @@ scalar day extends BDY; @values(Values_daysel) scalar daysel extends UCH; -@values(Values_daysel2) -scalar daysel2 extends UCH; - /** days */ scalar days extends UCH; @@ -145,14 +138,6 @@ 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; @@ -177,10 +162,6 @@ scalar hwcmode2 extends UCH; @values(Values_mixer) scalar mixer extends UCH; -/** zone valve state */ -@values(Values_closeopen) -scalar closeopen extends UCH; - /** day/night mode */ @values(Values_daynight) scalar daynight extends UCH; @@ -320,9 +301,6 @@ scalar backtype extends UCH; @values(Values_backmode) scalar backmode extends UCH; -@values(Values_backmode2) -scalar backmode2 extends UCH; - @unit("kW") scalar power extends UCH; @@ -391,24 +369,12 @@ 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_sfmode2) -scalar sfmode2 extends UCH; - -@values(Values_sfmode3) -scalar sfmode3 extends UCH; - @values(Values_opmode) scalar opmode extends UIN; -@values(Values_opmode2) -scalar opmode2 extends UIN; - @values(Values_zmapping) scalar zmapping extends UIN; @@ -438,15 +404,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; -@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; @@ -521,18 +481,6 @@ 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, @@ -546,18 +494,6 @@ 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, @@ -606,11 +542,6 @@ enum Values_mixer { close: 2, } -enum Values_closeopen { - close: 0, - open: 1, -} - enum Values_daynight { night: 0, day: 1, @@ -677,13 +608,6 @@ enum Values_backmode { onlybackup: 2, } -enum Values_backmode2 { - off: 0, - heat: 1, - water: 2, - heatandwater: 3, -} - enum Values_pumppow { _0: 0, _1: 1, @@ -744,19 +668,6 @@ 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, @@ -767,17 +678,6 @@ 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, @@ -785,15 +685,9 @@ enum Values_opmode { night: 3, } -enum Values_opmode2 { - off: 0, - time_controlled: 1, - manual: 2, -} - enum Values_zmapping { none: 0, - VRC7XX: 1, + VRC700: 1, VR91_1: 2, VR91_2: 3, VR91_3: 4, @@ -811,23 +705,12 @@ enum Values_offmode { night: 1, } -enum Values_offmode2 { - eco: 0, - normal: 1, -} - enum Values_rcmode { off: 0, modulating: 1, thermostat: 2, } -enum Values_rcmode2 { - inactive: 0, - active: 1, - expanded: 2, -} - enum Values_appliancecode { off: 0, prerun: 1, From e2c5159c37346bca3e9cb41464be8b9675c56264 Mon Sep 17 00:00:00 2001 From: burmistrzak <61958704+burmistrzak@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:27:26 +0000 Subject: [PATCH 12/12] Cleanup & add `b511` --- src/vaillant/08.hmu.HW5103.tsp | 481 ++++++++++++++++++++------------- 1 file changed, 299 insertions(+), 182 deletions(-) diff --git a/src/vaillant/08.hmu.HW5103.tsp b/src/vaillant/08.hmu.HW5103.tsp index 84435c285..a304f6228 100644 --- a/src/vaillant/08.hmu.HW5103.tsp +++ b/src/vaillant/08.hmu.HW5103.tsp @@ -8,330 +8,447 @@ namespace Vaillant; // @zz(0x08) namespace Hmu.Hw5103 { - /** default *r */ - @base(MF, 0x1a, 0x5, 0xff, 0x32) - model r_2 { - @maxLength(3) - value: IGN; - } - - @inherit(r_2) - @ext(0) - model YieldHcDay { - @unit("kWh") - @divisor(10) - value: energy; - } - - @inherit(r_2) - @ext(1) - model YieldCoolDay { - @unit("kWh") - @divisor(10) - value: energy; - } - - @inherit(r_2) - @ext(0x2) - model YieldHwcDay { - @unit("kWh") - @divisor(10) - value: energy; - } - - @inherit(r_2) - @ext(0xe) - model YieldHcMonth { - @unit("kWh") - @divisor(10) - value: energy; - } - - @inherit(r_2) - @ext(0xf) - model CopHcMonth { - @divisor(10) - value: UIN; - } - - @inherit(r_2) - @ext(0x10) - model YieldHc { - @unit("kWh") - value: energy; - } - - @inherit(r_2) - @ext(0x11) - model CopHc { - @divisor(10) - value: UIN; - } - - @inherit(r_2) - @ext(0x12) - model YieldHwcMonth { - @unit("kWh") - @divisor(10) - value: energy; - } - - @inherit(r_2) - @ext(0x13) - model CopHwcMonth { - @divisor(10) - value: UIN; - } - - /** energy yield hot water */ - @inherit(r_2) - @ext(0x16) - model YieldHwc { - value: energy4; - } - - @inherit(r_2) - @ext(0x17) - model CopHwc { - @divisor(10) - value: UIN; - } - - /** current energy integral */ - @inherit(r_2) - @ext(0x21) - model EnergyIntegral { - value: integral; - } - - /** current yielded energy from the environment */ - @inherit(r_2) - @ext(0x23) - model CurrentYieldPower { - @unit("kW") - @divisor(10) - value: D1B; - } - - /** current compressor utilization */ - @inherit(r_2) - @ext(0x25) - model CurrentCompressorUtil { - @unit("%") - value: D1B; - } - - @inherit(r_2) - @ext(0x3c) - model BuildingCircuitFlow { - @unit("l/h") - value: UIN; - } - - @condition(Id.Id.sw, ">=902") - @inherit(r_2) - @ext(0x3d) - model FlowPressure { - @unit("bar") - @divisor(4) - value: D2C; - } - - @inherit(r_2) - @ext(0x4d) - model TotalEnergyUsage { - @unit("kWh") - value: energy; - } - + // B509 /** default *r */ @base(MF, 0x9, 0x54, 0x2, 0) - model r_7 { + model r_0 { @maxLength(4) value: IGN; } - @inherit(r_7) + @inherit(r_0) @ext(0xd, 0xa) model CompressorSpeed { @unit("rps") value: EXP; } - /** (EEV Position in different scale?) */ - @inherit(r_7) + @inherit(r_0) @ext(0x28, 0xa) - model EEVPositionAbs { + model EevPositionAbs { value: UIN; } - @inherit(r_7) + @inherit(r_0) @ext(0x47, 0xa) model Fan1Speed { @unit("rpm") value: EXP; } - @inherit(r_7) + @inherit(r_0) @ext(0x49, 0xa) model Fan2Speed { @unit("rpm") value: EXP; } - @inherit(r_7) + @inherit(r_0) @ext(0x53, 0xd) model Statuscode { value: hmucode; } - @inherit(r_7) +/** + @inherit(r_0) @ext(0x5b, 0xd) model ElectricPowerConsumption { - /** current electrical power consumption (Watt) */ @unit("W") value: EXP; } +*/ - @inherit(r_7) + @inherit(r_0) @ext(0x6a, 0x9) model HighPressure { value: pressv; } - @inherit(r_7) + @inherit(r_0) @ext(0x98, 0x8) model CompressorInletTemp { value: tempv; } - @inherit(r_7) + @inherit(r_0) @ext(0xa2, 0x8) model CompressorOutletTemp { value: tempv; } - @inherit(r_7) +/** + @inherit(r_0) + @ext(0xa6, 0xe) + model DiagFlowTemp { + value: tempv; + } + + @inherit(r_0) + @ext(0xa7, 0xe) + model DiagEvaporationTemp { + value: tempv; + } + + @inherit(r_0) + @ext(0xa9, 0xe) + model DiagOverheatingActualValue { + value: tempv; + } +*/ + + @inherit(r_0) @ext(0xac, 0x8) - model EEVOutletTemp { + model EevOutletTemp { value: tempv; } - @inherit(r_7) + @inherit(r_0) @ext(0xb8, 0xb) - model HMUHours { + model HmuHours { value: hoursum2; } - @inherit(r_7) + @inherit(r_0) @ext(0xb9, 0xb) - model HcHours { + model HeatingHours { value: hoursum2; } - @inherit(r_7) + @inherit(r_0) @ext(0xbc, 0xb) - model HwcHours { - /** total runtime of Hwc mode */ + model WaterHours { value: hoursum2; } - @inherit(r_7) +/** + @inherit(r_0) + @ext(0xbd, 0x9) + model DiagWaterThroughput { + @unit("l/h") + value: EXP; + } +*/ + + @inherit(r_0) @ext(0xc2, 0xb) model CompressorHours { value: hoursum2; } - @inherit(r_7) + @inherit(r_0) @ext(0xc3, 0xb) model CompressorStarts { value: cntstarts2; } - @inherit(r_7) + @inherit(r_0) @ext(0xc4, 0xb) - model BuildingCircuitPumpHours { + model BuildingPumpHours { value: hoursum2; } - @inherit(r_7) + @inherit(r_0) @ext(0xc5, 0x9) - model BuildingCircuitPumpPower { + model BuildingPumpPower { @unit("%") value: EXP; } - @inherit(r_7) + @inherit(r_0) @ext(0xc5, 0xb) - model BuildingCircuitPumpStarts { - /** total starts of building circuit pump */ + model BuildingPumpStarts { value: cntstarts2; } - @inherit(r_7) + @inherit(r_0) @ext(0xc8, 0xb) model FourPortValveHours { value: hoursum2; } - @inherit(r_7) + @inherit(r_0) @ext(0xc9, 0xb) model FourPortValveSwitches { value: cntstarts2; } - @inherit(r_7) + @inherit(r_0) @ext(0xd7, 0xb) model Fan1Hours { value: hoursum2; } - @inherit(r_7) + @inherit(r_0) @ext(0xd8, 0xb) model Fan1Starts { value: cntstarts2; } - @inherit(r_7) + @inherit(r_0) @ext(0xd9, 0xb) model Fan2Hours { value: hoursum2; } - @inherit(r_7) + @inherit(r_0) @ext(0xda, 0xb) model Fan2Starts { value: cntstarts2; } - @inherit(r_7) + @inherit(r_0) @ext(0xde, 0x8) model AirInletTemp { value: tempv; } + // B511 /** default *r */ @base(MF, 0x11) - model r_8 {} + model r_1 {} + + @inherit(r_1) + @ext(1) + model Status { + supplytemp: temp1; + returntemp: temp1; + @maxLength(4) ign: IGN; + pumpstate: pumpstate; + } @condition(Id.Id.sw, ">=902") - /** compressor runtime in min and starts in Hc mode */ - @inherit(r_8) + @inherit(r_1) @ext(0x18, 1) - model CompressorRuntimeHc { + model CompressorHeating { @maxLength(1) ign: IGN; runtime: minutes4; cycles: cntstarts; } @condition(Id.Id.sw, ">=902") - /** compressor runtime in min and starts in Hwc mode */ - @inherit(r_8) + @inherit(r_1) @ext(0x18, 0x2) - model CompressorRuntimeHwc { + model CompressorWater { @maxLength(1) ign: IGN; runtime: minutes4; cycles: cntstarts; } -} + // B516 + /** default *r */ + @base(MF, 0x16) + model r_2 { + @maxLength(1) + value: IGN; + } + + @inherit(r_2) + @ext(0x14) + model CurrentPowerConsumption { + @unit("W") + value: EXP; + } + + // B51A FF32xx + /** default *r */ + @base(MF, 0x1a, 0x5, 0xff, 0x32) + model r_3 { + @maxLength(3) + value: IGN; + } + + @inherit(r_3) + @ext(0) + model YieldHeatingDay { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_3) + @ext(1) + model YieldCoolingDay { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_3) + @ext(0x2) + model YieldWaterDay { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_3) + @ext(0xe) + model YieldHeatingMonth { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_3) + @ext(0xf) + model CopHeatingMonth { + @divisor(10) + value: UIN; + } + + @inherit(r_3) + @ext(0x10) + model YieldHeating { + @unit("kWh") + value: energy; + } + + @inherit(r_3) + @ext(0x11) + model CopHeating { + @divisor(10) + value: UIN; + } + + @inherit(r_3) + @ext(0x12) + model YieldWaterMonth { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_3) + @ext(0x13) + model CopWaterMonth { + @divisor(10) + value: UIN; + } + + @inherit(r_3) + @ext(0x16) + model YieldWater { + value: energy; + } + + @inherit(r_3) + @ext(0x17) + model CopWater { + @divisor(10) + value: UIN; + } + + @inherit(r_3) + @ext(0x1e) + model CompressorBlocktime { + @unit("min") + value: UIN; + } + + @inherit(r_3) + @ext(0x1f) + model SupplyTempWeighted { + @unit("°C") + @divisor(10) + value: D2C; + } + + @inherit(r_3) + @ext(0x20) + model FlowTemp { + @unit("°C") + value: D2C; + } + + @inherit(r_3) + @ext(0x21) + model EnergyIntegral { + value: integral; + } + +/** + @inherit(r_3) + @ext(0x22) + model SourceTempInput { + @unit("°C") + value: D2C; + } +*/ + + @inherit(r_3) + @ext(0x23) + model CurrentYieldPower { + @unit("kW") + @divisor(10) + value: D1B; + } + + @inherit(r_3) + @ext(0x24) + model CurrentConsumedPower { + @unit("kW") + @divisor(10) + value: D1B; + } + + @inherit(r_3) + @ext(0x25) + model CompressorModulation { + @unit("%") + value: D2C; + } + + @inherit(r_3) + @ext(0x2A) + model YieldCoolingMonth { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_3) + @ext(0x2B) + model CopCoolingMonth { + @divisor(10) + value: UIN; + } + + @inherit(r_3) + @ext(0x2C) + model YieldCooling { + @unit("kWh") + @divisor(10) + value: energy; + } + + @inherit(r_3) + @ext(0x2D) + model CopCooling { + @divisor(10) + value: UIN; + } + + + @inherit(r_3) + @ext(0x3c) + model WaterThroughput { + @unit("l/h") + value: UIN; + } + + @condition(Id.Id.sw, ">=902") + @inherit(r_3) + @ext(0x3d) + model FlowPressure { + @unit("bar") + @divisor(4) + value: D2C; + } + + @inherit(r_3) + @ext(0x4d) + model TotalEnergyUsage { + @unit("kWh") + value: energy; + } +}