{"id":13506031,"url":"https://github.com/Engineering-Research-and-Development/iotagent-opcua","last_synced_at":"2025-03-30T03:30:29.815Z","repository":{"id":30099796,"uuid":"120748639","full_name":"Engineering-Research-and-Development/iotagent-opcua","owner":"Engineering-Research-and-Development","description":"IoT Agent for OPC UA protocol ","archived":false,"fork":false,"pushed_at":"2025-01-27T09:43:27.000Z","size":49598,"stargazers_count":41,"open_issues_count":0,"forks_count":20,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-15T05:36:24.198Z","etag":null,"topics":["fiware","idas","industry","iot-agent","manufacturing","ngsi","opc-ua"],"latest_commit_sha":null,"homepage":"https://iotagent-opcua.rtfd.io/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Engineering-Research-and-Development.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2018-02-08T10:46:54.000Z","updated_at":"2025-01-27T09:43:30.000Z","dependencies_parsed_at":"2024-02-28T11:27:43.899Z","dependency_job_id":"a977e402-1746-4873-83b3-e02996349e57","html_url":"https://github.com/Engineering-Research-and-Development/iotagent-opcua","commit_stats":null,"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Engineering-Research-and-Development%2Fiotagent-opcua","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Engineering-Research-and-Development%2Fiotagent-opcua/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Engineering-Research-and-Development%2Fiotagent-opcua/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Engineering-Research-and-Development%2Fiotagent-opcua/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Engineering-Research-and-Development","download_url":"https://codeload.github.com/Engineering-Research-and-Development/iotagent-opcua/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246273533,"owners_count":20750904,"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":["fiware","idas","industry","iot-agent","manufacturing","ngsi","opc-ua"],"created_at":"2024-08-01T01:00:33.343Z","updated_at":"2025-03-30T03:30:29.810Z","avatar_url":"https://github.com/Engineering-Research-and-Development.png","language":"JavaScript","funding_links":[],"categories":["FIWARE Catalogue"],"sub_categories":["IoT Agents"],"readme":"# OPC UA Agent: the FIWARE IoT Agent for OPC UA\n\n[![FIWARE IoT Agents](https://nexus.lab.fiware.org/static/badges/chapters/iot-agents.svg)](https://www.fiware.org/developers/catalogue/)\n[![License: AGPL](https://img.shields.io/github/license/Engineering-Research-and-Development/iotagent-opcua.svg)](https://opensource.org/licenses/AGPL-3.0)\n[![Docker badge](https://img.shields.io/badge/quay.io-fiware%2Fiotagent--opcua-grey?logo=red%20hat\u0026labelColor=EE0000)](https://quay.io/repository/fiware/iotagent-opcua)\n[![Support badge](https://img.shields.io/badge/support-stackoverflow-orange)](https://stackoverflow.com/questions/tagged/fiware+iot)\u003cbr/\u003e\n[![Documentation badge](https://img.shields.io/readthedocs/iotagent-opcua.svg)](https://iotagent-opcua.rtfd.io/)\n[![CI](https://github.com/Engineering-Research-and-Development/iotagent-opcua/workflows/CI/badge.svg)](https://github.com/Engineering-Research-and-Development/iotagent-opcua/actions?query=workflow%3ACI)\n[![Coverage Status](https://coveralls.io/repos/github/Engineering-Research-and-Development/iotagent-opcua/badge.svg?branch=master)](https://coveralls.io/github/Engineering-Research-and-Development/iotagent-opcua?branch=master)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4612/badge)](https://bestpractices.coreinfrastructure.org/projects/4612)\n![Status](https://nexus.lab.fiware.org/static/badges/statuses/full.svg)\n[![Join the chat at https://gitter.im/iotagent-opcua/community](https://badges.gitter.im/iotagent-opcua/community.svg)](https://gitter.im/iotagent-opcua/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\u003cbr/\u003e \u003cimg align=\"right\" width=\"200\" src=\"/docs/images/iotagent-logo.png\" /\u003e\n\nAn Internet of Things Agent accepting data from OPC UA devices. This IoT Agent is designed to be a bridge between the\nOPC Unified Architecture protocol and the\n[NGSI](https://swagger.lab.fiware.org/?url=https://raw.githubusercontent.com/Fiware/specifications/master/OpenAPI/ngsiv2/ngsiv2-openapi.json)\ninterface of a context broker.\n\nThe intended level of complexity to support these operations should consider a limited human intervention (mainly during\nthe setup of a new OPC UA endpoint), through the mean of a parametrization task (either manual or semi-automatic, using\na text-based parametrization or a simple UI to support the configuration) so that no software coding is required to\nadapt the agent to different OPC UA devices.\n\nIt is based on the [IoT Agent Node.js Library](https://github.com/telefonicaid/iotagent-node-lib). Further general\ninformation about the FIWARE IoT Agents framework, its architecture and the common interaction model can be found in the\nlibrary's GitHub repository.\n\nThis project is part of [FIWARE](https://www.fiware.org/). For more information check the\n[FIWARE Catalogue entry for the IoT Agents](https://github.com/Fiware/catalogue/tree/master/iot-agents).\n\n| :books: [Documentation](https://iotagent-opcua.rtfd.io) | \u003cimg style=\"height:1em\" src=\"https://quay.io/static/img/quay_favicon.png\"/\u003e [quay.io](https://quay.io/repository/fiware/iotagent-opcua) | :mortar_board: [Academy](https://fiware-academy.readthedocs.io/en/latest/iot-agents/idas) | :dart: [Roadmap](https://github.com/Engineering-Research-and-Development/iotagent-opcua/blob/master/roadmap.md) |\n| ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |\n\n\n## Contents\n\n-   [Background](#background)\n-   [Install](#getting-started---install)\n    -   [Docker install](#docker---recommended)\n    -   [NPM Install](#npm)\n-   [Usage](#usage)\n-   [API](#api)\n-   [Testing](#testing)\n-   [License](#license)\n\n## Background\n\n### Positioning in the overall F4I Reference Architecture\n\nThe F4I OPC UA Agent is based on the reference implementation of the FIWARE Backend Device Management Generic Enabler,\nIDAS, delivered by Telefonica I+D. IDAS provides a collection of Agents - i.e., independent processes that are typically\nexecuted in the proximity of IoT devices and that are responsible for bridging a specific IoT protocol to the NGSI\nstandard (e.g. the IDAS distribution includes off-the-shelf Agents for LwM2M and MQTT). To this end, IDAS links the NGSI\nsouthbound API of the FIWARE Orion Context Broker to the northbound API of the IoT application stack, by providing a\nsoftware library (the IoT Agent Lib depicted in the previous figure) for developing custom Agents that may extend the\nbridging capabilities of IDAS to other protocols. The F4I IDAS OPC UA Agent makes use of this framework to integrate OPC\nUA-based devices in a publish-subscribe system based on the FIWARE Orion Context Broker.\n\n## Getting Started - Install\n\nCurrently two options are available to install the Agent:\n\n### Docker - Recommended\n\nWe suggest using a **Docker-first** approach in order to avoid issues related to your environment configuration.\nMoreover, using this approach you will be provided with all the needed components: OCB, Mongo instances and a sample OPC\nUA server.\n\nA step-by-step tutorial is available\n[here](https://github.com/Engineering-Research-and-Development/iotagent-opcua/blob/master/docs/opc_ua_agent_tutorial.md)\n\n### npm\n\nBefore launching the Agent you must install Orion Context Broker (Be aware to choose the correct version, please use\n_orion_ if it's needed to test the Agent with NGSI v2 otherwise use _orion-ld_ in case of NGSI-ld test.) and a OPC UA\nServer. After that you must tell the Agent how to interact with these components by using config.js file. Once\nconfiguration is complete you can execute these commands to run the Agent.\n\n```console\n$ npm install\n$ node bin/iotagent-opcua\n```\n\nFurther Information about how to install the OPC UA IoT Agent can be found at the corresponding section of the\n[Installation \u0026 Administration Guide](https://iotagent-opcua.readthedocs.io/en/latest/installation_and_administration_guide).\n\n## Usage\n\nInformation about how to use the IoT Agent can be found in the\n[User \u0026 Programmers Manual](https://iotagent-opcua.readthedocs.io/en/latest/user_and_programmers_manual).\n\n### Administration Services\n\nAdministration services are reachable at port specified by api-port property (config.js).\n\n|     |  Service   |                          Description                          |\n| --- | :--------: | :-----------------------------------------------------------: |\n| GET | `/version` | Returns information about version, name and agent description |\n\n### Poll commands\n\nPoll commands can be enabled switching polling property to true (config.js). Once enabled poll command, you can\ncustomize the polling Daemon Frequency and Expiration time still in the (config.js). The polling-commands-timer is\nreferred to the feature developed, that consist in the execution of the older polling command periodically (if exists)\ned delete it in case of success.\n\n## API\n\nApiary reference for the Configuration API can be found\n[here](http://docs.telefonicaiotiotagents.apiary.io/#reference/configuration-api) More information about IoT Agents and\ntheir APIs can be found in the IoT Agent Library [documentation](https://iotagent-node-lib.rtfd.io/).\n\n## Testing\n\nFor test purpose can create an OPC UA server using the code in the following\n[GitHub repository](https://github.com/Engineering-Research-and-Development/opc-ua-car-server/)\n\nFirstly edit the [config.js](conf/config.js) in order to set Northbound (NGSI) and Southbound (OPC UA) settings.\n\nFurther information about configuration properties can be found [here](docs/howto.md)\n\nFor checking current status of the Agent, send a request to /version service\n(`http://{agent-ip-address}:api-port/version`)\n\n### Secure connection with an OPC UA Server\n\nOPC UA Agent will automatically generate key pairs and certificates (persisted in `iotagent-opcua/certificates`) to\nestablish a secure connection to the OPC UA Server.\n\n### How to get access to the advanced API and Documentation topics\n\nDocumentation about the OPC UA Administration API can be found [here](https://iotagentopcua.docs.apiary.io/)\n\n---\n\n## License\n\nThe IoT Agent for OPC UA is licensed under [Affero General Public License (GPL) version 3](./LICENSE).\n\n© 2021-2024 Engineering Ingegneria Informatica S.p.A.\n\nThe following third-party libraries are used under license\n\n1.  [node-opcua](http://node-opcua.github.io/) - **MIT** - © 2014-2024 Etienne Rossignon\n2.  [iotagent-node-lib](https://github.com/telefonicaid/iotagent-node-lib) - **AGPL** © 2014-2024 Telefonica\n    Investigación y Desarrollo\n\nThe full list of third-party libraries licenses can be found\n[here](https://htmlpreview.github.io/?https://github.com/Engineering-Research-and-Development/iotagent-opcua/blob/master/docs/opc_ua_agent_dependencies.html)\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eAre there any legal issues with AGPL 3.0? Is it safe for me to use?\u003c/strong\u003e\u003c/summary\u003e\nThere is absolutely no problem in using a product licensed under AGPL 3.0. Issues with GPL (or AGPL) licenses are mostly\nrelated with the fact that different people assign different interpretations on the meaning of the term “derivate work”\nused in these licenses. Due to this, some people believe that there is a risk in just _using_ software under GPL or AGPL\nlicenses (even without _modifying_ it).\n\nFor the avoidance of doubt, the owners of this software licensed under an AGPL-3.0 license wish to make a clarifying\npublic statement as follows:\n\n\u003e Please note that software derived as a result of modifying the source code of this software in order to fix a bug or\n\u003e incorporate enhancements is considered a derivative work of the product. Software that merely uses or aggregates (i.e.\n\u003e links to) an otherwise unmodified version of existing software is not considered a derivative work, and therefore it\n\u003e does not need to be released as under the same license, or even released as open source.\n\n\u003c/summary\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEngineering-Research-and-Development%2Fiotagent-opcua","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FEngineering-Research-and-Development%2Fiotagent-opcua","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEngineering-Research-and-Development%2Fiotagent-opcua/lists"}