Python plugin: Modbus RTU / ASCII / TCP/IP Topic is solved
Moderator: leecollings
-
- Posts: 5
- Joined: Monday 15 July 2019 21:16
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: [RELEASED] Python plugin: Modbus RTU / ASCII / TCP/IP
Got same problem. I have already posted on github. Support please for this issue?
[https://github.com/DomoticX/domoticz-modbus/issues/17]
[https://github.com/DomoticX/domoticz-modbus/issues/17]
-
- Posts: 8
- Joined: Sunday 01 April 2018 17:30
- Target OS: Linux
- Domoticz version:
- Contact:
Re: [RELEASED] Python plugin: Modbus RTU / ASCII / TCP/IP
You are right. It is my mistake, i will come back to modbus later and try again
Actually modbus TCP works normally, I got the problem only with serial modbus
Now I have other serius problem with domoticz and I cant to try sorry
Actually modbus TCP works normally, I got the problem only with serial modbus
Now I have other serius problem with domoticz and I cant to try sorry
-
- Posts: 5
- Joined: Monday 15 July 2019 21:16
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: [RELEASED] Python plugin: Modbus RTU / ASCII / TCP/IP
Please, we are all waiting and thank you for this great plugin!Antikillerbm wrote: ↑Tuesday 30 July 2019 10:55 You are right. It is my mistake, i will come back to modbus later and try again
Actually modbus TCP works normally, I got the problem only with serial modbus
Now I have other serius problem with domoticz and I cant to try sorry
Re: [RELEASED] Python plugin: Modbus RTU / ASCII / TCP/IP
Check drivers and also check modbus. If still not work properly you have to call an expert to resolve this problem.
-
- Posts: 5
- Joined: Thursday 08 March 2018 23:06
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: [RELEASED] Python plugin: Modbus RTU / ASCII / TCP/IP
I keepgetting this error during install on latest version Domoticz:
Using cached https://files.pythonhosted.org/packages ... 8d0d1fecfe 898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
pymodbus 2.2.0 has requirement six==1.11.0, but you'll have six 1.12.0 which is incompatible.
Installing collected packages: six
Found existing installation: six 1.11.0
Uninstalling six-1.11.0:
Successfully uninstalled six-1.11.0
Successfully installed six-1.12.0
pi@Domoticz:~ $ sudo pip3 install -U pymodbus pymodbusTCP
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already up-to-date: pymodbus in /usr/local/lib/python3.7/dist-packag es (2.2.0)
Requirement already up-to-date: pymodbusTCP in /usr/local/lib/python3.7/dist-pac kages (0.1.8)
Collecting six==1.11.0 (from pymodbus)
Using cached https://files.pythonhosted.org/packages ... 4b1f6397bf a78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Requirement already satisfied, skipping upgrade: pyserial>=3.4 in /usr/local/lib /python3.7/dist-packages (from pymodbus) (3.4)
Installing collected packages: six
Found existing installation: six 1.12.0
Uninstalling six-1.12.0:
Successfully uninstalled six-1.12.0
Successfully installed six-1.11.0
pi@Domoticz:~ $ sudo cp six.py /usr/lib/python3.5
cp: cannot stat 'six.py': No such file or directory
pi@Domoticz:~ $ cd /home/pi/.local/lib/python2.7/site-packages/)
-bash: syntax error near unexpected token `)'
pi@Domoticz:~ $ cd/home/pi/.local/lib/python2.7/site-packages/)
-bash: syntax error near unexpected token `)'
pi@Domoticz:~ $ dir
domoticz libssl1.0.0_1.0.1t-1+deb8u8_armhf.deb
pi@Domoticz:~ $ sudo cp six.py /usr/lib/python3.4
cp: cannot stat 'six.py': No such file or directory
After this:
sudo pip3 install -U pymodbus pymodbusTCP
I can at least select Modbus read from the drop downlist,but somehow it doesn't work.
In the Domoticz log I see this:
2019-10-12 10:09:09.261 Error: (Status ) 'onHeartbeat' failed 'TypeError':'can only concatenate str (not "int") to str'.
2019-10-12 10:09:09.261 Error: (Status ) ----> Line 489 in '/home/pi/domoticz/plugins/modbus-read/plugin.py'
2019-10-12 10:09:09.262 Error: (Status ) ----> Line 297 in '/home/pi/domoticz/plugins/modbus-read/plugin.py'
Any ideas what goes wrong?
Using cached https://files.pythonhosted.org/packages ... 8d0d1fecfe 898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
pymodbus 2.2.0 has requirement six==1.11.0, but you'll have six 1.12.0 which is incompatible.
Installing collected packages: six
Found existing installation: six 1.11.0
Uninstalling six-1.11.0:
Successfully uninstalled six-1.11.0
Successfully installed six-1.12.0
pi@Domoticz:~ $ sudo pip3 install -U pymodbus pymodbusTCP
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already up-to-date: pymodbus in /usr/local/lib/python3.7/dist-packag es (2.2.0)
Requirement already up-to-date: pymodbusTCP in /usr/local/lib/python3.7/dist-pac kages (0.1.8)
Collecting six==1.11.0 (from pymodbus)
Using cached https://files.pythonhosted.org/packages ... 4b1f6397bf a78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Requirement already satisfied, skipping upgrade: pyserial>=3.4 in /usr/local/lib /python3.7/dist-packages (from pymodbus) (3.4)
Installing collected packages: six
Found existing installation: six 1.12.0
Uninstalling six-1.12.0:
Successfully uninstalled six-1.12.0
Successfully installed six-1.11.0
pi@Domoticz:~ $ sudo cp six.py /usr/lib/python3.5
cp: cannot stat 'six.py': No such file or directory
pi@Domoticz:~ $ cd /home/pi/.local/lib/python2.7/site-packages/)
-bash: syntax error near unexpected token `)'
pi@Domoticz:~ $ cd/home/pi/.local/lib/python2.7/site-packages/)
-bash: syntax error near unexpected token `)'
pi@Domoticz:~ $ dir
domoticz libssl1.0.0_1.0.1t-1+deb8u8_armhf.deb
pi@Domoticz:~ $ sudo cp six.py /usr/lib/python3.4
cp: cannot stat 'six.py': No such file or directory
After this:
sudo pip3 install -U pymodbus pymodbusTCP
I can at least select Modbus read from the drop downlist,but somehow it doesn't work.
In the Domoticz log I see this:
2019-10-12 10:09:09.261 Error: (Status ) 'onHeartbeat' failed 'TypeError':'can only concatenate str (not "int") to str'.
2019-10-12 10:09:09.261 Error: (Status ) ----> Line 489 in '/home/pi/domoticz/plugins/modbus-read/plugin.py'
2019-10-12 10:09:09.262 Error: (Status ) ----> Line 297 in '/home/pi/domoticz/plugins/modbus-read/plugin.py'
Any ideas what goes wrong?
-
- Posts: 5
- Joined: Thursday 08 March 2018 23:06
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: [RELEASED] Python plugin: Modbus RTU / ASCII / TCP/IP
Hi again,
I have been digging a little further. Apparently you need to add a "/Device ID after the IP address. Maybe mention this at the setup page?
If I use a laptop with QMODMaster, I can reach the PLC via Modbus TCP. If I use domoticz, I always get this error message in the log file:
2019-10-26 09:51:40.401 Status: (Test read) Started.
2019-10-26 09:51:42.063 (Test read) onStart called
2019-10-26 09:51:42.063 (Test read) Debug logging mask set to: NONE
2019-10-26 09:51:42.063 (Test read) Sensor Type: Pressure
2019-10-26 09:51:42.065 (Test read) Modbus RTU/ASCII/TCP - Universal READ loaded.
2019-10-26 09:51:42.050 Status: (Test read) Entering work loop.
2019-10-26 09:51:42.049 Status: (Test read) Initialized version 2.0.0, author 'S. Ebeltjes / domoticx.nl'
2019-10-26 09:51:52.152 (Test read) Modbus error decoding or received no data (TCP/IP)!, check your settings!
If have set up the communication in the Hardware like this:
If I use a laptop and run a Modbus TCP Server, I can see the Modbus request from Domoticz and I can also see the reply. So apparently it got stuck on the processing of the reply in Domoticz.
I don't know how this exactly works but to me it seems that it hangs here:
What can I try/ investigate to get this thing up and running?
PLC brand is Omron with a ETN21 Modbus communication card. I have used this PLC setup for my work many times and it works very stable..
Looking forward to any reply
I have been digging a little further. Apparently you need to add a "/Device ID after the IP address. Maybe mention this at the setup page?
If I use a laptop with QMODMaster, I can reach the PLC via Modbus TCP. If I use domoticz, I always get this error message in the log file:
2019-10-26 09:51:40.401 Status: (Test read) Started.
2019-10-26 09:51:42.063 (Test read) onStart called
2019-10-26 09:51:42.063 (Test read) Debug logging mask set to: NONE
2019-10-26 09:51:42.063 (Test read) Sensor Type: Pressure
2019-10-26 09:51:42.065 (Test read) Modbus RTU/ASCII/TCP - Universal READ loaded.
2019-10-26 09:51:42.050 Status: (Test read) Entering work loop.
2019-10-26 09:51:42.049 Status: (Test read) Initialized version 2.0.0, author 'S. Ebeltjes / domoticx.nl'
2019-10-26 09:51:52.152 (Test read) Modbus error decoding or received no data (TCP/IP)!, check your settings!
If have set up the communication in the Hardware like this:
If I use a laptop and run a Modbus TCP Server, I can see the Modbus request from Domoticz and I can also see the reply. So apparently it got stuck on the processing of the reply in Domoticz.
I don't know how this exactly works but to me it seems that it hangs here:
Code: Select all
try:
# How to decode the input?
# Added option to swap bytes (little endian)
if (Parameters["Mode6"] == "int16s" or Parameters["Mode6"] == "uint16s"):
decoder = BinaryPayloadDecoder.fromRegisters(data.registers, byteorder=Endian.Little, wordorder=Endian.Big)
# Added option to swap words (little endian)
elif (Parameters["Mode6"] == "int32s" or Parameters["Mode6"] == "uint32s" or Parameters["Mode6"] == "int64s" or Parameters["Mode6"] == "uint64s"
or Parameters["Mode6"] == "float32s" or Parameters["Mode6"] == "float64s"):
decoder = BinaryPayloadDecoder.fromRegisters(data.registers, byteorder=Endian.Big, wordorder=Endian.Little)
# Otherwise always big endian
else:
decoder = BinaryPayloadDecoder.fromRegisters(data.registers, byteorder=Endian.Big, wordorder=Endian.Big)
if (Parameters["Mode6"] == "noco"): value = data
if (Parameters["Mode6"] == "int8LSB"):
ignored = decoder.skip_bytes(1)
value = decoder.decode_8bit_int()
if (Parameters["Mode6"] == "int8MSB"): value = decoder.decode_8bit_int()
if (Parameters["Mode6"] == "int16"): value = decoder.decode_16bit_int()
if (Parameters["Mode6"] == "int16s"): value = decoder.decode_16bit_int()
if (Parameters["Mode6"] == "int32"): value = decoder.decode_32bit_int()
if (Parameters["Mode6"] == "int32s"): value = decoder.decode_32bit_int()
if (Parameters["Mode6"] == "int64"): value = decoder.decode_64bit_int()
if (Parameters["Mode6"] == "int64s"): value = decoder.decode_64bit_int()
if (Parameters["Mode6"] == "uint8LSB"):
ignored = decoder.skip_bytes(1)
value = decoder.decode_8bit_uint()
if (Parameters["Mode6"] == "uint8MSB"): value = decoder.decode_8bit_uint()
if (Parameters["Mode6"] == "uint16"): value = decoder.decode_16bit_uint()
if (Parameters["Mode6"] == "uint16s"): value = decoder.decode_16bit_uint()
if (Parameters["Mode6"] == "uint32"): value = decoder.decode_32bit_uint()
if (Parameters["Mode6"] == "uint32s"): value = decoder.decode_32bit_uint()
if (Parameters["Mode6"] == "uint64"): value = decoder.decode_64bit_uint()
if (Parameters["Mode6"] == "uint64s"): value = decoder.decode_64bit_uint()
if (Parameters["Mode6"] == "float32"): value = decoder.decode_32bit_float()
if (Parameters["Mode6"] == "float32s"): value = decoder.decode_32bit_float()
if (Parameters["Mode6"] == "float64"): value = decoder.decode_64bit_float()
if (Parameters["Mode6"] == "float64s"): value = decoder.decode_64bit_float()
if (Parameters["Mode6"] == "string2"): value = decoder.decode_string(2)
if (Parameters["Mode6"] == "string4"): value = decoder.decode_string(4)
if (Parameters["Mode6"] == "string6"): value = decoder.decode_string(6)
if (Parameters["Mode6"] == "string8"): value = decoder.decode_string(8)
Domoticz.Debug("MODBUS DEBUG VALUE: " + str(value))
# Divide the value (decimal)?
if (Parameters["Mode5"] == "div0"): value = str(value)
if (Parameters["Mode5"] == "div10"): value = str(round(value / 10, 1))
if (Parameters["Mode5"] == "div100"): value = str(round(value / 100, 2))
if (Parameters["Mode5"] == "div1000"): value = str(round(value / 1000, 3))
if (Parameters["Mode5"] == "div10000"): value = str(round(value / 10000, 4))
if (value != "0"): Devices[1].Update(1, value) # Update value in Domoticz
except:
Domoticz.Log[b]("Modbus error decoding or received no data (TCP/IP)!, check your settings!")[/b]
Devices[1].Update(0, "0") # Update value in Domoticz
PLC brand is Omron with a ETN21 Modbus communication card. I have used this PLC setup for my work many times and it works very stable..
Looking forward to any reply
-
- Posts: 5
- Joined: Thursday 08 March 2018 23:06
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: [RELEASED] Python plugin: Modbus RTU / ASCII / TCP/IP
The communication between the QModmaster and the PLC looks like this:
[TCP]>Tx > 11:26:34:578 - 00 7D 00 00 00 06 01 04 04 4C 00 01
[TCP]>Rx > 11:26:34:635 - 00 7D 00 00 00 05 01 04 02 02 87
Tx=QModbusMaster
Rx=PLC
in Modbus TCP is:
Tx> 007D 0000 0006 01 04 4C 00 01
007D: Transaction Identifier
0000: Protocol Identifier
0006: Message Length (6 bytes to follow)
01: The Unit Identifier (17 = 11 hex)
04: The Function Code (read Analog Input Registers)
044C: The Data Address of the first register requested. (41100-40001 = 107 =6B hex)
0001: The total number of registers requested. (read 1 registers 1100)
Rx> 00 7D 00 00 00 05 01 04 02 02 87
007D: Transaction Identifier
0000: Protocol Identifier
0005: Message Length (5 bytes to follow)
01: The Unit Identifier
04: The Function Code (read Input Registers)
02: Number of bytes containting data
0287: content of register 044C (1100)
So, somehow, this replay is not recognized.
[TCP]>Tx > 11:26:34:578 - 00 7D 00 00 00 06 01 04 04 4C 00 01
[TCP]>Rx > 11:26:34:635 - 00 7D 00 00 00 05 01 04 02 02 87
Tx=QModbusMaster
Rx=PLC
in Modbus TCP is:
Tx> 007D 0000 0006 01 04 4C 00 01
007D: Transaction Identifier
0000: Protocol Identifier
0006: Message Length (6 bytes to follow)
01: The Unit Identifier (17 = 11 hex)
04: The Function Code (read Analog Input Registers)
044C: The Data Address of the first register requested. (41100-40001 = 107 =6B hex)
0001: The total number of registers requested. (read 1 registers 1100)
Rx> 00 7D 00 00 00 05 01 04 02 02 87
007D: Transaction Identifier
0000: Protocol Identifier
0005: Message Length (5 bytes to follow)
01: The Unit Identifier
04: The Function Code (read Input Registers)
02: Number of bytes containting data
0287: content of register 044C (1100)
So, somehow, this replay is not recognized.
-
- Posts: 5
- Joined: Thursday 08 March 2018 23:06
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
-
- Posts: 2
- Joined: Friday 28 December 2018 12:55
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: [RELEASED] Python plugin: Modbus RTU / ASCII / TCP/IP
Have you managed to solve this issue?
I'm struggling with the same error for couple of weeks now: Modbus error decoding or received no data (RTU/ASCII/RTU over TCP)!, check your settings! I can connect easily on Windows10 with the same hardware (waveshare RS485) but no luck on Raspberry Pi with exactly the same settings.
The hardware seems to be recognized and installed correctly:
pi@raspberrypi:~ $ dmesg | grep FTDI
[ 4.174263] usb 1-1.4.4: Manufacturer: FTDI
[ 5.536166] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 5.536569] ftdi_sio 1-1.4.4:1.0: FTDI USB Serial Device converter detected
[ 5.546208] usb 1-1.4.4: FTDI USB Serial Device converter now attached to ttyUSB0
How to solve it?
EDIT1:
I have managed to get the data from the command prompt using mbpoll:
pi@raspberrypi:~ $ mbpoll -a 10 -b 9600 -t 3 -r 17 -c 1 -P none /dev/ttyUSB0
mbpoll 1.4-12 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright © 2015-2019 Pascal JEAN, https://github.com/epsilonrt/mbpoll
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type 'mbpoll -w' for details.
Protocol configuration: Modbus RTU
Slave configuration...: address = [10]
start reference = 17, count = 1
Communication.........: /dev/ttyUSB0, 9600-8N1
t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, input register table
-- Polling slave 10... Ctrl-C to stop)
[17]: 117
-- Polling slave 10... Ctrl-C to stop)
[17]: 117
-- Polling slave 10... Ctrl-C to stop)
[17]: 117
^C--- /dev/ttyUSB0 poll statistics ---
3 frames transmitted, 3 received, 0 errors, 0.0% frame loss
everything was closed.
Have a nice day !
pi@raspberrypi:~ $
But still no luck in Domoticz although the settings are exactly the same Any help much appreciated.
I'm struggling with the same error for couple of weeks now: Modbus error decoding or received no data (RTU/ASCII/RTU over TCP)!, check your settings! I can connect easily on Windows10 with the same hardware (waveshare RS485) but no luck on Raspberry Pi with exactly the same settings.
The hardware seems to be recognized and installed correctly:
pi@raspberrypi:~ $ dmesg | grep FTDI
[ 4.174263] usb 1-1.4.4: Manufacturer: FTDI
[ 5.536166] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 5.536569] ftdi_sio 1-1.4.4:1.0: FTDI USB Serial Device converter detected
[ 5.546208] usb 1-1.4.4: FTDI USB Serial Device converter now attached to ttyUSB0
How to solve it?
EDIT1:
I have managed to get the data from the command prompt using mbpoll:
pi@raspberrypi:~ $ mbpoll -a 10 -b 9600 -t 3 -r 17 -c 1 -P none /dev/ttyUSB0
mbpoll 1.4-12 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright © 2015-2019 Pascal JEAN, https://github.com/epsilonrt/mbpoll
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type 'mbpoll -w' for details.
Protocol configuration: Modbus RTU
Slave configuration...: address = [10]
start reference = 17, count = 1
Communication.........: /dev/ttyUSB0, 9600-8N1
t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, input register table
-- Polling slave 10... Ctrl-C to stop)
[17]: 117
-- Polling slave 10... Ctrl-C to stop)
[17]: 117
-- Polling slave 10... Ctrl-C to stop)
[17]: 117
^C--- /dev/ttyUSB0 poll statistics ---
3 frames transmitted, 3 received, 0 errors, 0.0% frame loss
everything was closed.
Have a nice day !
pi@raspberrypi:~ $
But still no luck in Domoticz although the settings are exactly the same Any help much appreciated.
- Domoticx
- Posts: 90
- Joined: Sunday 07 January 2018 21:19
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2020.2
- Location: Marienheem / The Netherlands
- Contact:
Re: [RELEASED] Python plugin: Modbus RTU / ASCII / TCP/IP
Hi All,
Glad to hear you are using the modbus plugin!, after while it wasn't updated because we are focused on Node-Red... developing nice stuff for our upcoming domotica platform
So...because we are releasing our new hardware domotica line-up for Q3-Q4 2020 called ConX....we also want to support Domoticz!
ConX uses USB to RS485 conversion and 12VDC or 24VDC PoE support for all your devices, it uses RJ45 jack and is RTU based! it's a all-in-one wired and robust domotica system suitable to be placed on a DIN rail.
It will be for sale in Q3-Q4 2020, so..stay tuned!
preview poster here (dutch @ linkedin): https://www.linkedin.com/pulse/domoticx ... -ebeltjes/
oh well the hub has updated/changed since the poster , hey.... time flies! Yesterday we installed Domoticz v2020.2 and saw lots of issues due to changes in Domoticz, Python and pymodbus plugin versions, after a whole day programming, troubleshooting and adding new and better features we have updated the plugin, changelog:
Modbus READ v2020.2E
- Fixed: Plugin not starting in unreleased beta versions (dependancies check)
- Fixed: Default function set to to read holding registers.
- Improved: option and plugin descriptions
- Optimized: timeout on all methods set to 2 seconds.
Modbus READ v2020.2D
- Optimized: Added default device name
- Optimized: Debug lines and info
Modbus READ v2020.2C
- Added: Plugin description
- Optimized: All settings read once at plugin start
- Optimized: Better log, debug, error usage.
- Fixed: Bug for device update on TCP/IP (on error)
- Code cleanup
Modbus READ v2020.2B
- Added: Device polling rate setting (seconds) (e.g. ID:POLL = 1:10 then Device ID=1 and Pollingrate=10 seconds)
- Added: Some more debug lines for value output and pollingrate (heartbeat)
Modbus READ v2020.2A
- Updated the plugin for domoticx 2020.2
- Fixed: "no data found check settings" for new DomoticZ 2020
- Fixed: default settings are now filled correctly
- Added: BOOL conversion (for read coils...not tested on hardware)
- Added: version checks and notification for needed dependancies
- Added: ability for debug yes/no (for easy troubleshooting)
- Improved: TCP IP and PORT options now merged
- Improved: option descriptions, sorted options
- Code cleanup
Modbus WRITE v2020.2C
- Fixed: Plugin not starting in unreleased beta versions (dependancies check)
- Improved: option and plugin descriptions
- Optimized: timeout on all methods set to 2 seconds.
Modbus WRITE v2020.2B
- Added: proper plugin description
Modbus WRITE v2020.2A
- Added: version checks and notification for needed dependancies
- Improved: TCP IP and PORT options now merged
- Improved: option descriptions, sorted options
- Optimized: Debug lines and info
- Optimized: All settings read once at plugin start
- Code cleanup
Enjoy!, please let us know if it works ok! (report issues @ github)
Glad to hear you are using the modbus plugin!, after while it wasn't updated because we are focused on Node-Red... developing nice stuff for our upcoming domotica platform
So...because we are releasing our new hardware domotica line-up for Q3-Q4 2020 called ConX....we also want to support Domoticz!
ConX uses USB to RS485 conversion and 12VDC or 24VDC PoE support for all your devices, it uses RJ45 jack and is RTU based! it's a all-in-one wired and robust domotica system suitable to be placed on a DIN rail.
It will be for sale in Q3-Q4 2020, so..stay tuned!
preview poster here (dutch @ linkedin): https://www.linkedin.com/pulse/domoticx ... -ebeltjes/
oh well the hub has updated/changed since the poster , hey.... time flies! Yesterday we installed Domoticz v2020.2 and saw lots of issues due to changes in Domoticz, Python and pymodbus plugin versions, after a whole day programming, troubleshooting and adding new and better features we have updated the plugin, changelog:
Modbus READ v2020.2E
- Fixed: Plugin not starting in unreleased beta versions (dependancies check)
- Fixed: Default function set to to read holding registers.
- Improved: option and plugin descriptions
- Optimized: timeout on all methods set to 2 seconds.
Modbus READ v2020.2D
- Optimized: Added default device name
- Optimized: Debug lines and info
Modbus READ v2020.2C
- Added: Plugin description
- Optimized: All settings read once at plugin start
- Optimized: Better log, debug, error usage.
- Fixed: Bug for device update on TCP/IP (on error)
- Code cleanup
Modbus READ v2020.2B
- Added: Device polling rate setting (seconds) (e.g. ID:POLL = 1:10 then Device ID=1 and Pollingrate=10 seconds)
- Added: Some more debug lines for value output and pollingrate (heartbeat)
Modbus READ v2020.2A
- Updated the plugin for domoticx 2020.2
- Fixed: "no data found check settings" for new DomoticZ 2020
- Fixed: default settings are now filled correctly
- Added: BOOL conversion (for read coils...not tested on hardware)
- Added: version checks and notification for needed dependancies
- Added: ability for debug yes/no (for easy troubleshooting)
- Improved: TCP IP and PORT options now merged
- Improved: option descriptions, sorted options
- Code cleanup
Modbus WRITE v2020.2C
- Fixed: Plugin not starting in unreleased beta versions (dependancies check)
- Improved: option and plugin descriptions
- Optimized: timeout on all methods set to 2 seconds.
Modbus WRITE v2020.2B
- Added: proper plugin description
Modbus WRITE v2020.2A
- Added: version checks and notification for needed dependancies
- Improved: TCP IP and PORT options now merged
- Improved: option descriptions, sorted options
- Optimized: Debug lines and info
- Optimized: All settings read once at plugin start
- Code cleanup
Enjoy!, please let us know if it works ok! (report issues @ github)
My Domoticz plugins:
- Modbus RS485 RTU/ASCII/TCP
Maatwerk in: Domotica - Automatisering - Elektronica - 3D printing - Software ontwikkeling
Website / Webshop / Knowledge Center / Facebook (like de pagina en blijf op de hoogte!)
- Modbus RS485 RTU/ASCII/TCP
Maatwerk in: Domotica - Automatisering - Elektronica - 3D printing - Software ontwikkeling
Website / Webshop / Knowledge Center / Facebook (like de pagina en blijf op de hoogte!)
-
- Posts: 8
- Joined: Saturday 16 May 2020 17:35
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2022.1
- Location: Hengelo ov /NL
- Contact:
Re: Python plugin: Modbus RTU / ASCII / TCP/IP
I get the error (Modbus error decoding or received no data).
When i use a modbus scanner i get a value.
What am I doing wrong
When i use a modbus scanner i get a value.
What am I doing wrong
- Attachments
-
- Solaredge2.JPG (245.14 KiB) Viewed 2503 times
-
- Solaredge.jpg (219.51 KiB) Viewed 2505 times
- Domoticx
- Posts: 90
- Joined: Sunday 07 January 2018 21:19
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2020.2
- Location: Marienheem / The Netherlands
- Contact:
Re: Python plugin: Modbus RTU / ASCII / TCP/IP
@snooze7555
Any specs on the hardware, type? manual? PDF? registers?
Ps. be aware...some solar inverters can have RS485 hw layer but it is not always modbus protocol, but some protocol the manufacturer cooked up...you have to view the manual.
Any specs on the hardware, type? manual? PDF? registers?
Ps. be aware...some solar inverters can have RS485 hw layer but it is not always modbus protocol, but some protocol the manufacturer cooked up...you have to view the manual.
My Domoticz plugins:
- Modbus RS485 RTU/ASCII/TCP
Maatwerk in: Domotica - Automatisering - Elektronica - 3D printing - Software ontwikkeling
Website / Webshop / Knowledge Center / Facebook (like de pagina en blijf op de hoogte!)
- Modbus RS485 RTU/ASCII/TCP
Maatwerk in: Domotica - Automatisering - Elektronica - 3D printing - Software ontwikkeling
Website / Webshop / Knowledge Center / Facebook (like de pagina en blijf op de hoogte!)
-
- Posts: 8
- Joined: Saturday 16 May 2020 17:35
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2022.1
- Location: Hengelo ov /NL
- Contact:
Re: Python plugin: Modbus RTU / ASCII / TCP/IP
Hello,
Solaredge modbus TCP Sunspec Supprted inverters , when i read adress 84 int16 with ShortBus Modbus Scanner port 502. The value is ok (Kw).
https://www.solaredge.com/sites/default ... l-note.pdf
When i use the same settings then the error.
Solaredge modbus TCP Sunspec Supprted inverters , when i read adress 84 int16 with ShortBus Modbus Scanner port 502. The value is ok (Kw).
https://www.solaredge.com/sites/default ... l-note.pdf
When i use the same settings then the error.
- Attachments
-
- solaredge3.jpg (64.61 KiB) Viewed 2483 times
- Domoticx
- Posts: 90
- Joined: Sunday 07 January 2018 21:19
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2020.2
- Location: Marienheem / The Netherlands
- Contact:
Re: Python plugin: Modbus RTU / ASCII / TCP/IP
TCP/IP example
@snooze7555
In your log there is NO data response, so i did some testing @home with a TCP/IP modbus simulator, and fixed a bug...all, seems fine though...maybe you have to play with some settings...(please try latest version)
Setup the simulator Setup DomoticZ Domoticz log when read at register 4 and 5: It works...
Ps. Just updated the plugins:
Modbus WRITE v2020.2F
Fixed: Bug pymodbusTCP (TCP/IP) python plugin conversion fixed
Optimized: TCP/IP port debug logging
Optimized: set default TCP/IP port to 502
Modbus WRITE v2020.2D
Optimized: TCP/IP port debug logging
Optimized: set default TCP/IP port to 502
@snooze7555
In your log there is NO data response, so i did some testing @home with a TCP/IP modbus simulator, and fixed a bug...all, seems fine though...maybe you have to play with some settings...(please try latest version)
Setup the simulator Setup DomoticZ Domoticz log when read at register 4 and 5: It works...
Ps. Just updated the plugins:
Modbus WRITE v2020.2F
Fixed: Bug pymodbusTCP (TCP/IP) python plugin conversion fixed
Optimized: TCP/IP port debug logging
Optimized: set default TCP/IP port to 502
Modbus WRITE v2020.2D
Optimized: TCP/IP port debug logging
Optimized: set default TCP/IP port to 502
My Domoticz plugins:
- Modbus RS485 RTU/ASCII/TCP
Maatwerk in: Domotica - Automatisering - Elektronica - 3D printing - Software ontwikkeling
Website / Webshop / Knowledge Center / Facebook (like de pagina en blijf op de hoogte!)
- Modbus RS485 RTU/ASCII/TCP
Maatwerk in: Domotica - Automatisering - Elektronica - 3D printing - Software ontwikkeling
Website / Webshop / Knowledge Center / Facebook (like de pagina en blijf op de hoogte!)
-
- Posts: 8
- Joined: Saturday 16 May 2020 17:35
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2022.1
- Location: Hengelo ov /NL
- Contact:
Re: Python plugin: Modbus RTU / ASCII / TCP/IP
@Domoticx
Hello ,
Thanks for the customization, I'm going to test it directly on the solaredge tomorrow.
Thank you very much for the effort.
Gr
Hello ,
Thanks for the customization, I'm going to test it directly on the solaredge tomorrow.
Thank you very much for the effort.
Gr
-
- Posts: 8
- Joined: Saturday 16 May 2020 17:35
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2022.1
- Location: Hengelo ov /NL
- Contact:
Re: Python plugin: Modbus RTU / ASCII / TCP/IP
Hello Domoticx
I test it with a uint 16 and get only the value 65535.
No errors
It must be 19390.
I test it with a uint 16 and get only the value 65535.
No errors
It must be 19390.
- Domoticx
- Posts: 90
- Joined: Sunday 07 January 2018 21:19
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2020.2
- Location: Marienheem / The Netherlands
- Contact:
Re: Python plugin: Modbus RTU / ASCII / TCP/IP
Can you post the log?snooze7555 wrote: ↑Monday 18 May 2020 7:48 Hello Domoticx
I test it with a uint 16 and get only the value 65535.
No errors
It must be 19390.
My Domoticz plugins:
- Modbus RS485 RTU/ASCII/TCP
Maatwerk in: Domotica - Automatisering - Elektronica - 3D printing - Software ontwikkeling
Website / Webshop / Knowledge Center / Facebook (like de pagina en blijf op de hoogte!)
- Modbus RS485 RTU/ASCII/TCP
Maatwerk in: Domotica - Automatisering - Elektronica - 3D printing - Software ontwikkeling
Website / Webshop / Knowledge Center / Facebook (like de pagina en blijf op de hoogte!)
-
- Posts: 8
- Joined: Saturday 16 May 2020 17:35
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2022.1
- Location: Hengelo ov /NL
- Contact:
Re: Python plugin: Modbus RTU / ASCII / TCP/IP
Domoticx wrote: ↑Monday 18 May 2020 13:11Can you post the log?snooze7555 wrote: ↑Monday 18 May 2020 7:48 Hello Domoticx
I test it with a uint 16 and get only the value 65535.
No errors
It must be 19390.
- Attachments
-
- Solaredge.JPG (159.81 KiB) Viewed 2432 times
- Domoticx
- Posts: 90
- Joined: Sunday 07 January 2018 21:19
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2020.2
- Location: Marienheem / The Netherlands
- Contact:
Re: Python plugin: Modbus RTU / ASCII / TCP/IP
@snooze7555,
The plugin reads "65535" wich is the actual value in the register from the device, it is read with pymodbusTCP before any data conversion done by the plugin...so no bug in the plugin atm...
The plugin reads "65535" wich is the actual value in the register from the device, it is read with pymodbusTCP before any data conversion done by the plugin...so no bug in the plugin atm...
My Domoticz plugins:
- Modbus RS485 RTU/ASCII/TCP
Maatwerk in: Domotica - Automatisering - Elektronica - 3D printing - Software ontwikkeling
Website / Webshop / Knowledge Center / Facebook (like de pagina en blijf op de hoogte!)
- Modbus RS485 RTU/ASCII/TCP
Maatwerk in: Domotica - Automatisering - Elektronica - 3D printing - Software ontwikkeling
Website / Webshop / Knowledge Center / Facebook (like de pagina en blijf op de hoogte!)
-
- Posts: 8
- Joined: Saturday 16 May 2020 17:35
- Target OS: Raspberry Pi / ODroid
- Domoticz version: 2022.1
- Location: Hengelo ov /NL
- Contact:
Re: Python plugin: Modbus RTU / ASCII / TCP/IP
This is wat i read with the modbus scanner, that is the right value. With Domoticz 65535. Value now is 6793 >>> 679.3 Watts
- Attachments
-
- Solaredge.JPG (47.33 KiB) Viewed 2427 times
Who is online
Users browsing this forum: No registered users and 1 guest