Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Daikin and Modbus interface #4

Open
jelockwood opened this issue Oct 29, 2021 · 72 comments
Open

Daikin and Modbus interface #4

jelockwood opened this issue Oct 29, 2021 · 72 comments

Comments

@jelockwood
Copy link

@budulinek
You mention in your ReadMe

There is no external Modbus adapter for newer Altherma models, the official LAN adapter is very limited in functionality and as of today Daikin has no usable public API or cloud-based solution.

However I found the following two products. Would these solve this problem?

https://www.daikin.eu/en_us/products/RTD-W.html - For use with Altherma 3 HT models I believe
https://www.daikin.eu/en_us/products/RTD-LT-CA.html - For use with Altherma 3 LT models I believe

See this discussion
https://community.openhab.org/t/how-to-integrate-daikin-altherma-lt-heat-pump/16488/
and in particular this post
https://community.openhab.org/t/how-to-integrate-daikin-altherma-lt-heat-pump/16488/17

@budulinek
Copy link
Owner

@jelockwood

I know about these two products. Made by 3rd company, sold by Daikin. See also: http://www.realtime-controls.co.uk/index.php/site/product-list/C1/

These are quite old products.
RTD-W is (was) for Altherma HT. Could (or could not) be compatible with Altherma 3 HT.

RTD-LT/CA was for the very first "CA" generation of Altherma LT. Did not try it. But according to the manual (and according to Daikin representative to whom I talked few years ago), it is not compatible with the second "CB" generation of Altherma LT (I have second generation Altherma LT which has CB in the product name: EHVX08S26CB9W ). I very much doubt it would be compatible with the newest (3rd) generation of Altherma.

@budulinek
Copy link
Owner

BTW there is another commercial P1P2 <-> Modbus solution by Intesis, but probably only for Daikin cooling units:
https://www.intesis.com/products/ac-interfaces/daikin-gateways

And of course, P1P2 <-> KNX solution by Zennio, compatible with Altherma 3:
https://www.zennio.com/products/clima/klic-da

@StefanR71
Copy link

Today we installed a Altherma 3 H HT W (ETBH16EF9W) and Daikin told me to use the DCOM-LT/IO unit for Modbus access:

https://www.daikin.eu/en_us/products/dcom-lt-io.html

@budulinek
Copy link
Owner

budulinek commented Aug 2, 2022

You are right! Thanks for sharing the info, I did not know about it (probably some new product).

There is also a "DCOM-LT/MB" unit. Only Modbus, no relays, no analog inputs. Probably cheaper.

You can check its capabilities by looking at Modbus registers here:

https://www.daikin.fi/content/dam/document-library/installation-manuals/opt-and-acc/DCOM-LT-MB%20reference%20manual_English.pdf

Issue reopened for others to see.

EDIT: Yep, 400€ ....

@budulinek budulinek reopened this Aug 2, 2022
@StefanR71
Copy link

Thanks for the Info... I will look for the /MB version...

I'm searching for a solution to query some values and switch the functions heat/cooling/water on/off.

Because i want to disable the water heat function at night when the next days we have more than 8 hours of sun. But cooling should still possible, so i can't use the solarlock input. And on the other side i want only allow cooling when i have solar power or enough power in my battery's.

In the past we had a Novelan/Luxtronic device and that o controlled from my linux server with a python script. The same i want to create now with the Altherma.

@ttnguyen111
Copy link

hi there, do you know where I purchase the DCOM-LT/MB in the UK please? Thanks

@MichaelST01
Copy link

Thanks for the Info... I will look for the /MB version...

I'm searching for a solution to query some values and switch the functions heat/cooling/water on/off.

Because i want to disable the water heat function at night when the next days we have more than 8 hours of sun. But cooling should still possible, so i can't use the solarlock input. And on the other side i want only allow cooling when i have solar power or enough power in my battery's.

In the past we had a Novelan/Luxtronic device and that o controlled from my linux server with a python script. The same i want to create now with the Altherma.

I have an Daikin Altherma 3 H MT W connected with the DCOM LT/MB Modul.

I can set via Modbus the following values:

1 Leaving Water Main Heating Setpoint / 25 .. 55ºC
2 Leaving Water Main Cooling Setpoint / 5 .. 22ºC
3 Operation Mode / 0: Auto, 1:Heating, 2:Cooling
4 Space Heating/Cooling On/Off / 0:OFF 1:ON
6 Room Thermostat Control Heating Setpoint / 12 .. 30ºC
7 Room Thermostat Control Cooling Setpoint / 15 .. 35ºC
9 Quiet Mode Operation 0:OFF 1:ON
10 DHW Reheat Setpoint / 30 .. 60ºC
12 DHW Reheat On/Off / 0:OFF 1:ON
13 DHW Booster Mode On/Off / 0:OFF 1:ON
53 Weather Dependent Mode / 0:Fixed 1: Weather Dependent 2: Fixed+Scheduled 3: Weather Dependent+Scheduled
54 Weather Dependent Mode LWT Heating Setpoint Offset / -10 .. 10ºC
55 Weather Dependent Mode LWT Cooling Setpoint Offset / -10 .. 10ºC

It works quite well.

@macla
Copy link

macla commented May 24, 2023

MichaelST01 would you mind sharing how you did this over ModBus? I have almost the same setup: A Daikin Altherma 3 H HT W connected with DCOM LT/MB module. But I am only capable of reading some registers and can't find a way to control the operating mode (start/stop) or change water main heating setpoint. Only documentation I found is in the DCOM manual - perhaps you have another reference?

@MichaelST01
Copy link

I did it the following way:
Hardware - DCOM LT/MB -> PE11 (Modbus RTU to TCP)
For testing I had iobroker with modbus interface (installed as master) installed and I changed the values of the holding registers in the object tree.
Why I need it is that I have Photovoltaic on the roof and I use the heatpump to power the pool (so I have to switch to fixed Temperature and set the Leaving Water Main Heating Setpoint to a higher value 45°. If I switch of the pool-heating I change the value back to weather dependent mode or I switch room heating completly off.

In the final version I use a UVR16x2 (www.ta.co.at) with a modbus RTU interface to control it. It also controls the heating circuits of the house (from the puffer).

@peacekeeper03
Copy link

peacekeeper03 commented Jun 20, 2023

@budulinek

Did you find any Modbus Device/Module for the "CB" Generation?
I have the EHBX11CB9W and looking for an working modbus device.

@hdm64a
Copy link

hdm64a commented Jul 11, 2023

@MichaelST01

I have a similar configuration: A Daikin Altherma 3 H HT W connected to a DCOM LT/IO module. I can only read some registers but not write, e.g. to change the operating mode. As a controller, the UVR16x2 connected to the CAN-BC2 including the Modbus board. Would it be possible to get the necessary files (*.dat, *.tdw)? It would help me a lot, thanks in advance.
@hdm64a

@MichaelST01
Copy link

@hdm64a

No problem, here are the files. At the moment I switch the pool heating manually on with UVR16x2 (when it is on the Daikin changes operating mode, and sets Temperature to 43°C, when it is off it switches operating mode back). But I suppose you have a different hydraulic setup.

TDW Files.zip

@hdm64a
Copy link

hdm64a commented Jul 19, 2023 via email

@MichaelST01
Copy link

I am from Austria, that's why the comments in the files are in German :-)

@hdm64a
Copy link

hdm64a commented Aug 23, 2023 via email

@peacekeeper03
Copy link

peacekeeper03 commented Sep 22, 2023

DCOM Configuration Mode.pdf
For completion, the description for the config mode.
Helped me.

@skydoy
Copy link

skydoy commented Mar 10, 2024

Thanks for the Info... I will look for the /MB version...
I'm searching for a solution to query some values and switch the functions heat/cooling/water on/off.
Because i want to disable the water heat function at night when the next days we have more than 8 hours of sun. But cooling should still possible, so i can't use the solarlock input. And on the other side i want only allow cooling when i have solar power or enough power in my battery's.
In the past we had a Novelan/Luxtronic device and that o controlled from my linux server with a python script. The same i want to create now with the Altherma.

I have an Daikin Altherma 3 H MT W connected with the DCOM LT/MB Modul.

I can set via Modbus the following values:

1 Leaving Water Main Heating Setpoint / 25 .. 55ºC 2 Leaving Water Main Cooling Setpoint / 5 .. 22ºC 3 Operation Mode / 0: Auto, 1:Heating, 2:Cooling 4 Space Heating/Cooling On/Off / 0:OFF 1:ON 6 Room Thermostat Control Heating Setpoint / 12 .. 30ºC 7 Room Thermostat Control Cooling Setpoint / 15 .. 35ºC 9 Quiet Mode Operation 0:OFF 1:ON 10 DHW Reheat Setpoint / 30 .. 60ºC 12 DHW Reheat On/Off / 0:OFF 1:ON 13 DHW Booster Mode On/Off / 0:OFF 1:ON 53 Weather Dependent Mode / 0:Fixed 1: Weather Dependent 2: Fixed+Scheduled 3: Weather Dependent+Scheduled 54 Weather Dependent Mode LWT Heating Setpoint Offset / -10 .. 10ºC 55 Weather Dependent Mode LWT Cooling Setpoint Offset / -10 .. 10ºC

It works quite well.

Hi i got the DCOM-LT/IO
and a waveshare RS485 To ETH im able to connect to the modbus
but im lost in the config can you point me where to set it up?

Thanks

@StefanR71
Copy link

Hi,
i have now a Daikin HomeHub, this part replaces the DCOM and can used with Modbus RTU "or" Modbus TCP. So there i no need for a additional RS485 to ETH gateway.
I have also tryed a waveshare product, but this product has the same limitation like all cheap chinese gateways. It will discard TCP payloads with more than one Modbus TCP part inside...

@mkarnebeek
Copy link

This Home Hub sounds very promising, but getting it seems somewhat difficult. It was introduced the end of last year. Could you share where you bought or got it from?

@StefanR71
Copy link

Here in germany from our installer, he got it from his Daikin reseller "thiele & fendel".

@adicorra
Copy link

Hi, i have now a Daikin HomeHub, this part replaces the DCOM and can used with Modbus RTU "or" Modbus TCP. So there i no need for a additional RS485 to ETH gateway. I have also tryed a waveshare product, but this product has the same limitation like all cheap chinese gateways. It will discard TCP payloads with more than one Modbus TCP part inside...

@StefanR71

I'm from France, I have ALTHERMA2 (CB version as stated above) and I'm ready to order the DCOM-LT-IO to communicate over Modbus from HA.

What "limitations" have you encountered with the cheap RTU to TCP gateways ?

Discarding TCP payloads => what is the impact in terms of controlling the unit ?

What gateway do you recommend if the limitation is an issue ?

Thanks.

@budulinek
Copy link
Owner

Hi, i have now a Daikin HomeHub, this part replaces the DCOM and can used with Modbus RTU "or" Modbus TCP. So there i no need for a additional RS485 to ETH gateway. I have also tryed a waveshare product, but this product has the same limitation like all cheap chinese gateways. It will discard TCP payloads with more than one Modbus TCP part inside...

@StefanR71

I'm from France, I have ALTHERMA2 (CB version as stated above) and I'm ready to order the DCOM-LT-IO to communicate over Modbus from HA.

What "limitations" have you encountered with the cheap RTU to TCP gateways ?

Discarding TCP payloads => what is the impact in terms of controlling the unit ?

What gateway do you recommend if the limitation is an issue ?

Thanks.

If you have troubles with cheap Chinese Modbus RTU -> TCP gateways, you can try my own Modbus RTU ⇒ Modbus TCP/UDP Gateway ;-)

Here is a tutorial and a firmware for an Arduino-based gateway. Quite reliable, works in my house for years. For your information: in my gateway, payloads are stored in a buffer, they are not discarded. Of course, if you you bombard the gateway with very frequent requests and you manage to fill the buffer, then the TCP request is discarded :-) Moreover, you can see the utilization of the buffer in the Web UI, you can also see counter for these "gateway overloaded" errors in webUI.

https://github.com/budulinek/arduino-modbus-rtu-tcp-gateway

@StefanR71
Copy link

In my view you have 2 possible ways:

Don't order the DCOM-LT-IO, use the HomeHub: https://www.daikin.eu/en_us/products/product.html/EKRHH.html

When your heatpump isn't compatibe with the HomeHub, then you need to use the other part and use a gateway to modbus TCP.

The problem is the following with the gateways:

When you request the content of the registers 1,2,3 and 6 then this request will be send in 2 parts:
request 3 registers starting at 1
request 1 register starting at 6

But for the second request we don't get an answer.

A workaround is to query only registers that are together at a time. Or only single registers...

@adicorra
Copy link

I would of liked to go for the EKRHH but it is only compatible with the Altherma "3" and I have the Gen 2.

On what controls will I be limited since I yet did not go in details and do not know what the impact will be ? What function will work or not work ?

Whats crazy is that DAIKIN give the DCOM-LT compatible with the unit.

@budulinek
Copy link
Owner

But for the second request we don't get an answer.

Yeah, seems that cheap Chinese Modbus gateways do not have a buffer at all. My Modbus gateway stores 10 requests in a buffer.

https://github.com/budulinek/arduino-modbus-rtu-tcp-gateway

Feel free to give it a try. I do not have DCOM-LT-IO myself, but I have tested my Modbus gateway extensively.

@adicorra
Copy link

adicorra commented May 15, 2024

@StefanR71 I'm thinkging Unless you where using the DCOM-LT with a Gen 3 and its not fully compatible with the Gen 3.....

I received this compatiblity list from Daikin :
Altherma 3 H HT split (EPRA-D)
Altherma 3 R32 R Split (ERLA-D)
Altherma 3 Monobloc (ED(B)LA-D)
Alttherma 3 WS (EGSHA-D)

It mentions not compatible with : Altherma 3 R split (ERGA-E).

But for Gen2 it is compatible : ERLQ-C

Maybe the conclusion is that :
For GEN 2 => Use the DCOM-LT (MB or IO)
For GEN 3 => Use the HomeHub

@adicorra
Copy link

But for the second request we don't get an answer.

Yeah, seems that cheap Chinese Modbus gateways do not have a buffer at all. My Modbus gateway stores 10 requests in a buffer.

https://github.com/budulinek/arduino-modbus-rtu-tcp-gateway

Feel free to give it a try. I do not have DCOM-LT-IO myself, but I have tested my Modbus gateway extensively.

Do you mean it's better to use arduino without a commercial modbus gateway ?

@budulinek
Copy link
Owner

But for the second request we don't get an answer.

Yeah, seems that cheap Chinese Modbus gateways do not have a buffer at all. My Modbus gateway stores 10 requests in a buffer.
https://github.com/budulinek/arduino-modbus-rtu-tcp-gateway
Feel free to give it a try. I do not have DCOM-LT-IO myself, but I have tested my Modbus gateway extensively.

Do you mean it's better to use arduino without a commercial modbus gateway ?

Sure, this is what I mean. I am quite confident in my gateway - it is better than these Chinese commercial gateways.

@budulinek
Copy link
Owner

@budulinek

I read your instructions for the arduino. I'm new to Arduino. When it says "Download and flash my pre-compiled firmware"; do I need to configure before the Ethernet shield or all is included in your firmware, ready-to-go once flashed ? To flash it, I guess its from IDE ?

thanks,

I think it is better to compile your own firmware. Download github repo, open arduino-modbus-rtu-tcp-gateway.ino in Arduino IDE. In Arduino IDE, open library manager and install "CircularBuffer" and "StreamLib" libraries. Connect Arduino, select board and port. Then hit Ctrl+U (comnpile and upload). No need to configure ethernet shield, default settings will apply and your Arduino should be available on 192.168.1.254

@adicorra
Copy link

adicorra commented May 23, 2024

Thank you for the info. I will use this KKSB case to have a complete module.
https://kksb-cases.com/cdn/shop/products/DSC02079_800x544.jpg?v=1669881064
TTL card can go inside also.
What's great is that the case has a DIN rail adapter.
So you can put side by side on the rail, the DCOM-LT and your module.
I saw on the drawing it's better to use a direct 5V power supply and not use the USB or existing DC.

@adicorra
Copy link

adicorra commented May 23, 2024

For those interested,

The solution DCOM + Modbus Gateway is about the same cost as the Home Hub (EKRHH).

For Altherma 2 we have no other option as EKRHH is not compatible, so it's good news :

  • DCOM-LT/IO : 320€
  • Arduino Uno + Shield 2 : 54€
  • MAX13487 RS485 to TTL : 11€
  • Optional Case : 21€
    TOTAL 406€

This is buying on stock in EU ; you can get it cheaper from Aliexpress.

@adicorra
Copy link

In my view you have 2 possible ways:

Don't order the DCOM-LT-IO, use the HomeHub: https://www.daikin.eu/en_us/products/product.html/EKRHH.html

When your heatpump isn't compatibe with the HomeHub, then you need to use the other part and use a gateway to modbus TCP.

The problem is the following with the gateways:

When you request the content of the registers 1,2,3 and 6 then this request will be send in 2 parts: request 3 registers starting at 1 request 1 register starting at 6

But for the second request we don't get an answer.

A workaround is to query only registers that are together at a time. Or only single registers...

@StefanR71
Hi, I decided to do my project on the Arduino custom gateway, but are you sure this module from Waveshare cannot handle more than one Modbus TCP part inside ? https://www.welectron.com/Waveshare-RS232-485-TO-ETH.
The product is more expensive than the cheaper 23273 https://eu.robotshop.com/fr/products/industrial-serial-server-rs485-to-rj45-ethernet-tcp-ip-to-serial-rail-mount-poe

@adicorra
Copy link

@budulinek
I read your instructions for the arduino. I'm new to Arduino. When it says "Download and flash my pre-compiled firmware"; do I need to configure before the Ethernet shield or all is included in your firmware, ready-to-go once flashed ? To flash it, I guess its from IDE ?
thanks,

I think it is better to compile your own firmware. Download github repo, open arduino-modbus-rtu-tcp-gateway.ino in Arduino IDE. In Arduino IDE, open library manager and install "CircularBuffer" and "StreamLib" libraries. Connect Arduino, select board and port. Then hit Ctrl+U (comnpile and upload). No need to configure ethernet shield, default settings will apply and your Arduino should be available on 192.168.1.254

Got the Arduino working ; really straightforward and simple !

Since my network is on 192.168.0.X I had to connect it to a laptop with a direct IP to change the IP through the webinterface.

For next time, eg if I have to update one day, is their a way to change the default IP in the ino files ?

Thanks again Mate !

@StefanR71
Copy link

@StefanR71 Hi, I decided to do my project on the Arduino custom gateway, but are you sure this module from Waveshare cannot handle more than one Modbus TCP part inside ? https://www.welectron.com/Waveshare-RS232-485-TO-ETH. The product is more expensive than the cheaper 23273 https://eu.robotshop.com/fr/products/industrial-serial-server-rs485-to-rj45-ethernet-tcp-ip-to-serial-rail-mount-poe

The last one i have, i also tryed one from USR IOT and contacted the support, all have the same problem...

@adicorra
Copy link

adicorra commented May 27, 2024

Just to share the results with Budulinek's Mdbus TCP gateway. Works great, amazing solution!
Attached picture of the hardware with the KKSB case (TTL converter fits inside no problem).
Bottom right, you can see the customized (direct 5V power supply jack) - not using the jack on the Arduino.

@budulinek One thing you should mention on your gateway's page is to highlight this risk that some TTL adapter manufacturers invert TX and RX ! I lost 3h of investigation because of this !! My card is DSD TECH SH-U12 https://www.amazon.fr/dp/B07B667STP?ref=ppx_pop_mob_ap_share

Modbus-TCP Gateway

@budulinek
Copy link
Owner

@adicorra thanks for the feedback! I am always happy to hear that it works :-)

  • No need to change the default IP. Once you change IP in webUI, it is saved in EEPROM. And EEPROM data are retained during minor firmware update (i.e. when you compile and upload new firmware to Arduino, your user settings are retained). I only erase EEPROM data when I need to change its structure, you will notice that major version will change (currently 7.x). But if you want, you can change default IP in advanced_settings.h
  • Thanks for the feedback regarding inverted TX and RX!! Actually you are not the first one with this problem, I will definitely update README to alert users.
  • @StefanR71 yes, I have also heard that USR-IOT have same problems. USR-IOT and Waweshare haver similar webUI, maybe they share code? BTW I have studied USR-IOT functionality and drew inspiration from their webUI. So credits to them :-)
  • @adicorra Could you please confirm that issues mentioned by Stefan are solved with my gateway?

@adicorra
Copy link

adicorra commented May 27, 2024

Thanks for your recap. Yes, I can confirm everything is working perefectly. I didn't experience the issues with the other commercial gateways since I didn't test them, but if @StefanR71 tells me exactly what register (on the Altherma) doesn't work because of the multiple parts inside the data packet , then I can test it live and confirm.

@adicorra
Copy link

adicorra commented May 27, 2024

@budulinek, regarding the default IP, can you please confirm because I recall to have changed it and reflashed but didn't seem to take into account (I mean before going in the WebUI). This is important as the gateway will be in the unit casing and don't want to unwire just to change the IP one day. Ideally can we get another IP adress at boot without going through the WebUI ?

Did I do this correctly ? In yellow the values I changed (here they are as default of course)

defaultIP

@budulinek
Copy link
Owner

@adicorra Yes, this is where you change the default IP. You can also see the default static IP on the "Tools" page in web UI. And you can test your default IP by clicking "Load Default Settings". The button will erase your EEPROM (only MAC address is retained) and default settings from advanced_settings.h will be apllied (incl. your default IP) .

BTW can I use the picture of your hardware (with the KKSB case) in my my readme?

@adicorra
Copy link

Yes you can, with pleasure.

@adicorra
Copy link

adicorra commented May 27, 2024

Update : this morning I had just setup 2 input sensors that worked fine and supplied me with the water temp.

I tried to control the cooling today and it takes it (relay 1 goes on) and the remotcon led goes green but the PUMP does not start. I checked the min outside temperature thinking it was reset and the value is correct.

I don't know whats going on.

Also, if I change the "Room Cooling Setpoint" the value on the remotcon doesn't change. Weird.
I sent commands over the gateway such as 01 06 00 07 00 15

@adicorra
Copy link

adicorra commented May 27, 2024

Found the issue ! Before I had the LAN adpater and when I removed it (because its not compatible with a Remotcon + DCOM), my room thermostat switched to "At Unit" in [A.2.1.B] - Once switched back to "In Room" as it should be (thermostat) then all came back as before and HP working now with Climate Entities from HA.

@adicorra
Copy link

@budulinek here is a picture of the full kit installed on a DIN rail inside the indoor unit.

  • 2 Power supplies (24V and 5V)
  • 1 Amp fuse
  • DCOM-LT
  • Modbus Gateway

IMG_8763

You can use it as you wish.

@adicorra
Copy link

adicorra commented Jun 3, 2024

A lot of invalid RTU responsed (in just 12h hours). What are these coming from ?
My RS485 card is working fine, no errors reported by the HP.

Timeouts

@budulinek
Copy link
Owner

budulinek commented Jun 3, 2024

A lot of errors? Come on...

Most probable cause of these soft errors: Arduino delays in processing the response. Arduino is a single-threaded computer. I have invested a lot of effort in optimizing the code to make it non-blocking (I have even modified some of the core functions in the ethernet library). But I suspect that under certain circumstances (0,5% of cases), Arduino is not fast enough to process the Modbus RTU response. What probably happens:

  • Arduino sends Modbus RTU request via RS485 (countdown for Response Timeout starts)
  • Modbus RTU response arrives when Arduino is busy doing other stuf (such as servicing WebUI - remember that there is fetch API request every 2 seconds when you are viewing the "Modbus Status" page). Modbus RTU response is stored in serial in buffer, but since Arduino is busy, its arrival is not recorded by the MCU
  • Arduino finishes the task which caused the delay. Only now it checks serial in buffer. But because the Response Timeout has already passed, Modbus RTU response is dropped and these two errors are recorded. Because the gateway does treat unexpected Modbus RTU responses (responses arriving after Response Timeout) as Invalid RTU Response.
  • New Modbus RTU request is sent by the gateway, response is successfully received (recorded) by the gateway and forwarded to the Modbus TCP master (HA, Loxone...). No problem.

As I said, Invalid RTU Response and Response Timeout are soft (fully recoverable) errors. Treat them as warnings - no need to worry about them. Watch out for Slave Responded with Error, Gateway Overloaded and Slave Failed to Respond.

@adicorra
Copy link

adicorra commented Jun 3, 2024

No problem, I was anticipating your answer that it is not an issue since I mentioned not to have errors. I was just curious to understand from where these "dropped communications" could come from and I think you have a given a clear analysis. Your project is so good that it even tracks such "missed paquets". I really appreciate what you have done on optimizing the code. A nice project in the end. Did you consider industrializing it in a complete package ?

@adicorra
Copy link

adicorra commented Jun 7, 2024

Hi @budulinek

How do we disable this if we have hardware flow control ?
#define RS485_CONTROL_PIN 6
Do we just "delete" the line?

PS : im facing issues with the arduino not accessible when it starts (I havent identified why yet).

@adicorra
Copy link

adicorra commented Jun 8, 2024

@StefanR71 Arduino ethernet is just crap, not industrial and not stable. Going with this, industrial and works perfectly ! https://www.pusr.com/products/din-rail-rs485-serial-to-ethernet-converter-usr-dr302.html

@StefanR71
Copy link

@StefanR71 Arduino ethernet is just crap, not industrial and not stable. Going with this, industrial and works perfectly ! https://www.pusr.com/products/din-rail-rs485-serial-to-ethernet-converter-usr-dr302.html

Yes it is working, when you query only single registers or registers that are directly following. But when you query multiple registers like 2, 8, 30 then it isn't working you will receive only the answer for the first register. I was in touch with the support and they told me this is an issue.

@adicorra
Copy link

adicorra commented Jun 8, 2024

This is not an issue to control the Altherma,

@StefanR71
Copy link

This is not an issue to control the Altherma,

It is an problem when you query the following registers in one query:

Input registers: 29, 30, 34, 36, 37, 39, 40, 41, 42, 43, 44, 48, 51, 52
Holding registers: 0, 1, 2, 3, 9, 11

When i send this directly to the HomeHub via Modbus TCP i'm getting an answer. But when the HomeHub is in RTU mode and i use the USR IOT gateway i'm gettig a timeout, because the gateway don't understand multiple Modbus packets in one TCP packet.

So query single registers is a workaround to get this working but the behavior of the gateway isn't correct.

@adicorra
Copy link

adicorra commented Jun 9, 2024

Ok, but what devices do such multiple requests ? I don’t think HA does this nor the Fibaro app.

I will test the commercial one and let you know. The fact that Arduino is some sort of « lego » board is a big issue, not reliable, no electrostatic standards, ETH is not reliable, so many drawbacks. Sometimes you start it and nothing.

@StefanR71
Copy link

I don't know i have written my onwn monitoring and i was using this to query a Modbus device: https://github.com/favalex/modbus-cli

Here i have created a register file:

reg_pumpe i@29:einaus
reg_verdichter i@30:einaus
reg_durchfluss i@48
reg_dreiwege i@36:dreiwege
reg_hk_mode_ist i@37:betrieb
reg_aussentemperatur i@43
reg_warmwasser i@51:status
reg_raumheizung i@52:status
reg_vorlauf_phe i@39
reg_vorlauf_buh i@40
reg_rucklauf i@41
reg_ist_warmwasser i@42
reg_kaeltemittel i@44
reg_soll_heizen h@0
reg_soll_kuehlen h@1
reg_hk_mode h@2:betrieb
reg_hk_status h@3:einaus
reg_soll_warmwasser h@9
reg_ww_status h@11:einaus

:einaus
  0=aus
  1=ein

:dreiwege
  0=raumheizung
  1=brauchwasser

:betrieb
  0=auto
  1=heizen
  2=kuehlen

:status
  0=untaetig
  1=betrieb

And then i query:

modbus -s 1 -r /haus/heizung/register 192.168.77.82:502 reg*

And get all the values in one batch:

reg_soll_heizen: 42 0x2a
reg_soll_kuehlen: 18 0x12
reg_hk_mode: 1 0x1 heizen
reg_hk_status: 1 0x1 ein
reg_soll_warmwasser: 50 0x32
reg_ww_status: 1 0x1 ein
reg_pumpe: 1 0x1 ein
reg_verdichter: 1 0x1 ein
reg_abtauen: 0 0x0 aus
reg_dreiwege: 1 0x1 brauchwasser
reg_hk_mode_ist: 1 0x1 heizen
reg_vorlauf_phe: 4670 0x123e
reg_vorlauf_buh: 4660 0x1234
reg_rucklauf: 4180 0x1054
reg_ist_warmwasser: 4480 0x1180
reg_aussentemperatur: 440 0x1b8
reg_kaeltemittel: 3800 0xed8
reg_durchfluss: 2820 0xb04
reg_warmwasser: 1 0x1 betrieb
reg_raumheizung: 1 0x1 betrieb

When i'm doing the same with the USR IOT or Waveshare gateway i'm getting only:

reg_soll_heizen: 42 0x2a
reg_soll_kuehlen: 18 0x12
reg_hk_mode: 1 0x1 heizen.
reg_hk_status: 1 0x1 ein
TimeoutError: timed out

I'm using here for my programs a ESP32 WROOM board, this is running very stable, i have no problems with that device. But how stable a device is, is also depending on the librarys you are using. Some have memory leaks, then it is worth to search for other version and test again...

And i think such devices as USR IOT or Waveshare are using Chips like a ESP32 too... So it depends only on the program and librarys you are using if a device is stable or not.

@budulinek
Copy link
Owner

@StefanR71 Arduino ethernet is just crap, not industrial and not stable. Going with this, industrial and works perfectly ! https://www.pusr.com/products/din-rail-rs485-serial-to-ethernet-converter-usr-dr302.html

The Wiznet W5x00 chips are good chips. The Ethernet.h library has some minor flaws, but otherwise works well. I have several Arduino + W5x00 solutions running for years without problems. In my opinion, the problem is a poor design of some Arduino ethernet shield. I am not a HW guy, but I think the issue is linked to how RST pin of the W5x00 chip is triggered:

Most W5x00 shields have the W5x00's RST pin hard wired to Arduino's RST. Usually it works well, but sometimes the W5x00 is not reset correctly during (re)start (I blame poor shield design, missing capacitor on the RST pin). As a result, the reset signal (pull down on the RST pin) may come too early, or it is too short to trigger reset of the W5x00 chip.

Best W5x00 shields have the W5x00's RST pin hard wired to a dedicated pin (rather than Arduino's RST). I have Nano W5500 shield (unfortunately no longer in production) which has RST on pin 7. This is excellent solution because then I can reset the W5x00 programatically. Once Arduino starts, I pull down pin 7 for a while to reset W5x00 and then I continue calling the Ethernet library. ETH_RESET_PIN can be configured in advanced_settings.h. Check your ethernet shield, maybe you also have RST on a dedicated pin.

If you still want to give Arduino the chance, you may try a "bypass" solution:

  • On the ethernet shield bend the RST pin (so that it is disconnected from Arduino RST) and wire it to PIN 7 on the ethernet shield, creating a "bypass". From now on, W5x00 will be reset programatically - better solution than through the Arduino RST pin.
  • On the Arduino shield, there is also second RST pin in the ICSP connector. Bend it to the side so that it does not connect to the ethernet shield.

@mkarnebeek
Copy link

I have some issues connecting my Home Hub with the Altherma 3 R F unit.

According to the installers reference guide, there should be a Daikin HomeHub menu entry in the Installer Settings menu. This doesn't show up. I do have a Daikin Home Controls option in the main menu, but that seems unrelated.

The Home Hub is unresponsive to Modbus RTU and over TCP it responds with 32k values for all registers. I think the Home Hub didn't pair correctly with the indoor unit.

Indoor unit: EHVX08S23EJ6V
Outdoor unit: ERGA08EAV3H

Unit interface software: V07.04.00
Unit interface micon ID: ID20010E0A
Micon ID inside: ID0222

I measured 15-16 volts on the P1P2 wires at the Home Hub, also when disconnected from the Home Hub, so the wiring seems to be in order.

Anybody any experience to share, or hints for me to get it working?

@StefanR71
Copy link

I thik you must call the Daikin service to install the current software.

See here in the compatibility: https://www.daikin.de/content/dam/document-library/Installer-reference-guide/heat/accessories/ekrhh/EKRHH_Installer%20reference%20guide_4PEN744838-1C_English.pdf

You need the MicronID 0223 and software v7.3.0.

@mkarnebeek
Copy link

Ah, I was confusing it with the "Interface Micon ID" which is ID20010E0A in my system, which seemed higher than the long version listed there ("Hydro SW version").

Searching for a bit, it looks like this isn't for me to be able to do (looks like they are directly flashing the board). I'm hoping an installer can perform it, or otherwise i'll just have to get Daikin to do it.

@marcpuca
Copy link

adicorra where abouts did you pick up the DCOM unit for 320€?
Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests