Panasonic Warmtepompen besturen via Heishamon Rules

Pagina: 1 2 3 4 Laatste
Acties:

Onderwerpen


  • blb4
  • Registratie: April 2008
  • Laatst online: 10:26
Binifada schreef op zondag 28 september 2025 @ 08:03:
[...]


Hartelijk dank!

Maar welke van de twee *.bin moet ik gebruiken voor de Heishamon large?
De ESP32 versie

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


  • Noknow
  • Registratie: Maart 2017
  • Laatst online: 01-02 22:15
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?

  • Dre
  • Registratie: Juni 2001
  • Niet online

Dre

Ter deling en ter review hierbij een stukje code voor:
  1. 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.
  2. Bij het defrostsignaal van de warmtepomp gaat QM naar 0.
  3. 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.

  • Dre
  • Registratie: Juni 2001
  • Niet online

Dre

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
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

  • blb4
  • Registratie: April 2008
  • Laatst online: 10:26
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
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:

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


  • Dre
  • Registratie: Juni 2001
  • Niet online

Dre

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)
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
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
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? _/-\o_

@blb4

  • Dre
  • Registratie: Juni 2001
  • Niet online

Dre

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.

  • blb4
  • Registratie: April 2008
  • Laatst online: 10:26
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.
Je hebt in System#Boot nog een setTimer(1,60);

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

Pagina: 1 2 3 4 Laatste