Skip to main content

An ExoEdge source for interfacing with Modbus devices.

Project description

Description

https://travis-ci.com/exosite/lib_exoedge_modbus_python.svg?token=tgjcyH1MG5sXqcVsD1kG&branch=master

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

exoedge_modbus-21.9.15-py2.py3-none-any.whl (21.7 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page