Skip to content

heishamon crashes on 4.1 #851

Description

@shikon

Heishamon stays alive for about 8-12 hours each day since I upgraded to 4.1, so I went back to 4.0 which is much more stable.
I am running a somewhat big rule set.

Where do I start with helping to debug what is causing this?

heisha big.

rule set

on System#Boot then
#allowOTT = 1;
#allowExtRunTime = 1;
#allowPumpSpeed = 1;
#allowSilentMode = 1;
#allowWAR = 1;
#maxTa = 40;

#chE = 0;
#disableTime = -1;
#enableTime = -1;
#compRunTime = -1;
#compStartTime = -1;
#compState = -1;
#DHWRun = -1;
#firstBoot = 1;
#roomTDelta = -1;
#silentMode = -1;
#timeRef = -1;
#maxPumpFlow = 8;
setTimer(1,30);
setTimer(2,25);

end

on eXtRunTime then
if #allowExtRunTime == 1 then
#allowExtRunTime = 2;
$hM = @Heating_Mode;
$oST = @Outside_Temp;
$hRT = @Z1_Heat_Request_Temp;
if $hM == 1 then
$hRT = $hRT - #maxTa;
end
$mOT = @Main_Outlet_Temp;
$mTT = @Main_Target_Temp;
if #compState == 1 then
if $oST > 4 && #compRunTime > 10 then
if $mOT > (1.6 + $mTT) then
$hRT = 1 + $hRT;
else
if $mOT < (0.5 + $mTT) && $hRT > 0 then
$hRT = -1 + $hRT;
end
end
if $hRT > 3 then
$hRT = 3;
end
if $hRT < -1 then
$hRT = -1;
end
end
else
$hRT = 0;
end
if $hM == 1 then
$hRT = #maxTa + $hRT;
end
if $hRT != @Z1_Heat_Request_Temp then
@SetZ1HeatRequestTemperature = $hRT;
end
setTimer(7,60);
end
end

on OTT then
if #allowOTT == 1 && #DHWRun < 1 && @Defrosting_State == 0 then
if @Heatpump_State != 1 && #chE == 1 then
@SetHeatpump = 1;
?chState = 1;
elseif #disableTime > 30 && (#compRunTime > 30 || #compState == 0) && @Outside_Temp > 2 && #roomTDelta < -0.3 then
@SetHeatpump = 0;
#allowOTT = 0;
setTimer(6,600);
end
if #chE == 0 then
#allowOTT = 0;
setTimer(6,25);
end
end
end

on pumpDuty then
if #allowPumpSpeed == 1 then
#allowPumpSpeed = 0;
$pFM = @Pump_Flowrate_mode;
if @Heatpump_State == 1 then
$mPD = @Max_Pump_Duty;
$deltaTemp = @Main_Outlet_Temp - @Main_Inlet_Temp;
$heatDelta = @Heat_Delta;
if @Compressor_Freq == 0 && @Defrosting_State != 1 then
#maxPumpFlow = 8;
else
if $deltaTemp > $heatDelta && #compRunTime > 20 then
#maxPumpFlow = min(#maxPumpFlow + 1, 20);
elseif $deltaTemp <= ($heatDelta - 1) then
#maxPumpFlow = max(#maxPumpFlow - 1, 8);
end
end
if $pFM == 1 then
if @Pump_Flow < #maxPumpFlow then
$mPD = $mPD + 3;
else
if @Pump_Flow > (#maxPumpFlow + 1) then
$mPD = $mPD - 1;
end
end
else
$mPD = 55 + floor(#maxPumpFlow * 4);
end
else
$mPD = 145;
end
if @Max_Pump_Duty != $mPD then
@SetMaxPumpDuty = $mPD;
end
setTimer(5, 90);
end
end

on quietMode then
$qM = @Quiet_Mode_Level;
if $qM != #silentMode then
@SetQuietMode = #silentMode;
end
end

on silentMode then
if #allowSilentMode == 1 && @Defrosting_State == 0 then
#allowSilentMode = 2;
$cF = @Compressor_Freq;
$qM = @Quiet_Mode_Level;
if #compRunTime < 3 then
#silentMode = 3;
else
if $cF < 24 || ($qM == 0 && $cF < 27) then
#silentMode = 0;
else
if $cF < 30 || ($qM == 1 && $cF < 33) then
#silentMode = 1;
else
if $cF < 50 || ($qM == 2 && $cF < 53) then
#silentMode = 2;
else
#silentMode = 3;
end
end
end
end
quietMode();
setTimer(3,120);
end
end

on syncOT then
?outletTemp = round(@Main_Outlet_Temp);
?inletTemp = round(@Main_Inlet_Temp);
?outsideTemp = round(@Outside_Temp);
$enableTemporary = ?chEnable > 0.5;
if $enableTemporary == 1 then
#chE = 1;
if #enableTime > -1 then
#enableTime = -1;
#disableTime = -1;
end
end
if $enableTemporary == 0 then
if #enableTime == -1 then
#enableTime = #timeRef;
end
runelse();
end
?maxTSet = #maxTa;
if @Compressor_Freq == 0 then
?flameState = 0;
?chState = 0;
?dhwState = 0;
else
?flameState = 1;
if @Defrosting_State == 0 then
?chState = 0;
?dhwState = 0;
end
end
#roomTDelta = ?roomTempSet - ?roomTemp;
end

on WAR then
if #allowWAR == 1 then
#allowWAR = 0;
$oST = @Outside_Temp;
$Ta1 = @Z1_Heat_Curve_Target_Low_Temp;
$Tb1 = @Z1_Heat_Curve_Outside_High_Temp;
if @Heating_Mode == 1 then
$Ta2 = 36;
else
$Ta2 = @Z1_Heat_Curve_Target_High_Temp;
end
$Tb2 = @Z1_Heat_Curve_Outside_Low_Temp;
if $oST >= $Tb1 then
#maxTa = $Ta1;
else
if $oST <= $Tb2 then
#maxTa = $Ta2;
else
#maxTa = floor(0.9 + $Ta1 + (($Tb1 - $oST) * ($Ta2 - $Ta1) / ($Tb1 - $Tb2)));
end
end
setTimer(4,1800);
end
end

on compFreq then
if @Compressor_Freq > 18 then
if #compState < 1 then
#compStartTime = #timeRef;
#compState = 1;
end
#compRunTime = #timeRef - #compStartTime;
if #compRunTime < 0 then
#compRunTime = #timeRef - #compStartTime + 1440;
end
else
#compState = 0;
#compStartTime = -1;
#compRunTime = -1;
end
end

on runelse then
#disableTime = #timeRef - #enableTime;
if #disableTime < 0 then
#disableTime = #timeRef - #enableTime + 1440;
elseif (#disableTime > 5 || ?chSetpoint == 10) then
#chE = 0;
end
end

on @Compressor_Freq then
compFreq();
end

on @Defrosting_State then
if @Defrosting_State == 1 && #allowSilentMode > 0 then
#silentMode = 3;
quietMode();
end
end

on timer=1 then
if #firstBoot == 1 then
compFreq();
WAR();
syncOT();
#firstBoot = 2;
else
WAR();
silentMode();
syncOT();
pumpDuty();
OTT();
eXtRunTime();
end
setTimer(1,15);
end

on timer=2 then
#timeRef = %minute + 60 * %hour;
setTimer(2,45);
end

on timer=3 then
#allowSilentMode = 1;
end

on timer=4 then
#allowWAR = 1;
end

on timer=5 then
#allowPumpSpeed = 1;
end

on timer=6 then
#allowOTT = 1;
end

on timer=7 then
#allowExtRunTime = 1;
end

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions