{"id":13744608,"url":"https://github.com/dmroeder/pylogix","last_synced_at":"2026-01-27T17:15:17.416Z","repository":{"id":9959913,"uuid":"63923077","full_name":"dmroeder/pylogix","owner":"dmroeder","description":"Read/Write data from Allen Bradley Compact/Control Logix PLC's","archived":false,"fork":false,"pushed_at":"2026-01-16T16:18:02.000Z","size":1418,"stargazers_count":685,"open_issues_count":14,"forks_count":197,"subscribers_count":75,"default_branch":"master","last_synced_at":"2026-01-17T05:16:55.434Z","etag":null,"topics":["allen-bradley","allen-bradley-plc","cip","compactlogix","controllogix","ethernet-ip","micro8xx-plc","plc","pylogix","python","rockwell","rockwell-automation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmroeder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/Contributing.md","funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-07-22T04:16:10.000Z","updated_at":"2026-01-13T13:50:23.000Z","dependencies_parsed_at":"2026-01-08T20:05:08.126Z","dependency_job_id":null,"html_url":"https://github.com/dmroeder/pylogix","commit_stats":{"total_commits":416,"total_committers":24,"mean_commits":"17.333333333333332","dds":0.2692307692307693,"last_synced_commit":"99c081b9b224b889fe8ecc707a91683d847f4630"},"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"purl":"pkg:github/dmroeder/pylogix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmroeder%2Fpylogix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmroeder%2Fpylogix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmroeder%2Fpylogix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmroeder%2Fpylogix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmroeder","download_url":"https://codeload.github.com/dmroeder/pylogix/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmroeder%2Fpylogix/sbom","scorecard":{"id":348315,"data":{"date":"2025-08-11","repo":{"name":"github.com/dmroeder/pylogix","commit":"79d1776fd9615fcf333db55cb3f7fafeb203397b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-18T07:42:34.774Z","repository_id":9959913,"created_at":"2025-08-18T07:42:34.774Z","updated_at":"2025-08-18T07:42:34.774Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28816650,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T12:25:15.069Z","status":"ssl_error","status_checked_at":"2026-01-27T12:25:05.297Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["allen-bradley","allen-bradley-plc","cip","compactlogix","controllogix","ethernet-ip","micro8xx-plc","plc","pylogix","python","rockwell","rockwell-automation"],"created_at":"2024-08-03T05:01:12.653Z","updated_at":"2026-01-27T17:15:17.410Z","avatar_url":"https://github.com/dmroeder.png","language":"Python","funding_links":[],"categories":["Python","Controls"],"sub_categories":[],"readme":"\n\n# pylogix\n\n\n![PyPI](https://img.shields.io/pypi/v/pylogix?label=pypi%20pylogix)\n![PyPI](https://img.shields.io/pypi/l/pylogix)\n![Versions](https://img.shields.io/pypi/pyversions/pylogix)\n![MicroPython](https://img.shields.io/badge/micropython-1.20.0+-red?logo=micropython)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/pylogix)\n[![Discord](https://img.shields.io/static/v1?label=discord\u0026message=support\u0026color=738adb\u0026logo=discord)](https://discord.gg/tw8E9EAAnf)\n\n\n\u003cspan style=\"color:red\"\u003e \u003cfont size=\"4\"\u003e**WARNING**:\u003c/font\u003e \u003c/span\u003e There is a possibility of a scam using the pylogix name. Be careful with anything claiming to be pylogix.  https://www.notpylogix.com\n\n\nPylogix is a communication driver that lets you easily read/write values from tags in Rockwell Automation ControlLogix, CompactLogix, and Micro8xx PLCs over Ethernet I/P using Python.  Only PLCs that are programmed with RSLogix5000/Studio5000 or Connected Components Workbench (Micro8xx), models like PLC5, SLC, and MicroLogix are *not* supported.  They use a different protocol, which I have no plans to support.  You can also connect to RSEmulate, but it may require additional\nconfiguration.  See the Emulate [document](https://github.com/dmroeder/pylogix/blob/master/docs/Emulate.md) for more information.\n\nMany devices support CIP objects that allow for automatic discovery (like RSLinx does), which pylogix can discover but will likely not be able to interact with in any other meaningful way.  Pylogix is only intended to talk to the above-mentioned PLCs and is only tested against them.  It likely will not communicate with any other brands.\n\nFor general support or questions, I created a [discord](https://discord.gg/tw8E9EAAnf).  Feel free to join and ask questions, and I'll do my best to help promptly.\n\n## Getting Started\n\nThere are no dependencies, so you can get going quickly without installing other prerequisite packages.  Both python2 and python3 are supported.\n\n### Installing\n\nInstall pylogix with pip (Latest version):\n\n```console\npylogix@pylogix-kde:~$ pip install pylogix\n```\n\nTo install previous version before major changes (0.3.7):\n\n```console\npylogix@pylogix-kde:~$ pip install pylogix==0.3.7\n```\n\nTo upgrade to the latest version:\n\n```console\npylogix@pylogix-kde:~$ pip install pylogix --upgrade\n```\n\nAlternatively, you can clone the repo and manually install it:\n\n```console\npylogix@pylogix-kde:~$ git clone https://github.com/dmroeder/pylogix.git\npylogix@pylogix-kde:~$ cd pylogix\npylogix@pylogix-kde:~/pylogix$ python setup.py install --user\n```\n\n### Verifying Installation\n\nTo verify the installation on Linux, open the terminal and use the following commands:\n\n```console\npylogix@pylogix-kde:~$ python3\nPython 3.8.5 (default, Jan 27 2021, 15:41:15) \n[GCC 9.3.0] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e import pylogix\n\u003e\u003e\u003e pylogix.__version__\n'0.7.10'\n```\n\n### Your First Script:\n\nThe cloned repository will come with many examples, I'll give one here.  We'll read one simple tag and print out the value.  All methods will return the Response class, which contains TagName, Value and Status.\n\n```python\nfrom pylogix import PLC\nwith PLC() as comm:\n    comm.IPAddress = '192.168.1.9'\n    ret = comm.Read('MyTagName')\n    print(ret.TagName, ret.Value, ret.Status)\n```\n\nNOTE: If your PLC is in a slot other than zero (like can be done with ControLogix), then you can specify the slot with the following:\n\n```\ncomm.ProcessorSlot = 2\n```\n\nNOTE: If you are working with a Micro8xx PLC, you must set the Micro800 flag since the path is different:\n\n```\ncomm.Micro800 = True\n```\n\n## Installing MicroPython\n\nCheckout [Documentation](https://github.com/dmroeder/pylogix/blob/master/docs/mpy/README.md)\n\n### Other Features\n\nPylogix has features other than simply reading/writing.  See the [documentation](https://github.com/dmroeder/pylogix/blob/master/docs/Documentation.md) for more info, see the examples directory\nsimple use cases for the various methods.\n\n## FAQ\n\nHere's a list of frequent asked questions. [faq](https://github.com/dmroeder/pylogix/blob/master/docs/FAQ.md)\n\n## Authors\n* **Burt Peterson** - *Initial work*\n* **Dustin Roeder** - *Maintainer* - [dmroeder](https://github.com/dmroeder)\n* **Fernando B. (TheFern2)** - *Contributor* - [TheFern2](https://github.com/TheFern2)\n* **Joe Ryan** - *Contributor* - [jryan](https://bitbucket.org/jryan/aphytcomm/src/master/)\n* **Perry Kundert** - *Contributor* - [pjkundert](https://github.com/pjkundert)\n\n## License\n\nThis project is licensed under Apache 2.0 License - see the [LICENSE](https://github.com/dmroeder/pylogix/blob/master/LICENSE.txt) file for details.\n\n## Acknowledgments\n\n* Archie of AdvancedHMI for all kinds pointers and suggestions.\n* Thanks to ottowayi for general python and good practice advice.\n* Thanks to all of the users that have tested and provided feedback.\n* Joe Ryan for Omron testing and feedback\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmroeder%2Fpylogix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmroeder%2Fpylogix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmroeder%2Fpylogix/lists"}