Viessmann Vitocal 250-A
DpunktS opened this issue · 5 comments
Hello, I would like to control my Vitocal 250-A with the iobroker.can-bus adapter, but no matter what I set, I only get nonsensical values. Can someone help me with what I have to set so that correct values come out. There is already a Github project with an independent interface (https://github.com/abnoname/open3e.git). This should be a UDS protocol. Viessmann also provides a data point list Viessmann Datenpunktliste
Hi, I'll have a look at this as soon as possible, but it may take some time the moment.
First step to start for you would be to enable the option to automatically create data points for seen messages. This way you may collect some knowledge about the message IDs on the can bus and some raw data.
Yes, I can read out the raw data and I have also activated the automatic creation, but what is read out does not match any id of the heating.
Can you provide all your automatically created message IDs with some example raw data?
According to my research:
The UDS Protocol is a little bit more complicated than a raw CAN communication. An intro to UDS can be found here for example.
Genrally you need to request some data using the CAN ID 680 and the answer will be send using CAN ID 690.
To request the data point 268 (Vorlauftemperatur) for example, you need to send 0x03 0x22 0x01 0x0c 0x00 0x00 0x00 0x00
([3, 34, 1, 12, 0, 0, 0, 0]
as value for the ioBroker state) on CAN ID 0x680 and then you should receive an answer on CAN ID 0x690. 268
= 0x01 0x0c
But the answer may be a multi frame message where you get more than one CAN message and then you have to collect the messages and combine them an some way.
Additionally you need to send an acknowledgement frame for each received message on CAN ID 0x690.
As you may see, it's not so easy to read some data from an UDS protocol using this adapter. It should be possible, but have to do some more work using parsers and/or custom javascripts.
Your linked Open3E software seams to handle the CAN UDS communication and provided the data via MQTT. Maybe it's easier to use this together with the mqtt adapter?