06.01.2018, 21:49
I have bought a multisensor from a chinese company and connected it to the modbus. I have managed to add a device in the reactor. The rtu settings are
RTU enabled
Port /dev/485
Baud rate 4800
Parity None, stop bit 1
Half duplex
The result of the rtu scan says slave 1 already mapped:
And the RTU read test with Device address 1, Function Holding register #3, address 0, read length 7 gives a result of 189,220,0,0,0,0,108
According to the manual attached the first number is the temperature, and the second is humidity, then there are some zero values and that should be ok since there are data only in register 0,1 and 6. A mystery is that the values according to the manual are HEX, so that translated into decimal values it should be 393, 544 and 264.
This should be 39,3 degrees, 54,4%humidity, and 264 lux. It is absolutely not 39 degrees in that room, and 54,4% RH is plausible, but this is winter and humidity is normally much lower. It could of course be that it is 18,9 degrees, 22%RH. The lux is ok I think for an inside room with no windows and just a small 9W LED lamp of 650lumen. Does the reactor translate HEX values into DEC?
The reason I am here with this info is that this is the rtu scan. I want to read these values with a script or some other way if that is possible?
The script that I have been looking at is like this
require('luamodbus')
mb = luamodbus.rtu()
mb:close()
mb:open('/dev/RS485', 4800, 8, "NONE", 1)
mb:connect()
-- Lux
value = mb:readregisters()
if value <= then
dosomething()
else
dosomethingelse()
end
mb:close()
I am not sure what to do here, but my guess is that the mb:readregister should contain (startaddress, data length) in some way?
RTU enabled
Port /dev/485
Baud rate 4800
Parity None, stop bit 1
Half duplex
The result of the rtu scan says slave 1 already mapped:
And the RTU read test with Device address 1, Function Holding register #3, address 0, read length 7 gives a result of 189,220,0,0,0,0,108
According to the manual attached the first number is the temperature, and the second is humidity, then there are some zero values and that should be ok since there are data only in register 0,1 and 6. A mystery is that the values according to the manual are HEX, so that translated into decimal values it should be 393, 544 and 264.
This should be 39,3 degrees, 54,4%humidity, and 264 lux. It is absolutely not 39 degrees in that room, and 54,4% RH is plausible, but this is winter and humidity is normally much lower. It could of course be that it is 18,9 degrees, 22%RH. The lux is ok I think for an inside room with no windows and just a small 9W LED lamp of 650lumen. Does the reactor translate HEX values into DEC?
The reason I am here with this info is that this is the rtu scan. I want to read these values with a script or some other way if that is possible?
The script that I have been looking at is like this
require('luamodbus')
mb = luamodbus.rtu()
mb:close()
mb:open('/dev/RS485', 4800, 8, "NONE", 1)
mb:connect()
-- Lux
value = mb:readregisters()
if value <= then
dosomething()
else
dosomethingelse()
end
mb:close()
I am not sure what to do here, but my guess is that the mb:readregister should contain (startaddress, data length) in some way?