8680 Wp, Panasonic Mono-bloc J-Generation WH-MDC07J3E5 1-fase 7kW. Heishamon v3.2.3 , NRflow *custom* , Home Assistant + " kamaradclimber / heishamon-homeassistant", Kaifa MA105 + Shelly PRo 3EM (120A), 3x Marstek 5,12kW v151, lilygo-modbus-485 HA
Dit geeft ook een beperking van de compressor.Oibaf schreef op maandag 11 december 2023 @ 16:21:
Erg interessant waar jullie mee bezig zijn. Zit me daarom ook te verdiepen in de het softstarten van de Panasonic.
Twee vragen:
1. Weten jullie zeker dat quietmode ook invloed heeft op compressor?
*Mijn contact bij de Panasonic service zegt namelijk dat deze alleen de ventilator snelheid
Ik heb wel gemerkt dat er nog een andere variabele is, ‘t is niet zo dat QM altijd max 35 hz doet oid. Ik denk dat ook de buitentemp en/of verschil Ttarget & Toutlet oid.
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
Qua gebruik als softstart zorgt QM3 hier wel altijd voor max 35Hz. Ik gebruik QM altijd maar heel kort, maar ik heb dit weleens gelezen:blb4 schreef op maandag 11 december 2023 @ 19:53:
[...]
Dit geeft ook een beperking van de compressor.
Ik heb wel gemerkt dat er nog een andere variabele is, ‘t is niet zo dat QM altijd max 35 hz doet oid. Ik denk dat ook de buitentemp en/of verschil Ttarget & Toutlet oid.
Ik vroeg me nog af of jij wellicht al weet wanneer DHW nu wel of niet met >35Hz gaat. Het leek even afhankelijk van buitentemperatuur, maar dat is het toch ook niet helemaal... Wellicht speelt de delta ook mee, of nog iets.Zover ik weet zorgt Quiet mode ervoor dat die in stappen van 10Hz naar beneden de compressor frequenties blokkeert. Ik dacht dat Quiet mode 3 max. 39Hz toestaat, 2 max. 49Hz en 1 max. 59Hz
Oke, duidelijk. Dus switchen tussen 1/2 graden als je hem 'harder' naar beneden wilt duwen loont dan.CurlyMo schreef op maandag 11 december 2023 @ 18:49:
[...]
Ja, maar als hij te lang +2 boven het setpoint zit, dan gaat hij uit. Specifiek is die grens 2 3 minuten.
Oke, klinkt logisch & overtuigend. Ik ga er mee aan de slag.Qua gerbuik als softstart zorgt QM3 hier wel altijd voor max 35Hz.
Ook al wekte de Panasonic service man wel een kundige indruk, niet gek als hij niet alle kabouters kent.
[ Voor 8% gewijzigd door Oibaf op 11-12-2023 21:44 ]
Dat heb ik een tijdje geprobeerd, maar je hebt véél bijsturing nodig om hem te doen wat je wil. Aangezien we niet weten wat dat met de EEPROM doet vind ik dat een beetje tricky. Ik doe dat iig niet meer.Oibaf schreef op maandag 11 december 2023 @ 21:42:
[...]
Oke, duidelijk. Dus switchen tussen 1/2 graden als je hem 'harder' naar beneden wilt duwen loont dan.
Sinds de 2 dagen regel reageer ik hier niet meer
Zit ook wat in. Dan houdt ik het gewoon bij 1°.CurlyMo schreef op maandag 11 december 2023 @ 21:47:
[...]
Dat heb ik een tijdje geprobeerd, maar je hebt véél bijsturing nodig om hem te doen wat je wil. Aangezien we niet weten wat dat met de EEPROM doet vind ik dat een beetje tricky. Ik doe dat iig niet meer.
Ik red het met gemiddeld 100 commando's per dag, en dat is van afgelopen maand met 36 defrosts en radiators, dus snel oplopende temperaturen en veel start/stops. Dat vind ik netjes, maar heb evengoed geen enkel idee hoeveel commandos acceptabel is. Ik heb wel wat checks om het aantal te minimaliseren.CurlyMo schreef op maandag 11 december 2023 @ 21:47:
[...]
Dat heb ik een tijdje geprobeerd, maar je hebt véél bijsturing nodig om hem te doen wat je wil. Aangezien we niet weten wat dat met de EEPROM doet vind ik dat een beetje tricky. Ik doe dat iig niet meer.
[ Voor 4% gewijzigd door Aikon op 12-12-2023 08:25 ]
Het leek allemaal perfect te draaien (zoals je zou willen) tot er vannacht iets geks gebeurde:
WP draaide al paar uur op lage frequenties. Tot plotseling rond 7u 's ochtends de frequentie van 20Hz naar 35Hz springt, en komt dan vervolgens niet meer omlaag totdat hij uitgaat omdat ruimtetemperatuur wordt overschreden.
Eerste directe relatie die ik zie: De buitentemperatuur (sensor panasonic) daalt precies op dat moment van 5° naar 4°.
Is er zo'n relatie tussen buitentemperatuur en frequentiebereik? Of is het iets totaal anders?
*Het gaat hier trouwens om een 12kW monobloc (WH-MXC12J9E8)
/f/image/zdpJjgxYwPnQTfxYu7MZheks.png?f=fotoalbum_large)
Is dat een T-Cap model? die hebben volgens mij idd wat apart gedrag bij 4 graden. ff zoeken in de algemene Panasonic WP topics (op T-cap denk ik).Oibaf schreef op zaterdag 16 december 2023 @ 20:40:
Inmiddels draait het bij mij ook goed op z'n minimum frequentie. Mede dankzij jullie inzichten/hulp.
Het leek allemaal perfect te draaien (zoals je zou willen) tot er vannacht iets geks gebeurde:
WP draaide al paar uur op lage frequenties. Tot plotseling rond 7u 's ochtends de frequentie van 20Hz naar 35Hz springt, en komt dan vervolgens niet meer omlaag totdat hij uitgaat omdat ruimtetemperatuur wordt overschreden.
Eerste directe relatie die ik zie: De buitentemperatuur (sensor panasonic) daalt precies op dat moment van 5° naar 4°.
Is er zo'n relatie tussen buitentemperatuur en frequentiebereik? Of is het iets totaal anders?
*Het gaat hier trouwens om een 12kW monobloc (WH-MXC12J9E8)
[Afbeelding]
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
/f/image/dOvonO01yY0eQJQCdzQPrUHo.png?f=fotoalbum_large)
Hallo @blb4
Ik ben nog steeds je regels aan het testen "HeishaMon_Rules_BlB4.md".
De regels 134 en 152 "@SetZ1HeatRequestTemperature = #mainTargetTemp;" leiden tot vreemde pieken.
Je draait Jeisha toch in WAR-modus?
De TOP27 is normaal gesproken de "Shift-Temperature" en die is ingesteld op nul.
Of rijd je in de directe modus?
Hartelijk dank voor je antwoord
oef, gulukkig heb er "gebruiken op eigen risico" bij staanBinifada schreef op zondag 17 december 2023 @ 18:52:
[Afbeelding],
Hallo @blb4
Ik ben nog steeds je regels aan het testen "HeishaMon_Rules_BlB4.md".
De regels 134 en 152 "@SetZ1HeatRequestTemperature = #mainTargetTemp;" leiden tot vreemde pieken.
Je draait Jeisha toch in WAR-modus?
De TOP27 is normaal gesproken de "Shift-Temperature" en die is ingesteld op nul.
Of rijd je in de directe modus?
Hartelijk dank voor je antwoord
Ik heb dit soort pieken ook gezien. Ik draaide met de WP in direct mode, WAR berekening in de Rules.
Ik ben inmiddels een iets andere weg ingeslagen, ik draai nu de WP (ook?) met WAR en gebruik de OT thermostaat voor aan/uit. Dat is (natuurlijk) veel stabieler, alleen WAR die de target temp bepaald.
Ik heb nu voorzichtig weer aan 't experimenteren met temperatuur shiften om de compressor wat langer te laten lopen bij hoge buitentemperaturen (zoals nu) waarbij 't minimale vermogen van de WP te hoog is tov mijn warmteverlies. Ik zal dit zo delen.
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
interessant waar staat die code (nog) niet op je git , ik wil dat graag eens proberenik draai nu de WP (ook?) met WAR en gebruik de OT thermostaat voor aan/uit. Dat is (natuurlijk) veel stabieler, alleen WAR die de target temp bepaald.
Jij brand ik blus! 4.640kW no-zw WH-MDC05J3E5
De grootste wijziging is gekomen door 't gedrag van mijn Evohome Opentherm thermostaat, chSetpoint is niet stabiel genoeg om daar de WP mee aan te sturen. Ik gebruik de OT Thermostaat nu eigenlijk als een veredelde ON/OFF thermostaat. Ik werk nu met WAR (Compensatie curve) van de WP zelf en ik gebruik de shift functie om de compressor langer te laten lopen door de watertemperatuur iets te verhogen (1 of 2 graden) als bij hogere buitentemperaturen 't warmteverlies van mijn huis lager is dan de WP minimaal kan leveren.
Dit werkt niet onaardig.
Update: kleine wijzigingen per 20231220:
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
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
| on System#Boot then #allowDHW = 1; #allowOTT = 1; #allowExtRunTime = 1; #allowPumpSpeed = 1; #allowSilentMode = 1; #allowSyncOT = 1; #allowWAR = 1; #legionellaRunDay = 7; #maxPDuty = 85; #maxTa = 40; #chE = -1; #chEOffTime = -1; #chETimeOff = -1; #compRunTime = -1; #compStartTime = -1; #compState = -1; #dayTime = -1; #DHWRun = -1; #firstBoot = 1; #operatingMode = -1; #prevHPS = -1; #prevOM = -1; #silentMode = -1; #roomTDelta = -1; #timeRef = -1; setTimer(1,60); setTimer(2,10); end on eXtRunTime then if #allowExtRunTime == 1 then #allowExtRunTime = 2; $hM = @Heating_Mode; $oST = @Outside_Temp; $hRT = @Z1_Heat_Request_Temp; if $hM == 1 then $hRT = $hRT - #maxTA; end $mOT = @Main_Outlet_Temp; $mTT = @Main_Target_Temp; if #compState == 1 && $oST > 7 then if #compRunTime > 15 then if $mOT > (1.8 + $mTT) then $hRT = 1 + $hRT; else if $mOT < (0.5 + $mTT) && $hRT > 0 then $hRT = -1 + $hRT; end end if $hRT > 2 then $hRT = 2; end if $hRT < -1 then $hRT = -1; end else if #compRunTime < 2 && $mOT < ($mTT - 4) then $hRT = -2; end end else $hRT = 0; end if $hM == 1 then $hRT = #maxTA + $hRT; end if $hRT != @Z1_Heat_Request_Temp then @SetZ1HeatRequestTemperature = $hRT; end setTimer(8,60); end end on OTT then if #allowOTT == 1 && #DHWRun < 1 && #3WVS == 0 && @Defrosting_State == 0 then if @Heatpump_State != 1 && #chE == 1 then @SetHeatpump = 1; end if #chEOffTime > 30 && #3WVS == 0 && (#compRunTime > 30 || #compState == 0) && @Outside_Temp > -4 then @SetHeatpump = 0; if @Operating_Mode_State != 0 then @SetOperationMode = 0; end #allowOTT = 2; setTimer(7,600); end if #chE == 0 then #allowOTT = 3; setTimer(7,25); end end end on DHW then if #allowDHW == 1 then #allowDHW = 2; if #3WVS == 0 && (@DHW_Temp < 37 || (%hour == 13 && (%day == #legionellaRunDay || @DHW_Temp < (@DHW_Target_Temp + @DHW_Heat_Delta)))) then #DHWRun = 1; #prevOM = @Operating_Mode_State; #prevHPS = @Heatpump_State; @SetOperationMode = 4; if @Heatpump_State != 1 then @SetHeatpump = 1; end end if #DHWRun > 0 then if %day == #legionellaRunDay && %hour >= 13 && @DHW_Temp > 47 && @Sterilization_State != 1 then @SetForceSterilization = 1; end if #3WVS == 0 && @DHW_Temp >= @DHW_Target_Temp && @Defrosting_State == 0 && @Sterilization_State == 0 then @SetOperationMode = #prevOM; if @Heatpump_State != #prevHPS then @SetHeatpump = #prevHPS; end #prevOM = 4; #prevHPS = 1; #DHWRun = 0; end end #operatingMode = @Operating_Mode_State; setTimer(6,900); end end on pumpDuty then if #allowPumpSpeed == 1 then #allowPumpSpeed = 2; $pFM = @Pump_Flowrate_mode; if #3WVS == 1 then $mPD = 140; $oST = @Outside_Temp; if (@Sterilization_State == 0 && @DHW_Temp > @DHW_Target_Temp) || (@Sterilization_State == 1 && @DHW_Temp > 57) then $mPD = 10 + #maxPDuty; end else if @Heatpump_State == 1 then $mPD = @Max_Pump_Duty; if @Compressor_Freq == 0 && @Defrosting_State != 1 then $mPF = 8; else $fH = 10; $fL = 14; $tH = 11; $tL = -3; if $oST >= $tH then $mPF = $fH; else if $oST <= $tL then $mPF = $fL; else $mPF = 1 + floor(0.9 + $fH + (($tH - $oST) * ($fL - $fH) / ($tH - $tL))); end end end if $pFM == 1 then if @Pump_Flow < $mPF then $mPD = $mPD + 3; else if @Pump_Flow > ($mPF + 1) then $mPD = $mPD - 1; end end else $mPD = 55+ floor($mPF * 3); end else $mPD = #maxPDuty; end end if @Max_Pump_Duty != $mPD then @SetMaxPumpDuty = $mPD; end setTimer(5, 60); end end on quietMode then $qM = @Quiet_Mode_Level; if $qM != #silentMode then @SetQuietMode = #silentMode; end end on silentMode then if #allowSilentMode == 1 && @Defrosting_State == 0 then #allowSilentMode = 2; $cF = @Compressor_Freq; $qM = @Quiet_Mode_Level; if #compRunTime < 3 then #silentMode = 3; else if $cF < 24 || ($qM == 0 && $cF < 27) then #silentMode = 0; else if $cF < 30 || ($qM == 1 && $cF < 33) then #silentMode = 1; else if $cF < 50 || ($qM == 2 && $cF < 53) then #silentMode = 2; else #silentMode = 3; end end end end if #silentMode > 1 && #3WVS == 1 && #dayTime == 1 then #silentMode = -1 + #silentMode; end quietMode(); setTimer(3,120); end end on syncOT then if #allowSyncOT == 1 then ?outletTemp = @Main_Outlet_Temp; ?inletTemp = @Main_Inlet_Temp; ?outsideTemp = @Outside_Temp; ?dhwTemp = @DHW_Temp; ?dhwSetpoint = @DHW_Target_Temp; if ?chEnable == 1 then #chE = 1; if #chETimeOff != -1 then #chETimeOff = -1; #chEOffTime = -1; end else if #chETimeOff == -1 then #chETimeOff = #timeRef; end #chEOffTime = #timeRef - #chETimeOff; if #chEOffTime < 0 then #chEOffTime = #timeRef - #chETimeOff + 10080; end if (#chEOffTime > 5 || ?chSetpoint == 10) then #chE = 0; end end ?maxTSet = #maxTa; if @Compressor_Freq == 0 then ?flameState = 0; ?chState = 0; ?dhwState = 0; else ?flameState = 1; if @Defrosting_State == 0 then if #3WVS == 0 then ?chState = 1; ?dhwState = 0; else ?chState = 0; ?dhwState = 1; end else ?chState = 0; ?dhwState = 0; end end #roomTDelta = ?roomTempSet - ?roomTemp; end end on WAR then if #allowWAR == 1 then #allowWAR = 2; $oST = @Outside_Temp; $Ta1 = @Z1_Heat_Curve_Target_Low_Temp; $Tb1 = @Z1_Heat_Curve_Outside_High_Temp; if @Heating_Mode == 1 then $Ta2 = 36; else $Ta2 = @Z1_Heat_Curve_Target_High_Temp; end $Tb2 = @Z1_Heat_Curve_Outside_Low_Temp; if $oST >= $Tb1 then #maxTa = $Ta1; else if $oST <= $Tb2 then #maxTa = $Ta2; else #maxTa = floor(0.9 + $Ta1 + (($Tb1 - $oST) * ($Ta2 - $Ta1) / ($Tb1 - $Tb2))); end end setTimer(4,1800); end end on compFreq then if @Compressor_Freq > 18 then if #compState < 1 then #compStartTime = #timeRef; #compState = 1; if #allowExtRunTime != -1 then #allowExtRunTime = 1; eXtRunTime(); end end #compRunTime = #timeRef - #compStartTime; if #compRunTime < 0 then #compRunTime = #timeRef - #compStartTime + 10080; end else #compState = 0; #compStartTime = -1; #compRunTime = -1; end end on @Compressor_Freq then compFreq(); end on @Defrosting_State then if @Defrosting_State == 1 && #allowSilentMode > 0 then #silentMode = 3; quietMode(); end end on @Operating_Mode_State then $oMS = @Operating_Mode_State; if $oMS != #operatingMode && $oMS > 2 && $oMS < 5 then #DHWRun = 2; end end on timer=1 then #3WVS = @ThreeWay_Valve_State; if #firstBoot == 1 then if @Compressor_Freq > 18 then #compStartTime = #timeRef; #compState = 1; end if #3WVS == 1 && #allowDHW == 1 then #DHWRun = 2; end compFreq(); WAR(); syncOT(); #firstBoot = 2; else WAR(); silentMode(); syncOT(); pumpDuty(); DHW(); OTT(); eXtRunTime(); end setTimer(1,15); end on timer=2 then #timeRef = %day * 1440 + %hour * 60 + %minute; if %hour > 9 && %hour < 17 then #dayTime = 1; else #dayTime = 0; end setTimer(2,60); end on timer=3 then #allowSilentMode = 1; end on timer=4 then #allowWAR = 1; end on timer=5 then #allowPumpSpeed = 1; end on timer=6 then #allowDHW = 1; end on timer=7 then #allowOTT = 1; end on timer=8 then #allowExtRunTime = 1; end |
[ Voor 84% gewijzigd door blb4 op 21-12-2023 00:14 . Reden: kleine update rules op 20231220 ]
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
@blb4 Hartelijk dank, zal het testen!blb4 schreef op dinsdag 19 december 2023 @ 02:08:
Update van mijn kant. Ik heb op Github (Main) e.e.a. bijgewerkt naar de huidige staat van mijn rules.
Bedoel je dat Evohome het setpoint niet lang genoeg op dezelfde waarde houdt? Of dat het te lang duurt voordat de WP het door Evohome gevraagde setpoint bereikt?blb4 schreef op dinsdag 19 december 2023 @ 02:08:
Update van mijn kant. Ik heb op Github (Main) e.e.a. bijgewerkt naar de huidige staat van mijn rules.
De grootste wijziging is gekomen door 't gedrag van mijn Evohome Opentherm thermostaat, chSetpoint is niet stabiel genoeg om daar de WP mee aan te sturen.
[...]
Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp
't eerste. Soms gaat 't lange tijd goed, maar zo af en toe rare gedragingen. Ik had vanalles geprobeerd om dat gedrag te dempen, dat hielp wel maar 't eindresultaat was toch nog steeds niet 't stabiele gedrag dat je wil hebben voor de WP.RichieB schreef op dinsdag 19 december 2023 @ 12:09:
[...]
Bedoel je dat Evohome het setpoint niet lang genoeg op dezelfde waarde houdt? Of dat het te lang duurt voordat de WP het door Evohome gevraagde setpoint bereikt?
Zie het voorbeeld hieronder van gisteren (inclusief een DHW run):
/f/image/u6sgxy7T1WgZhwp3ugQlNpPJ.png?f=fotoalbum_large)
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
al die andere opties wil ik best gebruiken maar als de basis al onvoorspelbaar werkt is er geen doen aan om rest te debuggen.
Jij brand ik blus! 4.640kW no-zw WH-MDC05J3E5
Je laatste regels staan sinds gisteren op mijn Jeisha.
Met uitzondering van DHW en pumpDuty zijn alle routines actief. Tot nu toe werkt het geweldig!
Mijn Jeisha heeft 5 kW en wordt alleen gebruikt voor verwarming. De jouwe is een machine van 7 kW, als ik het me goed herinner.
Daarom ben ik nog steeds onzeker over maxPumpDuty.
Wat gebeurt er eigenlijk als ik de Jeisha zelf uitschakel?
Schakelt Heishamon hem weer in als de kamertemperatuur onder de 'roomTempSet' komt?
Mooi dat 't werkt! Liefst idd wel ook zelf een beetje snappen hoe 't werkt, ik heb 't allemaal niet fail-proof gemaakt.Binifada schreef op woensdag 20 december 2023 @ 18:10:
@blb4
Je laatste regels staan sinds gisteren op mijn Jeisha.
Met uitzondering van DHW en pumpDuty zijn alle routines actief. Tot nu toe werkt het geweldig!![]()
Mijn Jeisha heeft 5 kW en wordt alleen gebruikt voor verwarming. De jouwe is een machine van 7 kW, als ik het me goed herinner.
Daarom ben ik nog steeds onzeker over maxPumpDuty.
Wat gebeurt er eigenlijk als ik de Jeisha zelf uitschakel?
Schakelt Heishamon hem weer in als de kamertemperatuur onder de 'roomTempSet' komt?
over maxPumpDuty:
De reden dat ik dit gebruik is geluidsoverlast (ruisend geluid in leidingen en radiatoren/convectoren) als de pompsnelheid te hoog staat. Als je daar geen last van hebt kan je 't rustig uitschakelen.
de waardes heb ik een beetje proefondervindelijk bepaald, dat kan je mogelijk eenvoudiger doen door gebruik te maken van HA integratie of 't Node Red dashboard. Over deze functie ben ik zelf erg tevreden, hij doet eigenlijk altijd gewoon wat tie moet doen.
Over het zelf uitschakelen of ingrijpen vanuit andere tools, b.v. HA:
Dit zijn nog wel de aandachtspunten die ik heb, de boel een beetje robuuster maken. Er zijn zeker verbeteringen mogelijk maar ook weer niet onbeperkt, er is geen UI waarin je ff wat regels tijdelijk kan stopzetten oid. 't Node Red dashboard vraag b.v. wat te doen als ontdekt wordt dat de WP wordt uitgezet.
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
... misschien kun je de regels activeren/deactiveren via een heishamon-commando "heishamon_rules on/off"?blb4 schreef op woensdag 20 december 2023 @ 18:34:
[...]
Over het zelf uitschakelen of ingrijpen vanuit andere tools, b.v. HA:
Dit zijn nog wel de aandachtspunten die ik heb, de boel een beetje robuuster maken. Er zijn zeker verbeteringen mogelijk maar ook weer niet onbeperkt, er is geen UI waarin je ff wat regels tijdelijk kan stopzetten oid. 't Node Red dashboard vraag b.v. wat te doen als ontdekt wordt dat de WP wordt uitgezet.
1
|
update: ging niet helemaal naar wens. De regel om de WP weer aan te schakeling in OTT functie werkt sneller dan de regel om #HPOffSource op een andere waarde te zetten..... Nog ff over nadenken.
Wat ik zelf doe als ik de WP via de controller wil uitzetten om een setting te veranderen is heel snel dat installer menu in te duiken. Als je daar eenmaal inzit schakelt de WP niet meer aan.
[ Voor 127% gewijzigd door blb4 op 20-12-2023 20:50 ]
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
neem bv dit vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| on ?roomTemp then calcWar(); $margin = 0.25; if ?roomTemp > (?roomTempSet + $margin) then if @Heatpump_State == 1 then @SetHeatpump = 0; end elseif ?roomTemp < (?roomTempSet - $margin) then if @Heatpump_State == 0 then @SetHeatpump = 1; end else @SetZ1HeatRequestTemperature = round(#maxTa); end end |
ik zie eigenijk alleen deze error terug komen in de console
rule #1 was prepared in 4437 microseconds
FATAL: Internal error in rule_parse #1252
rules memory used: 1180 / 16384
wellicht is de example niet meer toepasbaar op de huige firmware en dient die aangepast te worden.
maar dit stukje code spreekt mij wel aan voor de basis functie van opentherm lees de setpoint en regel aan de hand van de gemeten temperatuur aan of uit.
Jij brand ik blus! 4.640kW no-zw WH-MDC05J3E5
In de reguliere FW versies zitten een paar zaken die niet werken, voor zover ik weet zijn dat elseif en ceil functie. Er is een nieuwe alfa versie die dit oplost maar die versie draait niet stabiel. De makers waaronder @CurlyMo zijn hier mee bezig maar 't is lastig trouble shooten; ligt al ff stil.Balans schreef op woensdag 20 december 2023 @ 22:52:
even een andere vraag waarom werken de heishamon rules voorbeelden op https://github.com/Egyras/HeishaMon niet met de huidige firmware.
neem bv dit vb
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 on ?roomTemp then calcWar(); $margin = 0.25; if ?roomTemp > (?roomTempSet + $margin) then if @Heatpump_State == 1 then @SetHeatpump = 0; end elseif ?roomTemp < (?roomTempSet - $margin) then if @Heatpump_State == 0 then @SetHeatpump = 1; end else @SetZ1HeatRequestTemperature = round(#maxTa); end end
ik zie eigenijk alleen deze error terug komen in de console
rule #1 was prepared in 4437 microseconds
FATAL: Internal error in rule_parse #1252
rules memory used: 1180 / 16384
wellicht is de example niet meer toepasbaar op de huige firmware en dient die aangepast te worden.
maar dit stukje code spreekt mij wel aan voor de basis functie van opentherm lees de setpoint en regel aan de hand van de gemeten temperatuur aan of uit.
Als je dit stukje wil gebruiken kan je de functie iets aanpassen (elseif er uit halen):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| on ?roomTemp then calcWar(); $margin = 0.25; if ?roomTemp > (?roomTempSet + $margin) then if @Heatpump_State == 1 then @SetHeatpump = 0; end else if ?roomTemp < (?roomTempSet - $margin) then if @Heatpump_State == 0 then @SetHeatpump = 1; end else @SetZ1HeatRequestTemperature = round(#maxTa); end end end |
[ Voor 17% gewijzigd door blb4 op 20-12-2023 23:01 ]
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| on calcWar then $Ta1 = 29; $Tb1 = 15; $Ta2 = 36; $Tb2 = -15; #maxTa = $Ta1; if @Outside_Temp >= $Tb1 then #maxTa = $Ta1; else if @Outside_Temp <= $Tb2 then #maxTa = $Ta2; else #maxTa = $Ta1 + (($Tb1 - @Outside_Temp) * ($Ta2 - $Ta1) / ($Tb1 - $Tb2)); end end end |
bedankt voor de tip dit kon ik in de zee aan informatie niet terug vinden en zelf oplossen.
@thehog Wellicht dit dan op de git met voorbeelden aanpassen dat dit helaas nog niet werkt zoals nu staat beschreven of gewoon de voorbeelden gebruiken zonder elsif
Jij brand ik blus! 4.640kW no-zw WH-MDC05J3E5
Achtergrond:blb4 schreef op woensdag 20 december 2023 @ 20:20:
@Binifada
Wat ik zelf doe als ik de WP via de controller wil uitzetten om een setting te veranderen is heel snel dat installer menu in te duiken. Als je daar eenmaal inzit schakelt de WP niet meer aan.
Hier in Frankrijk heb ik een elektriciteitstarief dat bijzonder duur is op "rode" dagen. Tot nu toe heb ik de Jeisha uitgeschakeld via HA met "heatpump_state".
Op deze dagen verwarm ik mijn huis dan met een houtkachel.
Het zou dus contraproductief en duur zijn als de Jeisha weer zou opstarten.
Is het denkbaar om bijvoorbeeld "SetMaxPumpDuty=64" via HA te versturen en de Jeisha uit te schakelen totdat "SetMaxPumpDuty=254" via HA wordt verstuurd?
aha, voor jou use case hoeft hij niet echt uit maar de compressor moet uit blijven. Dat zou nog wel op andere manieren lukken. Ik wil zelf wel graag dat hij gewoon uit blijft als je 'm via de controller of via MQTT uit zet, ik heb een issue gelogd op Github wat dat in de weg zit.Binifada schreef op donderdag 21 december 2023 @ 19:12:
[...]
Achtergrond:
Hier in Frankrijk heb ik een elektriciteitstarief dat bijzonder duur is op "rode" dagen. Tot nu toe heb ik de Jeisha uitgeschakeld via HA met "heatpump_state".
Op deze dagen verwarm ik mijn huis dan met een houtkachel.
Het zou dus contraproductief en duur zijn als de Jeisha weer zou opstarten.
Is het denkbaar om bijvoorbeeld "SetMaxPumpDuty=64" via HA te versturen en de Jeisha uit te schakelen totdat "SetMaxPumpDuty=254" via HA wordt verstuurd?
Wat jij b.v. zou kunnen doen is DHW target temp naar laatste stand zetten en dan de OM op DHW only zetten
of zoiets...
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
OM op DHW werkt niet. Maar het instellen van "DHW_Target_Temp" werkt wel. Dus als er een "rode dag" is, stel ik DHW_Target_Temp = 40 in, dan gaat de Jeisha uit. Als de Jeisha weer moet opwarmen, stel ik DHW_Target_Temp > 40 in en de Jeisha start weer op.
De regels hiervoor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| on System#Boot then #dhwTargetTemp = -1; setTimer(1,60); end on timer=1 then #dhwTargetTemp = @DHW_Target_Temp; if #dhwTargetTemp == 40 && @Heatpump_State == 1 then @SetHeatpump = 0; end if #dhwTargetTemp > 40 && @Heatpump_State == 0 then @SetHeatpump = 1; end setTimer(1,15); end |
Ik durf de paar regels in je regels en Timer1 niet op te nemen. Denk je dat dat zou werken?
Dus zolang DHW_Target = 40, zou de Jeisha uit moeten blijven en worden alle andere regels genegeerd.
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
| on timer=1 then #dhwTargetTemp = @DHW_Target_Temp; if #dhwTargetTemp == 40 && @Heatpump_State == 1 then @SetHeatpump = 0; end if #dhwTargetTemp > 40 && @Heatpump_State == 0 then @SetHeatpump = 1; #3WVS = @ThreeWay_Valve_State; if #firstBoot == 1 then if @Compressor_Freq > 18 then #compStartTime = #timeRef; #compState = 1; end if #3WVS == 1 && #allowDHW == 1 then #DHWRun = 2; end compFreq(); WAR(); syncOT(); #firstBoot = 2; else WAR(); silentMode(); syncOT(); pumpDuty(); DHW(); OTT(); eXtRunTime(); if #debug == 1 then #chE = #chE; #chEOffTime = #chETimeOff; #chETimeOff = #chETimeOff; #compRunTime = #compRunTime; #compStartTime = #compStartTime; #compState = #compState; #dayTime = #dayTime; #DHWRun = #DHWRun; #firstBoot = #firstBoot; #operatingMode = #operatingMode; #prevHPS = #prevHPS; #prevOM = #prevOM; #roomTDelta = #roomTDelta; #silentMode = #silentMode; #timeRef = #timeRef; end end setTimer(1,15); 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
Ik heb dit soort gedrag ook wel gezien. Soms wat onvoorspelbaar en dan een beetje rommelen om de boel weer werkend te krijgen.Binifada schreef op dinsdag 16 januari 2024 @ 15:02:
@blb4 @CurlyMo
Hallo,
Ik heb de nieuwe Heishamon sinds half december bij OT. Vandaag wilde ik nieuwe regels laden. Dit lukte pas nadat ik de Heishamon opnieuw had opgestart.
Voorheen werkte het zonder herstarten.
Software 3.2.3 of 3.2.4-beta-2 maakte niet uit.
Heeft u ook soortgelijke symptomen?
Ben nu met @CurlyMo een nieuwe versie aan ‘t testen, zie ook dit bericht. Ik heb dit soort gedrag bij die versie niet gezien.
Mogelijk kan je hierbij helpen
[ Voor 12% gewijzigd door blb4 op 16-01-2024 19:46 ]
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
[ Voor 62% gewijzigd door blb4 op 16-01-2024 19:45 ]
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
@blb4Mogelijk kan je hierbij helpen.
Bedankt voor het aanbod. Ik denk niet dat mijn kennis hiervoor toereikend is.
Ik ben werktuigbouwkundig ingenieur en hobby programmeur.
Ook zoiets hier hoor, ik programmeer helemaal niets, gewoon nieuwe firmware versie er op zetten en monitoren wat er goed en verkeerd gaat en overleggen met @CurlyMoBinifada schreef op vrijdag 19 januari 2024 @ 17:25:
[...]
@blb4
Bedankt voor het aanbod. Ik denk niet dat mijn kennis hiervoor toereikend is.
Ik ben werktuigbouwkundig ingenieur en hobby programmeur.
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
😎 ... je bent erg bescheiden. Je hebt je regels op Github geprogrammeerd.
Ik werk er nog steeds mee. Ik heb ze aangepast voor mijn doeleinden.
Omdat ik de Jeisha alleen voor verwarming gebruik, schakel ik de compressor uit/aan via "DHWSoll".
Wat hij bedoeld is dat hij het programmeert in een programmeertaal die ik heb bedacht en waarvoor ik de library heb geschrevenBinifada schreef op zaterdag 20 januari 2024 @ 16:25:
[...]
😎 ... je bent erg bescheiden. Je hebt je regels op Github geprogrammeerd.

Sinds de 2 dagen regel reageer ik hier niet meer
idd, met veel afkijken en trial and error lukt een beetje if then else me nog wel. En ik hou gelukkig van spaghettiCurlyMo schreef op zaterdag 20 januari 2024 @ 17:46:
[...]
Wat hij bedoeld is dat hij het programmeert in een programmeertaal die ik heb bedacht en waarvoor ik de library heb geschreven
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
@blb4blb4 schreef op zaterdag 23 december 2023 @ 02:04:
@Binifada, ja, zo moet dat wel lukken! Ik heb inmiddels een work around tip gekregen, kom ik op terug
kwam verder met de tip?
Omdat zover ik het allemaal overzie deze LUA implementatie alsnog naar een binary compileert die je upload naar je ESP. Oftewel, het geeft je een alternatieve taal om in te programmeren naast C++, maar de uitkomst is hetzelfde.RichieB schreef op zondag 21 januari 2024 @ 16:31:
@CurlyMo Niet negatief bedoeld, maar waarom heb je een eigen scripttaal geschreven en niet iets bestaands gebruikt zoals Lua?
Mijn library is een interpreterer die je de mogelijkheid geeft live het gedrag aan te passen van je ESP. Waardoor je niet opnieuw een firmware hoeft te laden.
Sinds de 2 dagen regel reageer ik hier niet meer
[ Voor 22% gewijzigd door RichieB op 21-01-2024 18:21 ]
Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp
Ok, nieuw antwoord:RichieB schreef op zondag 21 januari 2024 @ 18:13:
@CurlyMo Wat jij beschrijft is precies wat NodeMCU met Lua doet: het draait een Lua interpreter op de ESP. Als je daar (bijv. via een webinterface) scripts naar toe stuurt kan je die meteen uitvoeren. Hetzelfde kan ook met een ESP MicroPython interpreter.
1: Omdat ik het niet kende
2: Omdat ik het leuk vond zelf te maken
3: Om 1 weet ik niet wat de performance van LUA is op de ESP8266. Dat zou ik eens moeten testen.
Ik weet dat mijn code bijzonder snel is, maar weet ik ook dat LUA me altijd ten positieve heeft verbaasd over zijn performance. Ik heb het in andere x86/x64 projecten inderdaad geïmplementeerd als interpreter taal en vond dat heel prettig werken.
Sinds de 2 dagen regel reageer ik hier niet meer
Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp
Inmiddels zijn we al weer een hele tijd verder en is er veel gebeurd. Mijn huidige ruleset staat hieronder. Is een beetje cryptisch geworden (b.v. korte variable namen) om de rules in de HeishaMon geheugen te laten passen.
Ik gebruik nu @Z2_Heat_Request_Temp als remote Override (#rOR). @Z2_Heat_Request_Temp wordt door mij (en volgens mij in de meeste installaties) niet gebruikt maar kan dus wel ingesteld worden.
on QM then wordt alleen uitgevoerd bij #rOR < 2;
on eXtRT then wordt alleen uitgevoerd bij #rOR < 3;
on OTT then wordt alleen uitgevoerd bij #rOR < 4;
on DHW then wordt alleen uitgevoerd bij #rOR < 4;
on pumpDuty then wordt alleen uitgevoerd bij #rOR < 5;
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
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
| on System#Boot then #aDHW = 1; #aOTT = 1; #aXRT= 1; #aPumpDuty = 1; #aQM = 1; #aSyncHP = 1; #aSyncOT = 1; #maxTa = 36; #3W = -1; #CF = -1; #chE = -1; #chEOT= -1; #chETO = -1; #cRT= -1; #cCT= -1; #CS = -1; #DF = -1; #DHWRun = -1; #firstBoot = 1; #HPState = -1; #oMode = -1; #OT = -1; #prevHPS = -1; #prevOM = -1; #remoteHPSOff = -1; #rOR = -1; #QL = -1; #QM = -1; #QF = -1; #roomTDelta = -1; #time = -1; setTimer(1,60); setTimer(2,10); end on eXtRT then if #aXRT== 1 && #rOR < 3 && #DHWRun < 1 && #3W == 0 && #DF == 0 then #aXRT= 2; #hRT = @Z1_Heat_Request_Temp; $mOT = @Main_Outlet_Temp; $mTT = @Main_Target_Temp; $mDT = $mOT - $mTT; if #CS == 1 && (#OT > 6 || #hRT != 0) then if #cRT> 15 then if $mDT > 1.8 then #hRT = 1 + #hRT; else if $mDT < 0.5 && #hRT > 0 then #hRT = -1 + #hRT; end end $mShift = floor(2+ (#OT - 7 ) / 3); if #hRT > $mShift then #hRT = $mShift; end if #hRT < -1 then #hRT = -1; end else if #cRT > 0 && #cRT < 2 && $mOT < ($mTT - 4) && @Z1_Water_Target_Temp > 30 then #hRT = -2; end end else if #CS == 0 && #cRT > -30 && #cRT < 2 then #hRT = -5; else #hRT = 0; end end if (%hour > 22 || %hour < 7) && #OT < 3 && #hRT > -3 && $mDT < 0.5 then #hRT = -1 + #hRT; end if #hRT != @Z1_Heat_Request_Temp then @SetZ1HeatRequestTemperature = #hRT; end setTimer(8,60); end end on HPS then if #remoteHPSOff != 1 && @Heatpump_State != #HPState then @SetHeatpump = #HPState; end end on OTT then if #aOTT == 1 && #rOR < 4 && #DHWRun < 1 && #3W == 0 && #DF == 0 then if #chE == 1 && @Main_Outlet_Temp < 25 then #HPState = 1; HPS(); end if (#chEOT> 30 || #chEOT> 15 && #cRT < -15) && #3W == 0 && (#cRT> 60 || #CS == 0) && #OT > -4 then #HPState = 0; HPS(); if @Operating_Mode_State != 0 then @SetOperationMode = 0; end #aOTT = 2; setTimer(7,600); end if #chE == 0 then #aOTT = 3; setTimer(7,25); end end end on DHW then if #aDHW == 1 && #rOR < 4 then #aDHW = 2; $lRD = 7; if #3W == 0 && (@DHW_Temp < 37 || (%hour == 13 && (%day == $lRD || @DHW_Temp < (@DHW_Target_Temp + @DHW_Heat_Delta)))) then #DHWRun = 1; #prevOM = @Operating_Mode_State; #prevHPS = @Heatpump_State; @SetOperationMode = 4; if @Heatpump_State != 1 then #HPState = 1; HPS(); end end if #DHWRun > 0 then if %day == $lRD && %hour >= 13 && @DHW_Temp > 47 && @Sterilization_State != 1 then @SetForceSterilization = 1; end if #3W == 0 && @DHW_Temp >= @DHW_Target_Temp && #DF == 0 && @Sterilization_State == 0 then @SetOperationMode = #prevOM; if @Heatpump_State != #prevHPS then #HPState = #prevHPS; HPS(); end #prevOM = 4; #prevHPS = 1; #DHWRun = 0; end end #oMode = @Operating_Mode_State; setTimer(6,900); end end on pumpDuty then if #aPumpDuty == 1 && #rOR < 5 then #aPumpDuty = 2; #mPD = 85; if #3W == 1 then #mPD = 140; if (@Sterilization_State == 0 && @DHW_Temp > @DHW_Target_Temp) || (@Sterilization_State == 1 && @DHW_Temp > 57) then #mPD = 10 + #mPD; end else if @Heatpump_State == 1 then if #CF == 0 && #DF != 1 then #mPF = 8; else $QFH = 10; $QFL = 14; $tH = 11; $tL = -3; if #OT >= $tH then #mPF = $QFH; else if #OT <= $tL then #mPF = $QFL; else #mPF = 1 + floor(0.9 + $QFH + ($tH - #OT) * ($QFL - $QFH) / ($tH - $tL)); end end end #mPD = 55+ floor(#mPF * 3); if (%hour > 22 || %hour < 6) && #mPD > 88 then #mPD = 88; end end end if @Max_Pump_Duty != #mPD then @SetMaxPumpDuty = #mPD; end setTimer(5, 60); end end on sQM then if #QM != #QL then @SetQuietMode = #QL; end end on QM then if #aQM == 1 && #rOR < 2 && #DF == 0 then #aQM = 2; if #OT < 3 || (#OT < 5 && #QF == 34) then #QF = 34; else #QF = 24; end if #cRT< 3 && #CF > 35 then #QL = 3; else if #CF < #QF || (#QM == 0 && #CF < #QF + 6) then #QL = 0; else if #CF < #QF + 6 || (#QM == 1 && #CF < #QF + 12) then #QL = 1; else if #CF < #QF + 26 || (#QM == 2 && #CF < #QF + 32) then #QL = 2; else #QL = 3; end end end end if #QL > 1 && #3W == 1 && %hour > 9 && %hour < 17 then #QL = -1 + #QL; end setTimer(3,120); end if #DF == 1 && #aQM > 0 then #QL = 3; end sQM(); end on syncOT then if #aSyncOT == 1 then ?outletTemp = @Main_Outlet_Temp; ?inletTemp = @Main_Inlet_Temp; ?outsideTemp = #OT; ?dhwTemp = @DHW_Temp; ?dhwSetpoint = @DHW_Target_Temp; if ?chEnable == 1 then #chE = 1; if #chETO != -1 then #chETO = -1; #chEOT= -1; end else if #chETO == -1 then #chETO = #time; end #chEOT= #time - #chETO; if #chEOT> 5 || ?chSetpoint == 10 then #chE = 0; end end ?maxTSet = #maxTa; if #CF == 0 then ?flameState = 0; ?chState = 0; ?dhwState = 0; else ?flameState = 1; if #DF == 0 then if #3W == 0 then ?chState = 1; ?dhwState = 0; else ?chState = 0; ?dhwState = 1; end else ?chState = 0; ?dhwState = 0; end end #roomTDelta = ?roomTempSet - ?roomTemp; end end on syncHP then if #aSyncHP == 1 then #aSyncHP = 2; #3W = @ThreeWay_Valve_State; #CF = @Compressor_Freq; #DF = @Defrosting_State; #OT = @Outside_Temp; #QM = @Quiet_Mode_Level; #rOR = @Z2_Heat_Request_Temp; setTimer(9,30); end end on compFreq then if #CF > 18 && #CS == 0 then #cCT= #time; #CS = 1; if #aXRT!= -1 then #aXRT= 1; eXtRT(); end end if #CF < 18 && #CS == 1 then #cCT= #time; #CS = 0; end end on @Heatpump_State then $hPS = @Heatpump_State; if $hPS != #HPState || #remoteHPSOff == 1 then if $hPS == 0 then #remoteHPSOff = 1; else #remoteHPSOff = -1; end end end on @Operating_Mode_State then $oMS = @Operating_Mode_State; if $oMS != #oMode && $oMS > 2 && $oMS < 5 then #DHWRun = 2; end end on timer=1 then if #rOR > 0 && #remoteHPSOff == 1 then #remoteHPSOff = -1; end if #firstBoot == 1 then #cCT= #time; if @Compressor_Freq > 18 then #CS = 1; else #CS = 0; end if #3W == 1 && #aDHW == 1 then #DHWRun = 2; end compFreq(); #firstBoot = 2; else syncHP(); syncOT(); compFreq(); QM(); pumpDuty(); DHW(); OTT(); eXtRT(); end setTimer(1,15); end on timer=2 then #time = %day * 1440 + %hour * 60 + %minute; if #CF > 18 then #cRT= #time - #cCT; if #cRT< 0 then #cRT= #time - #cCT+ 10080; end else #cRT= #cCT- #time; end setTimer(2,60); end on timer=3 then #aQM = 1; end on timer=5 then #aPumpDuty = 1; end on timer=6 then #aDHW = 1; end on timer=7 then #aOTT = 1; end on timer=8 then #aXRT = 1; end on timer=9 then #aSyncHP = 1; 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
Wat is de reden waarom je de variabele aQM declareert en ook rOR opvraagt?
Wil je de blokken aan/uit zetten met rOr tijdens het gebruik?
precies, die aQM etc zijn 2-ledig;Binifada schreef op maandag 22 januari 2024 @ 19:26:
@blb4
Wat is de reden waarom je de variabele aQM declareert en ook rOR opvraagt?
Wil je de blokken aan/uit zetten met rOr tijdens het gebruik?
- wel of niet gebruik van die functie door in de bootloop 1 of 0 te selecteren;
- middels de individuele timers verschillende loop-tijd te kunnen gebruiken.
En oh ja, vergeten, rOR > 0 zou er ook voor moeten zorgen dat de rules de WP niet meer aan/uit zetten (setheatpump=0/1), dus op die manier kan je handmatig (b.v. via de Controller) de HP 'uit' zetten en dan zetten de rules 'm niet meer aan. Alleen dat zit er niet niet goed in.....
[ Voor 3% gewijzigd door blb4 op 22-01-2024 19:51 ]
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
@CurlyMo @blb4blb4 schreef op zondag 21 januari 2024 @ 23:25:
[...]
Mijn huidige ruleset staat hieronder. Is een beetje cryptisch geworden (b.v. korte variable namen) om de rules in de HeishaMon geheugen te laten passen.
Is het mogelijk om opmerkingen in de regels op te nemen?
Dit zou erg handig zijn voor het begrijpen van je eigen regels of die van anderen.
Helaas niet. Er wordt wel over nagedacht, zie discussie op GitHub maar ‘t zou nu ten koste gaan van ruimte voor de regels.Binifada schreef op dinsdag 23 januari 2024 @ 16:07:
[...]
@CurlyMo @blb4
Is het mogelijk om opmerkingen in de regels op te nemen?
Dit zou erg handig zijn voor het begrijpen van je eigen regels of die van anderen.
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
Ik ben nu aan het experimenteren met Lua voor op de HeishaMon n.a.v. de tip van @RichieB .blb4 schreef op dinsdag 23 januari 2024 @ 16:58:
[...]
Helaas niet. Er wordt wel over nagedacht, zie discussie op GitHub maar ‘t zou nu ten koste gaan van ruimte voor de regels.
Sinds de 2 dagen regel reageer ik hier niet meer
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
| v = {}; v.WPAan = 0 v.WPUit = 0 v.prevSilentMode = 0 v.silentMode = 0 v.maxShift = 0 v.maxTa = 0 v.onTemp = 0 v.outletOnTemp = 0 v.prevOutletTemp = 0 v.varCounter1 = 0 v.varCounter2 = 0 v.totalRunTime = 0 v.runTime = 0 v.allowSilentMode = 1 v.allowShift = 1 v.prevShift = 0 v.targetTempDiff = 0 v.T1 = 0 v.T2 = 0 function boot() setTimer(1, 3); setTimer(3, 1200); HP.Main_Outlet_Temp=function(val) if val >= v.maxTa then v.outletOnTemp = 1; end v.prevOutletTemp = val; berekenWar(); setNewTemp(); end HP.Main_Inlet_Temp=function(val) berekenWar(); setNewTemp(); end HP.Outside_Temp=function(val) berekenWar(); setNewTemp(); end OT.setpoint=function(val) v.T1 = val + 0.20; v.T2 = val - 0.20; end HP.Compressor_Freq=function(val) if val == 0 then v.outletOnTemp = 0; end end end function timer1() -- for k, v in pairs(HP) do -- print(k .. ':' .. v); -- end setTimer(1, 3); end function timer2() v.allowSilentMode = 1; end function checkSilentMode() if v.allowSilentMode == 1 then if isset(HP.Outside_Temp) then if HP.Outside_Temp < 2 then if DT.hour > 22 or DT.hour < 7 then v.silentMode = 1; else v.silentMode = 0; end elseif HP.outside_temp < 5 then v.silentMode = 1; elseif HP.outside_temp < 10 then v.silentMode = 2; else v.silentMode = 3; end if v.prevSilentMode ~= v.silentMode and OT.state == 1 then setTimer(2, 900); v.allowSilentMode = 0; v.prevSilentMode = v.silentMode; v.varCounter2 = v.varCounter2 + 1; HP.setQuietMode = silentMode; end end end end function stooklijn() local diff = 0; local offset = 0; if isset(HP.Outside_Temp) and isset(HP.Main_Outlet_Temp) then if HP.Outside_Temp < 2 then offset = -0.2; end if v.targetTempDiff <= (0 + offset) then if (v.maxTa - HP.Main_Outlet_Temp) >= 3 then diff = -4; else diff = -3; end elseif targetTempDiff <= (0.2 + offset) then if (v.maxTa - HP.Main_Outlet_Temp) >= 1 then diff = -2; else diff = -1; end elseif targetTempDiff >= (0.4 + offset) then diff = 1; end end if diff ~= 0 and isset(HP.Z1_Heat_Curve_Target_Low_Temp) and isset(HP.Z1_Heat_Curve_Target_High_Temp) and isset(HP.Main_Target_Temp) then if (v.maxTa + diff) >= HP.Z1_Heat_Curve_Target_Low_Temp and (v.maxTa + diff) <= HP.Z1_Heat_Curve_Target_High_Temp then maxShift = diff; elseif diff < 0 then if (v.maxTa + diff) >= HP.Z1_Heat_Curve_Target_Low_Temp then maxShift = math.max(math.min((v.maxTa - MOT), 0), -1); else maxShift = math.min((HP.Z1_Heat_Curve_Target_Low_Temp - v.maxTa), (v.maxTa - HP.Main_Target_Temp), 0); end elseif diff > 0 and (v.maxTa + diff) > HP.Z1_Heat_Curve_Target_High_Temp then maxShift = 0; end end end function berekenWar() if isset(HP.Outside_Temp) and isset(HP.Z1_Heat_Curve_Outside_High_Temp) and isset(HP.Z1_Heat_Curve_Target_Low_Temp) and isset(HP.Z1_Heat_Curve_Outside_Low_Temp) and isset(HP.Z1_Heat_Curve_Target_High_Temp) then if HP.Outside_Temp >= HP.Z1_Heat_Curve_Outside_High_Temp then v.maxTa = HP.Z1_Heat_Curve_Target_Low_Temp; else if HP.Outside_Temp <= HP.Z1_Heat_Curve_Outside_Low_Temp then v.maxTa = HP.Z1_Heat_Curve_Target_High_Temp; else v.maxTa = math.ceil(HP.Z1_Heat_Curve_Target_Low_Temp + ((HP.Z1_Heat_Curve_Outside_High_Temp - HP.Outside_Temp) * (HP.Z1_Heat_Curve_Target_High_Temp - HP.Z1_Heat_Curve_Target_Low_Temp) / (HP.Z1_Heat_Curve_Outside_High_Temp - HP.Z1_Heat_Curve_Outside_Low_Temp))); end end end stooklijn(); end function timer6() v.allowShift = 1; end function setNewTemp() if isset(HP.Main_Outlet_Temp) and isset(HP.Main_Inlet_Temp) and isset(HP.High_Pressure) and isset(HP.Defrosting_State) and isset(HP.Z1_Heat_Request_Temp) and isset(OT.state) then local dT = HP.Main_Outlet_Temp - HP.Main_Inlet_Temp; if v.maxShift < 0 and ((v.dT < 3 and v.outletOnTemp == 0) or HP.High_Pressure < 15) then v.maxShift = 0; end local dTOutlet = HP.Main_Outlet_Temp - (v.maxTa + v.maxShift); if dTOutlet > 1 and HP.Defrosting_State == 0 and v.allowShift == 1 then setTimer(5, 90); v.allowShift = 0; end if OT.state == 0 then v.maxShift = 0; end if (v.prevShift ~= v.maxShift or HP.Z1_Heat_Request_Temp ~= v.maxShift) and OT.state == 1 then v.prevShift = v.maxShift; v.varCounter1 = v.varCounter1 + 1; HP.SetZ1HeatRequestTemperature = v.maxShift; end end end function timer5() if isset(HP.Main_Outlet_Temp) then maxShift = math.max(math.min((v.maxTa - HP.Main_Outlet_Temp), 0), -1); setTimer(6, 900); setNewTemp(); end end function timer3() if isset(OT.Setpoint) and isset(OT.Temperature) and isset(v.T1) and isset(v.T2) and isset(HP.Outside_Temp) and isset(OT.Defrosting_State) and isset(HP.Compressor_Freq) and isset(OT.State) then targetTempDiff = OT.setpoint - OT.temperature if OT.temperature > v.T1 then v.onTemp = 1; elseif OT.temperature < v.T2 then v.onTemp = 0; end berekenWar(); setNewTemp(); checkSilentMode(); if OT.state == 1 then v.runTime = v.runTime + 1; end end v.totalRunTime = v.totalRunTime + 1; print('TotalRunTime: ' .. v.totalRunTime); print('RunTime: ' .. v.runTime); setTimer(3, 60); end function timer(nr) if nr == 1 then timer1() elseif nr == 2 then timer2() elseif nr == 3 then timer3() elseif nr == 5 then timer5() elseif nr == 6 then timer6() end end |
Sinds de 2 dagen regel reageer ik hier niet meer
Je hebt al iets draaien met Lua voor jezelf?
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
Foei, net op de Lua wiki geleerd dat 't Lua is, geen LUA
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
DRAM free: 13616 IRAM free: 20432 ... DRAM free: 13552 IRAM free: 3784
En daar kan wel het e.e.a. in geoptimaliseerd worden.
Sinds de 2 dagen regel reageer ik hier niet meer

Een versie voor mijn rule parser verbruikt: 9936
In Lua is dat dus: 16648
Krap 70% meer dus. Daar wordt @blb4 niet blij van
[ Voor 5% gewijzigd door CurlyMo op 25-01-2024 22:04 ]
Sinds de 2 dagen regel reageer ik hier niet meer
techniques-for-reducing-ram-and-spiffs-footprint
Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp
Die ken ik inderdaad. Alle tips al bekeken. Maar gezien ik een stripped en compiled versie van mijn Lua script al naar de ESP8266 stuur gaat het daarin niet efficiënter worden.RichieB schreef op donderdag 25 januari 2024 @ 23:41:
@CurlyMo Ik weet niet of het helpt, maar heb je dit gelezen?
techniques-for-reducing-ram-and-spiffs-footprint
Ik heb mijn library juist gemaakt om super efficiënt met geheugen om te gaan. Wat ik van Lua dan weer wel geleerd heb door er even in te duiken, is dat het een véél efficiëntere VM gebruikt. Daar kan ik nog wel even wat langer voor zitten om dichter bij de Lua snelheid te komen.
Sinds de 2 dagen regel reageer ik hier niet meer
Dat geheugenverbruik klinkt wat angstwekkend idd.CurlyMo schreef op donderdag 25 januari 2024 @ 22:04:
Nog even aanvullend op Lua op de ESP8266. Het is SNEL. Echt niet normaal. Scheelt zomaar een factor 10 met wat mijn VM doet. Maar het verbruikt ook VEEL geheugen. De test die ik werkend heb gekregen is wanneer ik een pre-gecompileerd Lua script gebruik. Maar dan nog steeds met een veelvoud aan geheugen.
Een versie voor mijn rule parser verbruikt: 9936
In Lua is dat dus: 16648
Krap 70% meer dus. Daar wordt @blb4 niet blij van
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
1
2
| if 1 == 2 and 3 >= 4 and 5 == 6 then a = math.max(5, 3, 2); else b = 9; end if 1 == 2 || 3 >= 4 || 5 == 6 then $a = max(1, 3, 2); else $b = 9; end |
Oftewel, lua vs mijne
Wat mijne parsed qua uiteindelijke bytecode:
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
| 0(TSTART)[8][type: 23, ret: 240, go: 48] 8(TFUNCTION)[16][type: 2, ret: 180, token: 0, value: 0, nrgo: 3, go[0: 24, 1: 32, 2: 40]] 24(TNUMBER)[8][type: 4, ret: 8, token: 1] 32(TNUMBER)[8][type: 4, ret: 8, token: 3] 40(TNUMBER)[8][type: 4, ret: 8, token: 2] 48(TIF)[12][type: 12, ret: 0, go: 128, sync: 0, true_: 168, false: 200] 60(TNUMBER)[8][type: 4, ret: 68, token: 1] 68(TOPERATOR)[12][type: 1, ret: 88, token: 0, left: 60, right: 80, value: 0] 80(TNUMBER)[8][type: 4, ret: 68, token: 2] 88(TOPERATOR)[12][type: 1, ret: 128, token: 7, left: 68, right: 108, value: 0] 100(TNUMBER)[8][type: 4, ret: 108, token: 3] 108(TOPERATOR)[12][type: 1, ret: 88, token: 9, left: 100, right: 120, value: 0] 120(TNUMBER)[8][type: 4, ret: 108, token: 4] 128(TOPERATOR)[12][type: 1, ret: 48, token: 7, left: 88, right: 148, value: 0] 140(TNUMBER)[8][type: 4, ret: 148, token: 5] 148(TOPERATOR)[12][type: 1, ret: 128, token: 0, left: 140, right: 160, value: 0] 160(TNUMBER)[8][type: 4, ret: 148, token: 6] 168(TTRUE)[8][type: 21, ret: 48, nrgo: 1, go[0: 180]] 180(TVAR)[8][type: 18, ret: 168, go: 8, value: 188] 188(TVALUE)[12][type: 24, go: 0, token: $a] 200(TTRUE)[8][type: 22, ret: 48, nrgo: 1, go[0: 212]] 212(TVAR)[8][type: 18, ret: 200, go: 232, value: 220] 220(TVALUE)[12][type: 24, go: 0, token: $b] 232(TNUMBER)[8][type: 4, ret: 212, token: 9] 240(TEOF)[4][type: 8] |
Of als een plaatje:
:fill(white):strip_exif()/f/image/ba33uaJ3fi7XmBhJDhfKfEId.png?f=user_large)
En wat Lua doet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| 1 [1] EQ 0 -1 -2 ; 1 2 2 [1] JMP 0 12 ; to 15 3 [1] LE 0 -4 -3 ; 4 3 4 [1] JMP 0 10 ; to 15 5 [1] EQ 0 -5 -6 ; 5 6 6 [1] JMP 0 8 ; to 15 7 [1] GETTABUP 0 0 -8 ; - "math" 8 [1] GETTABLE 0 0 -9 ; "max" 9 [1] LOADK 1 -5 ; 5 10 [1] LOADK 2 -3 ; 3 11 [1] LOADK 3 -2 ; 2 12 [1] CALL 0 4 2 13 [1] SETTABUP 0 -7 0 ; - "a" 14 [1] JMP 0 1 ; to 16 15 [1] SETTABUP 0 -10 -11 ; - "b" 9 16 [1] RETURN 0 1 |
Als je een beetje van puzzelen houdt, dan is de Lua logica best aardig te begrijpen. Dat is wel eventjes wat compacter
Ik denk dat ik die stap van mijn bytecode naar die van lua nog wel kan maken in een aanvullende stap.
Sinds de 2 dagen regel reageer ik hier niet meer
Meelezen is zeker leuk!! Begrijpen is een ander dingCurlyMo schreef op vrijdag 26 januari 2024 @ 13:30:
Ik begrijp ondertussen dat mensen het leuk vinden om mee te lezen:
code:
1 2 if 1 == 2 and 3 >= 4 and 5 == 6 then a = math.max(5, 3, 2); else b = 9; end if 1 == 2 || 3 >= 4 || 5 == 6 then $a = max(1, 3, 2); else $b = 9; end
Oftewel, lua vs mijne
Wat mijne parsed qua uiteindelijke bytecode:
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 0(TSTART)[8][type: 23, ret: 240, go: 48] 8(TFUNCTION)[16][type: 2, ret: 180, token: 0, value: 0, nrgo: 3, go[0: 24, 1: 32, 2: 40]] 24(TNUMBER)[8][type: 4, ret: 8, token: 1] 32(TNUMBER)[8][type: 4, ret: 8, token: 3] 40(TNUMBER)[8][type: 4, ret: 8, token: 2] 48(TIF)[12][type: 12, ret: 0, go: 128, sync: 0, true_: 168, false: 200] 60(TNUMBER)[8][type: 4, ret: 68, token: 1] 68(TOPERATOR)[12][type: 1, ret: 88, token: 0, left: 60, right: 80, value: 0] 80(TNUMBER)[8][type: 4, ret: 68, token: 2] 88(TOPERATOR)[12][type: 1, ret: 128, token: 7, left: 68, right: 108, value: 0] 100(TNUMBER)[8][type: 4, ret: 108, token: 3] 108(TOPERATOR)[12][type: 1, ret: 88, token: 9, left: 100, right: 120, value: 0] 120(TNUMBER)[8][type: 4, ret: 108, token: 4] 128(TOPERATOR)[12][type: 1, ret: 48, token: 7, left: 88, right: 148, value: 0] 140(TNUMBER)[8][type: 4, ret: 148, token: 5] 148(TOPERATOR)[12][type: 1, ret: 128, token: 0, left: 140, right: 160, value: 0] 160(TNUMBER)[8][type: 4, ret: 148, token: 6] 168(TTRUE)[8][type: 21, ret: 48, nrgo: 1, go[0: 180]] 180(TVAR)[8][type: 18, ret: 168, go: 8, value: 188] 188(TVALUE)[12][type: 24, go: 0, token: $a] 200(TTRUE)[8][type: 22, ret: 48, nrgo: 1, go[0: 212]] 212(TVAR)[8][type: 18, ret: 200, go: 232, value: 220] 220(TVALUE)[12][type: 24, go: 0, token: $b] 232(TNUMBER)[8][type: 4, ret: 212, token: 9] 240(TEOF)[4][type: 8]
Of als een plaatje:
[Afbeelding]
En wat Lua doet:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 [1] EQ 0 -1 -2 ; 1 2 2 [1] JMP 0 12 ; to 15 3 [1] LE 0 -4 -3 ; 4 3 4 [1] JMP 0 10 ; to 15 5 [1] EQ 0 -5 -6 ; 5 6 6 [1] JMP 0 8 ; to 15 7 [1] GETTABUP 0 0 -8 ; - "math" 8 [1] GETTABLE 0 0 -9 ; "max" 9 [1] LOADK 1 -5 ; 5 10 [1] LOADK 2 -3 ; 3 11 [1] LOADK 3 -2 ; 2 12 [1] CALL 0 4 2 13 [1] SETTABUP 0 -7 0 ; - "a" 14 [1] JMP 0 1 ; to 16 15 [1] SETTABUP 0 -10 -11 ; - "b" 9 16 [1] RETURN 0 1
Als je een beetje van puzzelen houdt, dan is de Lua logica best aardig te begrijpen. Dat is wel eventjes wat compacterDe belangrijkste winst is dat Lua altijd vooruit redeneert. Best slim gedaan.
Ik denk dat ik die stap van mijn bytecode naar die van lua nog wel kan maken in een aanvullende stap.
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # Nieuw rule #1 was prepared in 723 microseconds rule #1 AST was created in 1288 microseconds AST is 92 bytes rule #1 bytecode was created in 459 microseconds bytecode is 48 bytes rule #1 was executed in 355 microseconds bytecode is 48 bytes Rule 01.1 / 02: [ if 3 == 3 then $a = 6; end ] # Oud rule #1 was prepared in 758 microseconds rule #1 was parsed in 1591 microseconds bytecode is 92 bytes rule #1 was executed in 788 microseconds bytecode is 92 bytes Rule 01.1 / 02: [ if 3 == 3 then $a = 6; end ] |
Die laatste extra stap ziet er vooralsnog zo uit. Daar zie je duidelijk de Lua invloed:
1
2
3
4
5
6
7
8
| 0 VINTEGER 3 8 VINTEGER 3 16 OP 0 20 JMP 44 24 VINTEGER 6 32 VCHAR $a 40 SETVAL 44 RET |
Snelheidswinst: 220%
Geheugenwinst: 190%
Sinds de 2 dagen regel reageer ik hier niet meer
Dit ziet er hoopvol uit!CurlyMo schreef op zondag 28 januari 2024 @ 20:46:
Eerste experiment om met nog een extra stap meer richting de Lua logica te gaan.
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # Nieuw rule #1 was prepared in 723 microseconds rule #1 AST was created in 1288 microseconds AST is 92 bytes rule #1 bytecode was created in 459 microseconds bytecode is 48 bytes rule #1 was executed in 355 microseconds bytecode is 48 bytes Rule 01.1 / 02: [ if 3 == 3 then $a = 6; end ] # Oud rule #1 was prepared in 758 microseconds rule #1 was parsed in 1591 microseconds bytecode is 92 bytes rule #1 was executed in 788 microseconds bytecode is 92 bytes Rule 01.1 / 02: [ if 3 == 3 then $a = 6; end ]
Die laatste extra stap ziet er vooralsnog zo uit. Daar zie je duidelijk de Lua invloed:
code:
1 2 3 4 5 6 7 8 0 VINTEGER 3 8 VINTEGER 3 16 OP 0 20 JMP 44 24 VINTEGER 6 32 VCHAR $a 40 SETVAL 44 RET
Snelheidswinst: 220%
Geheugenwinst: 190%
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
Regels worden niet herladen na een crash. Ik heb vaak een crash als ik Heishamon oproep met de browser.
Wat is er aan de hand?
Ik heb geen goed overzicht maar wat je beschrijft komt mij wel bekend voor. HeishaMon wordt redelijk zwaar op de proef gesteld icm OT, er zijn zeer veel OT berichten te verwerken. De ene (alfa / beta / stable) release is beter dan de andere. Ik draai nu op Alpha-0c878f5 met een redelijk grote ruleset, dat gaat redelijk goed.Binifada schreef op dinsdag 6 februari 2024 @ 18:48:
Hier draait een Heishamon met OT (3.2.3). Crasht keer op keer. De langste looptijd was drie dagen.
Regels worden niet herladen na een crash. Ik heb vaak een crash als ik Heishamon oproep met de browser.
Wat is er aan de hand?
Ik heb wel wat gebouwd om automatisch de rules weer te activeren na een crash. Ik doe dat door in mijn HA systeem een batch file te starten met daarin het command:
1
| curl -vvv http://http://heishamon.local//saverules -F rules=@./HeishamonRules.txt |
De trigger die ik hiervoor gebruik is de ?dhwSetpoint waarde, die is bij default (en dus ook na een crash) 65 graden terwijl ik die op 50 graden zet (kopie van @DHW_Target_Temp); als ?dhwSetpoint 2 minuten de waarde 65 heeft dan worden de rules dus weer opnieuw geladen.
@CurlyMo is trouwens met die stabiliteit bezig, 't idee is o.a. om de rules processing async te laten verlopen.
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
ok, ik zal de .bin Alpha-0c878f5 binnenkort testen.
Waar ik ook tegenaan loop is dat de rulesets lastig te begrijpen zijn omdat er korte variabele namen worden gebruikt en er geen commentaar in zit. Ik ben daarom bezig om een soort minifier te schrijven zodat je bij het ontwikkelen van de ruleset wel comments en logische namen kunt gebruiken, maar dan alsnog een kleine ruleset krijgt die je kunt uploaden naar de Heishamon: https://github.com/klaashoekstra94/heishamon_rules_minify
Ik ben zelf ook al bezig om wat van de NodeRED logica om te schrijven naar rules, zoals bijvoorbeeld de room temperature correction. Ik heb dit alleen nog niet goed genoeg kunnen testen. Maar ik vroeg mij af, heeft iemand de soft-start functionaliteit van de NodeRED flow al omgeschreven naar HeishaMon rules?
Geweldig!!klaashoekstra94 schreef op maandag 12 februari 2024 @ 17:15:
Goedemiddag, ik hoop met de HeishaMon rules ook van de NodeRED flow af te kunnen stappen en zo alles zonder domotica kunnen laten werken. Hopen dat de async rules library binnenkort stabiel genoeg wordt om te gebruiken :-)
Waar ik ook tegenaan loop is dat de rulesets lastig te begrijpen zijn omdat er korte variabele namen worden gebruikt en er geen commentaar in zit. Ik ben daarom bezig om een soort minifier te schrijven zodat je bij het ontwikkelen van de ruleset wel comments en logische namen kunt gebruiken, maar dan alsnog een kleine ruleset krijgt die je kunt uploaden naar de Heishamon: https://github.com/klaashoekstra94/heishamon_rules_minify
Ik ben zelf ook al bezig om wat van de NodeRED logica om te schrijven naar rules, zoals bijvoorbeeld de room temperature correction. Ik heb dit alleen nog niet goed genoeg kunnen testen. Maar ik vroeg mij af, heeft iemand de soft-start functionaliteit van de NodeRED flow al omgeschreven naar HeishaMon rules?
Door al ‘t testen is mijn ruleset (zie jou GitHub
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
Jammer dat daar nog geen OT in zit, of ik moet iets gemist hebben...
Misschien heeft het met de beperkte ruimte te maken maar ik de interface van HeishaMon mag wat mij betreft wel meer lijken op EspEasy, EspHome of Tasmota (afgezien van de functionaliteit).
PVoutput 2x Toshiba Daiseikai 8 3,5kW, SWW Atlantic Explorer V3 200l. Gasloos aug 2016, 8620Wp, Monoblock Panasonic J 7kW
Oké, maar het verlagen van Ttarget aan het begin om de compressor frequentie sneller lager te krijgen niet? Ook zie ik dat je eigenlijk alle rules triggert op timers in plaats van op een trigger rechtstreeks van een signaal van de warmtepomp, waarom is dat?blb4 schreef op maandag 12 februari 2024 @ 17:45:
[...]
Geweldig!!
Door al ‘t testen is mijn ruleset (zie jou GitHub) niet meer de meest logische maar er zit softstart functionaliteit in, vooral ‘t deel om Ttarget te verhogen als Ta boven Ttarget uit komt.
Ik hat dat er eerder wel inzitten maar de focus is daar wat vanaf gegaan door alles issues met stabiliteit. 't triggeren op timers is er in gekomen omdat ook bleek dat de variabele na de trigger (door gewijzigde waarde) nog een paar seconden de oude waarde behield. Daarmee had 't eigenlijk geen zin meer om op die manier te triggeren.klaashoekstra94 schreef op maandag 12 februari 2024 @ 20:40:
[...]
Oké, maar het verlagen van Ttarget aan het begin om de compressor frequentie sneller lager te krijgen niet? Ook zie ik dat je eigenlijk alle rules triggert op timers in plaats van op een trigger rechtstreeks van een signaal van de warmtepomp, waarom is dat?
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
Vreemd, het leek mij juist handig om te triggeren op gewijzigde waardes. Heb je dat gedrag gezien bij de 'oude' rule library, of ook bij de nieuwe async variant?blb4 schreef op maandag 12 februari 2024 @ 22:45:
[...]
Ik hat dat er eerder wel inzitten maar de focus is daar wat vanaf gegaan door alles issues met stabiliteit. 't triggeren op timers is er in gekomen omdat ook bleek dat de variabele na de trigger (door gewijzigde waarde) nog een paar seconden de oude waarde behield. Daarmee had 't eigenlijk geen zin meer om op die manier te triggeren.
Dat kan ik me niet meer goed herinneren, nadat 't duidelijk geworden was dat dit een issue was ben ik op een enkel geval na volledig overgestapt op time based.klaashoekstra94 schreef op dinsdag 13 februari 2024 @ 08:50:
[...]
Vreemd, het leek mij juist handig om te triggeren op gewijzigde waardes. Heb je dat gedrag gezien bij de 'oude' rule library, of ook bij de nieuwe async variant?
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
Met dank aan @CurlyMo voor uw werk 👍
Hallo @blb4 ,
Het bekijken van de variabelen in de console is vermoeiend. Is er een eenvoudige manier om de uitvoer naar een bestand te schrijven?
Groeten Binifada
Je kan in de settings van Heishamon Serial1 logging aanzetten (Debug log to serial1 (GPIO2)) en dan heb je een ttl2serial of ttl2usb converter nodig en een computer waarop je met PUTTY of soortgelijke software de logging kan uitlezen en naar een log file kan schrijven.Binifada schreef op zaterdag 24 februari 2024 @ 17:11:
Heishamon
Hallo @blb4 ,
Het bekijken van de variabelen in de console is vermoeiend. Is er een eenvoudige manier om de uitvoer naar een bestand te schrijven?
Groeten Binifada
Aansluitingen:
Rood: + 5V,
Zwart: GND,
Groen: TXD,
Wit: RXD
Putty met 115200 en de rest standaard instellingen (8,1, none)
Aansluiting op Heishamon:
/f/image/tFvE5bYVM5wd2kVpcwyLzECo.png?f=fotoalbum_large)
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, @blb4 ik test jullie nieuwste regels.blb4 schreef op zondag 21 januari 2024 @ 23:25:
[...]
Inmiddels zijn we al weer een hele tijd verder en is er veel gebeurd. Mijn huidige ruleset staat hieronder. Is een beetje cryptisch geworden (b.v. korte variable namen) om de rules in de HeishaMon geheugen te laten passen.
Ik gebruik nu @Z2_Heat_Request_Temp als remote Override (#rOR). @Z2_Heat_Request_Temp wordt door mij (en volgens mij in de meeste installaties) niet gebruikt maar kan dus wel ingesteld worden.
on QM then wordt alleen uitgevoerd bij #rOR < 2;
on eXtRT then wordt alleen uitgevoerd bij #rOR < 3;
on OTT then wordt alleen uitgevoerd bij #rOR < 4;
on DHW then wordt alleen uitgevoerd bij #rOR < 4;
on pumpDuty then wordt alleen uitgevoerd bij #rOR < 5;
Wat is er met WAR gebeurd?
Nogmaals bedankt voor uw inspanningen op het gebied van "Logging" en "Console".
Ik heb een alternatief gevonden zonder kabels enz.
Je kunt het hier vinden:
https://github.com/theneb..._export_console/tree/main
Groeten Binifada
Interessant, ga ik ook eens naar kijken!Binifada schreef op donderdag 29 februari 2024 @ 17:01:
@blb4
Nogmaals bedankt voor uw inspanningen op het gebied van "Logging" en "Console".
Ik heb een alternatief gevonden zonder kabels enz.
Je kunt het hier vinden:
https://github.com/theneb..._export_console/tree/main
Groeten Binifada
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
Misschien kan deze javascript code worden opgenomen in de htmlcode.h van de firmware?
Waarom moeilijk doen met Tampermonkey terwijl je het ook aan de bron kan toevoegen?
Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp
Voel je vrijRichieB schreef op donderdag 29 februari 2024 @ 23:13:
[...]
Misschien kan deze javascript code worden opgenomen in de htmlcode.h van de firmware?
Waarom moeilijk doen met Tampermonkey terwijl je het ook aan de bron kan toevoegen?
Sinds de 2 dagen regel reageer ik hier niet meer
Ik ben niet te beroerd om een PR te maken, maar ik heb nog geen Panasonic WP, laat staan een Heisamon. Het lijkt me logischer als de maker van die code dat doet.
Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp
Nieuwe statistiek nadat ik klaar ben met het omzetten van de rules lib naar de Lua manier van doen.CurlyMo schreef op zondag 28 januari 2024 @ 20:46:
Eerste experiment om met nog een extra stap meer richting de Lua logica te gaan.
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # Nieuw rule #1 was prepared in 723 microseconds rule #1 AST was created in 1288 microseconds AST is 92 bytes rule #1 bytecode was created in 459 microseconds bytecode is 48 bytes rule #1 was executed in 355 microseconds bytecode is 48 bytes Rule 01.1 / 02: [ if 3 == 3 then $a = 6; end ] # Oud rule #1 was prepared in 758 microseconds rule #1 was parsed in 1591 microseconds bytecode is 92 bytes rule #1 was executed in 788 microseconds bytecode is 92 bytes Rule 01.1 / 02: [ if 3 == 3 then $a = 6; end ]
Die laatste extra stap ziet er vooralsnog zo uit. Daar zie je duidelijk de Lua invloed:
code:
1 2 3 4 5 6 7 8 0 VINTEGER 3 8 VINTEGER 3 16 OP 0 20 JMP 44 24 VINTEGER 6 32 VCHAR $a 40 SETVAL 44 RET
Snelheidswinst: 220%
Geheugenwinst: 190%
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # Oud rule #1 was prepared in 678 microseconds rule #1 was parsed in 894 microseconds bytecode is 104 bytes rule #1 was executed in 791 microseconds bytecode is 104 bytes Rule 01.1 / 285: [ if $a > $b then $a = 6; end ] # Nieuw rule #1 was prepared in 754 microseconds rule #1 bytecode was created in 831 microseconds bytecode: 24/24, heap: 16/16, stack: 4/4 bytes, varstack 20/24 bytes rule #1 was executed in 337 microseconds bytecode: 24/24, heap: 16/16, stack: 4/12, varstack 20/24 bytes Rule 01.1 / 353: [ if $a > $b then $a = 6; end ] # Lua rules #1 was executed in 332 microseconds [ a = 1; b = 3; if a < b then a = 6; end ] |
De bytecode uitwerking van Lua
1
2
3
4
5
6
7
8
9
10
| main <rules.lua:0,0> (8 instructions at 0x558a950f5830) 0+ params, 2 slots, 1 upvalue, 0 locals, 5 constants, 0 functions 1 [1] SETTABUP 0 -1 -2 ; - "a" 1 2 [1] SETTABUP 0 -3 -4 ; - "b" 3 3 [1] GETTABUP 0 0 -1 ; - "a" 4 [1] GETTABUP 1 0 -3 ; - "b" 5 [1] LT 0 0 1 6 [1] JMP 0 1 ; to 8 7 [1] SETTABUP 0 -1 -5 ; - "a" 6 8 [1] RETURN 0 1 |
De bytecode uitwerking van mezelf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Bytecode 0 OP_GETVAL -2 0 1 OP_GETVAL -3 1 2 OP_GT -2 -2 -3 3 OP_JMP 5 4 OP_SETVAL 0 -1 5 OP_RET Heap 1 VINTEGER 6 2 VNULL 3 VNULL Varstack 0 $a 1 $b |
Om de boel vergelijkbaar te houden moet ik Lua twee extra stappen laten doen. Namelijk het toekennen van een waarde aan a en b. Dat hoeft in mijn voorbeeld niet. Dat is ook de reden waarom de bytecode twee extra stappen mist. Lua doet dus twee extra stappen in dezelfde tijd.
Neemt niet weg dat mijn library erg dicht bij Lua is komen te liggen.
Oftewel, huidige versie van de library t.o.v. de vorige:
1
2
| Geheugengebruik: 76 / 104 bytes Snelheid: 337 / 791 microseconds |
Concluderend, ik haal aardig dezelfde snelheidscijfers als Lua met een fractie van het geheugengebruik. Nu kan je met Lua veel meer, maar dat heeft dus wel zo zijn kosten.
Sinds de 2 dagen regel reageer ik hier niet meer
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
Ja, want Lua vraagt veel te veel geheugen.blb4 schreef op vrijdag 15 maart 2024 @ 17:40:
@CurlyMo, houd dit in dat je maar gewoon vasthoud aan originele implementatie en dus geen LUA?
Sinds de 2 dagen regel reageer ik hier niet meer
Sinds de 2 dagen regel reageer ik hier niet meer
CurlyMo schreef op vrijdag 15 maart 2024 @ 15:49:
[...]
code:
1 2 3 4 5 6 7 # Nieuw rule #1 was prepared in 754 microseconds rule #1 bytecode was created in 831 microseconds bytecode: 24/24, heap: 16/16, stack: 4/4 bytes, varstack 20/24 bytes rule #1 was executed in 337 microseconds bytecode: 24/24, heap: 16/16, stack: 4/12, varstack 20/24 bytes Rule 01.1 / 353: [ if $a > $b then $a = 6; end ]
Nu tijd gevonden om het eens te testen:CurlyMo schreef op vrijdag 15 maart 2024 @ 21:57:
Zojuist nog weer 50microseconden gewonnen door de Labels as Values techniek
1
2
3
4
5
6
7
| Running from 1st heap rule #1 was prepared in 294 microseconds rule #1 bytecode was created in 442 microseconds bytecode: 24/24, heap: 16/16, stack: 4/4 bytes, varstack: 20/24 bytes rule #1 was executed in 139 microseconds bytecode: 24/24, heap: 16/16, stack: 4/12, varstack 20/24 bytes Rule 02.1 / 357: [ if $a > $b then $a = 6; end ] |
BAM

T.o.v. origineel:
1
| Snelheid: 139 / 791 microseconds |
Sinds de 2 dagen regel reageer ik hier niet meer
Klink goed maar ook als abracadabraCurlyMo schreef op dinsdag 19 maart 2024 @ 21:02:
[...]
[...]
Nu tijd gevonden om het eens te testen:
code:
1 2 3 4 5 6 7 Running from 1st heap rule #1 was prepared in 294 microseconds rule #1 bytecode was created in 442 microseconds bytecode: 24/24, heap: 16/16, stack: 4/4 bytes, varstack: 20/24 bytes rule #1 was executed in 139 microseconds bytecode: 24/24, heap: 16/16, stack: 4/12, varstack 20/24 bytes Rule 02.1 / 357: [ if $a > $b then $a = 6; end ]
BAM
T.o.v. origineel:
code:
1 Snelheid: 139 / 791 microseconds
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
Via Heishamon en Domoticz kan ik als dat gebeurt een "SetReset=1" geven gevolgd door een "SetHeatpump=1", maar ik zou dat liever in een rule binnen de Heishamon hebben om geen afhankelijkheid te hebben van Domoticz en evt wifi issues.
Kan iemand me daar mee op weg helpen hoe dat er uit kan zien ?
Dus iets als :
if HeatPumpState = 1 and error = H20 then reset and power on
En dat dan in een loop elke 30 minuten of zo
[ Voor 4% gewijzigd door hannibal2206 op 22-03-2024 01:03 ]
15kW solar, 800 Ltr hygiëneboiler, 80 Heatpipes, 2 * L/L, Pana monoblock 5F en 5J, HR++/+++ , gasloos sinds Feb 2015
Lokaal getest met mijn eigen rulesets en de rules die ik van @blb4 in de github issues kon vinden.
Op basis van mijn eigen volledige ruleset. Totaal geheugengebruik:
Oud: 11480 bytes
Nieuw: 7068 bytes
[ Voor 21% gewijzigd door CurlyMo op 04-04-2024 22:20 ]
Sinds de 2 dagen regel reageer ik hier niet meer
Klinkt goed! Heb je een link naar een binary die we kunnen laden?CurlyMo schreef op donderdag 4 april 2024 @ 22:15:
Daar is die: https://github.com/CurlyM...abbf12c739c3ffd62464eb74f
Lokaal getest met mijn eigen rulesets en de rules die ik van @blb4 in de github issues kon vinden.
Op basis van mijn eigen volledige ruleset. Totaal geheugengebruik:
Oud: 11480 bytes
Nieuw: 7068 bytes
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
Die staan in de github actions van mijn repo, maar het enige wat die dan doet is de unittests draaien. Ik denk niet dat je daar wat aan hebt.blb4 schreef op donderdag 4 april 2024 @ 22:25:
[...]
Klinkt goed! Heb je een link naar een binary die we kunnen laden?
Sinds de 2 dagen regel reageer ik hier niet meer
oké! Dan wachten we nog evenCurlyMo schreef op donderdag 4 april 2024 @ 22:27:
[...]
Die staan in de github actions van mijn repo, maar het enige wat die dan doet is de unittests draaien. Ik denk niet dat je daar wat aan hebt.
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
https://github.com/IgorYbema/HeishaMon/pull/121 laatste commit.
Sinds de 2 dagen regel reageer ik hier niet meer
Top, ik heb 'm er op gezet en meteen geweldig resultaat, bijna een halvering van 't geheugengebruik:CurlyMo schreef op vrijdag 5 april 2024 @ 22:36:
[...]
https://github.com/IgorYbema/HeishaMon/pull/121 laatste commit.
rules memory used: 7452 / 16384
Hiervoor was 't met dezelfde ruleset: rules memory used: 14304 / 16384
Dank!!!!!!
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
Waar ik ook wel benieuwd naar ben zijn de prestatieverschillen. Dus de uitvoersnelheden van de vorige en de huidige versie.blb4 schreef op vrijdag 5 april 2024 @ 22:59:
[...]
Top, ik heb 'm er op gezet en meteen geweldig resultaat, bijna een halvering van 't geheugengebruik:
rules memory used: 7452 / 16384
Hiervoor was 't met dezelfde ruleset: rules memory used: 14304 / 16384
Dank!!!!!!
Overigens is die halvering ook niet helemaal terecht, omdat hij nu delen in een ander geheugengebied opslaat.
bytecode: 272/272, heap: 52/52, stack: 4/16, varstack 596/888 bytes
Je moet sowieso nog even de varstack omvang erbij optellen. Dan is er nog wat klein geheugengebruik, maar dat is niet zo groot.
[ Voor 27% gewijzigd door CurlyMo op 05-04-2024 23:21 ]
Sinds de 2 dagen regel reageer ik hier niet meer
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
Tijd om te debuggen in de PRblb4 schreef op zaterdag 6 april 2024 @ 01:33:
mmm, hij draait helaas niet stabiel, erg veel restarts.
Sinds de 2 dagen regel reageer ik hier niet meer