Acties:
  • 0 Henk 'm!

  • Maarten69
  • Registratie: Augustus 2022
  • Niet online
Aanvullend doorop; te lang is > 3 minuten.

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


Acties:
  • +1 Henk 'm!

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

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


Acties:
  • +1 Henk 'm!

  • Aikon
  • Registratie: Februari 2001
  • Niet online
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.
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:
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
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.

Acties:
  • 0 Henk 'm!

  • Oibaf
  • Registratie: December 2010
  • Laatst online: 10-06 16:48
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, duidelijk. Dus switchen tussen 1/2 graden als je hem 'harder' naar beneden wilt duwen loont dan.
Qua gerbuik als softstart zorgt QM3 hier wel altijd voor max 35Hz.
Oke, klinkt logisch & overtuigend. Ik ga er mee aan de slag.

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 ]


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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.
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.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Oibaf
  • Registratie: December 2010
  • Laatst online: 10-06 16:48
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.
Zit ook wat in. Dan houdt ik het gewoon bij 1°.

Acties:
  • +1 Henk 'm!

  • Aikon
  • Registratie: Februari 2001
  • Niet online
Ik merk nou niet extreem veel verschil tussen 1 en 2 graden. Daarnaast kan je wel hard naar beneden bijsturen, maar dan zit je weer met die 3 min, want de outlet moet ook wel mee afkoelen zeg maar. Met 1 graad eronder heb je wat meer speelruimte. Maar goed, ik doe het alsnog wel hoor, 2 (1.75 eigenlijk) graden eronder. :P
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.

[ Voor 4% gewijzigd door Aikon op 12-12-2023 08:25 ]


Acties:
  • 0 Henk 'm!

  • Oibaf
  • Registratie: December 2010
  • Laatst online: 10-06 16:48
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)

Afbeeldingslocatie: https://tweakers.net/i/E85NJat3Pcqvv6-IVp9cCXvPfy0=/800x/filters:strip_exif()/f/image/zdpJjgxYwPnQTfxYu7MZheks.png?f=fotoalbum_large

Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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]
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).

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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
Afbeeldingslocatie: https://tweakers.net/i/Xed6Sk7Op3aVyoRVeGsDFUq_7Os=/800x/filters:strip_exif()/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 _/-\o_

Acties:
  • +1 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
Binifada 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 _/-\o_
oef, gulukkig heb er "gebruiken op eigen risico" bij staan 8)

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


Acties:
  • +1 Henk 'm!

  • Balans
  • Registratie: September 2000
  • Laatst online: 12-06 15:18
@blb4
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.
interessant waar staat die code (nog) niet op je git , ik wil dat graag eens proberen

Jij brand ik blus! 4.640kW no-zw WH-MDC05J3E5


Acties:
  • +3 Henk 'm!

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

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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


Acties:
  • +1 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
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.
@blb4 Hartelijk dank, zal het testen! 8) _/-\o_

Acties:
  • 0 Henk 'm!

  • RichieB
  • Registratie: Mei 2003
  • Nu online
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.
[...]
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?

Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp


Acties:
  • +1 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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?
'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.

Zie het voorbeeld hieronder van gisteren (inclusief een DHW run):

Afbeeldingslocatie: https://tweakers.net/i/UCt-OwMDx5YWWPHi8vtyCUPPRcI=/800x/filters:strip_exif()/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


Acties:
  • 0 Henk 'm!

  • Balans
  • Registratie: September 2000
  • Laatst online: 12-06 15:18
Herkenbaar dat doet de toon2 ook met de opentherm technologie, das dus eigenlijk de reden dat ik gewoon de info roomTempSet en roomTemp wil gebruiken met aan uit ,met bv een hysterese van 0,5.
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


Acties:
  • +1 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
@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! _/-\o_

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?

Acties:
  • +1 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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! _/-\o_

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.

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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
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.
... misschien kun je de regels activeren/deactiveren via een heishamon-commando "heishamon_rules on/off"?

Acties:
  • +1 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
@Binifada, ik heb meteen wat zitten fröbelen om in elk geval bij uitschakeling van de WP anders dan via de rules de WP niet vanuit de rules in te schakelen. Variabele #HPOffSource, functies on HPOn, on HPOff en on on @Heatpump_State toegevoegd. Moet nog ff kijken of dit goed gaat of dat 't idd beter is om alle regels uit te schakelen.

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


Acties:
  • 0 Henk 'm!

  • Balans
  • Registratie: September 2000
  • Laatst online: 12-06 15:18
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.

Jij brand ik blus! 4.640kW no-zw WH-MDC05J3E5


Acties:
  • +2 Henk 'm!

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

Als je dit stukje wil gebruiken kan je de functie iets aanpassen (elseif er uit halen):

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


Acties:
  • +2 Henk 'm!

  • Balans
  • Registratie: September 2000
  • Laatst online: 12-06 15:18
Geweldig met dit voorbeeld aangepast draait de calcWar van de git ook

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


  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
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.
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?

Acties:
  • +1 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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?
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.

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


Acties:
  • +1 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
Hallo @blb4 ,

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:
code:
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.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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

Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
@Binifada, ja, zo moet dat wel lukken! Ik heb inmiddels een work around tip gekregen, kom ik op terug

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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
@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?

Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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?
Ik heb dit soort gedrag ook wel gezien. Soms wat onvoorspelbaar en dan een beetje rommelen om de boel weer werkend te krijgen.

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


Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04

[ 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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
Mogelijk kan je hierbij helpen :).
@blb4

Bedankt voor het aanbod. Ik denk niet dat mijn kennis hiervoor toereikend is.
Ik ben werktuigbouwkundig ingenieur en hobby programmeur. _/-\o_

Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
Binifada 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. _/-\o_
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 @CurlyMo

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


Acties:
  • +1 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
blb4 schreef op vrijdag 19 januari 2024 @ 22:01:
[...]

…ik programmeer helemaal niets, …
😎 ... 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".

Acties:
  • +1 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
Binifada schreef op zaterdag 20 januari 2024 @ 16:25:
[...]

😎 ... je bent erg bescheiden. Je hebt je regels op Github geprogrammeerd.
Wat hij bedoeld is dat hij het programmeert in een programmeertaal die ik heb bedacht en waarvoor ik de library heb geschreven B-)

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • +1 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
CurlyMo 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 B-)
idd, met veel afkijken en trial and error lukt een beetje if then else me nog wel. En ik hou gelukkig van spaghetti :).

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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
blb4 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
@blb4
kwam verder met de tip?

Acties:
  • 0 Henk 'm!

  • RichieB
  • Registratie: Mei 2003
  • Nu online
@CurlyMo Niet negatief bedoeld, maar waarom heb je een eigen scripttaal geschreven en niet iets bestaands gebruikt zoals Lua?

Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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?
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.

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


Acties:
  • 0 Henk 'm!

  • RichieB
  • Registratie: Mei 2003
  • Nu online
@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.

[ Voor 22% gewijzigd door RichieB op 21-01-2024 18:21 ]

Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp


Acties:
  • +3 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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.
Ok, nieuw antwoord:
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


Acties:
  • 0 Henk 'm!

  • RichieB
  • Registratie: Mei 2003
  • Nu online
@CurlyMo Helder antwoord. Vooral punt 2 is heel belangrijk. Ik heb zelf ook geen ervaring met ESP Lua. MicroPython heb ik wel eens mee gespeeld en vond het inderdaad vrij traag. Overschakelen naar C was een hele verademing qua performance.

Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp


Acties:
  • +1 Henk 'm!

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


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
@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?

Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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?
precies, die aQM etc zijn 2-ledig;
  1. wel of niet gebruik van die functie door in de bootloop 1 of 0 te selecteren;
  2. middels de individuele timers verschillende loop-tijd te kunnen gebruiken.
rOR is om tijdens 't gebruik bepaalde functie uit/aan te kunnen zetten. B.V. als je QM op een andere waarde wil hebben dan de rules zouden doen.

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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
blb4 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.
@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.

Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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.
Helaas niet. Er wordt wel over nagedacht, zie discussie op GitHub maar ‘t zou nu ten koste gaan van ruimte voor de regels.

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


Acties:
  • +3 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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.
Ik ben nu aan het experimenteren met Lua voor op de HeishaMon n.a.v. de tip van @RichieB .

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • +3 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
Dat zou er dus zo uit komen te zien. In ieder geval, dat is mijn suggestie. Ik moet de boel nog wel even testen op geheugengebruik.

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


Acties:
  • +1 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
Lekker bezig @CurlyMo (y) . Ik zie if then else, dus ik zal daarmee ook wel overweg kunnen 8)

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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
@CurlyMo

👍

Regel in LUA in de toekomst?

[ Voor 5% gewijzigd door Binifada op 24-01-2024 18:27 ]


Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
Foei, net op de Lua wiki geleerd dat 't Lua is, geen LUA 8)

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


Acties:
  • +1 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
@blb4

👍 "Lua" wordt uitgesproken als "Loo-ah", wat maan betekent. 🌜 😂

Acties:
  • +1 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
Ter referentie. De ruleset die ik eerder plaatste neemt het volgende geheugen in beslag. IRAM is waar je op moet letten.
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


Acties:
  • +2 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
Nog even aanvullend op Lua op de ESP8266. Het is SNEL. Echt niet normaal. Scheelt zomaar een factor 10 met wat mijn VM doet -O- . 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 :p

[ Voor 5% gewijzigd door CurlyMo op 25-01-2024 22:04 ]

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • RichieB
  • Registratie: Mei 2003
  • Nu online
@CurlyMo Ik weet niet of het helpt, maar heb je dit gelezen?
techniques-for-reducing-ram-and-spiffs-footprint

Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp


Acties:
  • +3 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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.

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


Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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 -O- . 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 :p
Dat geheugenverbruik klinkt wat angstwekkend idd.

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


Acties:
  • +3 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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:
Afbeeldingslocatie: https://tweakers.net/i/SCcaUgsEHdfgFw0lGPwis9fWoRg=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/ba33uaJ3fi7XmBhJDhfKfEId.png?f=user_large

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 compacter :) De 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.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • +1 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
CurlyMo 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 compacter :) De 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.
Meelezen is zeker leuk!! Begrijpen is een ander ding :)

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


Acties:
  • +3 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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%

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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%
Dit ziet er hoopvol uit!

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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
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?

Acties:
  • +2 Henk 'm!

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

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:

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


Acties:
  • +1 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
@blb4
ok, ik zal de .bin Alpha-0c878f5 binnenkort testen.

Acties:
  • +2 Henk 'm!

  • klaashoekstra94
  • Registratie: Augustus 2010
  • Laatst online: 02-06 23:43
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?

Acties:
  • 0 Henk 'm!

  • klaashoekstra94
  • Registratie: Augustus 2010
  • Laatst online: 02-06 23:43
Ik heb trouwens ook wel ideeën over het opdelen van de verschillende functies en die ergens neer zetten voor mensen om te gebruiken. Ik zie nu veel enable variabelen gebruikt worden in de system boot, maar ik zat zelf meer te denken aan een losse tool waar je aan kunt vinken welke functies je wilt gebruiken en per functie settings kunt aanpassen. Je kunt dan ook de functies van de NodeRED flows nabootsen. En dan een knop om voor die functies en settings een complete ruleset te genereren die je naar je HeishaMon kunt uploaden. Is goed te doen met Python en een template engine als Jinja ofzo. Of natuurlijk een webpagina hosten waar je dit kan doen :-)

Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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?
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.

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


Acties:
  • 0 Henk 'm!

  • Speedy-Andre
  • Registratie: Maart 2002
  • Nu online

Speedy-Andre

Sony ZL, XA, Nokia XR20

Het fijne van Node Red vind ik het dashboard, het moet alleen ergens op draaien.
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


Acties:
  • 0 Henk 'm!

  • klaashoekstra94
  • Registratie: Augustus 2010
  • Laatst online: 02-06 23:43
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.
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?

Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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?
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.

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


Acties:
  • 0 Henk 'm!

  • klaashoekstra94
  • Registratie: Augustus 2010
  • Laatst online: 02-06 23:43
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.
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?

Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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?
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.

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


Acties:
  • +1 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
Met de firmware Alpha-0C878F5 sinds 07.02. tot nu toe slechts één crash bij het openen van de webbrowser.
Met dank aan @CurlyMo voor uw werk 👍

Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
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

Acties:
  • +2 Henk 'm!

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

Aansluitingen:
Rood: + 5V,
Zwart: GND,
Groen: TXD,
Wit: RXD

Putty met 115200 en de rest standaard instellingen (8,1, none)

Aansluiting op Heishamon:
Afbeeldingslocatie: https://tweakers.net/i/_7BlHPaR_PfKTlqkj3hNG9nEQj4=/800x/filters:strip_exif()/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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
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;
Hallo, @blb4 ik test jullie nieuwste regels.
Wat is er met WAR gebeurd?

Acties:
  • +1 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
@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

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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
Interessant, ga ik ook eens naar kijken!

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


  • RichieB
  • Registratie: Mei 2003
  • Nu online
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


  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
RichieB 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?
Voel je vrij

Sinds de 2 dagen regel reageer ik hier niet meer


  • RichieB
  • Registratie: Mei 2003
  • Nu online
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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
... Ik kan de Topics op Opentherm niet meer vinden! 🤷‍♂️

Acties:
  • +3 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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%
Nieuwe statistiek nadat ik klaar ben met het omzetten van de rules lib naar de Lua manier van doen.

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


Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
@CurlyMo, houd dit in dat je maar gewoon vasthoud aan originele implementatie en dus 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


Acties:
  • +2 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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?
Ja, want Lua vraagt veel te veel geheugen.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • +2 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
Zojuist nog weer 50microseconden gewonnen door de Labels as Values techniek :)

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • +3 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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                        ]
CurlyMo schreef op vrijdag 15 maart 2024 @ 21:57:
Zojuist nog weer 50microseconden gewonnen door de Labels as Values techniek :)
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 :Y

T.o.v. origineel:
code:
1
Snelheid: 139 / 791 microseconds

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • +1 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
CurlyMo 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 :Y

T.o.v. origineel:
code:
1
Snelheid: 139 / 791 microseconds
Klink goed maar ook als abracadabra :).

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


Acties:
  • 0 Henk 'm!

  • hannibal2206
  • Registratie: Februari 2005
  • Laatst online: 02:30
Ik heb een 5H die incidenteel een H20 error geeft, vanaf het begin (2018)

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


Acties:
  • 0 Henk 'm!

  • Binifada
  • Registratie: Oktober 2021
  • Laatst online: 12-06 09:40
Hoi @blb4 @CurlyMo mijn Heishamon draait nog steeds op Alpha-0c878f5. Ik heb geen inzicht op Github.
Is er een nieuwere alpha of beta?

[ Voor 4% gewijzigd door Binifada op 31-03-2024 19:13 ]


Acties:
  • +2 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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

[ Voor 21% gewijzigd door CurlyMo op 04-04-2024 22:20 ]

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
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
Klinkt goed! Heb je een link naar een binary die we kunnen laden?

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


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
blb4 schreef op donderdag 4 april 2024 @ 22:25:
[...]

Klinkt goed! Heb je een link naar een binary die we kunnen laden?
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.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
CurlyMo 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.
oké! Dan wachten we nog even :)

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


Acties:
  • +2 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • +1 Henk 'm!

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

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


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
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!!!!!!
Waar ik ook wel benieuwd naar ben zijn de prestatieverschillen. Dus de uitvoersnelheden van de vorige en de huidige versie.

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


Acties:
  • 0 Henk 'm!

  • blb4
  • Registratie: April 2008
  • Laatst online: 04:04
mmm, hij draait helaas niet stabiel, erg veel restarts.

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


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 08:42
blb4 schreef op zaterdag 6 april 2024 @ 01:33:
mmm, hij draait helaas niet stabiel, erg veel restarts.
Tijd om te debuggen in de PR :)

Sinds de 2 dagen regel reageer ik hier niet meer

Pagina: 1 2 3 Laatste