First venture into MODBUS, how to send a password?

Since the App is terrible and slow, I have no problem removing the Wi-Fi module. Would have been nice with a direct MQTT output though :)
It seems that the WiFi module and Aqua Temp app may already communicate MQTT to the vendor's cloud server. Many cloud servers have API's that allow other devices and clouds access to the data. On the Home Assistant forums, it seems someone has written a script to do exactly this.

Take a look here:
https://community.home-assistant.io/t/implementation-of-aqua-temp-controlle/230400
 
@jschulze You're completly spot-on.
The Wi-Fi module (mine is a HF-LPB100-0) does use MQTT to communicate with a server (in China). Well spotted!
Using Wireshark I can see that the MQTT Topic is easy, payload needs quite a lot of digging into as it's 210 bytes long.
If I can recirect the traffic to my own MQTT server, then I see possibilities. If I need to query an API in China, I think your Mirius suggestion might be better :)
 
They have 2 version's of the WiFi module, old V1 and new V2. The Home Assistant scripts is for the new V2 version, and ofcourse we have the V1 version. :(

We are now testing the MQTT from the V1 it is usable.
 
@jschulze No luck with MQTT so far... :(

Still trying to get something with modbus now.

I can't get any data in modbus slave, I can see in the Communication window there is dat flowing. But can't get is to show...

Also tried pyModSlave. Same result.

So now only data in Simply Modbus slave, and qModMaster. But no sending of commands.

Any thing other to try ?
Or maybe you can directly do some testing with a Teamviewer or similar session. I have connected a standalone Windows PC to it now.
 
I was able to simulate this successfully and can use the Modbus Slave software to both see broadcasts (register addresses 2001 - 2090) and send data (register addresses 3001 - 3090).

Here is how I have Modbus Slave configured
1627058251984.png

Perform this test with both the display and WiFi module DISCONNECTED from the network.

You may first want to configure the Slave ID to something other than 1 or 2 (say 3, for example) to confirm that Modbus Slave is successfully receiving the broadcast data in register addresses 2001 - 2090. Then you can change the Slave ID to 1 or 2 so it will send the register values from register addresses 3001 - 3090.

Again, though, you may have to pre-populate the values for the 3001 - 3090 registers with the values that the display would send when the display is connected. Follow my instructions from post #50 to read the data from the display (with only the display connected to your computer).
 
Again some progress, the modbus slave software works with you settings, I can see data on the 2011 to 2080 registers. But that is on slave id 3. So before setting it to 2 ( instead of the WiFi module ) I wanted to be sure what the other register data I need to put in the slave software.

So I disconnected the datalines of the display, leaving it powered on. I tried to read the 3001 registers and up. The only data it gives is the same as the 2001 register. So the status information of the heatpump. Reading the 1011 register to 1178 works and gives met the settings of the heatpump. On / off, setpoint and so on. So that works also.

So should I put the data from the master readout in the slave software also in register 1011 to 1178 ? As the 3001 and up do not contain any settings of the device. I am not sure what to use where now. Before I destroy the settings of the device with the incorrect registers. I have a backup of the value's now. But then I have to enter everything in the display by hand...

I have added a document with the registers according to the company that build the heatpump. The settings in that list are correct with the 1011 registers I have read from the display with the master software on id 1. I have added those values in the PDF to verify everything.
 

Attachments

You may want to capture packets again with IO Ninja while the display is connected to the heat pump and you change settings on the display.

From the captures last time, the heat pump only reads registers 3001 - 3090 from the display. There was never a request from the heat pump to read registers in the 1001-1090 range.

When you were reading the 3001-3090 registers on the display, did you change settings, but no register values changed?
 
Ok, I mailed the heat-pump guys in China, and it turns out we used the wrong port on the mainboard. It has a dedicated port where the device is simply a slave. So now I can use modbus poll software for example and see and change everything. Turn the pump on or off and so on.

The connection we thought was correct is only used for their own display and wifi module with a strange modbus system.,

I feel a bit stupid I did not see that before / asked them. So @jschulze a BIG thank you for all your time and idea's. We did figure some fun stuff out in this process..... But in the end it was very simple...

Now to get ESPhome configured so is it usable with this pump. But that is a big thing now anymore... :)
 
Good to know the heat pump has 2 RS-485 ports and that the other RS-485 port is strictly a slave.

1. Please confirm that there is only one and only one RS-485 port on this heat pump.

2. Please confirm that the Wi-Fi access point is connected to a USB/485 dongle which is connected to the one and only one RS-485 port.
I'm guessing this is exactly what David was attempting to figure out way back in post #15
 
Update after lots of trials and errors: My specific heatpump has an older controller board (PC1002) which only has two RS485 ports. One is connected to display + Wi-Fi module (And seems difficult to interact with), the other seems to be reserved to a frequency converter. If the heater has a newer board, then the CN13 connector acts as a Modbus Slave and can be used to control the heater (Just like @mr_sjappie has found out). I'm currently in dialogue with the supplier to see if my board can be replaced by the new version.

@David_2, @jschulze: Thank you for all your input and suggestions!
 
Again some progress, the modbus slave software works with you settings, I can see data on the 2011 to 2080 registers. But that is on slave id 3. So before setting it to 2 ( instead of the WiFi module ) I wanted to be sure what the other register data I need to put in the slave software.

So I disconnected the datalines of the display, leaving it powered on. I tried to read the 3001 registers and up. The only data it gives is the same as the 2001 register. So the status information of the heatpump. Reading the 1011 register to 1178 works and gives met the settings of the heatpump. On / off, setpoint and so on. So that works also.

So should I put the data from the master readout in the slave software also in register 1011 to 1178 ? As the 3001 and up do not contain any settings of the device. I am not sure what to use where now. Before I destroy the settings of the device with the incorrect registers. I have a backup of the value's now. But then I have to enter everything in the display by hand...

I have added a document with the registers according to the company that build the heatpump. The settings in that list are correct with the 1011 registers I have read from the display with the master software on id 1. I have added those values in the PDF to verify everything.
Just a massive thank you for posting the modbus address table for this heat pump, and for determining the correct CN13 connector for connecting to the heat pump as a modbus slave - This thread has saved me hours of snooping/reverse engineering! You all rock!

I'm going to build a MODBUS RTU serial to MODBUS TCP gateway (or maybe an MQTT client) using an ESP32 and connect using NODE-RED running on my Raspberry Pi. I'll send a link to a github repo when done - Or reply to this post if you've already got your ESP32 up and running ;-)
 
Just a massive thank you for posting the modbus address table for this heat pump, and for determining the correct CN13 connector for connecting to the heat pump as a modbus slave - This thread has saved me hours of snooping/reverse engineering! You all rock!

I'm going to build a MODBUS RTU serial to MODBUS TCP gateway (or maybe an MQTT client) using an ESP32 and connect using NODE-RED running on my Raspberry Pi. I'll send a link to a github repo when done - Or reply to this post if you've already got your ESP32 up and running ;-)
@gimespam You are very welcome. We got it working with the help from this forum, so I'm glad you also could benefit from it.
I'm only using basic features for the heatpump, like on/off inlet/outlet temp via a Moxa IP/Serial gateway. But it ideal solution for me, would be a ESP32 with MQTT and auto discovery for Home Assistant. That would be soooo cool :)
 
@gimespam You are very welcome. We got it working with the help from this forum, so I'm glad you also could benefit from it.
I'm only using basic features for the heatpump, like on/off inlet/outlet temp via a Moxa IP/Serial gateway. But it ideal solution for me, would be a ESP32 with MQTT and auto discovery for Home Assistant. That would be soooo cool :)
Hi @mrwee

Did you manage to get the on/off commands etc over modbus to work with the PC1002 board? Before I go down the path of getting a converter I was hoping you could let me know if you were successful on the old board. My screen has failed and the Inverter Temp app is currently down (supposedly server issues) but it has been several days. My heat pump is off and I have no way to turn it back on without the screen and wifi module app.

Thanks
 
@Grizz123 No, we did not have much success with the bus connected to the display. As soon as we discovered the dedicated bus, we used that and everything worked as expected from a MODBUS perspective. It seemed like using the other bus, required some hefty workarounds as it is used for internal communication in the heatpump.

I sourced an updated controller with the extra bus, and copied all settings from the old, to the new. Perhaps very nerdy and a bit expensive, but it works flawlessly. I also don't have to use the awful Chinese app / server connection :).
 
I bought my controller from the OEM company who makes the heatpump I have. But my feeling is that in reality very few companies manufactor heatpumps and the PC1002 is quite generic, so where ever you can source the new model, is probably fine. But the programming is important. As I said, I read all registers in the old controller and wrote them to the new. Seems to work fine :)
 
Top