Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Released
2.1.3 - 2022-12-30
Fixed
uart_id
can be specified during init ofModbusRTU
andSerial
class and is no longer hardcoded to1
, but set as1
by default to ensure backwards compability, see #7 and #43RTU Client example and USAGE documentation updated with new
uart_id
parameter
2.1.2 - 2022-12-28
Changed
Baudrate specific inter frame time is used at Modbus RTU internal function
_uart_read
of serial.py instead of constant value of 5ms
Fixed
ESP32 port specific
wait_tx_done
function replaced by generic wait time calculation in_send
function of serial.py, see #34A 1ms delay has been added between turning the RS485 control pin on and sending the Modbus PDU in
_send
function of serial.py
2.1.1 - 2022-12-27
Fixed
Removed unnecessary dependency to
micropython-urequests
from Docker files, setup guide and package setup fileEnable Modbus Client mode for RTU implementation, see #40, removed during #33
2.1.0 - 2022-12-27
Added
Typing hints available for all functions of umodbus, see #27
Docstrings available for all constants, functions and classes of umodbus, see #27
Test for reading more than 8 coils in a row to verify fix of #36
Test for reading single negative holding register value
Test for writing multiple coils to verify fix of #22
Test for writing multiple registers to verify fix of #23
Usage documentation for coil, discrete inputs, holding register and input register usage
Modbus TCP IP and port binding can be checked with
is_bound
property in tcp.py
Changed
Reordered modules of API documentation
data_as_registers
anddata_as_bits
of common.py removedSend illegal function code
0x01
if a register other than coil or holding register is requested to be setSimplified
_process_write_access
logic of tcp.py
Fixed
Typing hints of function input parameters and return values
Response data of multiple changed registers (
write_multiple_registers
) is validated with respect to the providedsigned
flag in serial.py and tcp.py, see #23Enable reading more than 8 coils in a row, see #36
Writing multiple coils in TCP, see #22
Writing multiple registers in TCP, see #23
Unit test
test_bytes_to_bool
uses MSB and LSB data correctlyOnly requested amount of registers are returned by
_process_read_access
logic of tcp.py, see #35
2.0.0 - 2022-12-03
Added
Perform MicroPython based unittests on every
Test
workflow runAdd usage description of docker based MicroPython unittest framework in USAGE
Add docker compose file based in MicroPython 1.18 image
Add TCP client Dockerfile, TCP host Dockerfile, unittest Dockerfile and TCP unittest specific Dockerfile. All based on MicroPython 1.18 image
Add initial test, testing the unittest itself
Add unittest implementation based on pfalcon’s micropython-unittest
Docstrings available for all functions of functions.py, see #27
Typing hints available for all functions of functions.py, serial.py and tcp.py, see #27
Unittest for functions.py, see #16
Unittest for const.py, see #16
.readthedocs.yaml for Read The Docs, contributes to #26
Changed
Use default values for all registers defined in the example JSON
TCP host example and TCP client example define a static IP address and skip further WiFi setup steps in case a Docker usage is detected by a failing import of the
network
module, contributes to #16Define all Modbus function codes as
const()
to avoid external modifications, contributes to #18Remove dependency to
Serial
andrequests
fromumodbus.modbus
, see #18ModbusRTU
class is part of serial.py, see #18ModbusTCP
class is part of tcp.py, see #18ModbusRTU
andModbusTCP
classes and related functions removed from modbus.py, see #18Imports changed from:
from umodbus.modbus import ModbusRTU
tofrom umodbus.serial import ModbusRTU
from umodbus.modbus import ModbusTCP
tofrom umodbus.tcp import ModbusTCP
read_coils
andread_discrete_inputs
return a list with the same length as the requested quantity instead of always 8, see #12 and #25Common functions
bytes_to_bool
andto_short
moved to functions.pyUse HTTPS URL instead of SSH for submodule
Cleanup of root README, content moved to SETUP and USAGE, contributes to #30
Moved SETUP and USAGE into docs folder, see #26 contributes to #30
Use
False
or0
as default values for registers without a specific initial value in modbus.py
Fixed
read_coils
returns list with amount of requested coils, see #12read_holding_registers
returns list with amount of requested registers, see #25
1.2.0 - 2022-11-13
Added
TCP host example script
JSON file to set registers on TCP/RTU device
Bash script to wrap manipulation of TCP modbus register data
Example boot script
TOC in README
Use changelog-based-release action to create a draft release with every merge to develop
Use changelog-based-release action to create a drafted prerelease release with every PR build, see #20
Changed
Add more info to TCP client example script
Update modules submodule to
1.3.0
Line breaks are no longer used in this changelog for enumerations
Issues are referenced as
#123
instead of[#123][ref-issue-123]
to avoid explicit references at the bottom or some other location in the fileScope of contents permissions in release and test release workflow is now
write
to use auto release creation
Fixed
Typo in RTU client example script
1.1.1 - 2022-11-09
Fixed
Default value of
setup_registers
function parameteruse_default_vals
changed toFalse
to avoid confusion behaviour if not explicitly defined, see issue 13Missing function docstring added to
setup_registers
functionwrite_single_coil
allows0
,1
,False
,True
,0x0
or0xFF00
instead of0x0
and0xFF00
only as set value, see issue 14
1.1.0 - 2022-11-03
Added
float_to_bin
,bin_to_float
,int_to_bin
functions added toumodbus/functions.py
Deploy to Test Python Package Index on every PR build with a PEP440 compliant
-rc<BUILDNUMBER>.dev<PR_NUMBER>
meta data extensionTest release workflow running only on PRs is archiving and uploading built artifacts to Test Python Package Index
Changed
Author is explicitly mentioned in
setup.py
instead of used by__author__
variable which has been previously defined inversion.py
but no longer available with autodeploy.
Fixed
All uncovered flake8 warnings of
umodbus
1.0.0 - 2022-02-26
Added
setup.py
andsdist_upip.py
taken from pfalcon’s picoweb repo and PEP8 improvedMIT License
version.py
storing current library versiontyping.py
enabling type hints
Changed
Moved all uModbus files from
lib/uModbus
intoumodbus
Update import statements of all files of
umodbus
Update
README
usage description of MicroPython lib deploy to PyPiUsage examples in
README
updated with new import pathUpdate
boot
andmain
files to usebe_helpers
Enable setting of
max_connections
to TCP socket inmodbus ModbusTCP bind function
andtcp TCPServer bind function
Removed
MicroPython helpers module no longer used
MicroPython ESP WiFi Manager module no longer used
Lib folder of dependency modules no longer used
Commented print debug messages in several files of umodbus
0.1.0 - 2022-02-20
Added
This changelog file
.gitignore
filerequirements.txt
file to setup tools for board interactionsCreation header to all files of
lib/uModbus
in order to provide proper credits to Pycomget_is_bound()
function added tolib/uModbus/tcp.py
to check status of socket binding for the Modbus TCP Server (host)Example register files to show basic usage with a MyEVSE board
Changed
Reworked
boot.py
andmain.py
for simple usageREADME
file with usage examplesReplaced WiPy specific calls in
lib/uModbus
files with MicroPython 1.16 or higher callsLimit number of concurrent socket connections to the Modbus TCP Server (host) to 10
Return on
_accept_request()
in case of anOSError
as MicroPython raises this type of error in case a socket timeout occured.TimeoutError
is not available on MicroPython compared to WiPy
Fixed
PEP8 style issues on all files of
lib/uModbus