{"id":28995091,"url":"https://github.com/axiscommunications/opc-ua-server-acap","last_synced_at":"2025-06-25T04:06:33.001Z","repository":{"id":39604327,"uuid":"415980953","full_name":"AxisCommunications/opc-ua-server-acap","owner":"AxisCommunications","description":"Small ACAP application that gets temperature sensor data on an Axis device via D-Bus and exposes it via OPC UA.","archived":false,"fork":false,"pushed_at":"2025-03-03T16:00:07.000Z","size":144,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-03T16:42:57.956Z","etag":null,"topics":["acap","axis","d-bus","industry-4","industry-40","opc","opc-ua","opcua"],"latest_commit_sha":null,"homepage":"https://www.axis.com/developer-community/industry-4-0-integration","language":"C","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/AxisCommunications.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-11T15:17:05.000Z","updated_at":"2025-03-03T16:00:09.000Z","dependencies_parsed_at":"2023-12-01T17:25:09.901Z","dependency_job_id":"1aa1b2fe-e8c9-4fe7-90a8-ce14f98d8e3a","html_url":"https://github.com/AxisCommunications/opc-ua-server-acap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AxisCommunications/opc-ua-server-acap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AxisCommunications%2Fopc-ua-server-acap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AxisCommunications%2Fopc-ua-server-acap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AxisCommunications%2Fopc-ua-server-acap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AxisCommunications%2Fopc-ua-server-acap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AxisCommunications","download_url":"https://codeload.github.com/AxisCommunications/opc-ua-server-acap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AxisCommunications%2Fopc-ua-server-acap/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261801988,"owners_count":23211664,"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":["acap","axis","d-bus","industry-4","industry-40","opc","opc-ua","opcua"],"created_at":"2025-06-25T04:06:30.096Z","updated_at":"2025-06-25T04:06:32.965Z","avatar_url":"https://github.com/AxisCommunications.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"*Copyright (C) 2024, Axis Communications AB, Lund, Sweden. All Rights Reserved.*\n\n# OPC UA Server ACAP\n\n[![Build ACAP packages](https://github.com/AxisCommunications/opc-ua-server-acap/actions/workflows/build.yml/badge.svg)](https://github.com/AxisCommunications/opc-ua-server-acap/actions/workflows/build.yml)\n[![GitHub Super-Linter](https://github.com/AxisCommunications/opc-ua-server-acap/actions/workflows/super-linter.yml/badge.svg)](https://github.com/AxisCommunications/opc-ua-server-acap/actions/workflows/super-linter.yml)\n\nThis repository contains the source code to build a small example\n[ACAP version 4](https://axiscommunications.github.io/acap-documentation/)\n(native) application that uses D-Bus to get\n\n- temperature sensor data from `com.axis.TemperatureController`\n- IO port states from `com.axis.IOControl.State`\n\nand expose them as [OPC UA](https://en.wikipedia.org/wiki/OPC_Unified_Architecture) with an\n[open62541](https://open62541.org/) server. It serves as an example of how easy\nit actually is to integrate any Axis device in an OPC UA system.\n\n![Architectural overview](images/acap_architecture.svg)\n\n\u003e [!NOTE]\n\u003e Even if this application would fit right into your usecase, its purpose is\n\u003e above all to serve as an example and boilerplate rather than being ready for\n\u003e production.\n\n## Build\n\nThe build step creates `eap` (embedded application package) packages that can\nthen be deployed on the target Axis device e.g. via the device's web UI.\n\n*For more information about the `eap` files, their content, and other ways to\ndeploy, please see the documentation on how to\n[Develop ACAP applications](https://axiscommunications.github.io/acap-documentation/docs/develop/).*\n\nThe build process uses the\n[ACAP SDK build container](https://hub.docker.com/r/axisecp/acap-sdk)\nand Docker or Podman.\n\nThe Docker and Podman commands are integrated in the [Makefile](Makefile), so\nif you have Docker or Podman and `make` on your computer all you need to do is:\n\n```sh\nmake dockerbuild\n```\n\nor\n\n```sh\nmake podmanbuild\n```\n\nor perhaps build in parallel:\n\n```sh\nmake -j dockerbuild\n```\n\nalternatively\n\n```sh\nmake -j podmanbuild\n```\n\nIf you do have Docker but no `make` on your system:\n\n```sh\n# 32-bit ARM, e.g. ARTPEC-6- and ARTPEC-7-based devices\nDOCKER_BUILDKIT=1 docker build --build-arg ARCH=armv7hf -o type=local,dest=. .\n# 64-bit ARM, e.g. ARTPEC-8 and ARTPEC-9-based devices\nDOCKER_BUILDKIT=1 docker build --build-arg ARCH=aarch64 -o type=local,dest=. .\n```\n\nIf you do have Podman but no `make` on your system:\n\n```sh\n# 32-bit ARM, e.g. ARTPEC-6- and ARTPEC-7-based devices\npodman build --build-arg ARCH=armv7hf -o type=local,dest=. .\n# 64-bit ARM, e.g. ARTPEC-8 and ARTPEC-9-based devices\npodman build --build-arg ARCH=aarch64 -o type=local,dest=. .\n```\n\n## Setup\n\n### Manual installation and configuration\n\nUpload the ACAP application file (the file with the `.eap` extension for the\ncamera's architecture) through the camera's web UI: *Apps-\u003eAdd app*\n\nThe OPC UA Server port (default is 4840) can be set through the application's\nparameter settings, found in the three vertical dots menu:\n\n![Web UI Screenshot](images/web_ui_open_param_settings.png)\n\n![Web UI Screenshot](images/web_ui_param_settings.png)\n\n### Scripted installation and configuration\n\nUse the camera's\n[applications/upload.cgi](https://www.axis.com/vapix-library/subjects/t10102231/section/t10036126/display?section=t10036126-t10010609)\nto upload the ACAP application file (the file with the `.eap` extension for the\ncamera's architecture):\n\n```sh\ncurl -k --anyauth -u root:\u003cpassword\u003e \\\n    -F packfil=@OPC_UA_Server_\u003cversion\u003e_\u003carchitecture\u003e.eap \\\n    https://\u003ccamera hostname/ip\u003e/axis-cgi/applications/upload.cgi\n```\n\nTo\n[start (or stop/restart/remove)](https://www.axis.com/vapix-library/subjects/t10102231/section/t10036126/display?section=t10036126-t10010606)\nthe application, you can make a call like this:\n\n```sh\ncurl -k --anyauth -u root:\u003cpassword\u003e \\\n    'https://\u003ccamera hostname/ip\u003e/axis-cgi/applications/control.cgi?package=opcuaserver\u0026action=start'\n```\n\nUse the camera's\n[param.cgi](https://www.axis.com/vapix-library/subjects/t10175981/section/t10036014/display)\nto get or set the OPC UA server port number.\n\nThe call\n\n```sh\ncurl -k --anyauth -u root:\u003cpassword\u003e \\\n    'https://\u003ccamera hostname/ip\u003e/axis-cgi/param.cgi?action=list\u0026group=opcuaserver'\n```\n\nwill list the current setting:\n\n```sh\nroot.Opcuaserver.port=4840\n```\n\nIf you want to set the OPC UA server port to e.g. 4842:\n\n```sh\ncurl -k --anyauth -u root:\u003cpassword\u003e \\\n    'https://\u003ccamera hostname/ip\u003e/axis-cgi/param.cgi?action=update\u0026opcuaserver.port=4842'\n```\n\n## Usage\n\nAttach an OPC UA client to the port set in the ACAP application. The client\nwill then be able to read the values (and their timestamps) from the ACAP\napplication's OPC UA server.\n\n\u003e [!NOTE]\n\u003e The application will also log the values in the camera's syslog.\n\n## License\n\n[Apache 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxiscommunications%2Fopc-ua-server-acap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faxiscommunications%2Fopc-ua-server-acap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxiscommunications%2Fopc-ua-server-acap/lists"}