An ExoEdge source for interfacing with Modbus devices.
Project description
Description
This project is a Modbus source for Exosite’s ExoSense which uses ExoEdge.
Install
From Source
pip install -r requirements.txt
python setup.py install
From PyPi
The wheel for this hasn’t been published yet.
pip install exoedge_modbus
ExoEdge Configuration
In order to start using this Modbus source, start the edged daemon with your desired parameters. For more information on edged, visit ExoEdge on PyPi.
Example
$ cat modbus-test1.ini
[device]
murano_host = mqtt://f5330e5s8cho0000.m2.exosite.io/
murano_id = modbus-test1
$ edged -i modbus-test1.ini go
ExoSense Configuration
Below is an example config_io settings that illustrates how Modbus RTU data can be sent to ExoSense via ExoEdge.
{
"channels": {
"001": {
"display_name": "Input Register 1",
"description": "Input Register 1.",
"channel_name": "001",
"properties": {
"data_unit": "NUMBER",
"data_type": "TEMPERATURE",
"min": null,
"max": null,
"precision": null,
"device_diagnostic": false
},
"protocol_config": {
"timeout": null,
"report_on_change": false,
"report_rate": 2000,
"application": "Modbus_RTU",
"app_specific_config": {
"byte_endianness": "big",
"register_range": "INPUT_REGISTER",
"register_offset": "0002",
"register_count": 1,
"register_endianness": "big",
"bitmask": "0xffffffff",
"slave_id": 1,
"evaluation_mode": "unsigned"
},
"sample_rate": 2000,
"input_raw": {},
"offset": 0,
"interface": "/dev/ttyM0",
"down_sample": "ACT"
}
}
}
}
Below is the config_applications configuration needed for the config_io above:
{
"applications": {
"Modbus_RTU": {
"application_display_name": "Modbus RTU",
"interfaces": [
{
"interface": "/dev/ttyM0",
"baud_rate": 19200,
"stop_bits": 1,
"data_bits": 7,
"parity": "none"
}
]
}
}
}
Below is a config_io example for Modbus_TCP:
{
"channels": {
"1": {
"display_name": "Input Register 1",
"description": "One-second intervals of input register 1.",
"properties": {
"max": null,
"precision": null,
"data_type": "BINARY",
"min": null
},
"protocol_config": {
"application": "Modbus_TCP",
"report_on_change": false,
"report_rate": 1000,
"sample_rate": 1000,
"down_sample": "ACT",
"app_specific_config": {
"ip_address": "192.168.11.139",
"port": 5020,
"register_range": "INPUT_REGISTER",
"register_offset": 0,
"register_count": 1,
"byte_endianness": "big",
"register_endianness": "big",
"evaluation_mode": "string-ascii",
"bitmask": "0x0000"
}
}
}
}
}
For linux user
Users should not run exoedge with sudo for security reasons. If you get permission denied: could not open port when using Modbus_RTU, try:
groups ${USER}
This will list all the groups you belong to. If you don’t belong to the dialout group then add yourself to it, for example:
sudo gpasswd --add ${USER} dialout
You then need to log out and log back in again for it to be effective.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for exoedge_modbus-21.9.15-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf94e52dc74a3c8ff86d60df82e43e9ccc15ada2f2b2621b8729be33d35975bc |
|
MD5 | 2ab18402268b0c543af4e608953e2a88 |
|
BLAKE2b-256 | 8be7ab070707cb1deccad199cb2f4d3b908f4694d70e43bd32f1d182397e6cb0 |