{"id":16990952,"url":"https://github.com/rzeldent/opc-iot-hub","last_synced_at":"2025-03-22T03:23:36.791Z","repository":{"id":47457559,"uuid":"375494687","full_name":"rzeldent/opc-iot-hub","owner":"rzeldent","description":"This application uses the OPC Unified Architecture (OPC UA) to accept a list of nodes and subscribe to their value. When a change is received, it pushes the new value to an IOT hub. Here the data can be processed near real-time.","archived":false,"fork":false,"pushed_at":"2023-12-21T08:51:32.000Z","size":72,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-03T00:31:37.683Z","etag":null,"topics":["aws","azure","azure-iothub","datastream","dotnet-core","industrial-automation","iot","mqtt","opc-ua","plc","reactive-programming","s7-1500","siemens","simatic"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rzeldent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-09T21:33:49.000Z","updated_at":"2022-08-05T02:43:06.000Z","dependencies_parsed_at":"2023-01-23T21:16:32.713Z","dependency_job_id":null,"html_url":"https://github.com/rzeldent/opc-iot-hub","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzeldent%2Fopc-iot-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzeldent%2Fopc-iot-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzeldent%2Fopc-iot-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzeldent%2Fopc-iot-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rzeldent","download_url":"https://codeload.github.com/rzeldent/opc-iot-hub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244900677,"owners_count":20528767,"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":["aws","azure","azure-iothub","datastream","dotnet-core","industrial-automation","iot","mqtt","opc-ua","plc","reactive-programming","s7-1500","siemens","simatic"],"created_at":"2024-10-14T03:24:23.769Z","updated_at":"2025-03-22T03:23:36.773Z","avatar_url":"https://github.com/rzeldent.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpcIotHub\n\n[![.NET Core](https://github.com/rzeldent/opc-iot-hub/actions/workflows/main.yml/badge.svg)](https://github.com/rzeldent/opc-iot-hub/actions/workflows/main.yml)\n\n## Description\nThis application uses the OPC Unified Architecture (OPC UA) to accept a list of nodes and subscribe to their value.\nWhen a change is received, it pushes the new value to the an IOT hub. Here the data can be processed near realtime.\nThis ideal to monitor values from PLCs, like the Siemens SIMATIC S7-1500.\n \n## Usage\nThis application can be used to publish industrial data to the cloud where it can be analyzed. Practical uses are:\n- Anomily detection\n- SCADA systems\n- Historical performance and reporting\n- Deep learning and optimization\n- ...\n\n## Implementation\nThere sources and sinks. These can enabled by DI in the file Program.cs.\n\nCurrently the following implementation of the interfaces are present:\n\nSources:\n  - OPC-UA; Subscribes to OPC nodes and publishes the changed values,\n  - Mock; Publishes a random value.\n\nSinks:\n  - Azure IOTHub; Publishes to an IOT Hub,\n  - MQTT; Uses a standard MQTT message bus,\n  - Mock; Just logs the data.\n\n## Setup\n\n### Azure\n\nCreate an IOT hub in Azure. Then open a cloud console.\n\n\nAdd the device to the hub:\n```PowerShell\nPS\u003e az iot hub device-identity create --hub-name \u003cHub name\u003e --device-id \u003cDevice name\u003e\n\n```\n\nShow the connection string to enter in the appSettings.json:\n```PowerShell\nPS\u003e az iot hub device-identity connection-string show --hub-name \u003cHub name\u003e --device-id \u003cDevice name\u003e --output table\n```\n\n### MQTT\n\n### Amazon AWS\n\n## TODO\n\nFeel free to participate.\n\n- Get Amazon AWS working. Still some issues with special signing required for AWS.\n- More sinks?\n\n## Thanks\n\nMany thanks to Converter Systems LLC (Cross River, NY), especially to [Andrew Cullen](https://github.com/awcullen) for making the OPC library available allowing projects like this!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frzeldent%2Fopc-iot-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frzeldent%2Fopc-iot-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frzeldent%2Fopc-iot-hub/lists"}