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
Should not run exoedge with sudo because of the security reason. 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 grup 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-19.7.17-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a58d8a79b0f8e2b7ce574bbd02a065c536ed1647eaeb5d18b60257bc875a8566 |
|
MD5 | 7a6125029ad9132d185cd74351050581 |
|
BLAKE2b-256 | c07929a477e279224d8b7331e976e0920c31516d71be5d65dbe585fccaa2e53d |