Vandaag ook max twee uur. Vooral door oplopende luchtvochtigheid.
Kan hem wel een tikkie geven door te spelen met de instellingen.
Kan hem wel een tikkie geven door te spelen met de instellingen.
/f/image/NMOJpuk0TgnVcUz4kBZiaQU1.png?f=fotoalbum_large)
/f/image/0LurLYoLJMpbANj7R82SQPbK.png?f=fotoalbum_large)
[ Voor 17% gewijzigd door hemertje op 25-06-2026 22:30 ]
Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal
/f/image/wFx2QfN7b4At9MWkYQQsbFN0.png?f=fotoalbum_large)
[ Voor 38% gewijzigd door MikeyMan op 26-06-2026 09:09 ]
Gasloos | Pana 9J | 300l boiler | 10Kwp |
Gasloos | Pana 9J | 300l boiler | 10Kwp |
De regeling is volgens mij net wat anders; vanuit de manual:MikeyMan schreef op vrijdag 26 juni 2026 @ 10:22:
@ercolano Dan zou ik hem (die safety) toch echt ietsje hoger zetten als de boel vochtig wordt...
Mbt koelen: lagere Dt zorgt voor eerder inschakelen. Als je hem op vijf zet, moet het verschil tussen aanvoer en retour 5 graden zijn voordat ie weer inschakelt.
Het is me inmiddels duidelijk dat koelen echt een koorddans act is. Deels door de thermodynamica, deels door de logica van de Panasonic. De Panasonic rekent namelijk in hele graden. Als jij setpoint 18 hebt met een dT van 5, wacht de interne logica doodleuk tot je retourwater 23°C aantikt. Tegen die tijd is je vloer alweer opgewarmd en moet de compressor onnodig vol in de toeren om dat warme water weer terug te koelen. Met een dT van 2 pakt 'ie hem bij 20°C alweer op, waardoor de inverter veel rustiger blijft pruttelen op laag vermogen en je vloer z'n kou vasthoudt.
Panasonic J 7kW WP, boiler & HeishaMon, 6022 Wp PV, Enphase+MT GW, SOLAX SK-SU3000E 13kWh BESS, ITHO Qualityflow WTW, Elvi Smart Charging+ laadpunt, IONIQ5 84kWh PE MY26, gasloos '23
Gek genoeg schiet ie bij het instellen van een lagere dT toch ineens aanblb4 schreef op vrijdag 26 juni 2026 @ 11:36:
[...]
De regeling is volgens mij net wat anders; vanuit de manual:
14.1.3.1 (Cooling)De compressor gaat dus weer aan als de retour 3 graden warmer is geworden. Dat is onafhankelijk van de ingestelde dT.
- Compressor is OFF when Water Outlet Temperature – Internal Water Setting Temperature > -1.5°C for continuously 3 minutes.
- Compressor is ON after waiting for 3 minutes, if the Water Outlet Temperature – Water Inlet Temperature (temperature at thermostat OFF is triggered) >3°C.
:strip_exif()/f/image/C3belRSv6PfExc47s2ecwV9N.png?f=user_large)
:strip_exif()/f/image/xVqS3ezNqPWtZckqBV6jd9C6.png?f=user_large)
[ Voor 27% gewijzigd door MikeyMan op 26-06-2026 11:58 ]
Ik heb 't idee dat er wat Resets inzitten. Als de Z1_Cool_Target 1 graad verlaagd gaat hij ook direct weer aan. Op die manier is er ook nog wat te manipuleren blijkbaar.MikeyMan schreef op vrijdag 26 juni 2026 @ 11:38:
[...]
Gek genoeg schiet ie bij het instellen van een lagere dT toch ineens aan
Als dat zo is, heeft de dT geen enkele functie meer met vaste pompsnelheid.
[Afbeelding]
Zelfde voor heat:
[Afbeelding]
Vreemd... Want hij is nu toch al een paar keer aangesprongen toen ik enkel met dT zat te klooien.
Panasonic J 7kW WP, boiler & HeishaMon, 6022 Wp PV, Enphase+MT GW, SOLAX SK-SU3000E 13kWh BESS, ITHO Qualityflow WTW, Elvi Smart Charging+ laadpunt, IONIQ5 84kWh PE MY26, gasloos '23
Maar conclusie zou dan zijn dat delta t helemaal geen invloed heef...blb4 schreef op vrijdag 26 juni 2026 @ 12:09:
[...]
Ik heb 't idee dat er wat Resets inzitten. Als de Z1_Cool_Target 1 graad verlaagd gaat hij ook direct weer aan. Op die manier is er ook nog wat te manipuleren blijkbaar.
Volgens mij 't zelfde als de dT discussie bij verwarmen. Iets met gemiddelde temperatuur (Ta - Tr) die bij een lage dT bij koelen dus iets lager ligt dan bij een hoge dT waardoor de koelcapaciteit iets groter is.MikeyMan schreef op vrijdag 26 juni 2026 @ 12:35:
[...]
Maar conclusie zou dan zijn dat delta t helemaal geen invloed heef...
Panasonic J 7kW WP, boiler & HeishaMon, 6022 Wp PV, Enphase+MT GW, SOLAX SK-SU3000E 13kWh BESS, ITHO Qualityflow WTW, Elvi Smart Charging+ laadpunt, IONIQ5 84kWh PE MY26, gasloos '23
wat bedoel je met niet kunnen instellen?MikeyMan schreef op vrijdag 26 juni 2026 @ 13:12:
@blb4 maar daar blijkt uit de service manual ook weinig uit. Zeker als je hem zowel met verwarmen als met koelen niet in kunt stellen.
Panasonic J 7kW WP, boiler & HeishaMon, 6022 Wp PV, Enphase+MT GW, SOLAX SK-SU3000E 13kWh BESS, ITHO Qualityflow WTW, Elvi Smart Charging+ laadpunt, IONIQ5 84kWh PE MY26, gasloos '23
In de flow wel, maar volgens de handleiding is de hele instelling niet beschikbaar zodra je de pomp op duty cycle zet. Daar is dus geen instelling mogelijk.
Ik stuur de WP aan met HeishaMon rules, maar dat maakt m.i. niet uit voor de pump instelling. Ik controleer via rules de @Pump_Duty waarde, bij mij staat die bij koelen op 92. Ik zie dat de @Pump_Speed hoger is als ik een lagere dT instel dus de WP reageert hier wel op.MikeyMan schreef op vrijdag 26 juni 2026 @ 13:28:
[...]
In de flow wel, maar volgens de handleiding is de hele instelling niet beschikbaar zodra je de pomp op duty cycle zet. Daar is dus geen instelling mogelijk.
Panasonic J 7kW WP, boiler & HeishaMon, 6022 Wp PV, Enphase+MT GW, SOLAX SK-SU3000E 13kWh BESS, ITHO Qualityflow WTW, Elvi Smart Charging+ laadpunt, IONIQ5 84kWh PE MY26, gasloos '23
Nou, dat maakt m.i. wel uit... De node red flow heeft een vaste flow nodig, anders doet ie het niet vziw...blb4 schreef op vrijdag 26 juni 2026 @ 13:44:
[...]
Ik stuur de WP aan met HeishaMon rules, maar dat maakt m.i. niet uit voor de pump instelling. Ik controleer via rules de @Pump_Duty waarde, bij mij staat die bij koelen op 92. Ik zie dat de @Pump_Speed hoger is als ik een lagere dT instel dus de WP reageert hier wel op.
zie je screenshot MAX duty, bij de instelling op vol pomp vermogen zoals ik het lees?MikeyMan schreef op vrijdag 26 juni 2026 @ 13:28:
[...]
In de flow wel, maar volgens de handleiding is de hele instelling niet beschikbaar zodra je de pomp op duty cycle zet. Daar is dus geen instelling mogelijk.
Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal
hhmm ondanks de wijziging van de delta T Koelen 4 graden gisteren staat de instelling nu weer terug op 1GrC , heb er niet aangezetenhemertje schreef op donderdag 25 juni 2026 @ 22:29:
we hebben een airco in de slaapkamer, die draait met alle deuren open zodat de koude lucht ook in de woonkamer terecht komt
gisteren de delta T koelen in panasonic en Ed's node red op 4 graden gezet
ik zie gelijk een groot verschil van 1 graad delta T naar 2 graden delta T
[Afbeelding]
[Afbeelding]
resultaat in de woonkamer
24.6 RTC function (Temperature Zone 1)
ik zie de laatste dagen in de logs wel veel SYSTEM - HEISHAMON Connection: Online/Offline/Online etc...
/f/image/U6HLjOyUwq6bOpPOWkHbwAkZ.png?f=fotoalbum_large)
/f/image/S3fmjxAaCt0KrYTBmnSqMuqD.png?f=fotoalbum_large)
[ Voor 8% gewijzigd door hemertje op 26-06-2026 16:11 ]
Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal
Nog even reactie op jouw toevoeging. Zeker positief, heb er weinig omkijken naar.edterbak schreef op zaterdag 20 juni 2026 @ 14:32:
[...]
No worries. Fijn dat het werkt !edit:
Bovendien vind ik het een positief signaal dat je 3 jaar lang geen geëmmer hebt gehaden DAT het is weggezakt. Mooi toch
Komt door de modus.tescione schreef op vrijdag 26 juni 2026 @ 22:08:
[...]
Nog even reactie op jouw toevoeging. Zeker positief, heb er weinig omkijken naar.
Toch nog een koelvraagje op deze warme dag.
Waarom blijft de pomp draaien met deze instellingen? Het setpoint blijft maar op 20 en dat is lager dan het dauwpunt.
[Afbeelding]
Panasonic 7kW all-in-one KIT-ADC07L3E5 | Heishamon | Node-Red | Home Assistant | bgg 66 m2 vvw | 1e + 2e verd lt convectoren (Jaga) | pv 10120 wp
Ik heb ook nog hetzelfde probleem. Ondertussen geupdate naar de nieuwste 26.5.1 stable, maar ik krijg op geen manier een ander setpoint dan 20C.Elmardus schreef op vrijdag 19 juni 2026 @ 09:45:
Wat ik ook instel blijft het setpoint op 20C staan, terwijl deze volgens de calculatie op 18 uit zou moeten komen.
7kWp · 16×IQ7+ | Pana 5J | Explorer V5 200L | Q350 | MHI Duosplit | SmartEVSE | HA
7kWp · 16×IQ7+ | Pana 5J | Explorer V5 200L | Q350 | MHI Duosplit | SmartEVSE | HA
Thanks!edterbak schreef op vrijdag 10 juli 2026 @ 13:06:
Ik heb vanavond tijd in er naar te kijken
Ik zou nu zelf even alle instellingen op COOL dashboard even aanpassen. Zeker weten dat alles geset is.
[ Voor 3% gewijzigd door Elmardus op 10-07-2026 13:11 ]
7kWp · 16×IQ7+ | Pana 5J | Explorer V5 200L | Q350 | MHI Duosplit | SmartEVSE | HA
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
| [ { "id": "49a46b92cd0b1924", "type": "delay", "z": "a938de76db0b71f6", "g": "992121a08b66faa3", "name": "", "pauseType": "rate", "timeout": "5", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "20", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": true, "allowrate": false, "outputs": 1, "x": 5100, "y": 540, "wires": [ [ "4a7112414493107c" ] ] }, { "id": "4f5325f35beb918b", "type": "function", "z": "a938de76db0b71f6", "g": "992121a08b66faa3", "name": "Filter", "func": "msg.payload = Math.ceil(msg.payload);\nmsg.payload = parseFloat(msg.payload);\n\nvar last_value = context.get('last_value');\n//var Z1_Cool_Request_Temp = global.get(\"Z1_Cool_Request_Temp\");\n\nif (last_value === msg.payload) { return null }\n\ncontext.set('last_value', msg.payload);\nreturn msg;\n", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 5490, "y": 620, "wires": [ [ "6b2644c3a510f50f" ] ] } ] |
pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem
![]() | ![]() |
[ Voor 17% gewijzigd door imdos op 11-07-2026 11:37 . Reden: toevoeging situatie ]
pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem
[ Voor 18% gewijzigd door edterbak op 11-07-2026 11:42 ]
edterbak schreef op zaterdag 11 juli 2026 @ 11:41:
Het dewpoint word berekend via een sensor welke je node red moet aanbieden.
Heb je dat allemaal gedaan?
Zet cool Delta voor de grap eens op 1.
Dan verwacht ik dat de temperatuur dicht bij je set point blijft.
Los van de Delta, en output van 6c als je een set point van 20 hebt, dat klinkt vreemd
/f/image/MlyPmWXqO7LmAN9i0oNuOlR3.png?f=fotoalbum_large)
/f/image/9CQOWuB25PCo1geD7D4GBfpV.png?f=fotoalbum_large)
/f/image/hOvUIrp7NFlCwSphSFErxIrD.png?f=fotoalbum_large)
pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem
[ Voor 27% gewijzigd door edterbak op 11-07-2026 12:00 ]
Jazeker, maar het is zo dat er minstens twee sensoren moeten updaten om een nieuwe waarde te genereren.edterbak schreef op zaterdag 11 juli 2026 @ 11:57:
Die getallen bij humidity en temperatuur, worden door wel gewoon netjes geupdate?
pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem
Kun je voor mij een screeenshot geven van de global variable, F_COOL, zie bovenstaande voorbeeld.[ Voor 13% gewijzigd door edterbak op 11-07-2026 12:09 ]
[ Voor 8% gewijzigd door edterbak op 11-07-2026 12:35 ]
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
| WiFi 56 % Memory 65 % Ethernet not installed Correct 100 % MQTT reconnects 29 Uptime 68 days 20 hours 39 minutes 59 seconds Rules INACTIVE Heatpump Dallas 1-Wire S0 kWh Console Heatpump Values Live Topic Name Value Description TOP0 Heatpump_State 1 On TOP1 Pump_Flow 21.98 l/min TOP2 Force_DHW_State 0 Disabled TOP3 Quiet_Mode_Schedule 0 Disabled TOP4 Operating_Mode_State 1 Cool TOP5 Main_Inlet_Temp 15 °C TOP6 Main_Outlet_Temp 7.5 °C TOP7 Main_Target_Temp 6 °C TOP8 Compressor_Freq 77 Hz TOP9 DHW_Target_Temp 51 °C TOP10 DHW_Temp 50 °C TOP11 Operations_Hours 8301 hours TOP12 Operations_Counter 6797 count TOP13 Main_Schedule_State 0 Disabled TOP14 Outside_Temp 29 °C TOP15 Heat_Power_Production 0 Watt TOP16 Heat_Power_Consumption 0 Watt TOP17 Powerful_Mode_Time 0 Off TOP18 Quiet_Mode_Level 0 Off TOP19 Holiday_Mode_State 0 Off TOP20 ThreeWay_Valve_State 0 Room TOP21 Outside_Pipe_Temp 35 °C TOP22 DHW_Heat_Delta -10 K TOP23 Heat_Delta 5 K TOP24 Cool_Delta 1 K TOP25 DHW_Holiday_Shift_Temp -15 K TOP26 Defrosting_State 0 Disabled TOP27 Z1_Heat_Request_Temp 22 °C TOP28 Z1_Cool_Request_Temp 20 °C TOP29 Z1_Heat_Curve_Target_High_Temp 26 °C TOP30 Z1_Heat_Curve_Target_Low_Temp 35 °C TOP31 Z1_Heat_Curve_Outside_High_Temp 15 °C TOP32 Z1_Heat_Curve_Outside_Low_Temp -5 °C TOP33 Room_Thermostat_Temp 25 °C TOP34 Z2_Heat_Request_Temp 35 °C TOP35 Z2_Cool_Request_Temp 5 °C TOP36 Z1_Water_Temp -78 °C TOP37 Z2_Water_Temp -78 °C TOP38 Cool_Power_Production 9400 Watt TOP39 Cool_Power_Consumption 2600 Watt TOP40 DHW_Power_Production 0 Watt TOP41 DHW_Power_Consumption 0 Watt TOP42 Z1_Water_Target_Temp 6 °C TOP43 Z2_Water_Target_Temp 17 °C TOP44 Error No error Error TOP45 Room_Holiday_Shift_Temp -15 K TOP46 Buffer_Temp -78 °C TOP47 Solar_Temp -78 °C TOP48 Pool_Temp -78 °C TOP49 Main_Hex_Outlet_Temp 7 °C TOP50 Discharge_Temp 85 °C TOP51 Inside_Pipe_Temp 5 °C TOP52 Defrost_Temp -31 °C TOP53 Eva_Outlet_Temp 82 °C TOP54 Bypass_Outlet_Temp -73 °C TOP55 Ipm_Temp 61 °C TOP56 Z1_Temp 25 °C TOP57 Z2_Temp -128 °C TOP58 DHW_Heater_State 1 Free TOP59 Room_Heater_State 1 Free TOP60 Internal_Heater_State 0 Inactive TOP61 External_Heater_State 0 Inactive TOP62 Fan1_Motor_Speed 700 r/min TOP63 Fan2_Motor_Speed 0 r/min TOP64 High_Pressure 25.6 Kgf/cm2 TOP65 Pump_Speed 2850 r/min TOP66 Low_Pressure 0 Kgf/cm2 TOP67 Compressor_Current 11.8 Ampere TOP68 Force_Heater_State 0 Inactive TOP69 Sterilization_State 0 Inactive TOP70 Sterilization_Temp 65 °C TOP71 Sterilization_Max_Time 15 Minutes TOP72 Z1_Cool_Curve_Target_High_Temp 15 °C TOP73 Z1_Cool_Curve_Target_Low_Temp 10 °C TOP74 Z1_Cool_Curve_Outside_High_Temp 30 °C TOP75 Z1_Cool_Curve_Outside_Low_Temp 20 °C TOP76 Heating_Mode 1 Direct TOP77 Heating_Off_Outdoor_Temp 19 °C TOP78 Heater_On_Outdoor_Temp 0 °C TOP79 Heat_To_Cool_Temp 15 °C TOP80 Cool_To_Heat_Temp 10 °C TOP81 Cooling_Mode 0 Comp. Curve TOP82 Z2_Heat_Curve_Target_High_Temp 35 °C TOP83 Z2_Heat_Curve_Target_Low_Temp 35 °C TOP84 Z2_Heat_Curve_Outside_High_Temp 15 °C TOP85 Z2_Heat_Curve_Outside_Low_Temp -5 °C TOP86 Z2_Cool_Curve_Target_High_Temp 15 °C TOP87 Z2_Cool_Curve_Target_Low_Temp 10 °C TOP88 Z2_Cool_Curve_Outside_High_Temp 30 °C TOP89 Z2_Cool_Curve_Outside_Low_Temp 20 °C TOP90 Room_Heater_Operations_Hours 268 hours TOP91 DHW_Heater_Operations_Hours 66 hours TOP92 Heat_Pump_Model C2 D3 0C 35 65 B2 D3 0B 96 65 Model TOP93 Pump_Duty 115 Duty TOP94 Zones_State 0 Zone1 active TOP95 Max_Pump_Duty 115 Duty TOP96 Heater_Delay_Time 30 Minutes TOP97 Heater_Start_Delta -8 K TOP98 Heater_Stop_Delta -2 K TOP99 Buffer_Installed 0 Disabled TOP100 DHW_Installed 1 Enabled TOP101 Solar_Mode 0 Disabled TOP106 Pump_Flowrate_Mode 1 Max flow TOP107 Liquid_Type 0 Water TOP111 Z1_Sensor_Settings 2 Internal Thermostat TOP112 Z2_Sensor_Settings 0 Water Temperature TOP113 Buffer_Tank_Delta 5 K TOP114 External_Pad_Heater 0 Disabled TOP115 Water_Pressure -0.02 Bar TOP116 Second_Inlet_Temp -128 °C TOP117 Economizer_Outlet_Temp -128 °C TOP118 Second_Room_Thermostat_Temp -128 °C TOP119 External_Control 0 Disabled TOP120 External_Heat_Cool_Control 0 Disabled TOP121 External_Error_Signal 0 Disabled TOP122 External_Compressor_Control 0 Disabled TOP123 Z2_Pump_State 0 Off TOP124 Z1_Pump_State 0 Off TOP125 TwoWay_Valve_State 0 Cool TOP126 ThreeWay_Valve_State2 0 Room |
pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem
Ik heb geen 2 zones. Ook nooit ingesteld. Ik zie wat je bedoelt. Deze schiet de hele tijd terug naar 5.edterbak schreef op zaterdag 11 juli 2026 @ 12:29:
@imdos
Volgens mij zie ik in een screenshot van je in een heeeel smal randje, dat je 2 zones in gebruik hebt.
De COOL functie werkt op dit momeent allen met zone 1.
Kun je controleren en er voor zorgen dat de andere zone, zone 2, niet ingesteld staat op een NOG lager setpoint.
pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem
Ik krijg de import ook niet geregeld.edterbak schreef op zaterdag 11 juli 2026 @ 12:37:
zone 2 is niet de oorzaak. had mijn post al aangepast omdat ik het al zag in je heishamon dump
Dan hou ik 2 van die bewegende dingen in plaats van dat er iets vervangen wordt.
pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem
pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
Dit stukje kun je vinden dus in tab [WP Control] , meer in het midden van het werkblad, dus wat naar rechts scrollen[ Voor 51% gewijzigd door edterbak op 11-07-2026 16:17 ]
Het respecteert de solar2DHW en gebruikt de al aanwezige cooling logica en zet modus naar 1 of 5 (cooling of cooling + dhw) zou ook een anti-flapping ingebouwd moeten hebben. Moet het nog zelf gaan testen maar zit het eerst parallel in extra node-red te testen die weer via andere mqtt duplicaat data krijgt.Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
1
| && node tools/nodered.js push && node tools/nodered.js status |
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
| #!/usr/bin/env node
/*
* Push / pull the Node-RED flow over the Admin API.
*
* Deploying with POST /flows replaces the running config in place, matching on
* the node IDs in the file. Nodes keep their identity, so nothing is duplicated
* and credentials (the MQTT broker password, which lives in flows_cred.json
* keyed by node id) survive. That is the difference from importing the JSON in
* the editor, which mints new IDs and therefore both duplicates and de-credentials.
*
* Global context (F_SOLAR, F_COOL, F_S2C, ...) lives in the context store, not
* in flows.json, so your settings are not touched by a deploy.
*
* node tools/nodered.js push deploy the repo flow to Node-RED
* node tools/nodered.js pull overwrite the repo flow with the live one
* node tools/nodered.js status show what is running, no changes
*
* Credentials are read from tools/.env, which is gitignored so they never land
* in the repo. Copy .env.example to .env and fill it in:
* NR_URL default http://1.2.3.4:1880
* NR_USER your Home Assistant username
* NR_PASS your Home Assistant password
* A real environment variable, if set, wins over the .env file.
*/
const fs = require('fs');
const path = require('path');
// Minimal .env reader - not worth a dependency for three values.
function loadEnv() {
const file = path.join(__dirname, '.env');
if (!fs.existsSync(file)) return;
for (const line of fs.readFileSync(file, 'utf8').split(/\r?\n/)) {
const m = line.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/);
if (!m) continue; // blank line or # comment
const key = m[1];
let val = m[2].trim().replace(/\s+#.*$/, ''); // strip trailing comment
if (/^".*"$|^'.*'$/.test(val)) { val = val.slice(1, -1); }
if (val !== '' && process.env~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[key] === undefined) { process.env~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[key] = val; }
}
}
loadEnv();
const URL_BASE = (process.env.NR_URL || 'http://1.2.3.4:1880').replace(/\/+$/, '');
const USER = process.env.NR_USER;
const PASS = process.env.NR_PASS;
const REPO = path.resolve(__dirname, '..');
const FLOW_FILE = path.join(REPO, 'flows (26.5.1 stable).json');
const BACKUP_DIR = path.join(__dirname, 'backups');
const cmd = process.argv[2] || 'status';
const args = process.argv.slice(3);
const has = (f) => args.includes(f);
// The add-on puts nginx in front of Node-RED with HTTP Basic auth against your
// Home Assistant account, so we authenticate at that layer.
function headers(extra) {
const h = Object.assign({ 'Node-RED-API-Version': 'v2' }, extra || {});
if (USER && PASS) {
h.Authorization = 'Basic ' + Buffer.from(USER + ':' + PASS).toString('base64');
}
return h;
}
function die(msg) { console.error('\n ' + msg + '\n'); process.exit(1); }
/* ---------------------------------------------------------------------------
* Protected nodes: whatever is running on the box wins, always.
*
* - the MQTT broker config node. Its host/port/client-id are configured on the
* live instance and are not in the repo, so pushing the repo's copy would
* wipe them.
* - any flow tab whose name contains "personal" (e.g. WP_personal), plus every
* node on it. That tab exists only on your instance; the repo must never add,
* change or delete it.
*
* push : take these from the live instance, not from the repo.
* pull : do not drag them into the repo.
* ------------------------------------------------------------------------- */
const PROTECTED_TYPES = ['mqtt-broker'];
const PROTECTED_TAB = /personal/i;
function protectedIds(flows) {
const tabs = new Set();
const ids = new Set();
for (const n of flows) {
if (PROTECTED_TYPES.includes(n.type)) { ids.add(n.id); }
if (n.type === 'tab' && PROTECTED_TAB.test(n.label || '')) { ids.add(n.id); tabs.add(n.id); }
}
for (const n of flows) { if (n.z && tabs.has(n.z)) { ids.add(n.id); } } // nodes living on a protected tab
return { ids, tabs };
}
function describe(flows, ids) {
const kept = flows.filter((n) => ids.has(n.id));
const tabs = kept.filter((n) => n.type === 'tab').map((n) => n.label);
const cfg = kept.filter((n) => PROTECTED_TYPES.includes(n.type)).map((n) => n.type + (n.name ? ' "' + n.name + '"' : ''));
const out = [];
if (cfg.length) out.push(cfg.join(', '));
if (tabs.length) out.push(tabs.map((t) => 'tab "' + t + '" (+ its nodes)').join(', '));
return out.length ? out.join(' and ') : null;
}
// The flow we will actually deploy: the repo, with protected nodes taken from live.
function mergeForPush(repoFlows, liveFlows) {
const live = protectedIds(liveFlows);
const liveById = Object.fromEntries(liveFlows.map((n) => [n.id, n]));
const merged = repoFlows.map((n) => (live.ids.has(n.id) && liveById[n.id] ? liveById[n.id] : n));
// protected nodes that exist only on the live box (the personal tab) must be carried over
const inRepo = new Set(repoFlows.map((n) => n.id));
for (const n of liveFlows) { if (live.ids.has(n.id) && !inRepo.has(n.id)) { merged.push(n); } }
return { merged, preserved: describe(liveFlows, live.ids) };
}
async function call(method, route, body) {
let res;
try {
res = await fetch(URL_BASE + route, {
method,
headers: headers(body ? { 'Content-Type': 'application/json' } : undefined),
body,
});
} catch (e) {
die('Cannot reach ' + URL_BASE + ' - ' + e.message);
}
if (res.status === 401) {
die('401 Unauthorized.\n' +
' Set NR_USER / NR_PASS to your Home Assistant username and password.\n' +
' If that account has multi-factor auth enabled, Basic auth will always fail -\n' +
' create a separate HA user without MFA for this.');
}
if (res.status === 409) {
die('409 Conflict. The flow changed in Node-RED since we read it, so the deploy\n' +
' was refused rather than silently overwriting it. Close/deploy the editor,\n' +
' then run this again.');
}
if (!res.ok) {
die('HTTP ' + res.status + ' on ' + method + ' ' + route + '\n ' + (await res.text()).slice(0, 400));
}
return res;
}
// GET /flows with API v2 returns { rev, flows }. Passing that rev back on the
// POST is what makes a concurrent editor change 409 instead of being clobbered.
async function getLive() {
const res = await call('GET', '/flows');
return res.json();
}
function readRepoFlow() {
if (!fs.existsSync(FLOW_FILE)) { die('Flow file not found: ' + FLOW_FILE); }
const raw = fs.readFileSync(FLOW_FILE, 'utf8');
try { return { raw, flows: JSON.parse(raw) }; }
catch (e) { die('Repo flow file is not valid JSON: ' + e.message); }
}
function backup(flows, label) {
if (has('--no-backup')) return null;
fs.mkdirSync(BACKUP_DIR, { recursive: true });
const ts = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
const file = path.join(BACKUP_DIR, 'flows-' + label + '-' + ts + '.json');
fs.writeFileSync(file, JSON.stringify(flows, null, 4));
return file;
}
function summarise(flows) {
const tabs = flows.filter((n) => n.type === 'tab');
const uitabs = flows.filter((n) => n.type === 'ui_tab').sort((a, b) => a.order - b.order);
console.log(' nodes : ' + flows.length);
console.log(' flow tabs : ' + tabs.map((t) => t.label).join(', '));
console.log(' dashboard : ' + uitabs.map((t) => t.name).join(', '));
}
(async () => {
if (!USER || !PASS) {
console.log('\n NR_USER / NR_PASS are empty - this will 401.');
console.log(' Fill in NR_USER and NR_PASS in tools/.env (see tools/.env.example).\n');
}
// Diagnoses a failing login without ever printing the password.
if (cmd === 'doctor') {
const q = (s) => (s === undefined ? '(not set)' : JSON.stringify(s));
console.log('\n URL : ' + URL_BASE);
console.log(' NR_USER : ' + (USER === undefined ? '(not set)' : q(USER)));
console.log(' NR_PASS : ' + (PASS === undefined ? '(not set)'
: 'set, ' + PASS.length + ' chars'
+ (PASS !== PASS.trim() ? ' <-- WARNING: leading/trailing whitespace' : '')
+ (/^["'].*["']$/.test(PASS) ? ' <-- WARNING: looks like the quotes are part of the password' : '')));
if (USER !== undefined && USER !== USER.trim()) { console.log(' <-- WARNING: NR_USER has leading/trailing whitespace'); }
if (!USER || !PASS) { console.log('\n Fill in NR_USER and NR_PASS in tools/.env.\n'); return; }
const res = await fetch(URL_BASE + '/flows', { headers: headers() }).catch((e) => {
console.log('\n Cannot reach the server: ' + e.message + '\n'); process.exit(1);
});
console.log('\n GET /flows -> HTTP ' + res.status);
if (res.status === 200) { console.log('\n Credentials work. Use "status" / "push" / "pull".\n'); return; }
if (res.status === 401) {
console.log(' Auth realm : ' + (res.headers.get('www-authenticate') || '(none)'));
console.log(' Served by : ' + (res.headers.get('server') || '(unknown)'));
console.log('\n The add-on rejected these credentials. Most likely, in order:');
console.log(' 1. The HA account has MFA enabled - Basic auth then cannot ever work.');
console.log(' Create a second HA user, no MFA, and use that.');
console.log(' 2. Wrong username/password. Test by opening ' + URL_BASE + ' in a private');
console.log(' browser window - it should prompt, and the same details should work.');
console.log(' 3. The account is not an HA administrator.\n');
return;
}
console.log(' Unexpected. Body: ' + (await res.text()).slice(0, 300) + '\n');
return;
}
if (cmd === 'status') {
const live = await getLive();
console.log('\nLive on ' + URL_BASE + ' (rev ' + live.rev + ')');
summarise(live.flows);
const repo = readRepoFlow();
console.log('\nIn the repo');
summarise(repo.flows);
const { merged, preserved } = mergeForPush(repo.flows, live.flows);
if (preserved) { console.log('\n Protected (kept from the live instance): ' + preserved); }
const same = JSON.stringify(live.flows) === JSON.stringify(merged);
console.log('\n ' + (same ? 'Identical - nothing to deploy.' : 'They differ. Run "push" to deploy.') + '\n');
return;
}
if (cmd === 'pull') {
const live = await getLive();
const repo = readRepoFlow();
// Don't drag protected things into the repo: keep the repo's own MQTT broker
// node, and leave the personal tab out of the file entirely.
const p = protectedIds(live.flows);
const repoById = Object.fromEntries(repo.flows.map((n) => [n.id, n]));
const out = live.flows
.filter((n) => !p.ids.has(n.id) || repoById[n.id])
.map((n) => (p.ids.has(n.id) && repoById[n.id] ? repoById[n.id] : n));
const skipped = live.flows.length - out.length;
const b = backup(repo.flows, 'repo-before-pull');
fs.writeFileSync(FLOW_FILE, JSON.stringify(out, null, 4));
console.log('\n Pulled ' + out.length + ' nodes into ' + path.basename(FLOW_FILE));
if (skipped) { console.log(' Left out of the repo: ' + skipped + ' protected node(s) - ' + describe(live.flows, p.ids)); }
if (b) console.log(' Previous repo flow backed up to ' + path.relative(REPO, b));
console.log(' Review with: git diff\n');
return;
}
if (cmd === 'push') {
const repo = readRepoFlow();
const live = await getLive();
const { merged, preserved } = mergeForPush(repo.flows, live.flows);
const b = backup(live.flows, 'live-before-push');
if (b) console.log('\n Live flow backed up to ' + path.relative(REPO, b));
if (preserved) { console.log(' Protected, kept from live: ' + preserved); }
if (has('--dry-run')) {
console.log(' Dry run - would deploy ' + merged.length + ' nodes (live has ' + live.flows.length + ').\n');
return;
}
// "full" restarts every node. That is what we want: it re-runs the Load-on-boot
// injects that repopulate the dashboard widgets from global context.
await call('POST', '/flows', JSON.stringify({ rev: live.rev, flows: merged }));
console.log(' Deployed ' + merged.length + ' nodes to ' + URL_BASE);
console.log(' No duplicates: node IDs were matched and updated in place.\n');
return;
}
die('Usage: node tools/nodered.js [status|push|pull|doctor] [--dry-run] [--no-backup]');
})(); |
1
2
3
| NR_URL=http://192.168.1.2:1880 NR_USER=your-ha-username NR_PASS=your-ha-password |
/f/image/zNvfr4Zv0NbQTfSMUEe9nfFU.png?f=fotoalbum_large)
[ Voor 9% gewijzigd door The-Source op 14-07-2026 20:00 ]
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
[ Voor 10% gewijzigd door edterbak op 14-07-2026 21:28 ]
Your right.BTW die Solar2DHW is hardcoded in originele flow, maar waarom weet ik eigenlijk niet.
@edterbak wat is de reden voor die hardcoded max 3x solar 2 DHW, ik dacht eigenlijk dat dit maar 1x per dag was
[ Voor 25% gewijzigd door edterbak op 14-07-2026 21:39 ]
Ik heb 2 brokers waarbij broker 1 data dupliceert naar de ander ( of het was ophalen door de 2e, weet dat niet meer zeker) dus nu kon ik parallel nodered beide op eigen mqtt laten staan, alleen heishamon werkelijk omgezet qua mqtt ip en voor de zekerheid block mqtt in de andere flow aangezet.edterbak schreef op dinsdag 14 juli 2026 @ 21:26:
@The-Source
Leuk te lezen dat je zo goed bezig bent !!!![]()
Als basis "regeltje";
Betreffende brondata gebruiken: Kun je in modificatie er op letten dat je 1 mqtt node 1x per topic hebt. Dit geld over de gehele node red instance. Iedere mqtt input node is een subscription. Als je 2x de zelfde mqtt node gebruikt op verschillende tabs, dan heb je formeel 2 subscriptions. En dan gaat de broker hem ook dubbel verzenden naar dezelffde nodered instance, als je een "correct werkende" mqtt broker gebruikt. mosquitto houd daar rekening mee (niet volgens de regels, maar ander brokers niet)
Bij voorkeur een bestaande link-out node met de gewenste brondata gebruiken. Dan ben je per deefinitie "integrated" met de basis flow.![]()
Als je toevoeging goed werkt, en er meer mensen zijn die hier op zitten te wachten, dan tillen we hem naar github als een "extension"easy piesie
[ Voor 11% gewijzigd door The-Source op 14-07-2026 22:29 ]
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
Dank voor je input! Deze beide heb ik toegevoegd. Na importeren heb ik alle waardes een keer getoggled, maar het setpoint blijft nog op 20C steken.edterbak schreef op zaterdag 11 juli 2026 @ 16:10:
Je moet dan zelf even voor node (1):
- node "Save RH/T" verbinden met een draadje aan de nieuwe "limit 1 msg/20s"
- node "limit 1 msg/20s" verbinden met de [COOL function] node
Voor node (2).
De inhoud van het nieuwe "filter" node even kopieren en plakken in de oude filter node, (2)
7kWp · 16×IQ7+ | Pana 5J | Explorer V5 200L | Q350 | MHI Duosplit | SmartEVSE | HA
| Solar 2 Cooling | ||
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ||
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
Kun je het setpoint wel handmatig via het dashboard instellen?Elmardus schreef op dinsdag 14 juli 2026 @ 22:46:
[...]
Dank voor je input! Deze beide heb ik toegevoegd. Na importeren heb ik alle waardes een keer getoggled, maar het setpoint blijft nog op 20C steken.
[Afbeelding]
Onderstaand de huidige variabelen:
[Afbeelding]
Ik hoop dat je daar wat mee kunt. Mocht ik nog iets anders kunnen aanleveren qua debug info, laat gerust weten
TOP81 Cooling_Mode 1 Direct TOP94 Zones_State 0 Zone1 active TOP111 Z1_Sensor_Settings 0 Water Temperature TOP112 Z2_Sensor_Settings 0 Water Temperature
Oh! Dat laatste was wel een goeie.... Opgelost.edterbak schreef op donderdag 16 juli 2026 @ 00:48:
[...]
Aanvullend, weet je zeker dat de pomp in "COOL" operating mode stond EN dat de pomp aan stond op dat moment?
7kWp · 16×IQ7+ | Pana 5J | Explorer V5 200L | Q350 | MHI Duosplit | SmartEVSE | HA
Elmardus schreef op donderdag 16 juli 2026 @ 09:22:
[...]
Oh! Dat laatste was wel een goeie.... Opgelost.
Mijn eerste experimenten heb ik wél gedaan toen de pomp ook aan stond, maar sindsdien stond de pomp uit. Ik dacht mij te kunnen herinneren dat de setpoints ook updaten als de WP niet aan staat, maar dat heb ik duidelijk misThanks voor je support!
:strip_exif()/f/image/6tBc7W5eTpD1EzNNyOWoDgD6.jpg?f=fotoalbum_large)
:strip_exif()/f/image/E3XivgczvtFdTumr9VF1VRQz.jpg?f=fotoalbum_large)
1
2
3
4
5
6
7
| if (F_SOLAR.detection_method == "kW" && msg.topic !== 'W') { return null; } if (F_SOLAR.detection_method == "kWh_prod" && msg.topic !== 'Export') { return null; } if (F_SOLAR.detection_method == "kWh_result" && msg.topic !== 'Result') { return null; } if (msg.payload == 0) { return null; } // convert the W signal to kW so that the value (threshold) are similar. if (F_SOLAR.detection_method === "kW") { msg.payload = msg.payload / 1000; } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| if (F_SOLAR.detection_method == "kW" && msg.topic !== 'W') { return null; } if (F_SOLAR.detection_method == "kWh_prod" && msg.topic !== 'Export') { return null; } if (F_SOLAR.detection_method == "kWh_result" && msg.topic !== 'Result') { return null; } if (msg.payload == 0) { return null; } // convert the W signal to kW so that the value (threshold) are similar. if (F_SOLAR.detection_method === "kW") { // With P1 type 1 the import and export meters arrive as two separate // messages, both with topic 'W'. Use the net of the two, the same way the // live gauge and the power chart already do. Without this an export // message triggers a run even while an equally large import is happening // at the same moment. var P1_type = global.get('F_SOLAR.P1_type', "file"); if (P1_type == "type1") { var current_import_value = flow.get('current_import_value'); var current_export_value = flow.get('current_export_value'); if (current_import_value === undefined || current_export_value === undefined || isNaN(current_import_value) === true || isNaN(current_export_value) === true) { return null; } msg.payload = current_export_value + current_import_value; } msg.payload = msg.payload / 1000; } |
[ Voor 43% gewijzigd door The-Source op 17-07-2026 13:11 ]
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
:strip_exif()/f/image/H8DCOiFmjDXYdNDHGPI0TDWi.png?f=user_large)
[ Voor 63% gewijzigd door The-Source op 18-07-2026 14:00 ]
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
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
| 19/07 07:09:34 - Function Solar²DHW: Surplus back above threshold (-1.18 kW). Start delay reset. 19/07 07:09:31 - Function Solar²DHW: Surplus threshold reached (-2.49 kW). Waiting 5 minutes before starting. 19/07 06:33:48 - Function Solar²DHW: Surplus back above threshold (-1.3 kW). Start delay reset. 19/07 06:33:45 - Function Solar²DHW: Surplus threshold reached (-2.34 kW). Waiting 5 minutes before starting. 19/07 05:56:41 - Function Solar²DHW: Surplus back above threshold (-0.82 kW). Start delay reset. 19/07 05:56:35 - Function Solar²DHW: Surplus threshold reached (-2.22 kW). Waiting 5 minutes before starting. 19/07 05:21:22 - Function Solar²DHW: Surplus back above threshold (-1.34 kW). Start delay reset. 19/07 05:21:16 - Function Solar²DHW: Surplus threshold reached (-1.88 kW). Waiting 5 minutes before starting. 19/07 04:45:45 - Function Solar²DHW: Surplus back above threshold (-1.39 kW). Start delay reset. 19/07 04:45:39 - Function Solar²DHW: Surplus threshold reached (-2.24 kW). Waiting 5 minutes before starting. 19/07 04:10:14 - Function Solar²DHW: Surplus back above threshold (-0.58 kW). Start delay reset. 19/07 04:10:06 - Function Solar²DHW: Surplus threshold reached (-1.63 kW). Waiting 5 minutes before starting. 19/07 03:34:04 - Function Solar²DHW: Surplus back above threshold (-1.18 kW). Start delay reset. 19/07 03:34:00 - Function Solar²DHW: Surplus threshold reached (-2.2 kW). Waiting 5 minutes before starting. 19/07 02:58:27 - Function Solar²DHW: Surplus back above threshold (-1.27 kW). Start delay reset. 19/07 02:58:24 - Function Solar²DHW: Surplus threshold reached (-2.37 kW). Waiting 5 minutes before starting. 19/07 02:22:36 - Function Solar²DHW: Surplus back above threshold (-0.24 kW). Start delay reset. 19/07 02:22:30 - Function Solar²DHW: Surplus threshold reached (-2 kW). Waiting 5 minutes before starting. 19/07 01:46:31 - Function Solar²DHW: Surplus back above threshold (-0.39 kW). Start delay reset. 19/07 01:46:26 - Function Solar²DHW: Surplus threshold reached (-2.44 kW). Waiting 5 minutes before starting. 19/07 01:11:42 - Function Solar²DHW: Surplus back above threshold (-1.13 kW). Start delay reset. 19/07 01:11:38 - Function Solar²DHW: Surplus threshold reached (-2.49 kW). Waiting 5 minutes before starting. 19/07 00:36:09 - Function Solar²DHW: Surplus back above threshold (-0.33 kW). Start delay reset. 19/07 00:36:03 - Function Solar²DHW: Surplus threshold reached (-2.55 kW). Waiting 5 minutes before starting. 19/07 00:29:43 - Function Solar²Cooling: Solar²DHW daily run limit set to 1 19/07 00:29:41 - Function Solar²Cooling: Solar²DHW daily run limit set to 2 19/07 00:00:09 - Function Solar²DHW: Surplus back above threshold (-0.44 kW). Start delay reset. 19/07 00:00:02 - Function Solar²DHW: Surplus threshold reached (-2.28 kW). Waiting 5 minutes before starting. 19/07 00:00:00 - Function Solar: New day; Reset Solar function. DHW SP = 48 19/07 00:00:00 - SYSTEM: Total amount of offline messages today: 8 |
[ Voor 9% gewijzigd door The-Source op 20-07-2026 13:20 ]
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
/f/image/ghlgZZ1n03YnEvnzG0EWpMBD.png?f=fotoalbum_large)
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
| 25/07 13:42:28 - Function Solar²Cooling: Stop condition: surplus below -2.3 kW. Starting 30 minute delay. 25/07 13:42:25 - Function Solar²Cooling: Stop conditions cleared, run continues. 25/07 13:42:17 - Function Solar²Cooling: Stop condition: surplus below -2.3 kW. Starting 30 minute delay. 25/07 13:41:47 - Function Solar²Cooling: Stop conditions cleared, run continues. 25/07 13:41:08 - Function Solar²Cooling: Stop condition: surplus below -2.3 kW. Starting 30 minute delay. 25/07 13:30:44 - Function Solar²Cooling: Stop conditions cleared, run continues. 25/07 13:22:35 - Function Solar²Cooling: Stop condition: surplus below -2.3 kW. Starting 30 minute delay. 25/07 13:22:31 - Function Solar²Cooling: Stop conditions cleared, run continues. 25/07 13:22:08 - Function Solar²Cooling: Stop condition: surplus below -2.3 kW. Starting 30 minute delay. 25/07 13:21:56 - Function Solar²Cooling: Stop conditions cleared, run continues. 25/07 13:15:39 - SYSTEM - HEISHAMON Connection: Online 25/07 13:15:33 - SYSTEM: Did not find undefined - Removed from the dashboard 25/07 13:15:32 - SYSTEM: MQTT Broker: Node Red MQTT node connected 25/07 13:15:30 - SYSTEM: Persistent storage: OK 25/07 13:15:29 - SYSTEM: MQTT block inactive, default block mode: BLOCK ALL 25/07 13:15:29 - Function - Solar: 1 25/07 13:15:29 - Function NightReduction: 0 25/07 13:15:29 - Function - CCC (Zone 2): 0 25/07 13:15:29 - Function - CCC (Zone 1): 1 25/07 13:15:29 - Function SoftStart (Zone 1): SoftStart function end 25/07 13:15:29 - Compressor: running 25/07 13:15:29 - SETUP - Sensors (Zone 2): Custom sensor lost or absent — fallback to heat pump sensor. 25/07 13:15:29 - SYSTEM: CCC Zone 2 settings are OK 25/07 13:15:29 - SYSTEM: CCC Zone 1 settings are OK 25/07 13:15:29 - SETUP - Sensors (Zone 1): Custom room temperature sensor not found. Using internal sensor (TOP33) 25/07 13:15:29 - SYSTEM: Heatpump zone 2 is set to controle water temperature 25/07 13:15:29 - SYSTEM: Heatpump zone 1 is set to controle water temperature 25/07 13:15:29 - SYSTEM: Heatpump is in DIRECT mode 25/07 13:15:29 - SYSTEM - HEISHAMON Connection: Offline 25/07 13:15:28 - SYSTEM: Flow restart detected. !! Please be aware!! It could take up to 10 minutes befor all values and variables have been received, set and correctly processed 25/07 13:15:28 - SYSTEM: Start--------------------------------------------------------------- |
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
/f/image/0GWEqMuGhr9bCeKbxa6CjCFj.png?f=fotoalbum_large)
/f/image/YIZxzcsVCI2BJ5SZT8In3IMP.png?f=fotoalbum_large)
1
| 26/07 07:56:50 - SYSTEM (Read-only) - ThreeWay Valve: ROOM |
1
| 26/07 07:56:40 - Compressor: stopped |
1
| 26/07 07:52:20 - Compressor: running |
1
| 26/07 07:47:00 - Compressor: stopped |
1
| 26/07 07:34:20 - MQTT Reply: Max_Pump_Duty: 254 |
1
| 26/07 07:34:15 - MQTT Command: SetMaxPumpDuty: 254 (pump speed) |
1
| 26/07 07:34:15 - Compressor: running |
1
| 26/07 07:34:15 - Function Pump speed: Max pumpspeed set to 254 (100%) (DHW) |
1
| 26/07 07:31:10 - TOP69_Sterilization_State: 1 |
1
| 26/07 07:31:10 - SYSTEM (Read-only) - ThreeWay Valve: DHW |
Dit leest dan als een probleem dat niet voortkomt uit Heishamon of HeishamonNR.TomN87 schreef op zondag 26 juli 2026 @ 20:40:
(,,,)
- zowel via het bovengenoemde programma als geforceerd via Heishamon start er geen desinfectie.
(...)
This post was created with 100% recycled electrons
Ik heb een extern SWW vat van 300 liter zonder verwarmingselement, de desinfectie dient dus plaat te vinden via de interne heater van de warmtepomp. Betreft een WH-MDC09J3E5.boredgeestje schreef op maandag 27 juli 2026 @ 09:12:
[...]
Dit leest dan als een probleem dat niet voortkomt uit Heishamon of HeishamonNR.
Via de normale Panasonic controller moet een sterilisatierun gestart en goed afgemaakt kunnen worden. Kun je meer details geven over je systeem (type WP, type boilervat, mét of zonder verwarmingselement in het vat, etc.) dan kunnen we je misschien verder op pad helpen.
Dan hebben we dezelfde WP, enige verschil is een tankheater hier.TomN87 schreef op maandag 27 juli 2026 @ 20:20:
[...]
Ik heb een extern SWW vat van 300 liter zonder verwarmingselement, de desinfectie dient dus plaat te vinden via de interne heater van de warmtepomp. Betreft een WH-MDC09J3E5.
This post was created with 100% recycled electrons
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
Je bedoelt mijn vraag?The-Source schreef op dinsdag 28 juli 2026 @ 05:48:
@boredgeestje aangezien dit meer generiek Panasonic is zou ik je vraag hier stellen Panasonic Warmtepomp 101: Installatie en Optimalisatie #2
Zie mijn eerste post hierboven voor de screenshots uit de settingsboredgeestje schreef op maandag 27 juli 2026 @ 22:59:
[...]
Dan hebben we dezelfde WP, enige verschil is een tankheater hier.
Hoe staan de instellingen op je controller?
Staat bij de installateursinstellingen de Tank op “Ja”? Zie item 5.5 op p.100 van de Operating Instructies.
Staat in hetzelfde menu de heater op “Intern”? Zie item 5.8 op p.101.
In het menu bedrijfsinstellingen onder Tapwater en dan Sterilisatie, wat zijn je instellingen? Zie item 6.4 op p.109
In dit geval ja.
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
Ik denk dat ik weet waar dit gedrag vandaan komt: tijdens een DHW run staat de wp in 'DHW only' mode, en na het afronden van die run zit er nog een vertraging van 15 min. op voordat de wp terugschakelt naar de 'Cool+ DHW' mode. Tijdens de DHW run en vertragingsperiode kan ik frutten wat ik wil aan de instellingen op de 'Cool' tab, maar daar wordt niets mee gedaan vanwege de 'DHW only' mode ....bartve schreef op zondag 28 juni 2026 @ 17:21:
Mijn 'Setpoint final' op het 'Cool' tabblad blijft hangen op 17 graden (veel te laag op dit moment), en daarmee ook het 'Outlet setpoint' op het 'Home' tabblad.
Wanneer er wat verandert aan de waarden waaruit het (Cool) 'Final setpoint' wordt berekend (bijv. de sensoren geven andere waarden door voor temperatuur of luchtvochtigheid, maar nog duidelijker wanneer ik de 'Safety Margin' handmatig (flink) verander) zie ik het (Cool) 'Final setpoint' heel even verspringen naar een nieuwe berekende waarde, maar bijna meteen springt ie weer terug naar 17.
Ik begrijp niet waar dit door komt, maar heb het idee dat dit gedrag optreedt sinds mijn update van de Node-Red app in Home Assistant naar de laatste versie (maar weet dat niet zeker)?
Panasonic 7kW all-in-one KIT-ADC07L3E5 | Heishamon | Node-Red | Home Assistant | bgg 66 m2 vvw | 1e + 2e verd lt convectoren (Jaga) | pv 10120 wp
In de flow die ik als git issue bij Ed heb achter gelaten zit hele logica van delays ook mee genomen en zo ook stop delay voor het tijdelijk verdwijnen van overschot. (en ook nog anti-flapping, dus stel je wil bij -2.5kW start hebben en je stelt 'stop margin' in op 0.5kW dan zal bij bij -2.0 de stop logica actief worden.bartve schreef op zaterdag 8 augustus 2026 @ 14:49:
[...]
Ik denk dat ik weet waar dit gedrag vandaan komt: tijdens een DHW run staat de wp in 'DHW only' mode, en na het afronden van die run zit er nog een vertraging van 15 min. op voordat de wp terugschakelt naar de 'Cool+ DHW' mode. Tijdens de DHW run en vertragingsperiode kan ik frutten wat ik wil aan de instellingen op de 'Cool' tab, maar daar wordt niets mee gedaan vanwege de 'DHW only' mode ....
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
Panasonic J 5 kW MDC05J3E5, Heishamon large, EMOS OTP56160T
Niet direct een oplossing maar de custom sensors kan je natuurlijk wel mee spelen. Door daar een waarde aan te leveren die er voor het gewenste resultaat zorgt.Binifada schreef op maandag 31 augustus 2026 @ 11:47:
[Afbeelding]
@edterbak
Ik zou HeishamoNR graag in het komende stookseizoen willen gebruiken. Maar eerst moet ik nog een paar zaken regelen.
Mijn situatie: ik woon in Frankrijk en maak gebruik van het stroomtarief “Tempo”. Er zijn drie tarieven (Bleu, Blanc en Rouge) die bovendien zijn onderverdeeld in piek- en daluren. 22 “rode” dagen vallen in de bijzonder koude stookperiode. De kWh kost dan ongeveer 0,73 € tijdens de piekuren.
Gedurende deze periode staat de warmtepomp uitgeschakeld en wordt er met een houtkachel gestookt.
Mijn probleem: ik wil via Home Assistant toegang krijgen tot de NodeRed-flow en de warmtepomp en de RTC in- en uitschakelen. Mijn kennis van NodeRed is nog beperkt, maar van Home Assistant is goed.
Hoe kan ik toegang krijgen tot de twee schakelaars en deze bedienen?
Hartelijk dank voor uw antwoord en uw werk aan HeishamoNR!
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
Gasloos | Pana 9J | 300l boiler | 10Kwp |
k ben aan het testen met Node-Red Companion. De samenwerking tussen HomeAssistant en Node-Red lijkt te werken.The-Source schreef op maandag 31 augustus 2026 @ 13:35:
[...]
Niet direct een oplossing maar de custom sensors kan je natuurlijk wel mee spelen. Door daar een waarde aan te leveren die er voor het gewenste resultaat zorgt.
Ik vermoed dat als je direct operation_mode / Z1 temperatuur via MQTT gaat aanpassen dat de flow deze daarna weer overruled maar proberen kan natuurlijk altijd
Mijn flow aanpassing staat nog steeds als open issue in de github van Ed. Maar in theorie is het niet mogelijk om via vibe coding dit erin te maken maar dan ga je wel afwijken van origineel en toekomstige updates maakt dat niet makkelijker.
Panasonic J 5 kW MDC05J3E5, Heishamon large, EMOS OTP56160T
Er was in Home Assistant een update van de Nodered-app. Misschien was dat de reden!?ercolano schreef op donderdag 3 september 2026 @ 09:40:
Gister ochtend is hier een herstart geweest van de flow waarna ik alle customs (schedules, ccc instellingen, sensors,..) kwijt ben. Node Red meldt wel vrolijk "persisent storage ok". Normaal bij een herstart blijven dit soort zaken correct beschikbaar.
Meer mensen last van ? komt het door de nieuwe Ha update ?
Panasonic J 5 kW MDC05J3E5, Heishamon large, EMOS OTP56160T
Ik vermoed zelf dat dit het is. Heb daar met HA node-red ook gedonder mee gehad en daarom voor Heishamon weer terug naar config op raspberry pi. Daar van weet ik dat storage 100% goed staat en bij HA bleef ik ook met bepaalde updates data / settings verliezen. Mosquito MQTT kan overigens wel prima op HA (maar heb deze zelf ook redundant op PI draaienBinifada schreef op donderdag 3 september 2026 @ 12:01:
[...]
Er was in Home Assistant een update van de Nodered-app. Misschien was dat de reden!?
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
[ Voor 3% gewijzigd door LeonR78 op 06-09-2026 19:47 ]
[ Voor 87% gewijzigd door Septillion op 17-09-2026 19:21 ]
Dewim1 schreef op woensdag 16 september 2026 @ 22:10:
@edterbak Heb je wel eens overwogen/geprobeerd om er een applicatie van te maken met codex?
Niet iedereen draait Node-RED op een raspberry, niet iedereen draait Node-RED in een docker. Juist door het in Node-RED te gebruiken is het universeel toe te passen.kunnen we dit prima als een zelfstandige Node.js-app draaien. Dan heb je Node-RED helemaal niet meer nodig.
https://www.fam-oldenburger.nl/category/domotica/
[ Voor 8% gewijzigd door edterbak op 17-09-2026 17:40 ]
@edterbakedterbak schreef op donderdag 17 september 2026 @ 17:36:
Sorry voor de afwezigheid recentelijk. Gekkehuis thuis. Door deze drukte even geen energie om op tweakers te hangen.
Ik lees wel leuke berichten.
@LeonR78 Thanks. Gefefliciteerd met je pomp natuurlijk ! Leuk te lezen dat het je helpt. Doe het met liefde en voor eigen bestwil natuurlijk.
@Binifada Ik had al wel wat opties ingebakken om te praten met externe applicaties. Maar je suggestie Node Red Companioni, is best interessant. Dat kan mijn inspanning vereenvoudigen.
In de flow-editor tab blad [WP Input], daar heb ik een aantal Link IN connectors geplaatst. Zie screenshot. Het zit iets meer naar de rechter zijde.
Hier kun je dus externe triggers laten binnenkomen. Dit is de juiste PLEK waar het binnen moet komen, want daar hou ik er rekening mee.
[Afbeelding]
Ik kan je adviseren om (als je dat nog niet hebt) een extra tab blad toe te voegen, en deze de naam "WP Personal" te geven. Op dit tab blad doe je al je eigen werk en input/output zaken. Dus iets dat met Home Assistant communiceert zou ik dan ook daar plaatsen. Als je vanaf DAAR een grijze "Link Out" node plaats en deze verbind aan de grijze "Link In" node naar wens, dan ben je future proof bij updates enzo. Je persoonlijke WP Personal tab moet je nooit weggooien bij een update. Daardoor blijft alles gewoon werken.
Does this make sense?
Leuk weetje:
Ik ben behoorlijk onder de indruk van de Pana als ik eerlijk ben.
Ik heb vorig weekend onderhoud gepleegd op de pomp, en heb voor de grap even dat ik er naast stond, de pomp gestart met SoftStart aan.
Ik dacht voor het nageslacht.. ik ga de start filmen in de verwachting dat ik wel een duidelijk signaal zou krijgen dat hij start... Maar dat duurde wel heel erg lang. Toen ik na 3 minuten keek in het dashboard via mijn teleffoon, zag ik dat hij gewoon al gestart was en de compressor al even aan stond op 35Hz en terug regelen door softstart. En inderdaad.. ik voelde ook al ijzige koude lucht er uit komen!
Wat is deze pomp toch fantastisch stil mensen....
Panasonic J 5 kW MDC05J3E5, Heishamon large, EMOS OTP56160T
kan je deze toelichten wat je daarmee doet?Binifada schreef op vrijdag 2 oktober 2026 @ 14:50:
[...]
@edterbak
De tip over de “externe links” was erg nuttig. Voorheen had ik de juiste knooppunten zelf moeten zoeken. Maar zo is het veel eenvoudiger.
Met de Node-RED Companion heb ik twee schakelaars aangemaakt die vanuit Home Assistant nu de Pana en de RTC in- en uitschakelen – geweldig!
Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal
Een met eenvoudige route in vanuit ha om node red te besturen.hemertje schreef op vrijdag 2 oktober 2026 @ 16:53:
[...]
kan je deze toelichten wat je daarmee doet?
en wat het oplevert?
@hemertjehemertje schreef op vrijdag 2 oktober 2026 @ 16:53:
[...]
kan je deze toelichten wat je daarmee doet?
en wat het oplevert?
Panasonic J 5 kW MDC05J3E5, Heishamon large, EMOS OTP56160T
Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
[ Voor 15% gewijzigd door MikeyMan op 17-10-2026 17:38 ]
Taal fouten inbegrepen ;)
Skywindow plan je astro foto sessie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| "heating": { "heater_present": true, "degree_days_factor": "sensor.dao_degree_days_factor", "adjustment": "heating curve", "stages": [ {"max_power": 0.0, "cop": 8.0}, {"max_power": 300.0, "cop": 5.5}, {"max_power": 500.0, "cop": 4.8}, {"max_power": 700.0, "cop": 4.2}, {"max_power": 900.0, "cop": 3.8}, {"max_power": 1100.0, "cop": 3.4}, {"max_power": 1400.0, "cop": 3.0} ], "entity_adjust_heating_curve": "input_number.dao_heating_curve_adjustment", "adjustment_factor": 0.1, "min_run_length": 1, "entity_hp_cop": "sensor.aquarea_cop", "entity_hp_heat_produced": "sensor.aquarea_heatpump_dao_panasonic_heat_power_produced_today" } |
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
| input_number: dao_heating_curve_adjustment: name: "DAO - Heating Curve Adjustment" min: -10 max: 10 step: 0.1 unit_of_measurement: "K" mode: slider dao_room_setpoint_base: name: "DAO - Room Setpoint Baseline" min: 15 max: 25 step: 0.5 unit_of_measurement: "°C" mode: box initial: 21.0 sensor: - platform: statistics name: "DAO Heating Curve Mean" entity_id: input_number.dao_heating_curve_adjustment state_characteristic: mean max_age: minutes: 45 # groter = vloeiender maar trager sampling_size: 200 template: - sensor: - name: "DAO Heating Curve Adjustment Smoothed" unique_id: dao_heating_curve_adjustment_smoothed unit_of_measurement: "K" state_class: measurement state: > {% set mean_raw = states('sensor.dao_heating_curve_mean') %} {% set previous = states('sensor.dao_heating_curve_adjustment_smoothed') %} {% if mean_raw | is_number %} {% set raw = mean_raw | float %} {% elif previous | is_number %} {# na een herstart: laatst bekende waarde vasthouden i.p.v. naar 0 springen #} {% set raw = previous | float %} {% else %} {% set raw = states('input_number.dao_heating_curve_adjustment') | float(0) %} {% endif %} {% set clamped = [[raw, -5] | max, 5] | min %} {{ (clamped * 2) | round(0) / 2 }} |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| - id: dao_thermostat_shift alias: DAO - Panasonic thermostaat correctie mode: single triggers: - trigger: state entity_id: sensor.dao_heating_curve_adjustment_smoothed conditions: - condition: template value_template: > {{ trigger.to_state.state not in ['unavailable', 'unknown', 'none'] }} variables: dao: "{{ states('sensor.dao_heating_curve_adjustment_smoothed') | float(0) }}" base_temp: "{{ states('input_number.dao_room_setpoint_base') | float(21) }}" offset: > {% set raw = 0.8 * dao %} {% if raw > 2 %}2{% elif raw < -2 %}-2{% else %}{{ raw }}{% endif %} new_temp: "{{ [[base_temp + offset, 17] | max, 24.5] | min }}" actions: - action: climate.set_temperature continue_on_error: true target: entity_id: climate.panasonic_thermostaat data: temperature: "{{ new_temp }}" |
5. Node-REDYAML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 template: - sensor: - name: "DAO - Degree Days Factor" unique_id: dao_degree_days_factor unit_of_measurement: "kWh/K·dag" state_class: measurement state: > {% set basis = 4.0 %} {% set wind = states('sensor.knmi_windsnelheid') | float(3.0) %} {% set wind_correctie = [[(wind - 3.0) * 0.04, 0.25] | min, -0.15] | max %} {% set straling = states('sensor.knmi_globale_stralingsintensiteit') | float(0) %} {% set zon_correctie = [[(straling / 800.0) * 0.20, 0.20] | min, 0.0] | max %} {% set factor = basis * (1 + wind_correctie) * (1 - zon_correctie) %} {{ [factor, 0.5] | max | round(2) }}
1
2
3
4
5
| Buiten Periode Dagen Starts/dag Draaiuren/dag Uur/start 9..12 °C voor DAO 49 1,7 5,2 3,1 9..12 °C met DAO 3 3,3 11,0 3,3 12..15 °C voor DAO 10 1,2 3,8 3,2 12..15 °C met DAO 6 3,2 5,5 1,7 |