├── Docs └── .keep ├── Applications ├── Views │ ├── _ViewStart.cshtml │ ├── _ViewImports.cshtml │ ├── Setup │ │ ├── Privacy.cshtml │ │ └── Index.cshtml │ ├── Shared │ │ ├── _ValidationScriptsPartial.cshtml │ │ ├── Error.cshtml │ │ └── _Layout.cshtml │ ├── Auth │ │ └── Index.cshtml │ └── Diag │ │ └── Index.cshtml ├── wwwroot │ ├── css │ │ ├── 32px.png │ │ ├── 40px.png │ │ └── throbber.gif │ ├── favicon.ico │ ├── lib │ │ ├── jstree │ │ │ └── themes │ │ │ │ ├── default │ │ │ │ ├── 32px.png │ │ │ │ ├── 40px.png │ │ │ │ └── throbber.gif │ │ │ │ └── default-dark │ │ │ │ ├── 32px.png │ │ │ │ ├── 40px.png │ │ │ │ └── throbber.gif │ │ ├── bootstrap-table │ │ │ ├── themes │ │ │ │ └── bootstrap-table │ │ │ │ │ └── fonts │ │ │ │ │ ├── bootstrap-table.eot │ │ │ │ │ ├── bootstrap-table.ttf │ │ │ │ │ └── bootstrap-table.woff │ │ │ ├── extensions │ │ │ │ ├── group-by-v2 │ │ │ │ │ ├── bootstrap-table-group-by.css │ │ │ │ │ └── bootstrap-table-group-by.min.css │ │ │ │ ├── filter-control │ │ │ │ │ ├── bootstrap-table-filter-control.css │ │ │ │ │ └── bootstrap-table-filter-control.min.css │ │ │ │ ├── page-jump-to │ │ │ │ │ ├── bootstrap-table-page-jump-to.css │ │ │ │ │ └── bootstrap-table-page-jump-to.min.css │ │ │ │ ├── sticky-header │ │ │ │ │ ├── bootstrap-table-sticky-header.css │ │ │ │ │ └── bootstrap-table-sticky-header.min.css │ │ │ │ ├── fixed-columns │ │ │ │ │ ├── bootstrap-table-fixed-columns.css │ │ │ │ │ └── bootstrap-table-fixed-columns.min.css │ │ │ │ ├── reorder-rows │ │ │ │ │ ├── bootstrap-table-reorder-rows.css │ │ │ │ │ └── bootstrap-table-reorder-rows.min.css │ │ │ │ └── i18n-enhance │ │ │ │ │ ├── bootstrap-table-i18n-enhance.min.js │ │ │ │ │ └── bootstrap-table-i18n-enhance.js │ │ │ ├── bootstrap-table.min.css │ │ │ └── locale │ │ │ │ ├── bootstrap-table-zh-TW.min.js │ │ │ │ ├── bootstrap-table-zh-CN.min.js │ │ │ │ ├── bootstrap-table-ja-JP.min.js │ │ │ │ └── bootstrap-table-he-IL.min.js │ │ ├── jquery-validation-unobtrusive │ │ │ ├── LICENSE.txt │ │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ │ └── LICENSE.md │ │ ├── bootstrap │ │ │ ├── LICENSE │ │ │ └── dist │ │ │ │ └── css │ │ │ │ ├── bootstrap-reboot.min.css │ │ │ │ └── bootstrap-reboot.css │ │ ├── jquery │ │ │ └── LICENSE.txt │ │ └── jquery-ajax-unobtrusive │ │ │ ├── jquery.unobtrusive-ajax.min.js │ │ │ └── jquery.unobtrusive-ajax.js │ └── js │ │ ├── site.js │ │ └── Chart.js │ │ ├── helpers.esm.min.js │ │ ├── helpers.esm.js │ │ └── helpers.mjs ├── Models │ ├── StatusModel.cs │ ├── SetupModel.cs │ └── DTDL.cs ├── Interfaces │ ├── ISubscriber.cs │ ├── IMessageProcessor.cs │ └── IDigitalTwinClient.cs ├── appsettings.Development.json ├── appsettings.json ├── .config │ └── dotnet-tools.json ├── Controllers │ ├── DiagController.cs │ ├── AuthController.cs │ └── SetupController.cs ├── .dockerignore ├── Program.cs ├── libman.json ├── ISA95 │ ├── OPCUANodeString.json │ ├── OPCUANodeBoolean.json │ ├── OPCUANodeInteger.json │ ├── OPCUANodeLong.json │ ├── OPCUANodeDateTime.json │ ├── OPCUANodeDouble.json │ ├── OPCUANodeFloat.json │ └── OPCUANodeset.json ├── Dockerfile ├── ISA95Equipment │ ├── OPCUANodeStringEquipment.json │ ├── OPCUANodeBooleanEquipment.json │ ├── OPCUANodeIntegerEquipment.json │ ├── OPCUANodeLongEquipment.json │ ├── OPCUANodeDateTimeEquipment.json │ ├── OPCUANodeFloatEquipment.json │ ├── OPCUANodeDoubleEquipment.json │ └── OPCUANodesetEquipment.json ├── DeterministicHash.cs ├── Properties │ └── launchSettings.json ├── UACloudTwin.csproj ├── UACloudTwin.sln ├── StatusHub.cs ├── Encoding │ ├── Field.cs │ ├── DataSetDecodeErrorEventArgs.cs │ ├── DataSet.cs │ ├── UaDataSetMessage.cs │ └── UaNetworkMessage.cs ├── Startup.cs ├── KafkaSubscriber.cs └── MQTTSubscriber.cs ├── LICENSE ├── .github └── workflows │ └── docker-build.yml ├── README.md └── .gitignore /Docs/.keep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Applications/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Applications/wwwroot/css/32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/css/32px.png -------------------------------------------------------------------------------- /Applications/wwwroot/css/40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/css/40px.png -------------------------------------------------------------------------------- /Applications/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Applications/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using UACloudTwin 2 | @using UACloudTwin.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /Applications/wwwroot/css/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/css/throbber.gif -------------------------------------------------------------------------------- /Applications/wwwroot/lib/jstree/themes/default/32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/lib/jstree/themes/default/32px.png -------------------------------------------------------------------------------- /Applications/wwwroot/lib/jstree/themes/default/40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/lib/jstree/themes/default/40px.png -------------------------------------------------------------------------------- /Applications/Models/StatusModel.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace UACloudTwin.Models 3 | { 4 | public class StatusModel 5 | { 6 | public string Status { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Applications/Views/Setup/Privacy.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Privacy Policy"; 3 | } 4 |
This app does not collect any user data.
7 | -------------------------------------------------------------------------------- /Applications/wwwroot/lib/jstree/themes/default/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/lib/jstree/themes/default/throbber.gif -------------------------------------------------------------------------------- /Applications/Models/SetupModel.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace UACloudTwin.Models 3 | { 4 | public class SetupModel 5 | { 6 | public string StatusMessage { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Applications/wwwroot/lib/jstree/themes/default-dark/32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/lib/jstree/themes/default-dark/32px.png -------------------------------------------------------------------------------- /Applications/wwwroot/lib/jstree/themes/default-dark/40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/lib/jstree/themes/default-dark/40px.png -------------------------------------------------------------------------------- /Applications/wwwroot/lib/jstree/themes/default-dark/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/lib/jstree/themes/default-dark/throbber.gif -------------------------------------------------------------------------------- /Applications/Interfaces/ISubscriber.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace UACloudTwin.Interfaces 3 | { 4 | public interface ISubscriber 5 | { 6 | public void Run(); 7 | 8 | public void Stop(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Applications/Views/Shared/_ValidationScriptsPartial.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Applications/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Applications/wwwroot/lib/bootstrap-table/themes/bootstrap-table/fonts/bootstrap-table.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/lib/bootstrap-table/themes/bootstrap-table/fonts/bootstrap-table.eot -------------------------------------------------------------------------------- /Applications/wwwroot/lib/bootstrap-table/themes/bootstrap-table/fonts/bootstrap-table.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digitaltwinconsortium/UA-CloudTwin/HEAD/Applications/wwwroot/lib/bootstrap-table/themes/bootstrap-table/fonts/bootstrap-table.ttf -------------------------------------------------------------------------------- /Applications/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @model StatusModel 2 | 3 | @{ 4 | ViewData["Title"] = "Error"; 5 | } 6 | 7 |10 |
14 | Username
15 | @Html.TextBox("username", null, new { style = "width:100%;" })
16 |
18 | Password
19 | @Html.Password("password", null, new { style = "width:100%;" })
20 |
22 | 23 |
24 |
25 | @Html.Hidden("returnUrl", Model.Status)
26 |
15 | This app creates the connection between an MQTT or Kafka broker and a Digital Twin service and applies OPC UA messages to digital twins.
16 |
18 | Please provide a connection string for the broker. Alternatively, you can define environment variables (see readme).
19 | @Html.TextBox("endpoint", (Context.Request.Query.ContainsKey("endpoint") ? Context.Request.Query["endpoint"] : (string)null), new { style = "width:100%;" })
20 |
22 | Please provide an instance Url to your Digital Twin service
23 | @Html.TextBox("instanceUrl", (Context.Request.Query.ContainsKey("instanceUrl") ? Context.Request.Query["instanceUrl"] : (string)null), new { style = "width:100%;" })
24 |
26 | 27 |
28 |29 | @Model.StatusMessage 30 |
31 || Discovered Asset Name | "); 67 | sb.Append("Time Stamp (UTC) | "); 68 | sb.Append("
|---|---|
| " + item.Key + " | "); 75 | sb.Append("" + item.Value.Item2 + " | "); 76 | sb.Append("
10 |
15 |