michaelarnauts / comfoconnect

Python Zehnder ComfoConnect LAN C library to interface with ComfoAir Q350/450/600 units.
Other
94 stars 34 forks source link

engineer options #32

Open vain90 opened 4 years ago

vain90 commented 4 years ago

Hi, is there any way to change engineer settings via python? I would like to change the setting for a fireplace.

michaelarnauts commented 4 years ago

I haven't looked into this, since these are mostly settings that you configure once and don't have to change. You can modify them from the Comfoconnect app.

vain90 commented 4 years ago

Thats true. Most of the settings are static. Or rather all of them. =) But my idea is to deactivate the option for the fireplace when the stove isn't burning and the outside temp is below 0°C

Yes, I know there is a risk.

So you would have more frost protection without a preheater. IF the stove is not burning.

decontamin4t0R commented 4 years ago

Hi,

You can modify them using the comfoconnect app, but I am unsure if you can do it without resetting the ventilation first. It might break your ventilation, no guarantees

The relevant RMI commands should be:

Get the current fireplace state: 01 20 01 10 08 (0 for deactivated, 1 for activated, please check)
Set the current fireplace state: 03 20 01 08 0x (x is the new value)
vain90 commented 4 years ago

Hi,

@decontamin4t0R thanks for your help!

Yes I'm able to modify them in the app. The system doesn't have to be reset for this. IMG_E48136D6C4E8-1 Just activated or deactivated. But I have to enter the engineer password before.

How can I query this from the ComfoConnect? I've tried to add CMD_SENSOR_FIREPLACE = b'\x01\x20\x01\x10\x08' in const.py and call it with

comfoconnect.register_sensor(CMD_SENSOR_FIREPLACE) but it didn't work.

Could you give me a jump start on how to query the status and how to set the new value? And don't I need the engineer password for this?

decontamin4t0R commented 4 years ago

You would need to call them using cmd_rmi_request The querying of info via RMI is not returned using this function. The engineer password is not required, for more info see https://github.com/marco-hoyer/zcan/issues/1#issuecomment-498327969

Vadgyik commented 3 years ago

hi, thanks for the great work! I'm trying to implement communication with Q350 unit using CAN bus using ESP8266 module, the plan is to send data to Home Assistant. Other project is to implement the emulation of the Comfoconnect LAN C module using the ESP8266 module. I have a prototype using this library running on laptop which allows the Zehnder Android application to connect to (the node is discovered, reported as connected, it's even displaying the "firmware" version and allows to start the firmware upgrade from the application). However the application displays everything in dashboard and in settings grayed/disabled. Spent some time decompiling the Android application - searched for some condition from which I can figure out what ComfoNet version should I report - but without success, and more like it seems that that version is not important for the application. I own no LAN C device, only the Q350 unit in my house.

Has anybody captured network traffic between the application and the LAN module (Wireshark/tcpdump - the communication is not encrypted)? It would be helpful also for discover/understanding what messages are sent to change each configuration doable from the application. Does anybody have such network capture or can somebody capture such network traffic?

Vadgyik commented 3 years ago

figured out in the end; I'm able to read and send messages to CAN bus using the ESP8266 and I'm able to communicate with a python script with the Zehnder application. Only need to put these together.

klaudiusz223 commented 3 years ago

figured out in the end; I'm able to read and send messages to CAN bus using the ESP8266 and I'm able to communicate with a python script with the Zehnder application. Only need to put these together.

Hi, that sounds very interesting! Do You plan to public your work? Especially the part related to CAN bus?

vekexasia commented 3 years ago

@Vadgyik do you have a wiring schematics?

Vadgyik commented 3 years ago

I plan to put the code to github, I need to find time to clean it up and make it a single application (instead of 2 application - move the protobuf handling code to Arduino application from python app)

regarding the schematics: I use MCP2515 module with TJA1050 board (CAN controller) with Wemos D1 mini (ESP8266 wifi module) - the CAN board is 5 V and the ESP8266 is 3.3 V device so I needed a level converter between these boards. The connection is thru SPI + digitalIO for indicating that data is ready to red (INT). Using the https://github.com/coryjfowler/MCP_CAN_lib library for the CAN driver, however it needs changes to work properly with ESP8266 (I always got timeout when sending message, but the message is properly sent).

vekexasia commented 3 years ago

@Vadgyik i did my implementation with an ESP32 here with also a 3D enclosure using an RJ45 to connect the whole thing to the comfo unit.

image

image

Code and stl files are here: https://github.com/vekexasia/comfoair-esp32

MHOMEASS commented 3 years ago

Really nice project and awsome work here. I'm looking for a new unit came across the ComfoAir Q 350. HA integration is something I really like to have and came acros this integration. I want to be able to set the fan speeds (in and out) so I can set a under or overpressure in the building. Looking in the documentation I saw this is possible in the menu 'onbalans'. Is it possible to use this function in the integration? Knipsel Knipsel2

BrechtMo commented 3 years ago

Another use case I have for the engineer settings: that would allow you to set a precise ventilation volume. Now you are limited to four preset settings (off, 1, 2, 3). Using the engineer settings you could modify the setting of a preset and so make a small adjustment to the volume if necessary. Now this is only possible using a 0-10 V connection on the option box to set the volume between 0 and 100 percent, I think.

If you change the ventilation preset setting in the engineer settings in the app, the change is applied immediately (if the current preset is active).

Use case: modify the ventilation volume in a precise way as reaction to a CO2 or humidity sensor to have the optimal ventilation for a given situation taking noise production and power consumption into account.

BartVB commented 3 years ago

I was thinking the same but I was hoping that there is a more direct way to handle this. A risk with the above scenario (adjusting the 4 standard settings) is that it might destroy an EEPROM in the unit. I'm not sure how the settings are saved but if you change the amount of ventilated air every few minutes (or even seconds) that might result in more writes to the storage medium of the Zehnder unit than it can handle. Normally these settings are only changed at initial installation.

BrechtMo commented 3 years ago

excellent point, thanks. An additional issue might be that you might only be able to modify the value within the limits imposed by the previous and next preset. e.g if setting 1 is 100m³ and setting 3 is 300m³ you can change preset 2 only between 100 and 300 and not over the complete volume range. You would need additonal logic to switch between preset and then modify the preset.

The zehnder option box is sadly an expensive addition + you need additonal hardware with a 0-10V output.

decontamin4t0R commented 3 years ago

The air flow values are described here: https://github.com/michaelarnauts/comfoconnect/blob/master/PROTOCOL-RMI.md (Unit 0x1E). After looking on the central unit, I could not find an eeprom, however a flash module. Therefore I think it could be that they store the data on that flash chip. Another way would be to try to simulate an Optionbox and map the desired airflow to a 0-10V setting...