dm-aiomodbus


Namedm-aiomodbus JSON
Version 0.2.4 PyPI version JSON
download
home_pagehttps://pypi.org/project/dm-aiomodbus
SummaryThis is my custom aiomodbus client
upload_time2024-10-21 10:18:28
maintainerNone
docs_urlNone
authordimka4621
requires_python>=3.8
licenseNone
keywords dm aiomodbus
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DM-aiomodbus

## Urls

* [PyPI](https://pypi.org/project/dm-aiomodbus)
* [GitHub](https://github.com/MykhLibs/dm-aiomodbus)

## Example

### Connection

* Serial
   ```python
   from dm_aiomodbus import DMAioModbusSerialClient

   modbus_client = DMAioModbusSerialClient(
       port="/dev/ttyUSB0",
       baudrate=9600,
       bytesize=8,
       stopbits=2,
       parity="N"
   )
   ```

* TCP
   ```python
   from dm_aiomodbus import DMAioModbusTcpClient

   modbus_client = DMAioModbusTcpClient(
       host="192.168.0.0",
       port=501
   )
   ```

* Simulator _(always returns mock data)_
   ```python
   from dm_aiomodbus import DMAioModbusSimulatorClient

   modbus_client = DMAioModbusSimulatorClient()
   ```

### Usage

* _**Usual**_ client

```python
from dm_aiomodbus import DMAioModbusTcpClient
import asyncio


async def main():
    # create client
    modbus_client = DMAioModbusTcpClient(
        host="192.168.0.0",
        port=501,
        name_tag="my_tcp_plc"
    )

    # read registers
    reg_258_259, = await modbus_client.read_holding_registers(258, count=2)
    reg_256 = await modbus_client.read_holding_registers(256)
    # read second slave-device
    reg_260_2 = await modbus_client.read_holding_registers(address=260, slave=2)
    print(reg_258_259, reg_256, reg_260_2)

    # write registers
    status_256 = await modbus_client.write_register(256, 1)
    print(status_256)
    # write second slave-device
    await modbus_client.write_register(260, value=0, slave=2)


if __name__ == "__main__":
    asyncio.run(main())
```

* _**Return-errors**_ client

Error messages are returned with the execution result
```python
from dm_aiomodbus import DMAioModbusTcpClient
import asyncio


async def main():
    # create client
    modbus_client = DMAioModbusTcpClient(
        host="192.168.0.0",
        port=501,
        return_errors=True
    )

    # read registers
    # get values and error (if present, else "")
    reg_258_259, err1 = await modbus_client.read_holding_registers(258, count=2)
    print(reg_258_259, err1)

    # write registers
    # get write status and error (if present, else "")
    status_256, err2 = await modbus_client.write_register(256, 1)
    print(status_256, err2)


if __name__ == "__main__":
    asyncio.run(main())
```

### Optional init parameters

| Parameter                  | Type   | Default Value | Description                                                         |
|----------------------------|--------|---------------|---------------------------------------------------------------------|
| `return_errors`            | `bool` | `False`       | Error messages are returned with the execution result               |
| `execute_timeout_s`        | `int`  | `5`           | requests timeout (s)                                                |
| `disconnect_timeout_s`     | `int`  | `20`          | timeout waiting for an active connection after the last request (s) |
| `after_execute_timeout_ms` | `int`  | `3`           | timeout between requests (ms)                                       |
| `name_tag`                 | `str`  | _auto_        | name tag for logger suffix                                          |

### Set custom logger

_If you want set up custom logger_

```python
from dm_aiomodbus import DMAioModbusTcpClient


# create custom logger
class MyLogger:
    def debug(self, message):
        pass

    def info(self, message):
        pass

    def warning(self, message):
        print(message)

    def error(self, message):
        print(message)


# set up custom logger for all clients
DMAioModbusTcpClient.set_logger(MyLogger())
```

### Run in Windows

_If you run async code in **Windows**, set correct selector_

```python
import asyncio
import sys

if sys.platform == "win32":
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://pypi.org/project/dm-aiomodbus",
    "name": "dm-aiomodbus",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "dm aiomodbus",
    "author": "dimka4621",
    "author_email": "mismartconfig@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/4e/6b/e7bf3233ea5413c38323411bb52adf0be9d93d93c119abc6dcfd508f9935/dm_aiomodbus-0.2.4.tar.gz",
    "platform": null,
    "description": "# DM-aiomodbus\n\n## Urls\n\n* [PyPI](https://pypi.org/project/dm-aiomodbus)\n* [GitHub](https://github.com/MykhLibs/dm-aiomodbus)\n\n## Example\n\n### Connection\n\n* Serial\n   ```python\n   from dm_aiomodbus import DMAioModbusSerialClient\n\n   modbus_client = DMAioModbusSerialClient(\n       port=\"/dev/ttyUSB0\",\n       baudrate=9600,\n       bytesize=8,\n       stopbits=2,\n       parity=\"N\"\n   )\n   ```\n\n* TCP\n   ```python\n   from dm_aiomodbus import DMAioModbusTcpClient\n\n   modbus_client = DMAioModbusTcpClient(\n       host=\"192.168.0.0\",\n       port=501\n   )\n   ```\n\n* Simulator _(always returns mock data)_\n   ```python\n   from dm_aiomodbus import DMAioModbusSimulatorClient\n\n   modbus_client = DMAioModbusSimulatorClient()\n   ```\n\n### Usage\n\n* _**Usual**_ client\n\n```python\nfrom dm_aiomodbus import DMAioModbusTcpClient\nimport asyncio\n\n\nasync def main():\n    # create client\n    modbus_client = DMAioModbusTcpClient(\n        host=\"192.168.0.0\",\n        port=501,\n        name_tag=\"my_tcp_plc\"\n    )\n\n    # read registers\n    reg_258_259, = await modbus_client.read_holding_registers(258, count=2)\n    reg_256 = await modbus_client.read_holding_registers(256)\n    # read second slave-device\n    reg_260_2 = await modbus_client.read_holding_registers(address=260, slave=2)\n    print(reg_258_259, reg_256, reg_260_2)\n\n    # write registers\n    status_256 = await modbus_client.write_register(256, 1)\n    print(status_256)\n    # write second slave-device\n    await modbus_client.write_register(260, value=0, slave=2)\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n* _**Return-errors**_ client\n\nError messages are returned with the execution result\n```python\nfrom dm_aiomodbus import DMAioModbusTcpClient\nimport asyncio\n\n\nasync def main():\n    # create client\n    modbus_client = DMAioModbusTcpClient(\n        host=\"192.168.0.0\",\n        port=501,\n        return_errors=True\n    )\n\n    # read registers\n    # get values and error (if present, else \"\")\n    reg_258_259, err1 = await modbus_client.read_holding_registers(258, count=2)\n    print(reg_258_259, err1)\n\n    # write registers\n    # get write status and error (if present, else \"\")\n    status_256, err2 = await modbus_client.write_register(256, 1)\n    print(status_256, err2)\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### Optional init parameters\n\n| Parameter                  | Type   | Default Value | Description                                                         |\n|----------------------------|--------|---------------|---------------------------------------------------------------------|\n| `return_errors`            | `bool` | `False`       | Error messages are returned with the execution result               |\n| `execute_timeout_s`        | `int`  | `5`           | requests timeout (s)                                                |\n| `disconnect_timeout_s`     | `int`  | `20`          | timeout waiting for an active connection after the last request (s) |\n| `after_execute_timeout_ms` | `int`  | `3`           | timeout between requests (ms)                                       |\n| `name_tag`                 | `str`  | _auto_        | name tag for logger suffix                                          |\n\n### Set custom logger\n\n_If you want set up custom logger_\n\n```python\nfrom dm_aiomodbus import DMAioModbusTcpClient\n\n\n# create custom logger\nclass MyLogger:\n    def debug(self, message):\n        pass\n\n    def info(self, message):\n        pass\n\n    def warning(self, message):\n        print(message)\n\n    def error(self, message):\n        print(message)\n\n\n# set up custom logger for all clients\nDMAioModbusTcpClient.set_logger(MyLogger())\n```\n\n### Run in Windows\n\n_If you run async code in **Windows**, set correct selector_\n\n```python\nimport asyncio\nimport sys\n\nif sys.platform == \"win32\":\n    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "This is my custom aiomodbus client",
    "version": "0.2.4",
    "project_urls": {
        "GitHub": "https://github.com/MykhLibs/dm-aiomodbus",
        "Homepage": "https://pypi.org/project/dm-aiomodbus"
    },
    "split_keywords": [
        "dm",
        "aiomodbus"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2a573a3c87a61f033a84a8565a8b9f0a89c995bcba182896bb29bec3779e9656",
                "md5": "a8ce4fe927a1cc5ab1328e2dd40316f1",
                "sha256": "91e4865cde67f3626e3e8947cf83a147636e81ecd6bd4eb76c2be64e3fa3db58"
            },
            "downloads": -1,
            "filename": "dm_aiomodbus-0.2.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a8ce4fe927a1cc5ab1328e2dd40316f1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 6327,
            "upload_time": "2024-10-21T10:18:27",
            "upload_time_iso_8601": "2024-10-21T10:18:27.179910Z",
            "url": "https://files.pythonhosted.org/packages/2a/57/3a3c87a61f033a84a8565a8b9f0a89c995bcba182896bb29bec3779e9656/dm_aiomodbus-0.2.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4e6be7bf3233ea5413c38323411bb52adf0be9d93d93c119abc6dcfd508f9935",
                "md5": "70a9b28b7bd63630209b8faf464861dc",
                "sha256": "880fd2ecb885c79c56857d2e298369e8d3268f5346d2d28b9f3b9067f4706044"
            },
            "downloads": -1,
            "filename": "dm_aiomodbus-0.2.4.tar.gz",
            "has_sig": false,
            "md5_digest": "70a9b28b7bd63630209b8faf464861dc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 5412,
            "upload_time": "2024-10-21T10:18:28",
            "upload_time_iso_8601": "2024-10-21T10:18:28.489811Z",
            "url": "https://files.pythonhosted.org/packages/4e/6b/e7bf3233ea5413c38323411bb52adf0be9d93d93c119abc6dcfd508f9935/dm_aiomodbus-0.2.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-21 10:18:28",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "MykhLibs",
    "github_project": "dm-aiomodbus",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "dm-aiomodbus"
}
        
Elapsed time: 0.41285s