{"id":19610468,"url":"https://github.com/valiot/opex62541","last_synced_at":"2026-03-03T23:02:36.733Z","repository":{"id":41542607,"uuid":"244792050","full_name":"valiot/opex62541","owner":"valiot","description":"An Elixir wrapper for the open62541 library (OPC UA stack)","archived":false,"fork":false,"pushed_at":"2025-11-23T03:06:56.000Z","size":524,"stargazers_count":21,"open_issues_count":2,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-11-23T05:16:07.520Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://hexdocs.pm/opex62541/readme.html","language":"C","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/valiot.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-03-04T02:47:20.000Z","updated_at":"2025-11-23T03:06:59.000Z","dependencies_parsed_at":"2024-11-11T10:30:59.495Z","dependency_job_id":"dadf735f-ff6f-45f1-96ef-10bdffcb3e9b","html_url":"https://github.com/valiot/opex62541","commit_stats":{"total_commits":95,"total_committers":2,"mean_commits":47.5,"dds":"0.010526315789473717","last_synced_commit":"e919624758a2748244caf6e6e7410a8cbee135a4"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/valiot/opex62541","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valiot%2Fopex62541","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valiot%2Fopex62541/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valiot%2Fopex62541/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valiot%2Fopex62541/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/valiot","download_url":"https://codeload.github.com/valiot/opex62541/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valiot%2Fopex62541/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30064791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":[],"created_at":"2024-11-11T10:29:29.225Z","updated_at":"2026-03-03T23:02:36.715Z","avatar_url":"https://github.com/valiot.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/valiot/opex62541/master/assets/images/opex62541-logo.png\" alt=\"opex62541 Logo\" width=\"512\" height=\"151\" /\u003e\n\u003c/div\u003e\n\n***\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/valiot/opex62541/master/assets/images/valiot-logo-blue.png\" alt=\"Valiot Logo\" width=\"384\" height=\"80\" /\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\nOpex62541 is an Elixir wrapper for the [open62541](https://github.com/open62541/open62541) library; open62541 is an open-source implementation of OPC UA (OPC Unified Architecture) aka IEC 62541 licensed under Mozilla Public License v2.0.\n\n## Content\n\n- [Features](#features)\n- [Installation](#installation)\n  - [Compatibility](#compatibility)\n  - [Nerves](#nerves)\n  - [Customized build](#customized-build)\n- [Documentation](#documentation)\n- [Contributing](#contributing)\n- [License](#license)\n- [TODO](#TODO)\n\n## Features\n\nThis library implements the following features from [open62541](https://github.com/open62541/open62541):\n- Communication Stack\n  - OPC UA binary protocol\n  - Secure communication with encrypted messages\n- Server\n  - Support for all OPC UA node types\n  - Access control for individual nodes\n  - Support for adding and removing nodes and references also at runtime.\n  - Support for inheritance and instantiation of object and variable-types.\n  - Support for subscriptions/monitored items.\n- Client\n  - All OPC UA services supported\n  - Support for subscriptions/monitored items.\n\n## Installation\n\nTo install this package, add `opex62541` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:opex62541, git: \"https://github.com/valiot/opex62541\"}\n  ]\nend\n```\n\n### Breaking Changes (v1.4.x Migration)\n\n**Important:** This library now uses open62541 v1.4.12 with **OpenSSL** as the encryption backend instead of mbedTLS.\n\n**System Dependencies Required:**\n\n- **Ubuntu/Debian:**\n  ```bash\n  sudo apt-get install git build-essential gcc pkg-config cmake python libssl-dev\n  ```\n\n- **Arch Linux:**\n  ```bash\n  sudo pacman -S git base-devel gcc pkg-config cmake python openssl\n  ```\n\n- **Nerves:** OpenSSL is already included in the Nerves system. No additional configuration needed.\n\n**Backward Compatibility:**\n\nIf you need to use the legacy v1.0 with mbedTLS for existing projects, set the environment variable:\n\n```bash\nexport OPEN62541_DOWNLOAD_VERSION=v1.0\n```\n\nNote: v1.0 requires mbedTLS instead of OpenSSL. Install with:\n```bash\nsudo apt-get install libmbedtls-dev  # Ubuntu/Debian\n```\n\n### Compatibility\n\nOpex62541 is now based on open62541 v1.4.14 with Elixir 1.10.0+. It was tested on:\n  * Ubuntu 18.04, 20.04, 22.04\n  * Raspbian OS (Raspberry Pi 3B+)\n  * Nerves (Raspberry Pi 3B+)\n\n### Nerves\n\n[Nerves](https://www.nerves-project.org) is a complete IoT platform and infrastructure to build and deploy maintainable embedded systems to boards such as Raspberry Pi or Beaglebone.\n\n**Good news:** OpenSSL is already included in standard Nerves systems. No additional configuration or custom system is required for `opex62541` to work with encryption enabled.\n\n### Customized builds\n\nBy default, Opex62541 downloads and compiles the `v1.4.14` release of open62541 with OpenSSL encryption. If you want to compile it manually or change the default version, use the following example commands to set the desired env variables:\n\n```bash\nexport MANUAL_BUILD=true\n\nexport OPEN62541_DOWNLOAD_VERSION=v1.4.14\n```\nThe open62541 project uses CMake to manage the build options for code generation and to generate build projects for the different systems and IDEs. To overwrite the default options, use `OPEN62541_BUILD_ARGS` as follows:\n\n```bash\nexport OPEN62541_BUILD_ARGS='-DCMAKE_BUILD_TYPE=Release -DUA_NAMESPACE_ZERO=MINIMAL'\n```\n\nDefault values for `OPEN62541_BUILD_ARGS` are `-DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DUA_NAMESPACE_ZERO=FULL -DUA_LOGLEVEL=601 -DUA_ENABLE_DISCOVERY_MULTICAST=ON -DUA_ENABLE_AMALGAMATION=ON -DUA_ENABLE_ENCRYPTION=OPENSSL`.\n\n## Docker Container\n\nTo build the container locally use:\n\n```bash\ngit clone https://github.com/valiot/opex62541\ncd opex62541\ndocker build -t \u003cname:tag\u003e .\n```\n\nYou can use this container to test this application. \n\n## Documentation\n\nFor detailed documentation and tutorials refer to [hexdocs.pm](https://hexdocs.pm/opex62541).\n\n## Contributing\n  * Fork our repository on Github.\n  * Fix or add what is needed.\n  * Commit to your repository\n  * Issue a Github Pull Request.\n  * Fill the pull request template.\n\nIf you wish to clone this repository, use:\n```\ngit clone https://github.com/valiot/opex62541.git\n```\n\n## License\n\nSee [LICENSE](https://github.com/valiot/opex62541/blob/master/LICENSE).\n\n## TODO\n  * **Methods**\n  * **OPC UA PubSub**\n  * **Better C code handling for the Client and Server common code**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaliot%2Fopex62541","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvaliot%2Fopex62541","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaliot%2Fopex62541/lists"}