Open Erbit opened 6 years ago
@Erbit my solution is to read ModulationTempDesired
which is % of maximum heating power and multiply by known maximum heating power (14.4kW in my case). The value is valid with regards to heating when heating circuit vent is active, which is Status01=2
@andig Thank you. I solve it the same way. Registers that I do not read are more, this one is just an example. I've read your posts, I know you have a similar problem. If I knew how to help, I would read these registers and send them to John.
Sorry for my English.
@andig
Full success ! ! !
I changed the original line from the bai.308523.inc file to the line from the bai.0010015600.inc file.
Line content:
r;wi,,PartloadHcKW,d.00 Heizungsteillast,,,,"6C00",,,power,,,Heizungsteillast
After restarting ebusd, I have this effect;)
/usr/bin/ebusctl read -c bai PartloadHcKW
19
This is the correct value. I'm going to look for the other 26 registers. I will start with the file bai.0010015600.inc
Interesting, will test this. What‘s your exact ecotec plus model?
Viele Grüße, Andreas
Am 07.01.2018 um 21:07 schrieb Erbit notifications@github.com:
@andig
Full success ! ! !
I changed the original line from the bai.308523.inc file to the line from the bai.0010015600.inc file. Line content: r;wi,,PartloadHcKW,d.00 Heizungsteillast,,,,"6C00",,,power,,,Heizungsteillast
After restarting ebusd, I have this effect;) ` /usr/bin/ebusctl read -c bai PartloadHcKW
19 ` This is the correct value. I'm going to look for the other 26 registers. I will start with the file bai.0010015600.inc
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
I was wrong. It should be ecoTEC pro model VCW PL 226 / 5-3, catalog number 0010011710. Other registers from this file do not match but I will look in other files.
Regards Robert
@Erbit did you find any other matching registers that I should try, too?
I checked everything. I have found nothing more.
@john30 for my ecoTECplus I can confirm @Erbit s finding:
address 08: slave #11, scanned "MF=Vaillant;ID=BAI00;SW=0609;HW=5502", loaded "vaillant/bai.308523.inc", "vaillant/08.bai.csv"
redefining PartloadHcKW
#r;wi,,PartloadHcKW,d.00 Heizungsteillast,,,,"0704",,,power,,,Heizungsteillast
r;wi,,PartloadHcKW,d.00 Heizungsteillast,,,,"6C00",,,power,,,Heizungsteillast
gives the correct result:
pi@ebus2:~ $ ebusctl r -V PartloadHcKW
bai PartloadHcKW power=10 kW [Heizungsteillast]
It seems this is true for HW=5502
devices. Would it be possible to develop a small .inc file that only redefines this single message instead of repeating everything else in the fallback?
I've also noticed that
[PROD='0010004276';'0010004277';'0010004279';'0010004280';'0010004281';'0010004282';'0010004283';'0010004285';'0010004286';'0010004288';'0010004289';'0010004290';'0010004291';'0010004292';'0010004336';'0010004337';'0010004338';'0010004339';'0010004340';'0010005466';'0010005467';'0010005468';'0010005469';'0010010392';'0010010393';'0010010394';'0010010400';'0020051714';'0020051715';'0020051716';'0020051717';'174']!load,bai.308523.inc,,,
[HW=7401]!load,bai.308523.inc,,,
!load,bai.308523.inc,,,
Seems redudant as in the end the fallback is always loaded if nothing else matches. Could these additional PROD and HW defines be removed?
@Erbit I've not found a suitable define for PartloadHwcKW
- did you find anything?
I have not found.
@andig the fallbacks are there in order to document which product IDs are assigned to which file, so I'd rather keep them. overriding another definition is not possible, so this is no option.
Also worka on VC 256/5-7 ecotec exclusive
@mozzarelka could you post your scan results? Is my assumption correct that this works specifically for HW=5502
devices?
overriding another definition is not possible, so this is no option.
@john30 that means whenever there is a hw-specific csv improvement like in this case the entire bai file need be replicated and only smaller parts adjusted. If future improvements to the generic/fallback bai csv are made these would need to be carries over to all cloned files for maximum functionality.
This sounds prone to errors. Would it make sense to add an "override" capability to csv definitions as enhancement to change only specific message definitions? I'm thinking of something like:
# type (r[1-9];w;u),circuit,name,[comment],[QQ]
#,BAI00,generic file for all BAI types,,
*[PROD],scan,id,,product
*[HW],scan,,,HW
...
[HW=8701]!load,bai.0020066007.inc,,,
[HW=7401]!load,bai.308523.inc,,,
!load,bai.308523.inc,,,
[HW=5502]!load,bai.5502.inc,,,
!include,hcmode.inc,,,
or
# type (r[1-9];w;u),circuit,name,[comment],[QQ]
#,BAI00,generic file for 5502 BAI types,,
*[PROD],scan,id,,product
*[HW],scan,,,HW
!load,bai.308523.inc,,,
#r;wi,,PartloadHcKW,d.00 Heizungsteillast,,,,"0704",,,power,,,Heizungsteillast
r;wi,,PartloadHcKW,d.00 Heizungsteillast,,,,"6C00",,,power,,,Heizungsteillast
@andig Got different HW But for me it shows maximum power for heating, not current power. I can see different modulation values but PartloadHcKw shows only one.
scan result
08;Vaillant;BAI00;0603;9102;21;17;34;0010018461;0001;005061;N0
15;Vaillant;B7V00;0422;5503;21;17;25;0020197207;0082;007449;N4
pi@raspberrypi:~ $ ebusctl info
version: ebusd 3.0pre.bbc4d04
update check: version 3.1 available, broadcast.csv: different version availab
le, memory.csv: different version available, vaillant/bai.308523.inc: differe
nt version available, vaillant/broadcast.csv: different version available, va
illant/errors.inc: different version available, vaillant/general.csv: differe
nt version availa
signal: acquired
symbol rate: 24
max symbol rate: 151
min arbitration micros: 23
max arbitration micros: 389
min symbol latency: 4
max symbol latency: 37
reconnects: 0
masters: 3
messages: 555
conditional: 3
poll: 0
update: 9
address 03: master #11
address 08: slave #11, scanned "MF=Vaillant;ID=BAI00;SW=0603;HW=9102", loaded
"vaillant/bai.308523.inc", "vaillant/08.bai.csv"
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=B7V00;SW=0422;HW=5503", loaded
"vaillant/15.b7v.csv"
address 31: master #8, ebusd
address 36: slave #8, ebusd ```
no, you'd rather have a common .inc for stuff that a certain HW versions supports independent of other criteria and in there include e.g. SW specific parts
But for me it shows maximum power for heating, not current power.
@mozzarelka I can confirm that. Appears correct as this is exactly what d.00 does on the BAI.
@Erbit see #107 and #108 which can help you with reading registers.
This issue could be closed?
I own Vaillant ecoTEC plus VU INT IV 246/5-5 H (0010021961) scanned as "MF=Vaillant;ID=BAI00;SW=0104;HW=7803" and for me it reads:
PartloadHcKW 20
ModulationTempDesired 16.6
with loaded "vaillant/bai.0010015600.inc". I guess 20kW is the max power in my case. Any help here?
I guess 20kW is the max power in my case.
Indeed, it is "Max" power. But it's worth mentioning that you can change it in installers menu on your boiler. If your house isnt big enough and your boiler doesnt use all its power, its worth lowering it.
Ah, then:
But it's worth mentioning that you can change it in installers menu on your boiler. If your house isnt big enough and your boiler doesnt use all its power, its worth lowering it.
Shouldn't the boiler have room for regulation, e.g. I would expect that even if I have Max set to 20kW the boiler shouldn't consume more power if it is not needed?
Cross-posted:
PartloadHcKW
: the name is misleading- this is the MAX power the BAI might use (d.00).
ModulationTempDesired
: also misleading. This is the percentage of the NOMINAL power that the BAI has that IS being used.
Example for my BAI:
PartloadHcKW
6: 6kW max power out of 14.6kWModulationTempDesired
19: 19% out of 14.6 is 2.77kW which is the minimal power@andig so, I cannot simply put CurrentPower = PartloadHcKW * ModulationTempDesired / 100% because PartloadHcKW is set in the corresponding menu and can be less then 100% of the power of the boiler. Is this understanding correct?
PartloadHcKW
: the name is misleading- this is the MAX power the BAI might use (d.00).
Not really, because this Max power is actually called Partload in the boilers manual & installer menu
ModulationTempDesired
Indeed, this could potentially be called ModulationPowerDesired or ModulationPartloadDesired
I cannot simply put CurrentPower = PartloadHcKW * ModulationTempDesired / 100% because PartloadHcKW is set in the corresponding menu and can be less then 100%
Indeed it is, but that doesnt make a difference. CurrentPower in this equation will still be current power of your boiler.
Shouldn't the boiler have room for regulation, e.g. I would expect that even if I have Max set to 20kW the boiler shouldn't consume more power if it is not needed? Im not a gas engineer so my answer here is a pure guess, but i assume that the boiler heats up water in pulses of PartloadHc power and can only regulate power "on the fly" by changing the width of those pulses (this would explain use of "modulation" word). And then, the installer can change PartloadHc instead.
I read somewhere that boilers are more efficient when providing for example 50% of power if they do it by pulses of full power (one minute of full power, one minute of pause), than if they try to provide constant 50% of power
Not really, because this Max power is actually called Partload in the boilers manual & installer menu
Maybe, but if it implies partial load then its really a max limit and not a current partial load. Not ebusd's fault ;)
Indeed, this could potentially be called ModulationPowerDesired or ModulationPartloadDesired
Rather ModulationPercent
as its neither a power nor depends on PartLoad
?
I cannot simply put CurrentPower = PartloadHcKW * ModulationTempDesired / 100% because PartloadHcKW is set in the corresponding menu and can be less then 100%
Indeed it is, but that doesnt make a difference. CurrentPower in this equation will still be current power of your boiler.
I need to disagree:
CurrentPower = BoilerNominalMaxPower * ModulationTempDesired / 100%
...it does not depend on PartloadHcKW
at least on my BAI
Rather
ModulationPercent
as its neither a power nor depends onPartLoad
?
It doesnt depend to PartLoad but its a modulation (percentage) of Partload
I need to disagree: CurrentPower = BoilerNominalMaxPower * ModulationTempDesired / 100% ..it does not depend on PartloadHcKW at least on my BAI
Sorry, but Im not really following. Let's say that you've got a 25kW boiler with PartLoad set to 15kW by the installer (because power of all your radiators + other heat loses equals 15kW, so there was no point of setting PartLoad higher) and let's say that it's running at 100% at the moment.
CurrentPower = BoilerNominalMaxPower * ModulationTempDesired / 100%
Will give you: 25kW = 25kW * 100 / 100%
CurrentPower = PartloadHcKW * ModulationTempDesired / 100%
While this will give you: 15kW = 15kW * 100 / 100% and 15kW is the correct amount of it's current heating power.
Let's say that you've got a 25kW boiler with PartLoad set to 15kW by the installer (because power of all your radiators + other heat loses equals 15kW, so there was no point of setting PartLoad higher) and let's say that it's running at 100% at the moment.
My BAI can't do that. ModulationTempDesired
will only go up to 15/25=60% in your example. That's why I've said that current power calculation doesn't depend on PartLoad
.
PartLoad
is the upper kWh limit for current power while ModulationTempDesired
is the current percentage value of current power.
Added example
For my 14.6kWh BAI, limited to 10kWh, that means that ModulationTempDesired
19% (which is the lower end of the modulation range) amounts to 14.6 (not 10) x 19% = 2.77 kWh.
Regardless how I set PartLoad
the lowest modulation limit is always reached when ModulationTempDesired
= 19%, after that the BAI can only turn off (and does).
PartLoad is the upper kWh limit for current power while ModulationTempDesired is the current percentage value of current power.
Hmmm, that's a very interesting find. I need to check my BAI again, but im pretty sure that its behaviour is different. This would be another case of completely different behaviour between same ebus commands on different BAIs. That's shocking, i wonder how Vaillant software engineers can keep up with it (after all, VRCs can control different BAIs)
Let's say that you've got a 25kW boiler with PartLoad set to 15kW by the installer (because power of all your radiators + other heat loses equals 15kW, so there was no point of setting PartLoad higher) and let's say that it's running at 100% at the moment.
Hmm, i just saw my boilers ModulationTempDesired going up to 89% (its rare, but that's because my house is very well insulated). PartLoadHcKW is set to 12kW and boilers max power is 25kW. Ebus protocol is soo messy o.O
Mine does too, but not for heating, only for hot water- partloadhc only applies to heating. Maybe it was that or your boiler is just different from mine ;)
Am 05.01.2019 um 21:48 schrieb Michal notifications@github.com:
Let's say that you've got a 25kW boiler with PartLoad set to 15kW by the installer (because power of all your radiators + other heat loses equals 15kW, so there was no point of setting PartLoad higher) and let's say that it's running at 100% at the moment.
Hmm, i just saw my boilers ModulationTempDesired going up to 89% (its rare, but that's because my house is very well insulated). PartLoadHcKW is set to 12kW and boilers max power is 25kW. Ebus protocol is soo messy o.O
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
Talked to a Vaillant local representative wrt PartLoadHcKW and they say that lowering this value doesn't really help as if the boiler runs, for example, at 20% of PartLoadHcKW_100% then lowering PartLoadHcKW to 50% will not make the boiler consume less gas or work more efficiently. This value just limits the maximum value the boiler can use when there is a call for heat. Say, if you request for 12kW from the boiler which PartLoadHcKW is set to 10kW then the boiler will only let you run at its "local" maximum set, e.g. 10kW
That's an interesting point of view, although i heard that limiting boilers output power is pretty common here in the UK, as apparently it conserves power. Common sense tells me that there's no point of having boiler run @ 25kW in my house, if radiators can only radiate up to 10kW.
@andig: right, i didnt take the HW circuit into account, i will need to check it again.
@Dinth 25kW is maximum power. Typically, the boiler works with less power. When you buy a smaller boiler and radiators will need 20kW, what will you do? Currently, the regulator controls the boiler power. I believe that the minimum power of a gas boiler is a bigger problem. Often, radiators need 1.5kW and my boiler works with a minimum power of 4.5kW. Then the controller periodically turns off the boiler for a few minutes. After switching on again, the boiler works for 15 minutes and again turns off for a few minutes. This happens especially in autumn and spring. If the boiler could work with less power, the controller would not turn off the boiler so often.
@Erbit, exactly. So, the boiler will not run at 25kW if it only needs 4kW and I do agree that the real problem it cannot run at lower kW which you cannot control, e.g. you cannot go below its lower kW limit
Sorry for off-topic here: @mozzarelka I see you have
address 15: slave #2, scanned "MF=Vaillant;ID=B7V00;SW=0422;HW=5503", loaded "vaillant/15.b7v.csv"
but there is no such csv file exists. I run the same HW (VRC 700f/4) and just copied 15.700.csv to 15.b7v.csv and it seems to run ok, but what was your solution for that? If the csv you have is somewhat different from 15.700.csv you might want to contribute it to @john30 ?
Thank you
Hi @andr2000 , no special setup, just a copy of 15.700 csv file.
hi all, I am a new user of ebusd with ebus adapter v2.2 my setup:
I want to monitor the gas consumption & any revelent information + change some value like mode or desired temperature ect...
If i good understand to get the consumption i need to apply the following formula: ModulationTempDesired X 24 KW if Status01 = 2
But in my case Status01 is not an number its "41.0;41.0;-;-;-;off" What is wrong ? The command "ebusctl find" return a lot of value with 'no data stored'. It's mean there are no return value or it's mean the value is not stored and can by requested realtime? for some variable i get inconsistant value ex: bai FanSpeed = 0 it's always 0 f47 YieldThisYear = 0;0;0;0;0;0;0;0;0;0;0;0 always 0 f47 ContinuosHeating = -26 negative value ? I am unable to get the week planing for example. the ebus find command return 300 no data stored and 34 value:
root@orangepipc:~# ebusctl find | wc -l
334
root@orangepipc:~# ebusctl find | grep 'no data stored' | wc -l
300
root@orangepipc:~# ebusctl find | grep -v 'no data stored'
bai ACRoomthermostat = on
bai ChangesDSN = 0
bai ExtFlowTempDesiredMin = 44.00
bai FanSpeed = 0
bai Flame = off
bai FlowTempDesired = 44.00
bai GasvalveUC = off
bai HwcTemp = -13.50;cutoff
bai HwcTempDesired = 0.00
bai HwcWaterflow = 0.00
bai ModulationTempDesired = 100.0
bai OutdoorstempSensor = -60.44;cutoff
bai PartloadHcKW = 24
bai RemainingBoilerblocktime = 0
bai SerialNumber = 30 30 30 30 34 34 39 38
bai SetMode = auto;0.0;50.0;-;1;0;0;0;0;0
bai Status01 = 41.0;41.0;-;-;-;off
bai Status02 = auto;60;74.0;70;51.0
bai StorageTempDesired = 50.00
bai WaterPressure = 1.638;ok
bai WP = off
broadcast outsidetemp = 7.688
broadcast vdatetime = 18:39:04;05.02.2020
f47 ActualRoomTempDesiredHc1 = 19.50
f47 ContinuosHeating = -26
f47 HydraulicMap = 0
f47 PumpBlockingTimeMax = 0
f47 PumpEnergySaveCalculatedTimeMonitor = 0
f47 YieldThisYear = 0;0;0;0;0;0;0;0;0;0;0;0
scan.08 = Vaillant;BAI00;0518;7401
scan.08 id = 21;11;15;0010003211;0001;007510;N7
scan.15 = Vaillant;F4700;0114;6102
scan.15 id = 21;13;01;0020108135;0082;005215;N5
@Erbit @andig @john30 @mozzarelka @andr2000 Could you help ?
If i good understand to get the consumption i need to apply the following formula: ModulationTempDesired X 24 KW if Status01 = 2
I would do it differently. Check registers:
PrEnergySumHc1 PrEnergyCountHc1 PrEnergySumHwc1 PrEnergyCountHwc1
If you compare it with your gas meter, you will be able to set a converter between PrEnergySumHc1 + PrEnergySumHwc1 and your gas meter. If you set the converter, just calculate the PrEnergySumHc1 and PrEnergySumHw registers. This way you will get the consumption gas.
Thanks @Erbit
My vaillant was installed in the same time as the gas meter. So if i good understand i have to do : first = PrEnergySumHc1 + PrEnergySumHwc2 coefficient = (PrEnergySumHc1 + PrEnergySumHwc2 )/ gas meter value
then to know the consomation value i have to do interval_consomation = ((PrEnergySumHc1 + PrEnergySumHwc2 ) - first )X coefficient
hc = heating circuit ? hwc = heating water circuit?
in my case i have also PrEnergySumHwc3, so i need to add this value like this PrEnergySumHc1 + PrEnergySumHwc2 + PrEnergySumHwc3?
root@orangepipc:~# r PrEnergySumHwc1
37845084
root@orangepipc:~# r PrEnergyCountHwc1
896575
root@orangepipc:~# r PrEnergySumHwc2
42336350
root@orangepipc:~# r PrEnergyCountHwc2
615563
root@orangepipc:~# r PrEnergySumHwc3
89941405
root@orangepipc:~# r PrEnergyCountHwc3
941841
hc = heating circuit ? hwc = heating water circuit?
Of course.
in my case i have also PrEnergySumHwc3
I don't know what PrEnergySumHwc3 is.
The idea of what solution I found here -> https://techniczny.wordpress.com/2018/04/08/pomiar-zuzycia-gazu-przez-raspberry-pi-i-ebus/
I haven't done it myself yet, but the description found makes sense.
Useful information is
On this basis, I calculate the ratio between the sum of increases in PrEnergySum parameters and the physical gas meter. In my case it amounts to 976.171242912.
Three months after the last reading, the value predicted by the script differs from the actual meter reading by about 0.5m³. With a meter difference of 500m³. This is only 1 per mille of error!
That's why I think the method is good enough.
thanks @erbit i will investigate
@keiser1080 pls take a look at what I have It is a quick and dirty script to calculate gas meter coefs
O !
Thank you @andr2000. I can see that he translated from the same blog. Great !
@keiser1080 pls take a look at what I have It is a quick and dirty script to calculate gas meter coefs
This is useful. How is the value of FIELD_VALID derived?
Mike
OK I'm guessing you just insert a 1 for the results you want to be included in the calculation. Here's another question then.
Every day I record the increase in PrEnergySumHwc1, PrEnergySumHc1 and the meter reading and calculate the coefficient, which you can see is converging after a few days to a value of around 775000:
However if I use the script created by @andr2000 it gives a coefficient of 920.040.
Using my coefficient I get the correct gas consumption from the energy sums and I don't understand the maths in the script, so can someone please explain it to me?
Mike
OK I'm guessing you just insert a 1 for the results you want to be included in the calculation. Here's another question then.
Every day I record the increase in PrEnergySumHwc1, PrEnergySumHc1 and the meter reading and calculate the coefficient, which you can see is converging after a few days to a value of around 775000:
However if I use the script created by @andr2000 it gives a coefficient of 920.040.
Using my coefficient I get the correct gas consumption from the energy sums and I don't understand the maths in the script, so can someone please explain it to me?
Mike
Hi Mike, I see your post late but i will answer to you. The idea is to have a relation like this : meter_value = a + b PrEnergySumHc1 + c PrEnergySumHwc1. After you have to collect values (meter_value on your gas meter (index), PrEnergySumHc1 and PrEnergySumHwc1) every day during one / two week, you can run a linear regression model, with python for example, and the model will calculate the a, b and c value. After all, you can just calculate in the future the meter_value index with PrEnergySumHc1 and PrEnergySumHwc1 (+ with a, b and c). The R² of the model (difference between the estimate meter_value and the real meter_value) is very impresive.
I have done the samel model in python, as you can find here : (you just need to save meter_value, PrEnergySumHc1 and PrEnergySumHwc1 in a Excel file).
import pandas as pd from sklearn import linear_model from sklearn import metrics
file_read = pd.read_excel('C:\Users\XXX\OneDrive - ORESOnline\Documents\gas_meter\Meter_readings value model sum.xlsx')
X = file_read[['Hc', 'Hwc']] y = file_read['Gas']
linReg = linear_model.LinearRegression() # Create linear regression object linReg.fit(X, y) # Train the model using the training sets
y_pred = linReg.predict(X)
print(metrics.r2_score(y, y_pred))
print(linReg.coef) print(linReg.intercept)
Great, thanks for your explanation, that was very helpful.
Mike
For everyone that struggled with this. I rewrited the script from andr2000 and documented it. You can find the script, along with detailed documentation, on my GitHub: https://github.com/blanosko/gas-meter-ha
The problem has already been discussed but the topic was closed a year ago probably without a solution -> https://github.com/john30/ebusd-configuration/issues/36
I can't read the
PartloadHwcKW
registry and many others.I have configuration files in the "ebusd-2.1.x/en/" version.
What can I do to read this and other registers?