{ "fileType": "2cb82afd-08e2-4cc6-ba9e-a37afa4b7175", "name": "IoT Central Solution Builder ADX OEE Configuration", "id": "ef39313b-7afd-4f90-a787-79dc2fd692a0", "resourceNameSuffix": "", "resourceLocation": "westus2", "deploymentConfigs": [ { "id": "17117ace-cd8f-460c-b7fe-bf578ebc2cca", "name": "Create Resource Group", "description": "The owning resource group for the Azure resources that will be provisioned below.", "itemType": "ResourceGroup", "itemStep": "createResourceGroup", "docLink": "https://docs.microsoft.com/rest/api/resources/resource-groups", "api": { "apiAuthScope": "https://management.azure.com/.default", "config": { "method": "put", "url": "https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}?api-version=2021-04-01", "data": { "location": "${resourceLocation}", "tags": { "iotcsb": "resourcegroup" } } } }, "parameters": { "resourceName": [ "iotc-rg-", [ "context.resourceNameSuffix" ] ], "subscriptionId": [ [ "context.subscriptionId" ] ], "resourceGroupName": [ "iotc-rg-", [ "context.resourceNameSuffix" ] ], "resourceLocation": [ [ "context.resourceLocation" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "c71b8a4c-2cc6-4f88-b986-4a1293989c95", "name": "Create IoT Central application", "description": "An Azure IoT Central application instance. This will ingest telemetry from the opc-plc simulator module and export the data via continuous data export (CDE) to an Azur Data Explorer instance.", "itemType": "IoTCentral", "itemStep": "createIotCentralApp", "docLink": "https://docs.microsoft.com/rest/api/iotcentral/2021-11-01-previewcontrolplane/apps/create-or-update", "api": { "apiAuthScope": "https://management.azure.com/.default", "config": { "method": "put", "url": "https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.IoTCentral/iotApps/${resourceName}?api-version=2021-06-01", "data": { "location": "${mappedRegion}", "sku": { "name": "ST2" }, "properties": { "displayName": "${subdomain}", "subdomain": "${subdomain}", "template": "" }, "identity": { "type": "SystemAssigned" }, "tags": { "iotcsb": "iotcapp" } } } }, "lroApi": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "get", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/devices?api-version=2022-10-31-preview" } }, "parameters": { "resourceName": [ "iotc-app-", [ "context.resourceNameSuffix" ] ], "subscriptionId": [ [ "context.subscriptionId" ] ], "resourceGroupName": [ [ "createResourceGroup.resourceGroupName" ] ], "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ], "mappedRegion": [ [ "context.mappedResourceGroupRegion" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "6553bbeb-03eb-4a9d-a6d7-688df6c2544f", "name": "Create gateway device capability model", "description": "Create the edge device capability model including the IoT Edge runtime deployment manifest", "itemType": "IoTCentral", "itemStep": "createEdgeCapabilityModel", "docLink": "https://aka.ms/iotcapi-devicetemplates", "api": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "put", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/deviceTemplates/${templateId}?api-version=2022-10-31-preview", "data": { "@context": [ "dtmi:iotcentral:context;2", "dtmi:dtdl:context;2" ], "@type": [ "ModelDefinition", "DeviceModel", "EdgeModel", "GatewayModel" ], "displayName": "Manufacturing In A Box Gateway", "capabilityModel": { "@id": "dtmi:com:azureiot:miabgateway:edgedevice;1", "@type": "Interface", "displayName": "Manufacturing In A Box Gateway", "contents": [ { "@type": [ "Relationship", "EdgeModule" ], "displayName": "Manufacturing In A Box Gateway", "maxMultiplicity": 1, "name": "miabgateway", "target": [ { "@id": "dtmi:com:azureiot:miabgateway:miabgateway;1", "@type": "Interface", "displayName": "Manufacturing In A Box Gateway", "contents": [], "extends": [ { "@id": "dtmi:com:azureiot:miabgateway:miabgateway_device_interface;1", "@type": [ "Interface", "NamedInterface" ], "displayName": "Manufacturing In A Box Gateway Device Interface", "name": "com_azureiot_miabgateway_miabgateway_device_interface", "contents": [ { "@type": "Property", "displayName": "Processor architecture", "name": "processorArchitecture", "schema": "string" }, { "@type": "Property", "displayName": "Hostname", "name": "hostname", "schema": "string" }, { "@type": "Property", "displayName": "Platform", "name": "platform", "schema": "string" }, { "@type": "Property", "displayName": "OS Type", "name": "osType", "schema": "string" }, { "@type": "Property", "displayName": "Operating system", "name": "osName", "schema": "string" }, { "@type": "Property", "displayName": "Software version", "name": "swVersion", "schema": "string" }, { "@type": [ "Telemetry", "Event" ], "displayName": "Module Started", "name": "evModuleStarted", "schema": "string" }, { "@type": [ "Telemetry", "Event" ], "displayName": "Module Stopped", "name": "evModuleStopped", "schema": "string" }, { "@type": [ "Telemetry", "Event" ], "displayName": "Module Restart", "name": "evModuleRestart", "schema": "string" }, { "@type": "Property", "displayName": "Debug Telemetry", "name": "wpDebugTelemetry", "schema": "boolean", "writable": true }, { "@type": "Command", "displayName": "Restart Gateway Module", "name": "cmRestartGatewayModule", "request": { "@type": "CommandPayload", "displayName": "Restart Gateway Module Request", "name": "RestartGatewayModuleRequest", "schema": { "@type": "Object", "displayName": "Restart Gateway Module Request", "fields": [ { "displayName": "Timeout", "name": "timeout", "schema": "integer" } ] } } } ] }, { "@id": "dtmi:com:azureiot:miabgateway:ModuleInterface;1", "@type": [ "Interface", "NamedInterface" ], "displayName": "Manufacturing In A Box Gateway Module Interface", "name": "com_azureiot_miabgateway_ModuleInterface", "contents": [ { "@type": [ "Telemetry", "Event" ], "displayName": { "en": "Create OPC Device" }, "name": "evCreateOpcDevice", "schema": "string" }, { "@type": [ "Telemetry", "Event" ], "displayName": { "en": "Delete OPC Device" }, "name": "evDeleteOpcDevice", "schema": "string" }, { "@type": "Command", "displayName": "Provision OPC Device", "name": "cmProvisionOpcDevice" }, { "@type": "Command", "displayName": "Deprovision OPC Device", "name": "cmDeprovisionOpcDevice" }, { "@type": "Command", "displayName": "Test OPC Publisher API", "name": "cmTestOpcPublisherApi" } ] } ] } ] }, { "@type": [ "Relationship", "EdgeModule" ], "displayName": "Azure Metrics Collector", "maxMultiplicity": 1, "name": "azuremetricscollector", "target": [ { "@id": "dtmi:com:azureiot:miabgateway:azure_metrics_collector;1", "@type": "Interface", "contents": [], "displayName": "Azure Metrics Collector", "extends": [ { "@id": "dtmi:EdgeMetricsTemplate;1", "@type": [ "Interface", "NamedInterface" ], "displayName": "IoT Edge Metrics Interface", "name": "com_azureiot_EdgeMetricsInterface", "contents": [ { "@id": "dtmi:EdgeMetricsTemplate:TimeGeneratedUtc;1", "@type": "Telemetry", "displayName": { "en": "Time Generated UTC" }, "name": "TimeGeneratedUtc", "schema": "dateTime" }, { "@id": "dtmi:EdgeMetricsTemplate:edge_device;1", "@type": "Telemetry", "displayName": { "en": "Edge device" }, "name": "edge_device", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:instance_number;1", "@type": "Telemetry", "displayName": { "en": "Run instance" }, "name": "instance_number", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_received_total;1", "@type": "Telemetry", "displayName": { "en": "Total messages received" }, "name": "edgehub_messages_received_total", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_received_total:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_received_total:schema:value;1", "displayName": { "en": "Total messages received" }, "name": "Value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_received_total:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_received_total:schema:from_route_output;1", "displayName": { "en": "From route output" }, "name": "from_route_output", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_queue_length;1", "@type": "Telemetry", "displayName": { "en": "Queue length" }, "name": "edgehub_queue_length", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_queue_length:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_queue_length:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_queue_length:schema:priority;1", "displayName": { "en": "Priority" }, "name": "priority", "schema": "long" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds_sum;1", "@type": "Telemetry", "displayName": { "en": "Reported properties update duration sum (secs)" }, "name": "edgehub_reported_properties_update_duration_seconds_sum", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds_sum:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds_sum:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds_sum:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds_sum:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds_count;1", "@type": "Telemetry", "displayName": { "en": "Reported properties update duration count (secs)" }, "name": "edgehub_reported_properties_update_duration_seconds_count", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds_count:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds_count:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds_count:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds_count:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds;1", "@type": "Telemetry", "displayName": { "en": "Reported properties update duration (secs)" }, "name": "edgehub_reported_properties_update_duration_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds:schema:quantile;1", "displayName": { "en": "Quantile" }, "name": "quantile", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_update_duration_seconds:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes_sum;1", "@type": "Telemetry", "displayName": { "en": "Message size in bytes sum" }, "name": "edgehub_message_size_bytes_sum", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes_sum:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes_sum:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes_sum:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes_count;1", "@type": "Telemetry", "displayName": { "en": "Message size in bytes count" }, "name": "edgehub_message_size_bytes_count", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes_count:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes_count:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes_count:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes;1", "@type": "Telemetry", "displayName": { "en": "Message size in bytes" }, "name": "edgehub_message_size_bytes", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes:schema:quantile;1", "displayName": { "en": "Quantile" }, "name": "quantile", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_size_bytes:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_sum;1", "@type": "Telemetry", "displayName": { "en": "Message send duration sum (secs)" }, "name": "edgehub_message_send_duration_seconds_sum", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_sum:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_sum:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_sum:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_sum:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_sum:schema:from_route_output;1", "displayName": { "en": "From route output" }, "name": "from_route_output", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_count;1", "@type": "Telemetry", "displayName": { "en": "Message send duration count (secs)" }, "name": "edgehub_message_send_duration_seconds_count", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_count:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_count:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_count:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_count:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds_count:schema:from_route_output;1", "displayName": { "en": "From route output" }, "name": "from_route_output", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds;1", "@type": "Telemetry", "displayName": { "en": "Message Send Duration (secs)" }, "name": "edgehub_message_send_duration_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds:schema:quantile;1", "displayName": { "en": "Quantile" }, "name": "quantile", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_send_duration_seconds:schema:from_route_output;1", "displayName": { "en": "From route output" }, "name": "from_route_output", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds_sum;1", "@type": "Telemetry", "displayName": { "en": "Get Twin Duration Sum (secs)" }, "name": "edgehub_gettwin_duration_seconds_sum", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds_sum:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds_sum:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds_sum:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds_count;1", "@type": "Telemetry", "displayName": { "en": "Get Twin Duration Count (secs)" }, "name": "edgehub_gettwin_duration_seconds_count", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds_count:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds_count:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds_count:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds;1", "@type": "Telemetry", "displayName": { "en": "Get Twin Duration (secs)" }, "name": "edgehub_gettwin_duration_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds:schema:quantile;1", "displayName": { "en": "Quantile" }, "name": "quantile", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_duration_seconds:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_total;1", "@type": "Telemetry", "displayName": { "en": "Get Twin Total" }, "name": "edgehub_gettwin_total", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_total:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_total:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_gettwin_total:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_sent_total;1", "@type": "Telemetry", "displayName": { "en": "Messages Sent Total" }, "name": "edgehub_messages_sent_total", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_sent_total:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_sent_total:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_sent_total:schema:priority;1", "displayName": { "en": "Priority" }, "name": "priority", "schema": "long" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_sent_total:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_sent_total:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_messages_sent_total:schema:from_route_output;1", "displayName": { "en": "From route output" }, "name": "from_route_output", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_total;1", "@type": "Telemetry", "displayName": { "en": "Total Reported Properties" }, "name": "edgehub_reported_properties_total", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_total:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_total:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_total:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_reported_properties_total:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_memory_bytes;1", "@type": "Telemetry", "displayName": { "en": "Total Memory in Bytes" }, "name": "edgeAgent_total_memory_bytes", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_memory_bytes:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_memory_bytes:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_memory_bytes:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_memory_bytes;1", "@type": "Telemetry", "displayName": { "en": "Used Memory in Bytes" }, "name": "edgeAgent_used_memory_bytes", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_memory_bytes:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_memory_bytes:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_memory_bytes:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_network_out_bytes;1", "@type": "Telemetry", "displayName": { "en": "Total Network Bytes Out" }, "name": "edgeAgent_total_network_out_bytes", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_network_out_bytes:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_network_out_bytes:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_network_out_bytes:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_time_running_correctly_seconds;1", "@type": "Telemetry", "displayName": { "en": "Total Time running Correctly (secs)" }, "name": "edgeAgent_total_time_running_correctly_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_time_running_correctly_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_time_running_correctly_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_time_running_correctly_seconds:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds_sum;1", "@type": "Telemetry", "displayName": { "en": "Command Latency Sum (secs)" }, "name": "edgeAgent_command_latency_seconds_sum", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds_sum:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds_sum:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds_sum:schema:command;1", "displayName": { "en": "Command" }, "name": "command", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds_count;1", "@type": "Telemetry", "displayName": { "en": "Command Latency Count (secs)" }, "name": "edgeAgent_command_latency_seconds_count", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds_count:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds_count:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds_count:schema:command;1", "displayName": { "en": "Command" }, "name": "command", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds;1", "@type": "Telemetry", "displayName": { "en": "Command Latency (secs)" }, "name": "edgeAgent_command_latency_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_command_latency_seconds:schema:command;1", "displayName": { "en": "Command" }, "name": "command", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_iotedged_uptime_seconds;1", "@type": "Telemetry", "displayName": { "en": "iotedged Uptime (secs)" }, "name": "edgeAgent_iotedged_uptime_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_iotedged_uptime_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_iotedged_uptime_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_space_bytes;1", "@type": "Telemetry", "displayName": { "en": "Total disk space in bytes" }, "name": "edgeAgent_total_disk_space_bytes", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_space_bytes:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_space_bytes:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_space_bytes:schema:disk_name;1", "displayName": { "en": "Disk name" }, "name": "disk_name", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_module_start_total;1", "@type": "Telemetry", "displayName": { "en": "Module start total" }, "name": "edgeAgent_module_start_total", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_module_start_total:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_module_start_total:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_module_start_total:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent_sum;1", "@type": "Telemetry", "displayName": { "en": "Used CPU percent sum" }, "name": "edgeAgent_used_cpu_percent_sum", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent_sum:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent_sum:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent_sum:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent_count;1", "@type": "Telemetry", "displayName": { "en": "Used CPU percent count" }, "name": "edgeAgent_used_cpu_percent_count", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent_count:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent_count:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent_count:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent;1", "@type": "Telemetry", "displayName": { "en": "Used CPU percent" }, "name": "edgeAgent_used_cpu_percent", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent:schema:quantile;1", "displayName": { "en": "Quantile" }, "name": "quantile", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_used_cpu_percent:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_available_disk_space_bytes;1", "@type": "Telemetry", "displayName": { "en": "Available disk space bytes" }, "name": "edgeAgent_available_disk_space_bytes", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_available_disk_space_bytes:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_available_disk_space_bytes:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_available_disk_space_bytes:schema:disk_name;1", "displayName": { "en": "Disk name" }, "name": "disk_name", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_created_pids_total;1", "@type": "Telemetry", "displayName": { "en": "Created PIDS total" }, "name": "edgeAgent_created_pids_total", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_created_pids_total:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_created_pids_total:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_created_pids_total:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_host_uptime_seconds;1", "@type": "Telemetry", "displayName": { "en": "Host Uptime (secs)" }, "name": "edgeAgent_host_uptime_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_host_uptime_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_host_uptime_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_module_stop_total;1", "@type": "Telemetry", "displayName": { "en": "Module stop total" }, "name": "edgeAgent_module_stop_total", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_module_stop_total:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_module_stop_total:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_module_stop_total:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_time_expected_running_seconds;1", "@type": "Telemetry", "displayName": { "en": "Total time expected running (secs)" }, "name": "edgeAgent_total_time_expected_running_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_time_expected_running_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_time_expected_running_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_time_expected_running_seconds:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_write_bytes;1", "@type": "Telemetry", "displayName": { "en": "Total disk write in bytes" }, "name": "edgeAgent_total_disk_write_bytes", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_write_bytes:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_write_bytes:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_write_bytes:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_network_in_bytes;1", "@type": "Telemetry", "displayName": { "en": "Total network in bytes" }, "name": "edgeAgent_total_network_in_bytes", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_network_in_bytes:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_network_in_bytes:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_network_in_bytes:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_read_bytes;1", "@type": "Telemetry", "displayName": { "en": "Total disk read in bytes" }, "name": "edgeAgent_total_disk_read_bytes", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_read_bytes:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_read_bytes:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_total_disk_read_bytes:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_sum;1", "@type": "Telemetry", "displayName": { "en": "Message process duration sum (secs)" }, "name": "edgehub_message_process_duration_seconds_sum", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_sum:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_sum:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_sum:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_sum:schema:priority;1", "displayName": { "en": "Priority" }, "name": "priority", "schema": "long" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_sum:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_count;1", "@type": "Telemetry", "displayName": { "en": "Message process duration count (secs)" }, "name": "edgehub_message_process_duration_seconds_count", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_count:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_count:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_count:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_count:schema:priority;1", "displayName": { "en": "Priority" }, "name": "priority", "schema": "long" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds_count:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds;1", "@type": "Telemetry", "displayName": { "en": "Message process duration (secs)" }, "name": "edgehub_message_process_duration_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds:schema:quantile;1", "displayName": { "en": "Quantile" }, "name": "quantile", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds:schema:priority;1", "displayName": { "en": "Priority" }, "name": "priority", "schema": "long" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_message_process_duration_seconds:schema:to;1", "displayName": { "en": "To" }, "name": "to", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_connected_clients;1", "@type": "Telemetry", "displayName": { "en": "Connected clients" }, "name": "edgehub_connected_clients", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_connected_clients:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_connected_clients:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds_sum;1", "@type": "Telemetry", "displayName": { "en": "Offline duration sum (secs)" }, "name": "edgehub_offline_duration_seconds_sum", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds_sum:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds_sum:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds_sum:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds_count;1", "@type": "Telemetry", "displayName": { "en": "Offline duration count (secs)" }, "name": "edgehub_offline_duration_seconds_count", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds_count:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds_count:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds_count:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_client_connect_success_total;1", "@type": "Telemetry", "displayName": { "en": "Client connect success total" }, "name": "edgehub_client_connect_success_total", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_client_connect_success_total:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_client_connect_success_total:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_client_connect_success_total:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_iothub_syncs_total;1", "@type": "Telemetry", "displayName": { "en": "IoTHub syncs total" }, "name": "edgeAgent_iothub_syncs_total", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_iothub_syncs_total:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_iothub_syncs_total:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_metadata;1", "@type": "Telemetry", "displayName": { "en": "Metadata" }, "name": "edgeAgent_metadata", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_metadata:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_metadata:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_deployment_time_seconds_sum;1", "@type": "Telemetry", "displayName": { "en": "Deployment time Sum (secs)" }, "name": "edgeAgent_deployment_time_seconds_sum", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_deployment_time_seconds_sum:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_deployment_time_seconds_sum:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_deployment_time_seconds_count;1", "@type": "Telemetry", "displayName": { "en": "Deployment time count (secs)" }, "name": "edgeAgent_deployment_time_seconds_count", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_deployment_time_seconds_count:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_deployment_time_seconds_count:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_deployment_time_seconds;1", "@type": "Telemetry", "displayName": { "en": "Deployment time (secs)" }, "name": "edgeAgent_deployment_time_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_deployment_time_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_deployment_time_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgeAgent_deployment_time_seconds:schema:quantile;1", "displayName": { "en": "Quantile" }, "name": "quantile", "schema": "double" } ] } }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds;1", "@type": "Telemetry", "displayName": { "en": "Offline duration (secs)" }, "name": "edgehub_offline_duration_seconds", "schema": { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds:schema;1", "@type": "Object", "displayName": { "en": "Object" }, "fields": [ { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds:schema:value;1", "displayName": { "en": "Value" }, "name": "value", "schema": "double" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds:schema:from;1", "displayName": { "en": "From" }, "name": "from", "schema": "string" }, { "@id": "dtmi:EdgeMetricsTemplate:edgehub_offline_duration_seconds:schema:quantile;1", "displayName": { "en": "Quantile" }, "name": "quantile", "schema": "double" } ] } } ] } ] } ] }, { "@type": [ "Relationship", "GatewayDevice" ], "displayName": "OPC Device", "name": "opcdevice", "target": [] } ] } } } }, "parameters": { "resourceName": "iotc-api-createdcm", "templateId": "dtmi:com:azureiot:dcm:miabgateway;1", "moduleId": "miabgateway", "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "135adcb0-4f6e-4e5d-bbe8-82fb3b10db4a", "name": "Register gateway edge device", "description": "Register a new edge device to be used as the IoT Edge runtime device", "itemType": "IoTCentral", "itemStep": "registerEdgeGatewayDevice", "docLink": "https://aka.ms/iotcapi-devices", "api": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "put", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/devices/${deviceId}?api-version=2022-10-31-preview", "data": { "displayName": "${deviceId}", "template": "${templateId}", "simulated": false, "enabled": true, "type": [ "iotEdge" ] } } }, "parameters": { "resourceName": "iotc-api-registeredgedevice", "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ], "templateId": [ [ "createEdgeCapabilityModel.templateId" ] ], "deviceId": "industrial-connect-gw" }, "outputs": { "status": 500, "message": "" } }, { "id": "3e1d9aa8-d39f-4011-aeb8-276dbf8dab9e", "name": "Apply the Edge device deployment manifest", "description": "Apply the deployment manifest that the IoT Edge runtime will use to provision and run modules on the Edge device.", "itemType": "IoTCentral", "itemStep": "applyEdgeDeviceManifest", "docLink": "https://aka.ms/iotcapi-devices", "api": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "post", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/devices/${deviceId}/applyDeploymentManifest?api-version=2022-10-31-preview", "data": { "displayName": "${deploymentManifestName}", "data": { "modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "" } }, "modules": { "azuremetricscollector": { "settings": { "image": "mcr.microsoft.com/azureiotedge-metrics-collector:1.0" }, "type": "docker", "env": { "UploadTarget": { "value": "IoTMessage" }, "ResourceID": { "value": "Industrial connector for IoTEdge" }, "MetricsEndpointsCSV": { "value": "http://edgeHub:9600/metrics,http://edgeAgent:9600/metrics" }, "CompressForUpload": { "value": "false" }, "TransformForIoTCentral": { "value": "true" } }, "status": "running", "restartPolicy": "always", "version": "1.0", "startupOrder": 5 }, "opcplc": { "settings": { "image": "mcr.microsoft.com/iotedge/opc-plc:latest-debug", "createOptions": "{\"Hostname\":\"opcplc\",\"Cmd\":[\"--pn=50000\",\"--autoaccept\",\"--sn=25\",\"--sr=10\",\"--st=uint\",\"--fn=10\",\"--fr=1\",\"--ft=uint\",\"--ctb\",\"--scn\",\"--lid\",\"--lsn\",\"--ref\",\"--gn=10\"],\"HostConfig\":{\"Mounts\":[{\"Type\":\"volume\",\"Target\":\"/appdata\",\"Source\":\"miabgw\",\"Consistency\":\"consistent\",\"RW\":true}],\"PortBindings\":{\"50000/tcp\":[{\"HostPort\":\"50000\"}]}},\"ExposedPorts\":{\"50000/tcp\":{}}}" }, "type": "docker", "version": "1.0", "status": "running", "restartPolicy": "always", "startupOrder": 2 }, "opcpublisher": { "settings": { "image": "mcr.microsoft.com/iotedge/opc-publisher:2.8.2", "createOptions": "{\"Hostname\":\"opcpublisher\",\"Cmd\":[\"PkiRootPath=/appdata/pki\",\"--PublishedNodesFile=/appdata/published_nodes.json\",\"--LogFileName=/appdata/publisher.log\",\"--MessagingMode=PubSub\",\"--MessageEncoding=Json\",\"--FullFeaturedMessage=true\",\"--BatchSize=1\",\"--DiagnosticsInterval=20\",\"--AutoAcceptUntrustedCertificates=true\",\"--RuntimeStateReporting=true\",\"--EnableRoutingInfo=true\"],\"HostConfig\":{\"Mounts\":[{\"Type\":\"volume\",\"Target\":\"/appdata\",\"Source\":\"miabgw\",\"Consistency\":\"consistent\",\"RW\":true}]}}" }, "type": "docker", "version": "1.0", "status": "running", "restartPolicy": "always", "startupOrder": 3 }, "miabgateway": { "settings": { "image": "mcr.microsoft.com/iotedge/iotc-miab-gateway:latest-amd64", "createOptions": "{\"Hostname\":\"miabgateway\",\"ExposedPorts\":{\"9229/tcp\":{}},\"HostConfig\":{\"PortBindings\":{\"9229/tcp\":[{\"HostPort\":\"9229\"}]},\"Mounts\":[{\"Type\":\"volume\",\"Target\":\"/data/storage/\",\"Source\":\"miabgw\",\"Consistency\":\"consistent\",\"RW\":true}]}}" }, "type": "docker", "env": { "opcPublisherModuleId": { "value": "opcpublisher" } }, "status": "running", "restartPolicy": "always", "version": "1.0", "startupOrder": 4 } }, "systemModules": { "edgeAgent": { "settings": { "image": "mcr.microsoft.com/azureiotedge-agent:1.2", "createOptions": "" }, "type": "docker", "env": { "ExperimentalFeatures__Enabled": { "value": "true" }, "ExperimentalFeatures__EnableGetLogs": { "value": "true" }, "ExperimentalFeatures__EnableUploadLogs": { "value": "true" }, "ExperimentalFeatures__EnableMetrics": { "value": "true" } } }, "edgeHub": { "settings": { "image": "mcr.microsoft.com/azureiotedge-hub:1.2", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" }, "type": "docker", "env": { "SslProtocols": { "value": "tls1.2" } }, "status": "running", "restartPolicy": "always", "startupOrder": 0 } } } }, "$edgeHub": { "properties.desired": { "schemaVersion": "1.1", "routes": { "publisherruntimeinfo": "FROM /messages/modules/opcpublisher/outputs/runtimeinfo INTO BrokeredEndpoint(\"/modules/iiotadapter/inputs/publisherruntimeinfo\")", "publishertogateway": "FROM /messages/* WHERE $connectionModuleId = 'opcpublisher' INTO BrokeredEndpoint(\"/modules/miabgateway/inputs/publisherdata\")", "metrics2iothub": "FROM /messages/* WHERE $connectionModuleId = 'azuremetricscollector' INTO $upstream", "miabgateway": "FROM /messages/* WHERE $connectionModuleId = 'miabgateway' INTO $upstream" }, "storeAndForwardConfiguration": { "timeToLiveSecs": 7200 } } }, "miabgateway": { "properties.desired": { "wpDebugTelemetry": true } } } } } } }, "parameters": { "resourceName": "iotc-api-applymanifest", "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ], "deviceId": [ [ "registerEdgeGatewayDevice.deviceId" ] ], "deploymentManifestName": "miabGatewayDeployment" }, "outputs": { "status": 500, "message": "" } }, { "id": "b449d2af-8652-4ad5-bdf2-f07f7107d1d6", "name": "Get gateway device attestation properties", "description": "Get the scope id and device provisioning key for the registered edge device. These values will be used to provision the IoT Edge runtime.", "itemType": "IoTCentral", "itemStep": "getEdgeDeviceAttestation", "docLink": "https://aka.ms/iotcapi-devices", "api": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "get", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/devices/${deviceId}/credentials?api-version=2022-10-31-preview" } }, "parameters": { "resourceName": "iotc-api-getedgedeviceattestation", "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ], "deviceId": [ [ "registerEdgeGatewayDevice.deviceId" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "d795ed81-144e-49cf-b3e2-0d8eb852c5ea", "name": "Create Azure VM with IoT Edge Runtime", "description": "An Azure ARM template to deploy a virtual machine with the Opc Plc simulator.", "itemType": "VirtualMachine", "itemStep": "createVirtualMachine", "docLink": "https://docs.microsoft.com/azure/azure-resource-manager/templates/deploy-rest", "api": { "apiAuthScope": "https://management.azure.com/.default", "config": { "method": "put", "url": "https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Resources/deployments/${resourceName}?api-version=2020-10-01", "data": { "properties": { "mode": "Incremental", "debugSetting": { "detailLevel": "requestContent, responseContent" }, "parameters": { "dnsLabelPrefix": { "value": "${dnsLabelPrefix}" }, "adminUsername": { "value": "${adminUsername}" }, "scopeId": { "value": "${scopeId}" }, "deviceId": { "value": "${deviceId}" }, "symmetricKey": { "value": "${symmetricKey}" }, "adminPasswordOrKey": { "value": "" } }, "template": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "dnsLabelPrefix": { "type": "string", "metadata": { "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." } }, "adminUsername": { "type": "string", "metadata": { "description": "User name for the Virtual Machine." } }, "scopeId": { "type": "string", "metadata": { "description": "IoT Central DPS Scope Id" } }, "deviceId": { "type": "string", "metadata": { "description": "IoT Central Edge Device Id" } }, "symmetricKey": { "type": "string", "metadata": { "description": "IoT Central Edge Device Provisioning Key" } }, "allowSsh": { "type": "bool", "defaultValue": false, "metadata": { "description": "Allow SSH traffic through the firewall" } }, "adminPasswordOrKey": { "type": "securestring", "metadata": { "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." } }, "vmSize": { "type": "string", "defaultValue": "Standard_DS1_v2", "metadata": { "description": "VM size" } }, "ubuntuOSVersion": { "type": "string", "defaultValue": "20_04-lts", "metadata": { "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." } }, "authenticationType": { "type": "string", "defaultValue": "password", "allowedValues": [ "sshPublicKey", "password" ], "metadata": { "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." } } }, "variables": { "imagePublisher": "Canonical", "imageOffer": "0001-com-ubuntu-server-focal", "nicName": "[concat('nic-', uniquestring(parameters('dnsLabelPrefix')))]", "vmName": "[parameters('dnsLabelPrefix')]", "virtualNetworkName": "[concat('vnet-', uniquestring(parameters('dnsLabelPrefix')))]", "publicIPAddressName": "[concat('ip-', parameters('dnsLabelPrefix'))]", "addressPrefix": "10.0.0.0/16", "subnet1Name": "[concat('subnet-', uniquestring(parameters('dnsLabelPrefix')))]", "subnet1Prefix": "10.0.0.0/24", "publicIPAddressType": "Dynamic", "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", "subnet1Ref": "[concat(variables('vnetID'),'/subnets/',variables('subnet1Name'))]", "linuxConfiguration": { "disablePasswordAuthentication": true, "ssh": { "publicKeys": [ { "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]", "keyData": "[parameters('adminPasswordOrKey')]" } ] } }, "sid": "[parameters('scopeId')]", "did": "[parameters('deviceId')]", "sky": "[parameters('symmetricKey')]", "networkSecurityGroupName": "[concat('nsg-', uniquestring(parameters('dnsLabelPrefix')))]" }, "resources": [ { "apiVersion": "2015-06-15", "type": "Microsoft.Network/publicIPAddresses", "name": "[variables('publicIPAddressName')]", "location": "[resourceGroup().location]", "properties": { "publicIPAllocationMethod": "[variables('publicIPAddressType')]", "dnsSettings": { "domainNameLabel": "[parameters('dnsLabelPrefix')]" } } }, { "comments": "Default Network Security Group for template", "type": "Microsoft.Network/networkSecurityGroups", "apiVersion": "2019-08-01", "name": "[variables('networkSecurityGroupName')]", "location": "[resourceGroup().location]", "properties": { "securityRules": [ { "name": "opc-server", "properties": { "priority": 1010, "access": "Allow", "direction": "Inbound", "destinationPortRange": "50000", "protocol": "TCP", "sourceAddressPrefix": "*", "sourcePortRange": "*", "destinationAddressPrefix": "*" } }, { "name": "default-allow-22", "properties": { "priority": 1000, "access": "[if(parameters('allowSsh'), 'Allow', 'Deny')]", "direction": "Inbound", "destinationPortRange": "22", "protocol": "TCP", "sourceAddressPrefix": "*", "sourcePortRange": "*", "destinationAddressPrefix": "*" } } ] } }, { "apiVersion": "2015-06-15", "type": "Microsoft.Network/virtualNetworks", "name": "[variables('virtualNetworkName')]", "location": "[resourceGroup().location]", "dependsOn": [ "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]" ], "properties": { "addressSpace": { "addressPrefixes": [ "[variables('addressPrefix')]" ] }, "subnets": [ { "name": "[variables('subnet1Name')]", "properties": { "addressPrefix": "[variables('subnet1Prefix')]", "networkSecurityGroup": { "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]" } } } ] } }, { "apiVersion": "2015-06-15", "type": "Microsoft.Network/networkInterfaces", "name": "[variables('nicName')]", "location": "[resourceGroup().location]", "dependsOn": [ "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" ], "properties": { "ipConfigurations": [ { "name": "ipconfig1", "properties": { "privateIPAllocationMethod": "Dynamic", "publicIPAddress": { "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" }, "subnet": { "id": "[variables('subnet1Ref')]" } } } ] } }, { "apiVersion": "2016-04-30-preview", "type": "Microsoft.Compute/virtualMachines", "name": "[variables('vmName')]", "location": "[resourceGroup().location]", "dependsOn": [ "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]" ], "properties": { "hardwareProfile": { "vmSize": "[parameters('vmSize')]" }, "osProfile": { "computerName": "[variables('vmName')]", "adminUsername": "[parameters('adminUsername')]", "adminPassword": "[parameters('adminPasswordOrKey')]", "customData": "[base64(concat('#cloud-config\n\napt:\n preserve_sources_list: true\n sources:\n msft.list:\n source: \"deb https://packages.microsoft.com/ubuntu/20.04/prod focal main\"\n key: |\n -----BEGIN PGP PUBLIC KEY BLOCK-----\n Version: GnuPG v1.4.7 (GNU/Linux)\n\n mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT\n LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV\n 7aVWsCzUAF+eb7DC9fPuFLEdxmOEYoPjzrQ7cCnSV4JQxAqhU4T6OjbvRazGl3ag\n OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j\n H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr\n M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs\n ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATUEEwEC\n AB8FAlYxWIwCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJEOs+lK2+EinPGpsH\n /32vKy29Hg51H9dfFJMx0/a/F+5vKeCeVqimvyTM04C+XENNuSbYZ3eRPHGHFLqe\n MNGxsfb7C7ZxEeW7J/vSzRgHxm7ZvESisUYRFq2sgkJ+HFERNrqfci45bdhmrUsy\n 7SWw9ybxdFOkuQoyKD3tBmiGfONQMlBaOMWdAsic965rvJsd5zYaZZFI1UwTkFXV\n KJt3bp3Ngn1vEYXwijGTa+FXz6GLHueJwF0I7ug34DgUkAFvAs8Hacr2DRYxL5RJ\n XdNgj4Jd2/g6T9InmWT0hASljur+dJnzNiNCkbn9KbX7J/qK1IbR8y560yRmFsU+\n NdCFTW7wY0Fb1fWJ+/KTsC4=\n =J6gs\n -----END PGP PUBLIC KEY BLOCK----- \npackages:\n - moby-cli\n - moby-engine\nruncmd:\n - sid=\"', variables('sid'),'\"\n - did=\"', variables('did'),'\"\n - sky=\"', variables('sky'),'\"\n - |\n set -x\n (\n\n # Wait for docker daemon to start\n while [ $(ps -ef | grep -v grep | grep docker | wc -l) -le 0 ]; do \n sleep 3\n done\n\n apt install -y aziot-edge\n\n if [ ! -z \"$sid\" ] && [ ! -z \"$did\" ] && [ ! -z \"$sky\" ]; then\n mkdir /etc/aziot\n wget https://raw.githubusercontent.com/Azure-Samples/iotc-solution-builder/main/iotedgeDeploy/config.toml -O /etc/aziot/config.toml\n sed -i \"s#\\(id_scope = \\).*#\\1\\\"$sid\\\"#g;s#\\(registration_id = \\).*#\\1\\\"$did\\\"#g;s#\\(value = \\).*#\\1\\\"$sky\\\" }#g\" /etc/aziot/config.toml\n iotedge config apply -c /etc/aziot/config.toml\n fi\n\n ) &\n'))]", "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" }, "storageProfile": { "imageReference": { "publisher": "[variables('imagePublisher')]", "offer": "[variables('imageOffer')]", "sku": "[parameters('ubuntuOSVersion')]", "version": "latest" }, "osDisk": { "createOption": "FromImage" } }, "networkProfile": { "networkInterfaces": [ { "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" } ] } } } ], "outputs": { "PublicFQDN": { "type": "string", "value": "[concat('FQDN: ', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn)]" }, "PublicSSH": { "type": "string", "value": "[concat('SSH : ssh ', reference(resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))).osProfile.adminUsername, '@', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn)]" } } } } } } }, "lroApi": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "post", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/devices/${deviceId}/modules/${moduleId}/commands/${commandName}?api-version=2022-07-31", "data": { "connectionTimeout": 10, "responseTimeout": 10, "request": { "command": "GetConfiguredEndpoints_V1", "payload": {} } } } }, "parameters": { "resourceName": [ "iotc-vm-", [ "context.resourceNameSuffix" ] ], "subscriptionId": [ [ "context.subscriptionId" ] ], "resourceGroupName": [ [ "createResourceGroup.resourceGroupName" ] ], "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ], "dnsLabelPrefix": [ [ "context.resourceNameSuffix" ] ], "adminUsername": [ [ "context.resourceNameSuffix" ], "_admin" ], "deviceId": [ [ "registerEdgeGatewayDevice.deviceId" ] ], "scopeId": [ [ "getEdgeDeviceAttestation.scopeId" ] ], "symmetricKey": [ [ "getEdgeDeviceAttestation.symmetricKey.primaryKey" ] ], "moduleId": [ [ "createEdgeCapabilityModel.moduleId" ] ], "commandName": "cmTestOpcPublisherApi", "resourceLocation": [ [ "context.resourceLocation" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "f88c723a-889f-4c4e-86bd-2df043e4c7c4", "name": "Register OPCUA downstream device", "description": "Register an IoT Central OPCUA device to use to send telemetry from the OPCUA endpoint on the edge.", "itemType": "IoTCentral", "itemStep": "registerOpcDevice", "docLink": "https://aka.ms/iotcapi-devices", "api": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "put", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/devices/${deviceId}?api-version=2022-10-31-preview", "data": { "displayName": "${deviceId}", "simulated": false, "enabled": true } } }, "parameters": { "resourceName": "iotc-api-registeropcdevice", "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ], "deviceId": "opc-anomaly-device" }, "outputs": { "status": 500, "message": "" } }, { "id": "6a9a05a1-fec8-4583-9501-218ea90d8868", "name": "Get OPCUA device attestation properties", "description": "Get the scope id and device provisioning key for the registered OPCUA device. These values will be used to provision the device that subscribes to the OPCUA data.", "itemType": "IoTCentral", "itemStep": "getOpcDeviceAttestation", "docLink": "https://aka.ms/iotcapi-devices", "api": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "get", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/devices/${deviceId}/credentials?api-version=2022-10-31-preview" } }, "parameters": { "resourceName": "iotc-api-getopcdeviceattestation", "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ], "deviceId": [ [ "registerOpcDevice.deviceId" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "7bd30308-5373-4bf5-bf4c-945796f227d7", "name": "Provision OPCUA downstream device", "description": "Provision the OPCUA device and subscribe to OPCUA data to send as telemetry.", "itemType": "IoTCentral", "itemStep": "provisionOpcDevice", "docLink": "https://aka.ms/iotcapi-devices", "api": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "post", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/devices/${deviceId}/modules/${moduleId}/commands/${commandName}?api-version=2022-07-31", "data": { "connectionTimeout": 30, "responseTimeout": 30, "request": { "deviceId": "${assetId}", "modelId": "", "deviceCredentials": { "idScope": "${scopeId}", "primaryKey": "${primaryKey}", "secondaryKey": "${secondaryKey}", "type": 2 }, "opcPublisherNodesRequest": { "EndpointUrl": "opc.tcp://${subdomain}.${resourceLocation}.cloudapp.azure.com:50000", "UseSecurity": false, "OpcAuthenticationMode": "Anonymous", "DataSetWriterGroup": "${assetId}", "OpcNodes": [ { "Id": "nsu=http://microsoft.com/Opc/OpcPlc/;s=DipData", "HeartbeatInterval": 0 }, { "Id": "nsu=http://microsoft.com/Opc/OpcPlc/;s=NegativeTrendData", "HeartbeatInterval": 0 }, { "Id": "nsu=http://microsoft.com/Opc/OpcPlc/;s=PositiveTrendData", "HeartbeatInterval": 0 }, { "Id": "nsu=http://microsoft.com/Opc/OpcPlc/;s=SpikeData", "HeartbeatInterval": 0 } ] } } } } }, "parameters": { "resourceName": "iotc-api-provisionopcdevice", "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ], "deviceId": [ [ "registerEdgeGatewayDevice.deviceId" ] ], "moduleId": [ [ "createEdgeCapabilityModel.moduleId" ] ], "commandName": "cmProvisionOpcDevice", "assetId": [ [ "registerOpcDevice.deviceId" ] ], "scopeId": [ [ "getOpcDeviceAttestation.scopeId" ] ], "primaryKey": [ [ "getOpcDeviceAttestation.symmetricKey.primaryKey" ] ], "secondaryKey": [ [ "getOpcDeviceAttestation.symmetricKey.secondaryKey" ] ], "resourceLocation": [ [ "context.resourceLocation" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "9e9dc18b-df5e-4f97-88b9-3fb756d90ea1", "name": "Create ADX cluster", "description": "An Azure Data Explorer (ADX) instance to host and manipulate data exported from the Azure IoT Central instance. This resource will calculate business insights such as overall equipment effeciveness (OEE) and operational efficiency.", "itemType": "AzureDataExplorer", "itemStep": "createAdxCluster", "docLink": "https://docs.microsoft.com/rest/api/azurerekusto/clusters/create-or-update", "api": { "apiAuthScope": "https://management.azure.com/.default", "config": { "method": "put", "url": "https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Kusto/clusters/${clusterName}?api-version=2022-02-01", "data": { "location": "${resourceLocation}", "sku": { "name": "Dev(No SLA)_Standard_E2a_v4", "tier": "Basic", "capacity": 1 }, "identity": { "type": "SystemAssigned" }, "properties": { "enableAutoStop": true, "enableDiskEncryption": false, "enableDoubleEncryption": false, "enablePurge": false, "enableStreamingIngest": true, "engineType": "V3", "restrictOutboundNetworkAccess": "Disabled", "publicNetworkAccess": "Enabled" }, "zones": [ "1", "3", "2" ], "tags": { "iotcsb": "adxcluster" } } } }, "parameters": { "resourceName": [ "iotcadx", [ "context.resourceNameSuffix" ] ], "subscriptionId": [ [ "context.subscriptionId" ] ], "resourceGroupName": [ [ "createResourceGroup.resourceGroupName" ] ], "clusterName": [ "adx", [ "context.resourceNameSuffix" ] ], "resourceLocation": [ [ "context.resourceLocation" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "4dc07b77-9aa5-4bcf-9e5d-8ab2cae800b3", "name": "Create ADX database", "description": "Create a database in the newly created ADX cluster", "itemType": "AzureDataExplorer", "itemStep": "createAdxDatabase", "docLink": "https://docs.microsoft.com/rest/api/azurerekusto/databases/create-or-update", "api": { "apiAuthScope": "https://management.azure.com/.default", "config": { "method": "put", "url": "https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Kusto/clusters/${clusterName}/databases/${databaseName}?api-version=2022-02-01", "data": { "kind": "ReadWrite", "location": "${resourceLocation}", "properties": { "softDeletePeriod": "P1D" } } } }, "parameters": { "resourceName": "adx-api-createadxdb", "subscriptionId": [ [ "context.subscriptionId" ] ], "resourceGroupName": [ [ "createResourceGroup.resourceGroupName" ] ], "clusterName": [ [ "createAdxCluster.clusterName" ] ], "databaseName": [ [ "createAdxCluster.clusterName" ], "-db" ], "resourceLocation": [ [ "context.resourceLocation" ] ] }, "outputs": { "status": 500, "message": "", "resource": { "adxDatabaseName": "" } } }, { "id": "728c13c6-3454-42c9-bc5b-d468f64d1746", "name": "Add Service Principal", "description": "Add the IoT Central Service Principal to the database with the role to ingest data to any table.", "itemType": "AzureDataExplorer", "itemStep": "addAdxServicePrincipal", "docLink": "https://docs.microsoft.com/rest/api/azurerekusto/databases/add-principals", "api": { "apiAuthScope": "https://management.azure.com/.default", "config": { "method": "post", "url": "https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Kusto/clusters/${clusterName}/databases/${databaseName}/addPrincipals?api-version=2022-02-01", "data": { "value": [ { "name": "${adxClusterDomainName}", "role": "Admin", "type": "App", "fqn": "aadapp=${iotCentralAppPrincipalId}", "email": "", "appId": "${iotCentralAppPrincipalId}" } ] } } }, "parameters": { "resourceName": "adx-api-addserviceprincipal", "subscriptionId": [ [ "context.subscriptionId" ] ], "resourceGroupName": [ [ "createResourceGroup.resourceGroupName" ] ], "clusterName": [ [ "createAdxCluster.clusterName" ] ], "databaseName": [ [ "createAdxDatabase.databaseName" ] ], "adxClusterDomainName": [ [ "context.resourceNameSuffix" ] ], "iotCentralAppPrincipalId": [ [ "createIotCentralApp.identity.principalId" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "4b801913-b5ba-44a6-912f-e3ca6507a9db", "name": "Create ADX raw data table", "description": "Create the ADX table that will hold the raw opcua data exported from IoT Central.", "itemType": "AzureDataExplorer", "itemStep": "createAdxRawOpcTable", "docLink": "https://docs.microsoft.com/azure/data-explorer/kusto/api/rest/request", "api": { "apiAuthScope": "https://${clusterName}.${resourceLocation}.kusto.windows.net/.default", "config": { "method": "post", "url": "https://${clusterName}.${resourceLocation}.kusto.windows.net/v1/rest/mgmt", "data": { "db": "${databaseName}", "csl": ".create table ${rawDataTableName} (applicationId:string, deviceId:string, deviceName:string, templateName:string, enqueuedTime:datetime, telemetry:dynamic)" } } }, "parameters": { "resourceName": "adx-api-createrawdatatable", "clusterName": [ [ "createAdxCluster.clusterName" ] ], "resourceLocation": [ [ "context.resourceLocation" ] ], "databaseName": [ [ "createAdxDatabase.databaseName" ] ], "rawDataTableName": "rawOpcData" }, "outputs": { "status": 500, "message": "" } }, { "id": "c35922f8-2431-4bb7-aa5e-e2fe422f3968", "name": "Enable streaming ingestion", "description": "Enable streaming ingestion on the raw data table.", "itemType": "AzureDataExplorer", "itemStep": "enableAdxStreamingPolicy", "docLink": "https://docs.microsoft.com/azure/data-explorer/kusto/api/rest/request", "api": { "apiAuthScope": "https://${clusterName}.${resourceLocation}.kusto.windows.net/.default", "config": { "method": "post", "url": "https://${clusterName}.${resourceLocation}.kusto.windows.net/v1/rest/mgmt", "data": { "db": "${databaseName}", "csl": ".alter table ${rawDataTableName} policy streamingingestion enable" } } }, "parameters": { "resourceName": "adx-api-enablestreaming", "clusterName": [ [ "createAdxCluster.clusterName" ] ], "resourceLocation": [ [ "context.resourceLocation" ] ], "databaseName": [ [ "createAdxDatabase.databaseName" ] ], "rawDataTableName": [ [ "createAdxRawOpcTable.rawDataTableName" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "29a3e985-74bd-4157-b697-982800f15ffa", "name": "Create device data table", "description": "Create the ADX table to hold the transformed raw data that represents opc data from the device.", "itemType": "AzureDataExplorer", "itemStep": "createAdxOpcDeviceTable", "docLink": "https://docs.microsoft.com/azure/data-explorer/kusto/api/rest/request", "api": { "apiAuthScope": "https://${clusterName}.${resourceLocation}.kusto.windows.net/.default", "config": { "method": "post", "url": "https://${clusterName}.${resourceLocation}.kusto.windows.net/v1/rest/mgmt", "data": { "db": "${databaseName}", "csl": ".create table ${deviceDataTableName} (deviceId:string, deviceName:string, enqueuedTime:datetime, sourceTimestamp:datetime, dataSetWriterId:string, messageId:long, tag:string, value:real)" } } }, "parameters": { "resourceName": "adx-api-createdevicetable", "clusterName": [ [ "createAdxCluster.clusterName" ] ], "resourceLocation": [ [ "context.resourceLocation" ] ], "databaseName": [ [ "createAdxDatabase.databaseName" ] ], "deviceDataTableName": "opcDeviceData" }, "outputs": { "status": 500, "message": "" } }, { "id": "b54edfdf-d9ef-4e9a-bad7-5522d7a4d48e", "name": "Create ADX table update function", "description": "Create a function that will transform data from the raw data table to the basic device data table.", "itemType": "AzureDataExplorer", "itemStep": "createAdxTableUpdateFunction", "docLink": "https://docs.microsoft.com/azure/data-explorer/kusto/api/rest/request", "api": { "apiAuthScope": "https://${clusterName}.${resourceLocation}.kusto.windows.net/.default", "config": { "method": "post", "url": "https://${clusterName}.${resourceLocation}.kusto.windows.net/v1/rest/mgmt", "data": { "db": "${databaseName}", "csl": ".create-or-alter function with (docstring = 'basic device opc data update policy', folder = 'opcfunctions') ${updateFunctionName} { ${rawDataTableName} | where telemetry.Messages has 'payload' | mv-expand telemetry.Messages | project deviceId, deviceName, enqueuedTime, messageId=telemetry.MessageId, dataSetWriterId=telemetry_Messages.DataSetWriterId, data=telemetry_Messages.Payload | mv-expand data | extend nodeId = tostring(bag_keys(data)[0]) | extend value= toreal(data[nodeId].Value) | extend sourceTimestamp = todatetime(data[nodeId].SourceTimestamp) | extend messageId = tolong(messageId) | extend dataSetWriterId = tostring(dataSetWriterId) | extend tag=tostring(split(nodeId, 's=')[1]) | project deviceId, deviceName, enqueuedTime, sourceTimestamp, dataSetWriterId, messageId, tag, value }" } } }, "parameters": { "resourceName": "adx-api-createupdatefunction", "clusterName": [ [ "createAdxCluster.clusterName" ] ], "resourceLocation": [ [ "context.resourceLocation" ] ], "databaseName": [ [ "createAdxDatabase.databaseName" ] ], "updateFunctionName": "extractOpcTagData", "rawDataTableName": [ [ "createAdxRawOpcTable.rawDataTableName" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "c5bc0d59-502b-46b5-b196-b81c1b995953", "name": "Alter device table update policy", "description": "Set update policy on raw data table to execute update function to transform data into device table.", "itemType": "AzureDataExplorer", "itemStep": "alterAdxTableUpdatePolicy", "docLink": "https://docs.microsoft.com/azure/data-explorer/kusto/api/rest/request", "api": { "apiAuthScope": "https://${clusterName}.${resourceLocation}.kusto.windows.net/.default", "config": { "method": "post", "url": "https://${clusterName}.${resourceLocation}.kusto.windows.net/v1/rest/mgmt", "data": { "db": "${databaseName}", "csl": ".alter table ${deviceDataTableName} policy update @\"[{ 'IsEnabled':true, 'Source':'${rawDataTableName}', 'Query':'extractOpcTagData()', 'IsTransactional':false, 'PropagateIngestionProperties':false}]\"" } } }, "parameters": { "resourceName": "adx-api-createupdatepolicy", "clusterName": [ [ "createAdxCluster.clusterName" ] ], "resourceLocation": [ [ "context.resourceLocation" ] ], "databaseName": [ [ "createAdxDatabase.databaseName" ] ], "deviceDataTableName": [ [ "createAdxOpcDeviceTable.deviceDataTableName" ] ], "rawDataTableName": [ [ "createAdxRawOpcTable.rawDataTableName" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "5169401c-b87a-40ba-8d10-12f33aa56d08", "name": "Create IoT Central export destination", "description": "Create IoT Central data export destination configured for the Azure Data Explore database table.", "itemType": "IoTCentral", "itemStep": "createCdeAdxDestination", "docLink": "https://aka.ms/iotcapi-destinations", "api": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "put", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/dataExport/destinations/${cdeDestinationName}?api-version=2022-10-31-preview", "data": { "displayName": "SB ADX Destination", "type": "dataexplorer@v1", "clusterUrl": "https://${clusterName}.${resourceLocation}.kusto.windows.net", "database": "${databaseName}", "table": "${rawDataTableName}", "authorization": { "type": "systemAssignedManagedIdentity" } } } }, "parameters": { "resourceName": "iotc-api-createexportdestination", "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ], "cdeDestinationName": "sb-adx-destination", "clusterName": [ [ "createAdxCluster.clusterName" ] ], "databaseName": [ [ "createAdxDatabase.databaseName" ] ], "rawDataTableName": [ [ "createAdxRawOpcTable.rawDataTableName" ] ], "resourceLocation": [ [ "context.resourceLocation" ] ] }, "outputs": { "status": 500, "message": "" } }, { "id": "ab1deb10-5195-4f2a-a66f-fcd3c6f3eb9b", "name": "Create IoT Central export", "description": "Create IoT Central data export definition configured for the Azure Data Explore database table.", "itemType": "IoTCentral", "itemStep": "createCdeAdxExport", "docLink": "https://aka.ms/iotcapi-cde", "api": { "apiAuthScope": "https://apps.azureiotcentral.com/.default", "config": { "method": "put", "url": "https://${subdomain}.${iotCentralBaseDomain}/api/dataExport/exports/${cdeExportName}?api-version=2022-10-31-preview", "data": { "displayName": "SB ADX Export", "enabled": true, "source": "telemetry", "filter": "SELECT * FROM devices WHERE $template != \"${templateId}\"", "destinations": [ { "id": "${cdeDestinationName}", "transform": "{\n applicationId: .applicationId,\n deviceId: .device.id,\n deviceName: .device.name,\n templateName: .device.templateName,\n enqueuedTime: .enqueuedTime,\n telemetry: .telemetry | map({ key: .name, value: .value }) | from_entries,\n }" } ] } } }, "parameters": { "resourceName": "iotc-api-createexport", "subdomain": [ [ "context.resourceNameSuffix" ] ], "iotCentralBaseDomain": [ [ "context.iotCentralBaseDomain" ] ], "cdeExportName": "sb-adx-export", "cdeDestinationName": [ [ "createCdeAdxDestination.cdeDestinationName" ] ], "templateId": [ [ "createEdgeCapabilityModel.templateId" ] ] }, "outputs": { "status": 500, "message": "" } } ] }