Closed semenoh closed 3 years ago
to be honest: I don't know. this highly depends on the variant of heater you are using. you can try extending the message to support the write as well, but -as always- there is no guarantee that this will work.
Whats your special use to tune this value? if you have a external buffer with hot water station you eventually have to set two values: bai FlowsetHcMax - this is for the heating circuit bai FlowsetHwcMax - this is for the hot water circuit
i dont think there is a minimum value you can set. doesnt make sense to me... i've set those values in my heater and never touched them again
There is no special use. I'm new to all this stuff and I have no idea what all these bai
, Hc
, Hcw
etc mean. By trying to figure out how to control my boiler I noticed that FlowTempDesired
is the only field that correspond to value I set on boiler...
Regarding FlowsetHcMax
something strange going on:
pi@raspberrypi:~ $ ebusctl r FlowsetHcMax
75.00
pi@raspberrypi:~ $ ebusctl w -c bai FlowsetHcMax 50
done
pi@raspberrypi:~ $ ebusctl r FlowsetHcMax
75.00
And it does not start heating (ATM boiler is in summer mode). What I expect is something I do manually on boiler by adjusting temperature but done programmatically.
Hi
I'm still not able to write anything to my boiler. Currently I'm trying to use SetMode
as I see this message in ebusctl listen
when I change temperature on thermostat.
so here is what I see:
bai Status01 = 38.5;38.0;-;-;19.0;off
bai Status01 = 37.5;38.0;-;-;19.0;off
bai SetMode = auto;90.0;-;-;0;0;0;0;0;0
bai Status01 = 41.5;38.0;-;-;19.0;off
bai Status02 = on;60;75.0;70;65.0
bai Status01 = 40.5;37.5;-;-;19.0;on
bai Status01 = 41.5;38.0;-;-;19.0;on
Here is what I'm trying to do:
pi@raspberrypi:~ $ ebusctl write -c bai SetMode auto;90.0;-;-;0;0;0;0;0;0
ERR: element not found
pi@raspberrypi:~ $ ebusctl write -c bai SetMode auto\;90.0\;-\;-\;0\;0\;0\;0\;0\;0
ERR: element not found
pi@raspberrypi:~ $ ebusctl write -c SetMode 0\;90.0\;-\;-\;0\;0\;0\;0\;0\;0
ERR: element not found
pi@raspberrypi:~ $ ebusctl write -c SetMode "0\;90.0\;-\;-\;0\;0\;0\;0\;0\;0"
ERR: element not found
Here are some other outputs that might be halpefull:
pi@raspberrypi:~ $ ebusctl f -f -w -c bai SetMode
ERR: element not found
pi@raspberrypi:~ $ ebusctl f -f -w
w,broadcast,id,identification,,fe,0704,,
w,broadcast,queryexistence,Inquiry of existence,,fe,07fe,,
pi@raspberrypi:~ $ ebusctl f -f SetMode
uw,bai,SetMode,Operation Mode,,08,b510,00,hcmode,m,UCH,0=auto;1=off;2=water,,boiler mode,flowtempdesired,m,D1C,,°C,temperature,hwctempdesired,m,D1C,,°C,temperature,hwcflowtempdesired,m,UCH,,°C,temperature,,m,IGN:1,,,,disablehc,m,BI0:1,,,,disablehwctapping,m,BI1:1,,,,disablehwcload,m,BI2:1,,,,,m,IGN:1,,,,remoteControlHcPump,m,BI0:1,,,,releaseBackup,m,BI1:1,,,,releaseCooling,m,BI2:1,,,
pi@raspberrypi:~ $ ebusctl i
version: ebusd 3.2.v3.2
signal: acquired
symbol rate: 23
max symbol rate: 114
min arbitration micros: 2083
max arbitration micros: 3338
min symbol latency: 4
max symbol latency: 6
reconnects: 0
masters: 3
messages: 212
conditional: 3
poll: 0
update: 9
address 03: master #11
address 08: slave #11, scanned "MF=Vaillant;ID=BAI00;SW=0316;HW=0903", loaded "vaillant/bai.308523.inc", "vaillant/08.bai.csv"
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=05000;SW=0113;HW=9601"
address 31: master #8, ebusd
address 36: slave #8, ebusd
pi@raspberrypi:~ $ ebusctl scan result
08;Vaillant;BAI00;0316;0903;21;17;06;0010015325;3100;005007;N3
15;Vaillant;05000;0113;9601;21;17;31;0020018266;0082;006956;N9
Can someone spot what I'm doing wrong ? I've already spent a ton of time studying useless docs and surfing internet but with no success :(
SetMode is defined as update write message, i.e. you can't write it from ebusd as your controller will override it automatically
So how do I change a temperature ? Or how do I find a message I can write in order to change a temperature ?
depends on your controller, usually you set the heat curve and the controller will do the rest
The controller is very dumb. It has no curves and modes. Only one knob to set a temperature.
bai Status02 = on;60;75.0;70;65.0
here you can see that it keeps boiler somewhere between 70 and 75 degrees. So temperature in the house changes rapidly.
That's why I decided to replace it with something smarter with ability to connect it with more stuff in the future (for instance smart radiator valves, conditioning system etc).
When I set a temperature on the boiler to 45-50 it feels really comfortable in house. But it changes with the outside temperature. So I have to go to the boiler and change it again. I'd like to delegate it to some script. But when I change temperature on the boiler ebusd does not show me any commands. So I decided to make my script to pretend it is a controller. But it turned out these messages are read only. So the question is how can I send the same messages instead of controller in order to control a temperature.
The controller is very dumb. It has no curves and modes. Only one knob to set a temperature.
Probably we all bought our Vaillant boilers wanting to do the same thing as you want to do. Unfortunately it's not that simple - ebusd is reverse engineered (at least in some degree) opensource project which is still being in development. On the top of that, while the ebus protocol is open (?), many messages and the way ebusd devices interpret them are still a mystery. Dont give up, tinker with it and hopefully you will find out a way of doing what you want to do. Once this happens, please dont forget to share your findings with the community :)
@semenoh you can use SetMode to write FlowTempDesired. See https://github.com/john30/ebusd/issues/214 for my experience with custom message definition to write SetMode myself.
if you're going to replace your controller with a script, then you'd have to make sure that the controller does not intervene the changes you made with your scripting. that would mean switching it off, i.e. disconnect it from the bus. not sure if you really want to do that.
The controller is very dumb. It has no curves and modes. Only one knob to set a temperature.
Probably we all bought our Vaillant boilers wanting to do the same thing as you want to do. Unfortunately it's not that simple - ebusd is reverse engineered (at least in some degree) opensource project which is still being in development. On the top of that, while the ebus protocol is open (?), many messages and the way ebusd devices interpret them are still a mystery. Dont give up, tinker with it and hopefully you will find out a way of doing what you want to do. Once this happens, please dont forget to share your findings with the community :)
You are totally right. Thanks for your support. I do realize that everything here is reverse-engineered and a bit of mystery. And despite a lot of things were demystified by the community still remain a mystery for me. Unfortunately there is not single place for knowledge sharing. Everyone should gather information bit by bit from different sources. Something is on blog posts, something here in issues, something in wiki etc. I will share my experience, not sure when ))
@semenoh you can use SetMode to write FlowTempDesired. See #214 for my experience with custom message definition to write SetMode myself.
Unfortunately for me you are working with MQTT. I have to rebuild all my setup with different build of ebusd
. Also you mentioned that you have a custom definition SetModeOverride that is writable
. Could you please elaborate a little bit on this. Probably I will be able to map what you are doing with MQTT to TCP.
if you're going to replace your controller with a script, then you'd have to make sure that the controller does not intervene the changes you made with your scripting. that would mean switching it off, i.e. disconnect it from the bus. not sure if you really want to do that.
In fact this controller make things only worse. So it is switched off all the time except cases when I'm trying to intercept messages. The only thing I'm worried about is that my script can miss something important and boiler will malfunction.
BTW I've been thinking of sending binary data, but I need to intercept it first. Is it possible to listen to binary messages? (running ebusd
in foreground mode prints byte by line and most of them are 0xAA so it's really difficult to read)
just switch ebusd to print complete messages rather than every byte by using "--lograwdata" instead of "--lograwdata=bytes" and you can also make use of the grab function by issuing "ebusctl grab result" which will print unknown (or also known with further params) messages
@andig how did you managed to add SetModeOverride
command ?
I added one in my hcmode.inc
file but ebusd does not see it.
Here is my hcmode.inc
file. (command is wMode in the very end of the file):
pi@raspberrypi:/etc/ebusd/vaillant $ cat hcmode.inc
# type (r[1-9];w;u),circuit,name,[comment],[QQ],ZZ,PBSB,[ID],field1,part (m/s),datatypes/templates,divider/values,unit,comment
# HC operation mode,,,,,,,,,,,,,
*r,,,,,,"B504",,,,,,,
r,,DateTime,Date Time,,,,00,,,dcfstate;btime;bdate;temp2,,,
r,,Status16,Outside temperature,,,,16,,,temp,,,
# HC operation mode2,,,,,,,,,,,,,
*r,,,,,,"B511",,,,,,,
*uw,,,,,,"B510",,,,,,,
uw,,SetMode,Operation Mode,,,,00,,,hcmode,,,,flowtempdesired,,temp1,,,,hwctempdesired,,temp1,,,,hwcflowtempdesired,,temp0,,,,,,IGN:1,,,,disablehc,,BI0,,,,disablehwctapping,,BI1,,,,disablehwcload,,BI2,,,,,,IGN:1,,,,remoteControlHcPump,,BI0,,,,releaseBackup,,BI1,,,,releaseCooling,,BI2,,,,
#potential last byte: currentmode,s,UCH,0=off;1=standby;2=heat;3=water,,
r,,Status01,Vorlauftemperatur/Rücklauftemperatur/Aussentemperatur/WW Temperatur/Speichertemperatur/Pumpenstatus,,,,01,,,temp1;temp1;temp2;temp1;temp1;pumpstate,,,
r,,Status02,Betriebsart/Maximaltemperatur/ReglerCurrentTEMP/Maximaltemperatur/ReglerCurrentTemp,,,,02,,,hwcmode;temp0;temp1;temp0;temp1,,,
r,,Status,Status,,,,03,,,temp;press;press;hcmode2;HEX,,,
w,,wMode,Operation Mode,,,,00,,,hcmode,,,,flowtempdesired,,temp1,,,,hwctempdesired,,temp1,,,,hwcflowtempdesired,,temp0,,,,,,IGN:1,,,,disablehc,,BI0,,,,disablehwctapping,,BI1,,,,disablehwcload,,BI2,,,,,,IGN:1,,,,remoteControlHcPump,,BI0,,,,releaseBackup,,BI1,,,,releaseCooling,,BI2,,,,
here is my /etc/default/ebusd
EBUSD_OPTS="--configpath=/etc/ebusd/ --scanconfig=full -d /dev/ttyUSB0 -p 8888 --httpport=8080 --loglevel=info"
After editing hcmode.inc
I rebooted raspberry py and then:
pi@raspberrypi:~ $ ebusctl write -c bai wMode auto\;90.0\;-\;-\;0\;0\;0\;0\;0\;0
ERR: element not found
pi@raspberrypi:~ $ ebusctl f -w
broadcast id = no data stored
broadcast queryexistence = no data stored
ebusctl f
does not show my command at all.
@john30 is it possible that ebusd see newer version in repo and override my one with it? Or it read config from different place ?
how did you managed to add SetModeOverride command ?
You can just define it using ebusctl
once you have enabled this in the daemon config- check the wiki for how to.
no, ebusd is using either ebusd.eu service or local files depending on your setting of "-c"
Hi. I think that FlowTempDesired is set by the boiler controller and can not be changed using ebusctl. FlowTempDesired depends on: Hc1HeatCurve, current changes in ReturnTemp and can not exceed FlowsetHcMax.
I deduced this from the observation of my own charts.
The problem is that the maximum HC temperature I have set in the controller at 50 and it works. FlowTempDesired does not exceed 50. Unfortunately, "ebusctl read -c bai FlowsetHcMax" returns me 75. The change of FlowsetHcMax value by ebustl is without errors but the re-reading of FlowsetHcMax still shows 75. I think this is some error in .inc files for our boilers, which may be too new and do not have a properly prepared configuration in .inc files.
I think you should only change FlowsetHcMax, but you can not do it correctly. I can not too.
bai FlowsetHcMax - this is for the heating circuit bai FlowsetHwcMax - this is for the hot water circuit
i dont think there is a minimum value you can set. doesnt make sense to me... i've set those values in my heater and never touched them again
I agree with kkloesener.
FlowTempDesired depends on: Hc1HeatCurve, current changes in ReturnTemp and can not exceed FlowsetHcMax.
Confirmed.
I think that FlowTempDesired is set by the boiler controller and can not be changed using ebusctl.
Not quite. As written before, it can be changed using SetMode
. However, this only makes sense if you have no controller attached since a controller will also use SetMode
and overwrite your manual settings all the time. At least that's what VRC700 does.
Just stumbled across this discussion while searching for information to achieve the same thing - setting FlowTempDesired (on a new boiler Vaillant VCI installed just recently. I have done the equivalent on the previous boiler using the 7-8-9 interface). The new boiler has no controller connected and FlowTempDesired can be set manually from the UI on the boiler itself. In so far
FlowTempDesired depends on: Hc1HeatCurve, current changes in ReturnTemp and can not exceed FlowsetHcMax.
does not apply in my case. I have started playing with some of the options described here with no success so far. Guess I have to digest SetMode first... Did you made any progress in the meantime?
The new boiler has no controller connected and FlowTempDesired can be set manually from the UI on the boiler itself.
Unfortunately, in my experiments, the boiler-internal changes are not reflected on the bus.
Guess I have to digest SetMode first...
Imho SetMode
is the way to go. It is what the VRC700 issues to the BAI. Since it's not writeable define your own SetModeOverride
command and use that.
Thanks for your response, andig.
Unfortunately, in my experiments, the boiler-internal changes are not reflected on the bus.
Not quite sure what you mean with "reflected" - changes of FlowTempDesired on the unit can be read from the eBus. Anyway, will give SetMode a try.
Hi HubertJH . The graph shows the FlowTempDesired changes.
At the beginning of January 2019, FlowsetHcMax was set at 55 °C. On January 7, I changed FlowsetHcMax to 50 °C. As you can see, FlowTempDesired does not exceed FlowsetHcMax and is often below FlowsetHcMax, especially now when the outside temperature varies from 3 °C to 17 °C.
I think that FlowTempDesired is set by the internal program of the boiler and the user can only limit FlowTempDesired via FlowsetHcMax.
The FlowsetHcMax change can not be seen immediately in FlowTempDesired. FlowTempDesired will not change until the next measurement cycle. It can be within 30 minutes.
In the next graph I added the outside temperature (orange line). See that FlowTempDesired decreases as the outside temperature increases. I do not change FlowTempDesired, it does the boiler program. An external temperature sensor is connected to the boiler.
Do you have an external temperature sensor connected to the boiler?
Hi
Just stumbled across this discussion, did anyone got any success in steering flow temperature on valiant boilers, i have Uk version of 618(system boiler) without any additional components. Boiler is directly attached to ebus interface. I get all readings correct but im suffering from what was previously mentioned in the discussion which is no change in temperature when i write to FlowsetHcMax, temperature does not change(not in parameters reported by ebus nor on radiators) Not sure how to use SetMode mentioned by andig, does anyone have a place where that is explained?
Not sure how to use SetMode mentioned by andig, does anyone have a place where that is explained?
The related discussion was in https://github.com/john30/ebusd/issues/179.
Hey andig I dont have SeMode in my list of write options, where do i go from here ?
I don't have SeMode in my list of write options, where do i go from here ?
You'll have to follow https://github.com/john30/ebusd/issues/179#issuecomment-434628658.
closed due to inactivity
I tried to change desired temperature on the boiler and read data to figure out which one to change. So I figured out that
FlowTempDesired
is changing. Than I tried to write it but got failed:I've tried to lookup config file
And It looks like it is read only field. So the question is why is it read only and which one should I write to tune temperature ? Here is all I can write:
BTW
/ets/default/ebusd
has--accesslevel="*"
option: