Panasonic J 7kW WP, boiler & HeishaMon, 6022 Wp PV, Enphase+ST GW, SOLAX SK-SU3000E 13kWh BESS, ITHO Qualityflow WTW, Elvi Smart Charging+ laadpunt, Kia EV6 84kWh EA MY25, gasloos '23
Hallo allemaal,
Mijn huidige opstelling heeft ook een CZ-RTC5B regelaar aangesloten. Ik ben erin geslaagd om Heishamon aan te sluiten. Ik kan alle informatie uitlezen. Nu wil ik een regelset gebruiken om mijn MDC09 te besturen. Ik denk echter dat Heishamon en de CZ-RTC5B met elkaar in conflict komen bij het besturen van de unit.
Hoe ga ik hiermee om?
Mijn huidige opstelling heeft ook een CZ-RTC5B regelaar aangesloten. Ik ben erin geslaagd om Heishamon aan te sluiten. Ik kan alle informatie uitlezen. Nu wil ik een regelset gebruiken om mijn MDC09 te besturen. Ik denk echter dat Heishamon en de CZ-RTC5B met elkaar in conflict komen bij het besturen van de unit.
Hoe ga ik hiermee om?
Ter deling en ter review hierbij een stukje code voor:
Ik vraag me wel af of het verstandig is om met 3 timers te werken die eigenlijk allemaal aan dezelfde knop (@SetQuietMode) zitten te draaien.
- Automatische regeling QuietMode (QM) op basis van Outside_Pipe_Temp. Als de unit dreigt dicht te vriezen gaat de QM lager zodat de ventilator harder gaat draaien.
- Bij het defrostsignaal van de warmtepomp gaat QM naar 0.
- Bij een overshoot gaat QM naar 3 om het vermogen te reduceren. Dit voorkomt dat de warmtepomp uitgaat door de trage terugregeling in de WP zelf. De Panasonic zelf gaat anders uit bij een te grote overschoot.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| on System#Boot then
print('System#Boot start');
#prevSilentMode = @Quiet_Mode_Level;
#silentMode = #prevSilentMode;
#defrostLimitC = -1;
setTimer(1,60);
setTimer(2,10);
setTimer(3,60);
print('System#Boot end');
end
on timer=1 then
print('Overschoot_control if needed QM3');
if @Main_Outlet_Temp >= @Main_Target_Temp && @Compressor_Freq > 20 then
#silentMode = 3;
#prevSilentMode = #silentMode;
@SetQuietMode = #silentMode;
end
print ('silentMode is currently Overschoot_control: ', #silentMode);
setTimer(1,60);
end
on timer=2 then
print('checkDefrost prewarning start');
#defrostLimitC = round(0.8 * @Outside_Temp - 10);
#defrostLimitC = max(-26, min(-6, #defrostLimitC));
if @Outside_Pipe_Temp <= #defrostLimitC + 4 then
#silentMode = #silentMode - 1;
#silentMode = max(0, min(3, #silentMode));
elseif @Outside_Pipe_Temp > #defrostLimitC + 5 then
#silentMode = #silentMode + 1;
#silentMode = max(0, min(3, #silentMode));
end
if #prevSilentMode != #silentMode then
#prevSilentMode = #silentMode;
@SetQuietMode = #silentMode;
end
print ('silentMode is currently: ', #silentMode);
setTimer(2,300);
end
on timer=3 then
if @Defrosting_State == 1 then
#silentMode = 0;
if #prevSilentMode != #silentMode then
#prevSilentMode = #silentMode;
@SetQuietMode = #silentMode;
print ('silentMode is currently Defrost_State: ', #silentMode);
end
end
setTimer(3,60);
end |
Ik vraag me wel af of het verstandig is om met 3 timers te werken die eigenlijk allemaal aan dezelfde knop (@SetQuietMode) zitten te draaien.
Heisamon staat ingesteld om elke 5 seconden meetwaarden op te halen van de warmtepomp met "How often new values are collected from heatpump: 5 seconds"
Graag zou ik ook elke 5 seconde willen controleren of de warmtepomp een overshoot heeft op de aanvoertemperatuur, en zo nodig Quiet Mode op 3 zet. Kan het kwaad als de loop elke 5 seconde loopt. Bijvoorbeeld qua schrijfacties van en naar de warmtepomp EEPROM ofzo. Of de stabiliteit van Heisamon.
Zoiets dus qua code:
Graag zou ik ook elke 5 seconde willen controleren of de warmtepomp een overshoot heeft op de aanvoertemperatuur, en zo nodig Quiet Mode op 3 zet. Kan het kwaad als de loop elke 5 seconde loopt. Bijvoorbeeld qua schrijfacties van en naar de warmtepomp EEPROM ofzo. Of de stabiliteit van Heisamon.
Zoiets dus qua code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| on System#Boot then
print('System#Boot start');
#prevSilentMode = @Quiet_Mode_Level;
#silentMode = #prevSilentMode;
#defrostLimitC = -1;
setTimer(1,53);
setTimer(2,60);
print('System#Boot end');
end
on timer=1 then
print('Overschoot_control if needed QM3 OR defrost QM0');
if @Defrosting_State == 1 then
#silentMode = 0;
#prevSilentMode = #silentMode;
@SetQuietMode = #silentMode;
print ('silentMode is currently Defrost_State: ', #silentMode);
elseif @Main_Outlet_Temp > @Main_Target_Temp + 0 && @Heat_Power_Production > 3000 then
#silentMode = 3;
#prevSilentMode = #silentMode;
@SetQuietMode = #silentMode;
print ('silentMode is currently Overschoot_control: ', #silentMode);
end
setTimer(1,5);
end
on timer=2 then
print('checkDefrost prewarning start');
#defrostLimitC = round(0.8 * @Outside_Temp - 10);
#defrostLimitC = max(-26, min(-6, #defrostLimitC));
if @Outside_Pipe_Temp <= #defrostLimitC + 4 then
#silentMode = #silentMode - 1;
#silentMode = max(0, min(3, #silentMode));
elseif @Outside_Pipe_Temp > #defrostLimitC + 5 then
#silentMode = #silentMode + 1;
#silentMode = max(0, min(3, #silentMode));
end
if #prevSilentMode != #silentMode then
#prevSilentMode = #silentMode;
@SetQuietMode = #silentMode;
end
print ('silentMode is currently: ', #silentMode);
setTimer(2,300);
end |
Ik denk dat je voor deze functie beter kan triggeren op @Main_Target_Temp. Ik gebruik ter voorkoming van de 3 °C overschrijding:Dre schreef op zondag 11 januari 2026 @ 21:11:
Heisamon staat ingesteld om elke 5 seconden meetwaarden op te halen van de warmtepomp met "How often new values are collected from heatpump: 5 seconds"
Graag zou ik ook elke 5 seconde willen controleren of de warmtepomp een overshoot heeft op de aanvoertemperatuur, en zo nodig Quiet Mode op 3 zet. Kan het kwaad als de loop elke 5 seconde loopt. Bijvoorbeeld qua schrijfacties van en naar de warmtepomp EEPROM ofzo. Of de stabiliteit van Heisamon.
Zoiets dus qua code:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44on System#Boot then print('System#Boot start'); #prevSilentMode = @Quiet_Mode_Level; #silentMode = #prevSilentMode; #defrostLimitC = -1; setTimer(1,53); setTimer(2,60); print('System#Boot end'); end on timer=1 then print('Overschoot_control if needed QM3 OR defrost QM0'); if @Defrosting_State == 1 then #silentMode = 0; #prevSilentMode = #silentMode; @SetQuietMode = #silentMode; print ('silentMode is currently Defrost_State: ', #silentMode); elseif @Main_Outlet_Temp > @Main_Target_Temp + 0 && @Heat_Power_Production > 3000 then #silentMode = 3; #prevSilentMode = #silentMode; @SetQuietMode = #silentMode; print ('silentMode is currently Overschoot_control: ', #silentMode); end setTimer(1,5); end on timer=2 then print('checkDefrost prewarning start'); #defrostLimitC = round(0.8 * @Outside_Temp - 10); #defrostLimitC = max(-26, min(-6, #defrostLimitC)); if @Outside_Pipe_Temp <= #defrostLimitC + 4 then #silentMode = #silentMode - 1; #silentMode = max(0, min(3, #silentMode)); elseif @Outside_Pipe_Temp > #defrostLimitC + 5 then #silentMode = #silentMode + 1; #silentMode = max(0, min(3, #silentMode)); end if #prevSilentMode != #silentMode then #prevSilentMode = #silentMode; @SetQuietMode = #silentMode; end print ('silentMode is currently: ', #silentMode); setTimer(2,300); end
code:
1
2
3
4
5
6
7
8
| on @Main_Outlet_Temp then
if @ThreeWay_Valve_State == 0 && #CompState > 0 then
$TaDelta = @Main_Outlet_Temp - @Z1_Heat_Request_Temp;
if $TaDelta >= 3 then
@SetZ1HeatRequestTemperature = ceil(@Main_Outlet_Temp) - 2;
end
end
end |
Panasonic J 7kW WP, boiler & HeishaMon, 6022 Wp PV, Enphase+ST GW, SOLAX SK-SU3000E 13kWh BESS, ITHO Qualityflow WTW, Elvi Smart Charging+ laadpunt, Kia EV6 84kWh EA MY25, gasloos '23
Heisamon loop stopt met draaien en geeft de waarde van NULL voor 2 globale variabelen. Het programma werkt daardoor niet meer. Er komen na deze NULL melding (en uptime van 0 seconde) nog wel meetwaarden binnen, maar het RULES programma werkt niet meer.
RULES: (dit is alles, timer1 staat er wel, maar doet niks)
Geeft deze feedback in de console:
Regel 64 en 65
@blb4
RULES: (dit is alles, timer1 staat er wel, maar doet niks)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| on System#Boot then
print('System#Boot start');
#prevSilentMode = @Quiet_Mode_Level;
#silentMode = #prevSilentMode;
#overschoot = 0;
#coldstart = 0;
#defrostLimitC = -1;
setTimer(1,60);
print('System#Boot end');
end
on @Main_Outlet_Temp then
print('Overschoot_control if needed QM3 or for a coldstart QM0');
if @Main_Outlet_Temp > @Main_Target_Temp + 0 && @Heat_Power_Production > 3000 then
#silentMode = 3;
#overschoot = 1;
else
#overschoot = 0;
end
if @Main_Outlet_Temp < @Main_Target_Temp - 10 then
#silentMode = 0;
#coldstart = 1;
else
#coldstart = 0;
end
if #prevSilentMode != #silentMode then
#prevSilentMode = #silentMode;
@SetQuietMode = #silentMode;
print ('silentMode is changed to: ', #silentMode);
else
print ('silentMode is not changed');
end
end |
Geeft deze feedback in de console:
Regel 64 en 65
De tekst die in de console geprint moet worden doet het niet meer. Wel komen meetwaarden binnen. Het RULES programma lijkt dus een soort van vastgelopen te zijn. Wat doe ik verkeerd?code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 Thu Jan 15 19:24:55 2026 (91514441): Heishamon stats: Uptime: 1 day 1 hour 25 minutes 14 seconds ## Free memory: 75% ## Heap fragmentation: 7% ## Max free block: 28120 bytes ## Free heap: 30112 bytes ## Wifi: 54% (RSSI: -73) ## Mqtt reconnects: 0 ## Correct data: 100.00% Rules active: 2 Thu Jan 15 19:24:55 2026 (91514447): Requesting new panasonic data Thu Jan 15 19:24:55 2026 (91514454): sent bytes: 111 including checksum value: 18 Thu Jan 15 19:24:55 2026 (91514886): Received 203 bytes data Thu Jan 15 19:24:55 2026 (91514887): Checksum and header received ok! Thu Jan 15 19:24:55 2026 (91514893): received TOP6 Main_Outlet_Temp: 37.75 Thu Jan 15 19:24:55 2026 (91514900): received TOP15 Heat_Power_Production: 4400 Thu Jan 15 19:24:55 2026 (91514906): received TOP56 Z1_Temp: 37 Thu Jan 15 19:24:55 2026 (91514912): received TOP62 Fan1_Motor_Speed: 280 Thu Jan 15 19:24:55 2026 (91514919): received TOP67 Compressor_Current: 3.2 ==== Main_Outlet_Temp ==== Overschoot_control if needed QM3 or for a coldstart QM0 silentMode is not changed rule #2 was executed in 9620 microseconds >>> local variables >>> global variables 0 #prevSilentMode = 3 1 #silentMode = 3 2 #overschoot = 0 3 #coldstart = 0 4 #defrostLimitC = -1 Thu Jan 15 19:25:00 2026 (91519442): Heishamon stats: Uptime: 1 day 1 hour 25 minutes 19 seconds ## Free memory: 75% ## Heap fragmentation: 7% ## Max free block: 28120 bytes ## Free heap: 30064 bytes ## Wifi: 54% (RSSI: -73) ## Mqtt reconnects: 0 ## Correct data: 100.00% Rules active: 2 Thu Jan 15 19:25:00 2026 (91519448): Requesting new panasonic data Thu Jan 15 19:25:00 2026 (91519456): sent bytes: 111 including checksum value: 18 Thu Jan 15 19:25:00 2026 (91519886): Received 203 bytes data Thu Jan 15 19:25:00 2026 (91519887): Checksum and header received ok! Thu Jan 15 19:25:00 2026 (91519893): received TOP62 Fan1_Motor_Speed: 220 Thu Jan 15 19:25:00 2026 (91519899): received TOP64 High_Pressure: 22.8 Thu Jan 15 19:25:05 2026 (91524428): Connecting to mqtt server ... Thu Jan 15 19:25:05 2026 (91524448): Heishamon stats: Uptime: 1 day 1 hour 25 minutes 24 seconds ## Free memory: 75% ## Heap fragmentation: 6% ## Max free block: 28120 bytes ## Free heap: 29832 bytes ## Wifi: 54% (RSSI: -73) ## Mqtt reconnects: 0 ## Correct data: 100.00% Rules active: 2 Thu Jan 15 19:25:05 2026 (91524454): Requesting new panasonic data Thu Jan 15 19:25:05 2026 (91524461): sent bytes: 111 including checksum value: 18 Thu Jan 15 19:25:16 2026 (10004): Connecting to mqtt server ... Thu Jan 15 19:25:16 2026 (10024): Heishamon stats: Uptime: 0 days 0 hours 0 minutes 10 seconds ## Free memory: 75% ## Heap fragmentation: 1% ## Max free block: 29720 bytes ## Free heap: 29888 bytes ## Wifi: 56% (RSSI: -72) ## Mqtt reconnects: 0 ## Correct data: 100.00% Rules active: 2 Thu Jan 15 19:25:16 2026 (10029): Requesting new panasonic data Thu Jan 15 19:25:16 2026 (10036): sent bytes: 111 including checksum value: 18 Thu Jan 15 19:25:17 2026 (10449): Received 203 bytes data Thu Jan 15 19:25:17 2026 (10449): Checksum and header received ok! Thu Jan 15 19:25:17 2026 (10455): received TOP62 Fan1_Motor_Speed: 210 Thu Jan 15 19:25:21 2026 (15002): Starting initial wifi scan ... Thu Jan 15 19:25:21 2026 (15021): Heishamon stats: Uptime: 0 days 0 hours 0 minutes 15 seconds ## Free memory: 73% ## Heap fragmentation: 1% ## Max free block: 29144 bytes ## Free heap: 29368 bytes ## Wifi: 54% (RSSI: -73) ## Mqtt reconnects: 0 ## Correct data: 100.00% Rules active: 2 Thu Jan 15 19:25:21 2026 (15027): Requesting new panasonic data Thu Jan 15 19:25:21 2026 (15034): sent bytes: 111 including checksum value: 18 Thu Jan 15 19:25:22 2026 (15447): Received 203 bytes data Thu Jan 15 19:25:22 2026 (15448): Checksum and header received ok! Thu Jan 15 19:25:22 2026 (15453): received TOP1 Pump_Flow: 13.74 Thu Jan 15 19:25:22 2026 (15459): received TOP6 Main_Outlet_Temp: 37 Thu Jan 15 19:25:22 2026 (15466): received TOP15 Heat_Power_Production: 3400 Thu Jan 15 19:25:22 2026 (15472): received TOP62 Fan1_Motor_Speed: 200 ==== Main_Outlet_Temp ==== Overschoot_control if needed QM3 or for a coldstart QM0 silentMode is not changed rule #2 was executed in 8221 microseconds >>> local variables >>> global variables 0 #prevSilentMode = NULL 1 #silentMode = NULL 2 #overschoot = 0 3 #coldstart = 0 4 #defrostLimitC = -1 Thu Jan 15 19:25:26 2026 (20022): Heishamon stats: Uptime: 0 days 0 hours 0 minutes 20 seconds ## Free memory: 75% ## Heap fragmentation: 6% ## Max free block: 28280 bytes ## Free heap: 29832 bytes ## Wifi: 54% (RSSI: -73) ## Mqtt reconnects: 0 ## Correct data: 100.00% Rules active: 2 Thu Jan 15 19:25:26 2026 (20028): Requesting new panasonic data Thu Jan 15 19:25:26 2026 (20035): sent bytes: 111 including checksum value: 18 Thu Jan 15 19:25:27 2026 (20449): Received 203 bytes data Thu Jan 15 19:25:27 2026 (20449): Checksum and header received ok! Thu Jan 15 19:25:27 2026 (20454): received TOP1 Pump_Flow: 14.09 Thu Jan 15 19:25:27 2026 (20461): received TOP15 Heat_Power_Production: 3600 Thu Jan 15 19:25:27 2026 (20467): received TOP21 Outside_Pipe_Temp: 2 Thu Jan 15 19:25:31 2026 (25023): Heishamon stats: Uptime: 0 days 0 hours 0 minutes 25 seconds ## Free memory: 75% ## Heap fragmentation: 3% ## Max free block: 29144 bytes ## Free heap: 29808 bytes ## Wifi: 54% (RSSI: -73) ## Mqtt reconnects: 0 ## Correct data: 100.00% Rules active: 2 Thu Jan 15 19:25:31 2026 (25029): Requesting new panasonic data Thu Jan 15 19:25:31 2026 (25036): sent bytes: 111 including checksum value: 18 Thu Jan 15 19:25:32 2026 (25447): Received 203 bytes data Thu Jan 15 19:25:32 2026 (25448): Checksum and header received ok! Thu Jan 15 19:25:32 2026 (25453): received TOP50 Discharge_Temp: 49 Thu Jan 15 19:25:32 2026 (25459): received TOP53 Eva_Outlet_Temp: 3 Thu Jan 15 19:25:32 2026 (25465): received TOP55 Ipm_Temp: 26 Thu Jan 15 19:25:36 2026 (30024): Heishamon stats: Uptime: 0 days 0 hours 0 minutes 30 seconds ## Free memory: 74% ## Heap fragmentation: 3% ## Max free block: 29144 bytes ## Free heap: 29784 bytes ## Wifi: 54% (RSSI: -73) ## Mqtt reconnects: 0 ## Correct data: 100.00% Rules active: 2
@blb4
Helemaal gek:
Om 19:36:50 worden de laatste keer nog wat tekst en variabelen geprint vanuit RULES (incl. NULL)
Vervolgens stilte gedurende 10 minuten.
Om 19:47:32 worden de dan nog een keer nog wat tekst en variabelen geprint vanuit RULES (incl. NULL)
Komt dat doordat alleen bij veranderingen van de waarde on @Main_Outlet_Temp het programma draait?
Dan nog wel de vraag waarom ik NULL terugkrijg.
Om 19:36:50 worden de laatste keer nog wat tekst en variabelen geprint vanuit RULES (incl. NULL)
Vervolgens stilte gedurende 10 minuten.
Om 19:47:32 worden de dan nog een keer nog wat tekst en variabelen geprint vanuit RULES (incl. NULL)
Komt dat doordat alleen bij veranderingen van de waarde on @Main_Outlet_Temp het programma draait?
Dan nog wel de vraag waarom ik NULL terugkrijg.
Je hebt in System#Boot nog een setTimer(1,60);Dre schreef op donderdag 15 januari 2026 @ 20:55:
Helemaal gek:
Om 19:36:50 worden de laatste keer nog wat tekst en variabelen geprint vanuit RULES (incl. NULL)
Vervolgens stilte gedurende 10 minuten.
Om 19:47:32 worden de dan nog een keer nog wat tekst en variabelen geprint vanuit RULES (incl. NULL)
Komt dat doordat alleen bij veranderingen van de waarde on @Main_Outlet_Temp het programma draait?
Dan nog wel de vraag waarom ik NULL terugkrijg.
Zet in je rules set nog eens:
code:
1
2
3
4
| on timer=1 then
setTimer(1,60);
#Time = %day * 1440 + %hour * 60 + %minute;
end |
Panasonic J 7kW WP, boiler & HeishaMon, 6022 Wp PV, Enphase+ST GW, SOLAX SK-SU3000E 13kWh BESS, ITHO Qualityflow WTW, Elvi Smart Charging+ laadpunt, Kia EV6 84kWh EA MY25, gasloos '23