Hm, it seems they start counting at #1 (mean Register 1 = address 0).
And if (some) registers are used for read and write, it should be HoldingRegisters.
It should return the ambient temp in 1/10° as integer. Value 80 means 8,0°.
Some details about Modbus…
Summary
Modbus: When 40001 Really Means 1, or 0 Really Means 1
Documentation for Modbus is not well standardized. Actually there is a standard, but not well followed when it comes to documentation. You will have to do one or more of the following to decipher which register a manufacturer is really referring to:
a) Look for the register description, such as holding register, coil, etc. If the documentation says #1, and tells you they are holding registers, then you have holding register #1. You also have user friendly documentation.
b) Look at the numbers themselves. If you see the first register on the list having a number 40001, that really tells you register #1, and it is a holding register. This form of notation is often referred to as the old Modicon convention.
c) Look for a definition of function codes to be used. If you see a register #1, along with notation telling you to use function codes 3 and 16, that also tells you it is holding register #1.
IMPORTANT: Register 1 is address 0. Read on…
d) Do the numbers in your documentation refer to the register number or address? Register #1 is address zero. If it is not clear whether your documentation refers to register or address, and you are not getting the expected result, try plus or minus one for register number. All Control Solutions products refer to register numbers in configuration software or web pages. However, some manufacturers document their devices showing address, not register numbers. When you have addresses, you must add one when entering that register into configuration software from Control Solutions.
I just tried it, and at first it didn’t worked, I didn’t got the error anymore. But only 0 or 1 as a response. I’ve then put it at adress starting with 0. And now it worked:
Use the “write Holding Register” card.
Set the register ID like you did. Use a register that is writeable.
In most cases it should be INT16 as datatype.
Then read again to be sure the correct value is written. Some devices are using different LE/BE encoding. That’s trial/error to find the right type
Hi, could you check again if it’s working?
I just checked the written Byte if that’s the correct value. How did you write the value before? Just added the INT values and write as INT16?
Sorry, working 7 days a week so not a lot of time to spend on Homey… At the moment it looks like writing in test mode is not working at all. Reading bits is working quite well, maybe a bit slow but that can be the issue of Homey :). Already a few weeks it’s reading the state of different door and window sensors right.
Can you show me some examples if you have some time?
I wonder whap happens in your case. It just reads INT16, addes the bit with a bitmask and writes back the INT16.
Or is it a 2 register field? Shouln’d be one if using Bits
I’m absolutely Happy that I found this App because I want to get access to my Weishaupt heat pump via Modbus.
But somehow I can’t install the App on my Homey Pro (2019). I klick the Install button and get the message : “Modbus wird in Kürze auf Homey installiert”. But the App never appear on my Homey.
If I try to install the first device I get he message “App wird installiert”(screenshot) … but the process never ends.
Does anybody know what I do wrong ?
thank you very much for this fast reply. Your tipp helped very much.
It seems that this was my problem. After I mentioned in this post that I have the same problem it was solved and now I have the ModBus App on my Homey
thanks
Marcel
If for example the wired MODBUS TCP/IP connection is still alive, but there is for a certain period no connection with the internet (cloud). Will the modbus data be stored on the Homey pro device, and does it send the data to the cloud once the internet connection is back? And how much data can be temporary stored when being offline, or is there a maximum time frame which can be bridged?
The app just sends the data if the flow card is processed.
If there is an error, the flow card errors (error output at the bottom of the card). There is no queueing.
As an alternative to data queuing; might it perhaps an idea to install and use the “micro web server” on my local network? Theoretically this than grant’s that the modbus data flow continues even though the internet connection is lost? And use port forwarding to access remotely the “micro web server” ?
I would like to set the “power limit” setting of my Solis 4G mini inverter via Homey. (avoid negative in feed tariff) But when it comes to Modbus I don’t know what I’m doing so I need some help.
I made a Modbus device.
IP set to the address of the dongle.
Port 502
ID 1
connection type single connect.
Homey says everything is fine.
But how to make the flow to read the current setting? And how to put a new setting in?
I understand that I have to use registers. I found a document on the site below. Then I think it is register 3050 (page 12)
3050 Power limit actual U16 1% 10000<–>100% 3X
But the document also writes
5.3 Register address of inverter operation information. The function code is 0x04, the register address needs to offset one bit. Example: register address: 3000, the send address is 2999.
If anyone can make an example of the read and write flow I would be grateful.