{"id":25233019,"url":"https://github.com/jeffective/pyecm","last_synced_at":"2025-10-26T09:31:09.449Z","repository":{"id":234817099,"uuid":"789558742","full_name":"kj4tmp/pyecm","owner":"kj4tmp","description":"An EtherCAT MainDevice in Python","archived":false,"fork":false,"pushed_at":"2024-06-12T07:07:02.000Z","size":208,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-07T13:12:00.321Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kj4tmp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-20T22:20:50.000Z","updated_at":"2024-08-27T05:26:21.000Z","dependencies_parsed_at":"2024-05-09T04:29:57.779Z","dependency_job_id":"48d5d6df-34cd-43be-93b9-5bccfb0aee9a","html_url":"https://github.com/kj4tmp/pyecm","commit_stats":null,"previous_names":["kj4tmp/pyethercat","kj4tmp/pyecm"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kj4tmp%2Fpyecm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kj4tmp%2Fpyecm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kj4tmp%2Fpyecm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kj4tmp%2Fpyecm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kj4tmp","download_url":"https://codeload.github.com/kj4tmp/pyecm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238306526,"owners_count":19450145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-11T13:55:59.656Z","updated_at":"2025-10-26T09:31:04.134Z","avatar_url":"https://github.com/kj4tmp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pyecm\nAn EtherCAT MainDevice in Python, fully free and open source.\n\n| Priority | Goal                                                 | Status   |\n|---|------------------------------------------------------|----------|\n|1| Fully functional and complete python bindings for the Simple Open EtherCAT Master [SOEM](https://github.com/OpenEtherCATsociety/SOEM) (originally written in C) using [nanobind](https://github.com/wjakob/nanobind) | work in progress  |\n|2| Configuration of the MainDevice and SubDevices via an EtherCAT Network Information (ENI) file. | not started  |\n|3| Software-in-the-loop (SiL) network simulation capability. | not started  |\n|4| Async API.                                           | not started  |\n\n## Warnings\n\nThis library is extremely early in development.\n\nWe will follow semantic versioning. Expect drastic changes to the API prior to v1.0.0.\n\n\n## Installation\n\nWindows / Mac OSX compatibility is intended for developer convenience only. The intended targets are linux with PREEMPT_RT patches. Typically, the easiest to work with is Debian since pre-compiled patches are available from the repositories.\n\n```\npip install pyecm\n```\n### Windows\nWindows requires installation of an additional dependency npcap. https://npcap.com/\n\nPlease install it in winpcap compatibility mode (I believe this is the default configuration.)\n\n## Usage\n\nOn a typical windows system:\n\n```\nC:\\repos\\pyecm\u003epython examples/soem/simple_test.py --ifname \"\\Device\\NPF_{6F17F41B-E756-4470-B7B8-74A3504B4F7B}\"\n```\n\nwill output something like:\n\n```\nC:\\repos\\pyecm\u003epython examples/soem/simple_test.py --ifname \"\\Device\\NPF_{6F17F41B-E756-4470-B7B8-74A3504B4F7B}\"\nsimple_test.py args=Namespace(ifname='\\\\Device\\\\NPF_{6F17F41B-E756-4470-B7B8-74A3504B4F7B}', if2name=None)\necx_init succeeded.\nfound 5 subdevices:\nnetwork summary:\nposition|configadr|aliasadr|name ---|manufacturer|product|revision\n       0|main device\n       1|0x1001   |0x0     |EK1100                  |0x2       |0x44c2c52 |0x100000  \n       2|0x1002   |0x0     |EL3314                  |0x2       |0xcf23052 |0x120000  \n       3|0x1003   |0x0     |EL2088                  |0x2       |0x8283052 |0x110000  \n       4|0x1004   |0x0     |EL3681                  |0x2       |0xe613052 |0x120000  \n       5|0x1005   |0x0     |EL3204                  |0x2       |0xc843052 |0x110000  \nreached state: 2\nsuccessfully configured iomap. iomap size: 66\ndistrubuted clocks configured\nreached state: 4\nreached state: OPERATIONAL\nstarted main operation\niomap:  [0 0 0 ... 0 0 0]\n```\n\n## Development\n1. clone repo (and submodules)\n\n    \u003e use `git clone \u003crepo clone url\u003e --recursive`\n\n\n1. install vscode\n1. install docker desktop\n1. install vscode dev containers extension\n1. open vscode in repo\n1. click reopen in container\n1. open new terminal\n1. run `pip install . \u0026\u0026 pytest`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffective%2Fpyecm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeffective%2Fpyecm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffective%2Fpyecm/lists"}