2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 18:59:33 +00:00

THZ: hex2time for andrek (Forum: #33211 msg726428)

git-svn-id: https://svn.fhem.de/fhem/trunk@15560 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
immi 2017-12-06 19:17:12 +00:00
parent 92a3f470ed
commit 47fde815e9

View File

@ -1,8 +1,8 @@
##############################################
# 00_THZ
# $Id$
# by immi 10/2017
my $thzversion = "0.171";
# by immi 12/2017
my $thzversion = "0.172";
# this code is based on the hard work of Robert; I just tried to port it
# http://robert.penz.name/heat-pump-lwz/
########################################################################################
@ -64,18 +64,18 @@ sub THZ_Get($@);
my %parsinghash = (
#msgtype => parsingrule
"01pxx206" => [["p37Fanstage1AirflowInlet: ", 4, 4, "hex", 1],[" p38Fanstage2AirflowInlet: ", 8, 4, "hex", 1], [" p39Fanstage3AirflowInlet: ", 12, 4, "hex", 1],
[" p40Fanstage1AirflowOutlet: ", 16, 4, "hex", 1],[" p41Fanstage2AirflowOutlet: ", 20, 4, "hex", 1], [" p42Fanstage3AirflowOutlet: ", 24, 4, "hex", 1],
"01pxx206" => [["p37Fanstage1AirflowInlet: ", 4, 4, "hex", 1], [" p38Fanstage2AirflowInlet: ", 8, 4, "hex", 1], [" p39Fanstage3AirflowInlet: ", 12, 4, "hex", 1],
[" p40Fanstage1AirflowOutlet: ", 16, 4, "hex", 1], [" p41Fanstage2AirflowOutlet: ", 20, 4, "hex", 1], [" p42Fanstage3AirflowOutlet: ", 24, 4, "hex", 1],
[" p43UnschedVent3: ", 28, 4, "hex", 1], [" p44UnschedVent2: ", 32, 4, "hex", 1], [" p45UnschedVent1: ", 36, 4, "hex", 1],
[" p46UnschedVent0: ", 40, 4, "hex", 1], [" p75PassiveCooling: ", 44, 4, "hex", 1]
],
"01pxx214" => [["p37Fanstage1AirflowInlet: ", 4, 2, "hex", 1],[" p38Fanstage2AirflowInlet: ", 6, 2, "hex", 1], [" p39Fanstage3AirflowInlet: ", 8, 2, "hex", 1],
[" p40Fanstage1AirflowOutlet: ", 10, 2, "hex", 1],[" p41Fanstage2AirflowOutlet: ", 12, 2, "hex", 1], [" p42Fanstage3AirflowOutlet: ", 14, 2, "hex", 1],
[" p40Fanstage1AirflowOutlet: ", 10, 2, "hex", 1], [" p41Fanstage2AirflowOutlet: ", 12, 2, "hex", 1], [" p42Fanstage3AirflowOutlet: ", 14, 2, "hex", 1],
[" p43UnschedVent3: ", 16, 4, "hex", 1], [" p44UnschedVent2: ", 20, 4, "hex", 1], [" p45UnschedVent1: ", 24, 4, "hex", 1],
[" p46UnschedVent0: ", 28, 4, "hex", 1], [" p75PassiveCooling: ", 32, 2, "hex", 1]
],
"03pxx206" => [["UpTempLimitDefrostEvaporatorEnd: ", 4, 4, "hex", 10], [" MaxTimeDefrostEvaporator: ", 8, 4, "hex", 1], [" LimitTempCondenserElectBoost: ", 12, 4, "hex", 10],
[" LimitTempCondenserDefrostTerm: ", 16, 4, "hex", 10], [" CompressorRestartDelay: ", 20, 2, "hex", 1], [" MainFanSpeed: ", 22, 2, "hex", 1]
[" LimitTempCondenserDefrostTerm: ", 16, 4, "hex", 10], [" p47CompressorRestartDelay: ", 20, 2, "hex", 1], [" p48MainFanSpeed: ", 22, 2, "hex", 1]
],
"04pxx206" => [["MaxDefrostDurationAAExchenger: ", 4, 2, "hex", 1], [" DefrostStartThreshold: ", 6, 4, "hex", 10], [" VolumeFlowFilterReplacement: ", 10, 4, "hex", 1]
],
@ -88,11 +88,11 @@ my %parsinghash = (
[" p24Hyst4: ", 10, 2, "hex", 10], [" p25Hyst5: ", 12, 2, "hex", 10], [" p26Hyst6: ", 14, 2, "hex", 10],
[" p27Hyst7: ", 16, 2, "hex", 10], [" p28Hyst8: ", 18, 2, "hex", 10], [" p29HystAsymmetry: ", 20, 2, "hex", 1],
[" p30integralComponent: ", 22, 4, "hex", 1], [" p31MaxBoostStages: ", 26, 2, "hex", 1], [" MaxHeatFlowTemp: ", 28, 4, "hex", 10],
[" p49SummerModeTemp: ", 32, 4, "hex", 10], [" p50SummerModeHysteresis: ", 36, 4, "hex", 10], [" p77OutTempAdjust: ", 40, 4, "hex", 1],
[" p78DualModePoint: ", 44, 4, "hex2int", 10], [" p79ReHeatingDelay: ", 48, 2, "hex", 1]
[" p49SummerModeTemp: ", 32, 4, "hex", 10], [" p50SummerModeHysteresis: ", 36, 4, "hex", 10], [" p77OutTempFilterTime: ", 40, 4, "hex", 1],
[" p78DualModePoint: ", 44, 4, "hex2int", 10],[" p79BoosterTimeoutHC: ", 48, 2, "hex", 1]
],
"07pxx206" => [["p32HystDHW: ", 4, 2, "hex", 10], [" p33BoosterTimeoutDHW: ", 6, 2, "hex", 1], [" p34TempLimitBoostDHW: ", 8, 4, "hex2int", 10], [" p35PasteurisationInterval: ", 12, 2, "hex", 1],
[" p36MaxDurationDHWLoad: ", 14, 2, "hex", 1], [" PasteurisationTemp: ", 16, 4, "hex", 10], [" MaxBoostStagesDHW: ", 20, 2, "hex", 1],
[" p36MaxDurationDHWLoad: ", 14, 2, "hex", 1], [" pasteurisationTemp: ", 16, 4, "hex", 10], [" maxBoostStagesDHW: ", 20, 2, "hex", 1],
[" p84EnableDHWBuffer: ", 22, 2, "hex", 1]
],
"08pxx206" => [["p80EnableSolar: ", 4, 2, "hex", 1], [" p81DiffTempSolarLoading: ", 6, 4, "hex", 10], [" p82DelayCompStartSolar: ", 10, 2, "hex", 1],
@ -109,16 +109,33 @@ my %parsinghash = (
"0Apxx206" => [["p54MinPumpCycles: ", 4, 2, "hex", 1], [" p55MaxPumpCycles: ", 6, 4, "hex", 1], [" p56OutTempMaxPumpCycles: ", 10, 4, "hex", 10],
[" p57OutTempMinPumpCycles: ", 14, 4, "hex", 10], [" p58SuppressTempCaptPumpStart: ", 18, 4, "hex", 1]
],
"0Bpxx206" => [["pHTG1StartTime: ", 4, 4, "hex2time", 1], [" pHTG1EndTime: ", 8, 4, "hex2time", 1], [" pHTG1Weekdays: ", 12, 2, "hex2wday", 1],
[" pHTG1Enable: ", 14, 2, "hex", 1], [" pHTG2StartTime: ", 16, 4, "hex2time", 1], [" pHTG2EndTime: ", 20, 4, "hex2time", 1],
[" pHTG2Weekdays: ", 24, 2, "hex2wday", 1], [" pHTG2Enable: ", 26, 2, "hex", 1]
"0Bpxx206" => [["progHC1StartTime: ", 4, 4, "hex2time", 1], [" progHC1EndTime: ", 8, 4, "hex2time", 1],
[" progHC1Monday: ", 13, 1, "bit0", 1], [" progHC1Tuesday: ", 13, 1, "bit1", 1],
[" progHC1Wednesday: ", 13, 1, "bit2", 1], [" progHC1Thursday: ", 13, 1, "bit3", 1],
[" progHC1Friday: ", 12, 1, "bit0", 1], [" progHC1Saturday: ", 12, 1, "bit1", 1],
[" progHC1Sunday: ", 12, 1, "bit2", 1], [" progHC1Enable: ", 14, 2, "hex", 1],
[" progHC2StartTime: ", 16, 4, "hex2time", 1], [" progHC2EndTime: ", 20, 4, "hex2time", 1],
[" progHC2Monday: ", 25, 1, "bit0", 1], [" progHC2Tuesday: ", 25, 1, "bit1", 1],
[" progHC2Wednesday: ", 25, 1, "bit2", 1], [" progHC2Thursday: ", 25, 1, "bit3", 1],
[" progHC2Friday: ", 24, 1, "bit0", 1], [" progHC2Saturday: ", 24, 1, "bit1", 1],
[" progHC2Sunday: ", 24, 1, "bit2", 1], [" progHC2Enable: ", 26, 2, "hex", 1]
],
"0Cpxx206" => [["pDHWStartTime: ", 4, 4, "hex2time", 1], [" pDHWEndTime: ", 8, 4, "hex2time", 1], [" pDHWWeekdays: ", 12, 2, "hex2wday", 1],
[" pDHWEnable: ", 14, 2, "hex", 1],
"0Cpxx206" => [["progDHWStartTime: ", 4, 4, "hex2time", 1], [" progDHWEndTime: ", 8, 4, "hex2time", 1],
[" progDHWMonday: ", 13, 1, "bit0", 1], [" progDHWTuesday: ", 13, 1, "bit1", 1],
[" progDHWWednesday: ", 13, 1, "bit2", 1], [" progDHWThursday: ", 13, 1, "bit3", 1],
[" progDHWFriday: ", 12, 1, "bit0", 1], [" progDHWSaturday: ", 12, 1, "bit1", 1],
[" progDHWSunday: ", 12, 1, "bit2", 1], [" progDHWEnable: ", 14, 2, "hex", 1],
],
"0Dpxx206" => [["pFAN1StartTime: ", 4, 4, "hex2time", 1], [" pFAN1EndTime: ", 8, 4, "hex2time", 1], [" pFAN1Weekdays: ", 12, 2, "hex2wday", 1],
[" pFAN1Enable: ", 14, 2, "hex", 1], [" pFAN2StartTime: ", 16, 4, "hex2time", 1], [" pFAN2EndTime: ", 20, 4, "hex2time", 1],
[" pFAN2Weekdays: ", 24, 2, "hex2wday", 1], [" pFAN2Enable: ", 26, 2, "hex", 1]
"0Dpxx206" => [["progFAN1StartTime: ", 4, 4, "hex2time", 1], [" progFAN1EndTime: ", 8, 4, "hex2time", 1],
[" progFAN1Monday: ", 13, 1, "bit0", 1], [" progFAN1Tuesday: ", 13, 1, "bit1", 1],
[" progFAN1Wednesday: ", 13, 1, "bit2", 1], [" progFAN1Thursday: ", 13, 1, "bit3", 1],
[" progFAN1Friday: ", 12, 1, "bit0", 1], [" progFAN1Saturday: ", 12, 1, "bit1", 1],
[" progFAN1Sunday: ", 12, 1, "bit2", 1], [" progFAN1Enable: ", 14, 2, "hex", 1],
[" progFAN2StartTime: ", 16, 4, "hex2time", 1], [" progFAN2EndTime: ", 20, 4, "hex2time", 1],
[" progFAN2Monday: ", 25, 1, "bit0", 1], [" progFAN2Tuesday: ", 25, 1, "bit1", 1],
[" progFAN2Wednesday: ", 25, 1, "bit2", 1], [" progFAN2Thursday: ", 25, 1, "bit3", 1],
[" progFAN2Friday: ", 24, 1, "bit0", 1], [" progFAN2Saturday: ", 24, 1, "bit1", 1],
[" progFAN2Sunday: ", 24, 1, "bit2", 1], [" progFAN2Enable: ", 26, 2, "hex", 1]
],
"0Epxx206" => [["p59RestartBeforeSetbackEnd: ", 4, 4, "hex", 1]
],
@ -127,10 +144,9 @@ my %parsinghash = (
"10pxx206" => [["p70StartDryHeat: ", 4, 2, "hex", 1], [" p71BaseTemp: ", 6, 4, "hex", 10], [" p72PeakTemp: ", 10, 4, "hex", 10],
[" p73TempDuration: ", 14, 4, "hex", 1], [" p74TempIncrease: ", 18, 4, "hex", 10]
],
"16sol" => [["collector_temp: ", 4, 4, "hex2int", 10], [" dhw_temp: ", 8, 4, "hex2int", 10],
[" flow_temp: ", 12, 4, "hex2int", 10], [" ed_sol_pump_temp: ", 16, 4, "hex2int", 10],
[" x20: ", 20, 4, "hex2int", 1], [" x24: ", 24, 4, "hex2int", 1],
[" x28: ", 28, 4, "hex2int", 1], [" x32: ", 32, 2, "hex2int", 1]
"16sol" => [["collectorTemp: ", 4, 4, "hex2int", 10], [" dhwTemp: ", 8, 4, "hex2int", 10],
[" flowTemp: ", 12, 4, "hex2int", 10], [" edSolPump: ", 16, 2, "hex2int", 1],
[" out: ", 26, 4, "raw", 1], [" status: ", 30, 2, "raw", 1]
],
"17pxx206" => [["p01RoomTempDay: ", 4, 4, "hex", 10], [" p02RoomTempNight: ", 8, 4, "hex", 10],
[" p03RoomTempStandby: ", 12, 4, "hex", 10], [" p04DHWsetTempDay: ", 16, 4, "hex", 10],
@ -151,49 +167,48 @@ my %parsinghash = (
[" fault2CODE: ", 32, 4, "faultmap", 1], [" fault2TIME: ", 36, 4, "hex2time", 1], [" fault2DATE: ", 40, 4, "hexdate", 1],
[" fault3CODE: ", 44, 4, "faultmap", 1], [" fault3TIME: ", 48, 4, "hex2time", 1], [" fault3DATE: ", 52, 4, "hexdate", 1]
],
"EEprg206" => [["OpMode: ", 4, 2, "hex", 1], [" ProgStateHC: ", 10, 2, "opmodehc", 1], [" ProgStateDHW: ", 12, 2, "opmodehc", 1],
"EEprg206" => [["opMode: ", 4, 2, "opmode2", 1], [" ProgStateHC: ", 10, 2, "opmodehc", 1], [" ProgStateDHW: ", 12, 2, "opmodehc", 1],
[" ProgStateFAN: ", 14, 2, "opmodehc", 1], [" BaseTimeAP0: ", 16, 8, "hex", 1], [" StatusAP0: ", 24, 2, "hex", 1],
[" StartTimeAP0: ", 26, 8, "hex", 1], [" EndTimeAP0: ", 34, 8, "hex", 1]
],
"F3dhw" => [["dhw_temp: ", 4, 4, "hex2int", 10], [" outside_temp: ", 8, 4, "hex2int", 10],
[" dhw_set_temp: ", 12, 4, "hex2int", 10], [" comp_block_time: ", 16, 4, "hex2int", 1],
[" x20: ", 20, 4, "hex2int", 1], [" heat_block_time: ", 24, 4, "hex2int", 1],
[" BoosterStage: ", 28, 2, "hex", 1], [" x30: ", 30, 4, "hex", 1],
[" opMode: ", 34, 2, "opmodehc", 1], [" x36: ", 36, 4, "hex", 1]
"F3dhw" => [["dhwTemp: ", 4, 4, "hex2int", 10], [" outsideTemp: ", 8, 4, "hex2int", 10],
[" dhwSetTemp: ", 12, 4, "hex2int", 10], [" compBlockTime: ", 16, 4, "hex2int", 1],
[" out: ", 20, 4, "raw", 1], [" heatBlockTime: ", 24, 4, "hex2int", 1],
[" dhwBoosterStage: ", 28, 2, "hex", 1], [" pasteurisationMode: ", 32, 2, "hex", 1],
[" dhwOpMode: ", 34, 2, "opmodehc", 1], [" x36: ", 36, 4, "raw", 1]
],
"F4hc1" => [["outsideTemp: ", 4, 4, "hex2int", 10], [" x08: ", 8, 4, "hex2int", 10],
[" returnTemp: ", 12, 4, "hex2int", 10], [" integralHeat: ", 16, 4, "hex2int", 1],
[" flowTemp: ", 20, 4, "hex2int", 10], [" heatSetTemp: ", 24, 4, "hex2int", 10],
[" heatTemp: ", 28, 4, "hex2int", 10],
[" seasonMode: ", 38, 2, "somwinmode", 1], #[" x40: ", 40, 4, "hex2int", 1],
[" integralSwitch: ", 44, 4, "hex2int", 1], [" opMode: ", 48, 2, "opmodehc", 1],
[" integralSwitch: ", 44, 4, "hex2int", 1], [" hcOpMode: ", 48, 2, "opmodehc", 1],
#[" x52: ", 52, 4, "hex2int", 1],
[" roomSetTemp: ", 56, 4, "hex2int", 10], [" x60: ", 60, 4, "hex2int", 10],
[" x64: ", 64, 4, "hex2int", 10], [" insideTempRC: ", 68, 4, "hex2int", 10],
[" x72: ", 72, 4, "hex2int", 10], [" x76: ", 76, 4, "hex2int", 10],
[" onHysteresisNo: ", 32, 2, "hex", 1], [" offHysteresisNo: ", 34, 2, "hex", 1],
[" HCBoosterStage: ", 36, 2, "hex", 1]
[" hcBoosterStage: ", 36, 2, "hex", 1]
],
"F4hc1214" => [["outsideTemp: ", 4, 4, "hex2int", 10], [" x08: ", 8, 4, "hex2int", 10],
"F4hc1214" => [["outsideTemp: ", 4, 4, "hex2int", 10], [" x08: ", 8, 4, "raw", 1],
[" returnTemp: ", 12, 4, "hex2int", 10], [" integralHeat: ", 16, 4, "hex2int", 1],
[" flowTemp: ", 20, 4, "hex2int", 10], [" heatSetTemp: ", 24, 4, "hex2int", 10],
[" heatTemp: ", 28, 4, "hex2int", 10],
[" seasonMode: ", 38, 2, "somwinmode", 1], #[" x40: ", 40, 4, "hex2int", 1],
[" integralSwitch: ", 44, 4, "hex2int", 1], [" opMode: ", 48, 2, "opmodehc", 1],
#[" x52: ", 52, 4, "hex2int", 1],
[" seasonMode: ", 38, 2, "somwinmode", 1],
[" integralSwitch: ", 44, 4, "hex2int", 1], [" hcOpMode: ", 48, 2, "opmodehc", 1],
[" roomSetTemp: ", 62, 4, "hex2int", 10], [" x60: ", 60, 4, "hex2int", 10],
[" x64: ", 64, 4, "hex2int", 10], [" insideTempRC: ", 68, 4, "hex2int", 10],
[" x72: ", 72, 4, "hex2int", 10], [" x76: ", 76, 4, "hex2int", 10],
[" x64: ", 64, 4, "raw", 1], [" insideTempRC: ", 68, 4, "hex2int", 10],
[" x72: ", 72, 4, "raw", 1], [" x76: ", 76, 4, "raw", 1],
[" onHysteresisNo: ", 32, 2, "hex", 1], [" offHysteresisNo: ", 34, 2, "hex", 1],
[" HCBoosterStage: ", 36, 2, "hex", 1]
[" hcBoosterStage: ", 36, 2, "hex", 1]
],
"F5hc2" => [["outsideTemp: ", 4, 4, "hex2int", 10], [" returnTemp: ", 8, 4, "hex2int", 10],
[" vorlaufTemp: ", 12, 4, "hex2int", 10], [" heatSetTemp: ", 16, 4, "hex2int", 10],
[" heatTemp: ", 20, 4, "hex2int", 10], [" stellgroesse: ", 24, 4, "hex2int", 10],
[" seasonMode: ", 30, 2, "somwinmode",1], [" opMode: ", 36, 2, "opmodehc", 1]
[" seasonMode: ", 30, 2, "somwinmode",1], [" hcOpMode: ", 36, 2, "opmodehc", 1]
],
"F6sys206" => [["UserSetFanStage: ", 30, 2, "hex", 1], [" UserSetFanRemainingTime: ", 36, 4, "hex", 1],
[" LastErrors: ", 4, 8, "hex2error", 1],
"F6sys206" => [["userSetFanStage: ", 30, 2, "hex", 1], [" userSetFanRemainingTime: ", 36, 4, "hex", 1],
[" lastErrors: ", 4, 8, "hex2error", 1],
],
"FBglob" => [["outsideTemp: ", 8, 4, "hex2int", 10], [" flowTemp: ", 12, 4, "hex2int", 10],
[" returnTemp: ", 16, 4, "hex2int", 10], [" hotGasTemp: ", 20, 4, "hex2int", 10],
@ -214,7 +229,7 @@ my %parsinghash = (
[" dewPoint: ", 82, 4, "hex2int", 10],
[" P_Nd: ", 86, 4, "hex2int", 100], [" P_Hd: ", 90, 4, "hex2int", 100],
[" actualPower_Qc: ", 94, 8, "esp_mant", 1], [" actualPower_Pel: ", 102, 8, "esp_mant", 1],
[" collectorTemp: ", 4, 4, "hex2int", 10], [" insideTemp: ", 32, 4, "hex2int", 10] #, [" x84: ", 84, 4, "donottouch", 1]
[" collectorTemp: ", 4, 4, "hex2int", 10], [" insideTemp: ", 32, 4, "hex2int", 10]
],
"FBglob206" => [["outsideTemp: ", 8, 4, "hex2int", 10], [" flowTemp: ", 12, 4, "hex2int", 10],
[" returnTemp: ", 16, 4, "hex2int", 10], [" hotGasTemp: ", 20, 4, "hex2int", 10],
@ -225,17 +240,17 @@ my %parsinghash = (
[" dhwPump: ", 45, 1, "bit1", 1], [" heatingCircuitPump: ", 45, 1, "bit0", 1],
[" solarPump: ", 44, 1, "bit2", 1], [" compressor: ", 44, 1, "bit0", 1],
[" boosterStage3: ", 44, 1, "bit3", 1], [" boosterStage2: ", 44, 1, "n.a.", 1],
[" boosterStage1: ", 44, 1, "bit1", 1], [" highPressureSensor: ", 49, 1, "n.a.", 1],
[" lowPressureSensor: ", 49, 1, "n.a.", 1], [" evaporatorIceMonitor: ", 49, 1, "n.a.", 1],
[" signalAnode: ", 49, 1, "n.a.", 1], [" evuRelease: ", 48, 1, "n.a.", 1],
[" ovenFireplace: ", 48, 1, "n.a.", 1], [" STB: ", 48, 1, "n.a.", 1],
[" outputVentilatorPower: ",48, 2, "hex", 1], [" inputVentilatorPower: ", 50, 2, "hex", 1], [" mainVentilatorPower: ", 52, 2, "hex", 1],
[" boosterStage1: ", 44, 1, "bit1", 1], [" highPressureSensor: ", 54, 1, "bit3", 1],
[" lowPressureSensor: ", 54, 1, "bit2", 1], [" evaporatorIceMonitor: ", 55, 1, "bit3", 1],
[" signalAnode: ", 54, 1, "bit1", 1], [" evuRelease: ", 48, 1, "n.a.", 1],
[" ovenFireplace: ", 54, 1, "bit0", 1], [" STB: ", 48, 1, "n.a.", 1],
[" outputVentilatorPower: ",48, 2, "hex", 1], [" inputVentilatorPower: ", 50, 2, "hex", 1], [" mainVentilatorPower: ", 52, 2, "hex", 255/100],
[" outputVentilatorSpeed: ",56, 2, "hex", 1], [" inputVentilatorSpeed: ", 58, 2, "hex", 1], [" mainVentilatorSpeed: ", 60, 2, "hex", 1],
[" outside_tempFiltered: ",64, 4, "hex2int", 10], [" relHumidity: ", 70, 4, "n.a.", 1],
[" outsideTempFiltered: ",64, 4, "hex2int", 10], [" relHumidity: ", 70, 4, "n.a.", 1],
[" dewPoint: ", 5, 4, "n.a.", 1],
[" P_Nd: ", 5, 4, "n.a.", 1], [" P_Hd: ", 5, 4, "n.a.", 1],
[" actualPower_Qc: ", 5, 8, "n.a.", 1], [" actualPower_Pel: ", 5, 8, "n.a.", 1],
[" collectorTemp: ", 4, 4, "hex2int", 10], [" insideTemp: ", 32, 4, "hex2int", 10] #, [" x84: ", 84, 4, "donottouch", 1]
[" collectorTemp: ", 4, 4, "hex2int", 10], [" insideTemp: ", 32, 4, "hex2int", 10]
],
"FCtime" => [["Weekday: ", 5, 1, "weekday", 1], [" Hour: ", 6, 2, "hex", 1],
[" Min: ", 8, 2, "hex", 1], [" Sec: ", 10, 2, "hex", 1],
@ -524,19 +539,112 @@ my %sets206 = (
"p03RoomTempStandby" => {parent=>"p01-p12", argMin => "10", argMax => "30", unit =>" °C"},
"p04DHWsetTempDay" => {parent=>"p01-p12", argMin => "10", argMax => "55", unit =>" °C"},
"p05DHWsetTempNight" => {parent=>"p01-p12", argMin => "10", argMax => "55", unit =>" °C"},
"p06DHWsetTempStandby"=> {parent=>"p01-p12", argMin => "10", argMax => "55", unit =>" °C"},
"p06DHWsetTempStandby" => {parent=>"p01-p12", argMin => "10", argMax => "55", unit =>" °C"},
"p07FanStageDay" => {parent=>"p01-p12", argMin => "0", argMax => "3", unit =>""},
"p08FanStageNight" => {parent=>"p01-p12", argMin => "0", argMax => "3", unit =>""},
"p09FanStageStandby" => {parent=>"p01-p12", argMin => "0", argMax => "3", unit =>""},
"p10HCTempManual" => {parent=>"p01-p12", argMin => "10", argMax => "65", unit =>" °C"},
"p11DHWsetTempManual" => {parent=>"p01-p12", argMin => "10", argMax => "65", unit =>" °C"},
"p12FanStageManual" => {parent=>"p01-p12", argMin => "0", argMax => "3", unit =>""},
"p13GradientHC1" => {parent=>"pHeat1", argMin => "0", argMax => "5", unit =>""},
"p14LowEndHC1" => {parent=>"pHeat1", argMin => "0", argMax => "20", unit =>" K"},
"p15RoomInfluenceHC1" => {parent=>"pHeat1", argMin => "0", argMax => "10", unit =>""},
"p16GradientHC2" => {parent=>"pHeat1", argMin => "0", argMax => "5", unit =>""},
"p17LowEndHC2" => {parent=>"pHeat1", argMin => "0", argMax => "10", unit =>" K"},
"p18RoomInfluenceHC2" => {parent=>"pHeat1", argMin => "0", argMax => "10", unit =>""},
"p19FlowProportionHC1" => {parent=>"pHeat1", argMin => "0", argMax => "100", unit =>" %"},
"p20FlowProportionHC2" => {parent=>"pHeat1", argMin => "0", argMax => "100", unit =>" %"},
"p21Hyst1" => {parent=>"pHeat2", argMin => "0", argMax => "10", unit =>" K"},
"p22Hyst2" => {parent=>"pHeat2", argMin => "0", argMax => "10", unit =>" K"},
"p23Hyst3" => {parent=>"pHeat2", argMin => "0", argMax => "5", unit =>" K"},
"p24Hyst4" => {parent=>"pHeat2", argMin => "0", argMax => "5", unit =>" K"},
"p25Hyst5" => {parent=>"pHeat2", argMin => "0", argMax => "5", unit =>" K"},
"p29HystAsymmetry" => {parent=>"pHeat2", argMin => "1", argMax => "5", unit =>""},
"p30integralComponent" => {parent=>"pHeat2", argMin => "10", argMax => "999", unit =>" Kmin"},
"p32HystDHW" => {parent=>"pDHW", argMin => "2", argMax => "10", unit =>" K"},
"p33BoosterTimeoutDHW" => {parent=>"pDHW", argMin => "0", argMax => "240", unit =>" min"},
"p34TempLimitBoostDHW" => {parent=>"pDHW", argMin => "-10", argMax => "10", unit =>" °C"},
"p35PasteurisationInterval" => {parent=>"pDHW", argMin => "3", argMax => "30", unit =>" Tage"},
"p36MaxDurationDHWLoad" => {parent=>"pDHW", argMin => "6", argMax => "12", unit =>" h"},
"p37Fanstage1AirflowInlet" => {parent=>"pFan", argMin => "60", argMax => "250", unit =>" m3/h"},
"p38Fanstage2AirflowInlet" => {parent=>"pFan", argMin => "60", argMax => "250", unit =>" m3/h"},
"p39Fanstage3AirflowInlet" => {parent=>"pFan", argMin => "60", argMax => "250", unit =>" m3/h"},
"p40Fanstage1AirflowOutlet" => {parent=>"pFan", argMin => "60", argMax => "250", unit =>" m3/h"},
"p41Fanstage2AirflowOutlet" => {parent=>"pFan", argMin => "60", argMax => "250", unit =>" m3/h"},
"p42Fanstage3AirflowOutlet" => {parent=>"pFan", argMin => "60", argMax => "250", unit =>" m3/h"},
"p43UnschedVent3" => {parent=>"pFan", argMin => "0", argMax => "1000", unit =>" min"},
"p44UnschedVent2" => {parent=>"pFan", argMin => "0", argMax => "1000", unit =>" min"},
"p45UnschedVent1" => {parent=>"pFan", argMin => "0", argMax => "1000", unit =>" min"},
"p46UnschedVent0" => {parent=>"pFan", argMin => "0", argMax => "1000", unit =>" min"},
"p47CompressorRestartDelay" => {parent=>"pDefrostEva", argMin => "0", argMax => "20", unit =>" min"},
"p48MainFanSpeed" => {parent=>"pDefrostEva", argMin => "0", argMax => "100", unit =>" %"},
"p49SummerModeTemp" => {parent=>"pHeat2", argMin => "10", argMax => "24", unit =>" °C"},
"p50SummerModeHysteresis" => {parent=>"pHeat2", argMin => "1", argMax => "5", unit =>" K"},
"p54MinPumpCycles" => {parent=>"pCircPump", argMin => "1", argMax => "24", unit =>" /Tag"},
"p55MaxPumpCycles" => {parent=>"pCircPump", argMin => "25", argMax => "288", unit =>" /Tag"},
"p56OutTempMaxPumpCycles" => {parent=>"pCircPump", argMin => "0", argMax => "20", unit =>" °C"},
"p57OutTempMinPumpCycles" => {parent=>"pCircPump", argMin => "0", argMax => "25", unit =>" °C"},
"p58SuppressTempCaptPumpStart"=> {parent=>"pCircPump", argMin => "0", argMax => "120", unit =>" s"},
"p75PassiveCooling" => {parent=>"pFan", argMin => "0", argMax => "1", unit =>""},
"p77OutTempFilterTime" => {parent=>"pHeat2", argMin => "0", argMax => "24", unit =>" h"},
"p78DualModePoint" => {parent=>"pHeat2", argMin => "-10", argMax => "20", unit =>" °C"},
"p79BoosterTimeoutHC" => {parent=>"pHeat2", argMin => "0", argMax => "60", unit =>" min"},
"p80EnableSolar" => {parent=>"pSolar", argMin => "0", argMax => "1", unit =>""},
"pClockDay" => {parent=>"sTimedate", argMin => "1", argMax => "31", unit =>""},
"pClockMonth" => {parent=>"sTimedate", argMin => "1", argMax => "12", unit =>""},
"pClockYear" => {parent=>"sTimedate", argMin => "12", argMax => "20", unit =>""},
"pClockHour" => {parent=>"sTimedate", argMin => "0", argMax => "23", unit =>""},
"pClockMinutes" => {parent=>"sTimedate", argMin => "0", argMax => "59", unit =>""}
"pClockMinutes" => {parent=>"sTimedate", argMin => "0", argMax => "59", unit =>""},
"progDHWStartTime" => {parent=>"pDHWProg", argMin => "00:00", argMax => "23:59", unit =>""},
"progDHWEndTime" => {parent=>"pDHWProg", argMin => "00:00", argMax => "23:59", unit =>""},
"progDHWEnable" => {parent=>"pDHWProg", argMin => "0", argMax => "1", unit =>""},
"progDHWMonday" => {parent=>"pDHWProg", argMin => "0", argMax => "1", unit =>""},
"progDHWTuesday" => {parent=>"pDHWProg", argMin => "0", argMax => "1", unit =>""},
"progDHWWednesday" => {parent=>"pDHWProg", argMin => "0", argMax => "1", unit =>""},
"progDHWThursday" => {parent=>"pDHWProg", argMin => "0", argMax => "1", unit =>""},
"progDHWFriday" => {parent=>"pDHWProg", argMin => "0", argMax => "1", unit =>""},
"progDHWSaturday" => {parent=>"pDHWProg", argMin => "0", argMax => "1", unit =>""},
"progDHWSunday" => {parent=>"pDHWProg", argMin => "0", argMax => "1", unit =>""},
"progHC1StartTime" => {parent=>"pHeatProg", argMin => "00:00", argMax => "23:59", unit =>""},
"progHC1EndTime" => {parent=>"pHeatProg", argMin => "00:00", argMax => "23:59", unit =>""},
"progHC1Enable" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC1Monday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC1Tuesday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC1Wednesday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC1Thursday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC1Friday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC1Saturday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC1Sunday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC2StartTime" => {parent=>"pHeatProg", argMin => "00:00", argMax => "23:59", unit =>""},
"progHC2EndTime" => {parent=>"pHeatProg", argMin => "00:00", argMax => "23:59", unit =>""},
"progHC2Enable" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC2Monday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC2Tuesday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC2Wednesday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC2Thursday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC2Friday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC2Saturday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progHC2Sunday" => {parent=>"pHeatProg", argMin => "0", argMax => "1", unit =>""},
"progFAN1StartTime" => {parent=>"pFanProg", argMin => "00:00", argMax => "23:59", unit =>""},
"progFAN1EndTime" => {parent=>"pFanProg", argMin => "00:00", argMax => "23:59", unit =>""},
"progFAN1Enable" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN1Monday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN1Tuesday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN1Wednesday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN1Thursday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN1Friday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN1Saturday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN1Sunday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN2StartTime" => {parent=>"pFanProg", argMin => "00:00", argMax => "23:59", unit =>""},
"progFAN2EndTime" => {parent=>"pFanProg", argMin => "00:00", argMax => "23:59", unit =>""},
"progFAN2Enable" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN2Monday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN2Tuesday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN2Wednesday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN2Thursday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN2Friday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN2Saturday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""},
"progFAN2Sunday" => {parent=>"pFanProg", argMin => "0", argMax => "1", unit =>""}
);
my %setsonly214 = (
@ -588,13 +696,12 @@ my %getsonly539 = ( #info from belu and godmorgon
"sHumProtection" => {cmd2=>"0A09D1", type =>"1clean", unit =>""},
"sSetHumidityMin" => {cmd2=>"0A09D2", type =>"1clean", unit =>" %"},
"sSetHumidityMax" => {cmd2=>"0A09D3", type =>"1clean", unit =>" %"},
"sCoolHCTotal" => {cmd2=>"0A0648", cmd3=>"0A0649", type =>"1clean", unit =>" kWh"},
"sCoolHCTotal" => {cmd2=>"0A0648", cmd3 =>"0A0649", type =>"1clean", unit =>" kWh"},
"sDewPointHC1" => {cmd2=>"0B0264", type =>"5temp", unit =>" °C"}
);
%getsonly539=(%getsonly539, %getsonly439);
my %getsonly2xx = (
"pExpert" => {cmd2=>"02", type =>"02pxx206", unit =>""},
"pDefrostEva" => {cmd2=>"03", type =>"03pxx206", unit =>""},
"pDefrostAA" => {cmd2=>"04", type =>"04pxx206", unit =>""},
"pHeat1" => {cmd2=>"05", type =>"05pxx206", unit =>""},
@ -615,9 +722,14 @@ my %getsonly2xx = (
"sHC2" => {cmd2=>"F5", type =>"F5hc2", unit =>""},
"sSystem" => {cmd2=>"F6", type =>"F6sys206", unit =>""},
"sHistory" => {cmd2=>"09", type =>"09his206", unit =>""},
# "sLast10errors" => {cmd2=>"D1", type =>"D1last206", unit =>""}, removed after andres hint; 33211.msg658108
"sGlobal" => {cmd2=>"FB", type =>"FBglob206", unit =>""}, #allFB
"sGlobal" => {cmd2=>"FB", type =>"FBglob206", unit =>""},
"sTimedate" => {cmd2=>"FC", type =>"FCtime206", unit =>""},
"inputVentilatorSpeed"=> {parent=>"sGlobal", unit =>" %"},
"outputVentilatorSpeed"=>{parent=>"sGlobal", unit =>" %"},
"mainVentilatorSpeed" => {parent=>"sGlobal", unit =>" %"},
"inputVentilatorPower"=> {parent=>"sGlobal", unit =>" %"},
"outputVentilatorPower"=>{parent=>"sGlobal", unit =>" %"},
"mainVentilatorPower" => {parent=>"sGlobal", unit =>" %"},
);
my %getsonly206 = (
"sHC1" => {cmd2=>"F4", type =>"F4hc1", unit =>""},
@ -626,23 +738,31 @@ my %getsonly206 = (
"sFirmware" => {cmd2=>"FD", type =>"FDfirm", unit =>""},
"sFirmware-Id" => {cmd2=>"FE", type =>"FEfirmId", unit =>""},
);
my %getsonly214 = (
"pFan" => {cmd2=>"01", type =>"01pxx214", unit =>""},
"pExpert" => {cmd2=>"02", type =>"02pxx206", unit =>""},
"sControl" => {cmd2=>"F2", type =>"F2type", unit =>""},
"sHC1" => {cmd2=>"F4", type =>"F4hc1214", unit =>""},
"sLVR" => {cmd2=>"E8", type =>"E8tyype", unit =>""},
"sF0" => {cmd2=>"F0", type =>"F0type", unit =>""},
"sF1" => {cmd2=>"F1", type =>"F1type", unit =>""},
"sEF" => {cmd2=>"EF", type =>"EFtype", unit =>""},
);
my %sets=(%sets439539common, %sets439only);
my %gets=(%getsonly439, %sets);
my %OpMode = ("1" =>"standby", "11" => "automatic", "3" =>"DAYmode", "4" =>"setback", "5" =>"DHWmode", "14" =>"manual", "0" =>"emergency");
my %Rev_OpMode = reverse %OpMode;
my %OpModeHC = ("1" =>"normal", "2" => "setback", "3" =>"standby", "4" =>"restart", "5" =>"restart");
my %SomWinMode = ( "01" =>"winter", "02" => "summer");
my %weekday = ( "0" =>"Monday", "1" => "Tuesday", "2" =>"Wednesday", "3" => "Thursday", "4" => "Friday", "5" =>"Saturday", "6" => "Sunday" );
my %weekdaymap = ( "1" =>"Mon", "2" => "Tue", "3" =>"Wed", "4" => "Thu", "5" => "Fri", "6" =>"Sat", "7" => "Sun" );
my %faultmap = ( "0" =>"n.a.", "1" => "F01_AnodeFault", "2" => "F02_SafetyTempDelimiterEngaged", "3" => "F03_HighPreasureGuardFault", "4" => "F04_LowPreasureGuardFault", "5" => "F05_OutletFanFault", "6" => "F06_InletFanFault", "7" => "F07_MainOutputFanFault", "11" => "F11_LowPreasureSensorFault", "12"=> "F12_HighPreasureSensorFault", "15" => "F15_DHW_TemperatureFault", "17" => "F17_DefrostingDurationExceeded", "20" => "F20_SolarSensorFault", "21" => "F21_OutsideTemperatureSensorFault", "22" => "F22_HotGasTemperatureFault", "23" => "F23_CondenserTemperatureSensorFault", "24" => "F24_EvaporatorTemperatureSensorFault", "26" => "F26_ReturnTemperatureSensorFault", "28" => "F28_FlowTemperatureSensorFault", "29" => "F29_DHW_TemperatureSensorFault", "30" => "F30_SoftwareVersionFault", "31" => "F31_RAMfault", "32" => "F32_EEPromFault", "33" => "F33_ExtractAirHumiditySensor", "34" => "F34_FlowSensor", "35" => "F35_minFlowCooling", "36" => "F36_MinFlowRate", "37" => "F37_MinWaterPressure", "40" => "F40_FloatSwitch", "50" => "F50_SensorHeatPumpReturn", "51" => "F51_SensorHeatPumpFlow", "52" => "F52_SensorCondenserOutlet" );
my $firstLoadAll = 0;
my $noanswerreceived = 0;
my %sets= (%sets439539common, %sets439only);
my %gets= (%getsonly439, %sets);
my %OpMode= ("1" =>"standby", "11" => "automatic", "3" =>"DAYmode", "4" =>"setback", "5" =>"DHWmode", "14" =>"manual", "0" =>"emergency");
my %Rev_OpMode= reverse %OpMode;
my %OpModeHC= ("1" =>"normal", "2" => "setback", "3" =>"standby", "4" =>"restart", "5" =>"restart");
my %opMode2= ("0" =>"manual", "1" => "automatic");
my %SomWinMode= ("01" =>"winter", "02" => "summer");
my %weekday= ("0" =>"Monday", "1" => "Tuesday", "2" =>"Wednesday", "3" => "Thursday", "4" => "Friday", "5" =>"Saturday", "6" => "Sunday" );
#my %weekdaymap= ( "1" =>"Mon", "2" => "Tue", "3" =>"Wed", "4" => "Thu", "5" => "Fri", "6" =>"Sat", "7" => "Sun" );
my %faultmap= ( "0" =>"n.a.", "1" => "F01_AnodeFault", "2" => "F02_SafetyTempDelimiterEngaged", "3" => "F03_HighPreasureGuardFault", "4" => "F04_LowPreasureGuardFault", "5" => "F05_OutletFanFault", "6" => "F06_InletFanFault", "7" => "F07_MainOutputFanFault", "11" => "F11_LowPreasureSensorFault", "12"=> "F12_HighPreasureSensorFault", "15" => "F15_DHW_TemperatureFault", "17" => "F17_DefrostingDurationExceeded", "20" => "F20_SolarSensorFault", "21" => "F21_OutsideTemperatureSensorFault", "22" => "F22_HotGasTemperatureFault", "23" => "F23_CondenserTemperatureSensorFault", "24" => "F24_EvaporatorTemperatureSensorFault", "26" => "F26_ReturnTemperatureSensorFault", "28" => "F28_FlowTemperatureSensorFault", "29" => "F29_DHW_TemperatureSensorFault", "30" => "F30_SoftwareVersionFault", "31" => "F31_RAMfault", "32" => "F32_EEPromFault", "33" => "F33_ExtractAirHumiditySensor", "34" => "F34_FlowSensor", "35" => "F35_minFlowCooling", "36" => "F36_MinFlowRate", "37" => "F37_MinWaterPressure", "40" => "F40_FloatSwitch", "50" => "F50_SensorHeatPumpReturn", "51" => "F51_SensorHeatPumpFlow", "52" => "F52_SensorCondenserOutlet" );
my $firstLoadAll= 0;
my $noanswerreceived= 0;
my $internalHash;
########################################################################################
@ -1029,6 +1149,9 @@ sub THZ_Set($@){
$arg *= $dec if ($dec != 1);
$arg = time2quaters($arg) if ($parsingtype eq "quater");
$arg= join('', (split(':', $arg))) if ($parsingtype eq "hex2time"); # only in firmware 2.x
#$arg= eval(join('*100+', (split(':', $arg)))) if ($parsingtype eq "hex2time"); #just in case the above does not work
$arg=(hex(substr($msg, $pos, 1)) & (15-2**$1)) | (2**$1*$arg) if ($parsingtype =~ /bit(\d)/);
$arg = substr((sprintf(("%0".$len."X"), $arg)), (-1*$len)); #04X converts to hex and fills up 0s; for negative, it must be trunckated.
substr($msg, $pos, $len, $arg);
@ -1643,10 +1766,11 @@ sub THZ_Parse1($$) {
elsif ($Type eq "swver") {$value= sprintf("%01u.%02u", hex(substr($value, 0,2)), hex(substr($value, 2,2)));}
elsif ($Type eq "hex2ascii") {$value= uc(pack('H*', $value));}
elsif ($Type eq "opmode") {$value= $OpMode{hex($value)};}
elsif ($Type eq "opmode2") {$value= $opMode2{hex($value)};}
elsif ($Type eq "opmodehc") {$value= $OpModeHC{hex($value)};}
elsif ($Type eq "esp_mant") {$value= sprintf("%.3f", unpack('f', pack( 'L', reverse(hex($value)))));}
elsif ($Type eq "somwinmode") {$value= $SomWinMode{($value)};}
elsif ($Type eq "hex2wday") {$value= bitmap2string(unpack('b7', pack('H*',$value)), \%weekdaymap);}
#elsif ($Type eq "hex2wday") {$value= bitmap2string(unpack('b7', pack('H*',$value)), \%weekdaymap);}
elsif ($Type eq "hex2error") {$value= bitmap2string(unpack('b32', pack('H*',$value)), \%faultmap);}
elsif ($Type eq "weekday") {$value= $weekday{($value)};}
elsif ($Type eq "faultmap") {$value= $faultmap{(hex($value))};}
@ -1657,6 +1781,7 @@ sub THZ_Parse1($$) {
elsif ($Type eq "bit3") {$value= (hex($value) & 0b1000) / 0b1000;}
elsif ($Type eq "nbit0") {$value= 1-((hex($value) & 0b0001) / 0b0001);}
elsif ($Type eq "nbit1") {$value= 1-((hex($value) & 0b0010) / 0b0010);}
elsif ($Type eq "raw") {;}
elsif ($Type eq "n.a.") {$value= "n.a.";}
$value = $value/$divisor if ($divisor != 1);
$ParsedMsg .= $parsingtitle . $value;