diff --git a/Doc/Asset/Equipment/ICT-/Controller/BACnet-.md b/Doc/Asset/Equipment/ICT-/Controller/BACnet-.md deleted file mode 100644 index 06df61a53..000000000 --- a/Doc/Asset/Equipment/ICT-/Controller/BACnet-.md +++ /dev/null @@ -1,49 +0,0 @@ -[Index](../../../../index.md) > [Asset](../../../Asset.md) > [Equipment](../../Equipment.md) > [ICTEquipment](../ICTEquipment.md) > [Controller](Controller.md) > [BACnetController](#) -# BACnetController - -BACnet controller. - - -**Display name:** BACnet Controller
-**DTMI:** dtmi:org:w3id:rec:BACnetController;1 - ---- - -## Relationships - -### Inherited Relationships -* **[Equipment](../../Equipment.md):** feeds, isFedBy -* **[Asset](../../../Asset.md):** commissionedBy, documentation, geometry, hasPart, hasPoint, installedBy, isPartOf, locatedIn, manufacturedBy, mountedOn, servicedBy - ---- - -## Properties - -### Inherited Properties -* **[Equipment](../../Equipment.md):** operationalStageCount -* **[Asset](../../../Asset.md):** assetTag, commissioningDate, customProperties, customTags, identifiers, initialCost, installationDate, IPAddress, MACAddress, maintenanceInterval, modelNumber, name, serialNumber, turnoverDate, weight -* **[ICTEquipment](../ICTEquipment.md):** heightRUs, numberOfPorts, standard - ---- - -## Target Of -### General -* [Point](../../../../Point/Point.md).isPointOf -* [Agent](../../../../Agent/Agent.md).owns -* [Space](../../../../Space/Space.md).isLocationOf -* [Equipment](../../Equipment.md).feeds -* [Equipment](../../Equipment.md).isFedBy -* [Architecture](../../../../Space/Architecture/Architecture.md).isFedBy -* [Document](../../../../Information/Document/Document.md).documentTopic -* [Document](../../../../Information/Document/Document.md).url -* [Lease](../../../../Event/Lease.md).leaseOf -* [PointOfInterest](../../../../Information/PointOfInterest.md).objectOfInterest -* [Portfolio](../../../../Collection/Portfolio.md).includes -* [ServiceObject](../../../../Information/ServiceObject/ServiceObject.md).relatedTo -* [Meter](../../Meter/Meter.md).meters -### Inherited -* [Loop](../../../../Collection/Loop/Loop.md).includes -* [System](../../../../Collection/System/System.md).includes -* [Asset](../../../Asset.md).hasPart -* [Asset](../../../Asset.md).isPartOf -* [EquipmentCollection](../../../../Collection/Equipment-.md).includes diff --git a/Doc/Asset/Equipment/ICT-/Controller/Modbus-.md b/Doc/Asset/Equipment/ICT-/Controller/Modbus-.md deleted file mode 100644 index 7a4f417ab..000000000 --- a/Doc/Asset/Equipment/ICT-/Controller/Modbus-.md +++ /dev/null @@ -1,49 +0,0 @@ -[Index](../../../../index.md) > [Asset](../../../Asset.md) > [Equipment](../../Equipment.md) > [ICTEquipment](../ICTEquipment.md) > [Controller](Controller.md) > [ModbusController](#) -# ModbusController - -Modbus controller. - - -**Display name:** Modbus Controller
-**DTMI:** dtmi:org:w3id:rec:ModbusController;1 - ---- - -## Relationships - -### Inherited Relationships -* **[Equipment](../../Equipment.md):** feeds, isFedBy -* **[Asset](../../../Asset.md):** commissionedBy, documentation, geometry, hasPart, hasPoint, installedBy, isPartOf, locatedIn, manufacturedBy, mountedOn, servicedBy - ---- - -## Properties - -### Inherited Properties -* **[Equipment](../../Equipment.md):** operationalStageCount -* **[Asset](../../../Asset.md):** assetTag, commissioningDate, customProperties, customTags, identifiers, initialCost, installationDate, IPAddress, MACAddress, maintenanceInterval, modelNumber, name, serialNumber, turnoverDate, weight -* **[ICTEquipment](../ICTEquipment.md):** heightRUs, numberOfPorts, standard - ---- - -## Target Of -### General -* [Point](../../../../Point/Point.md).isPointOf -* [Agent](../../../../Agent/Agent.md).owns -* [Space](../../../../Space/Space.md).isLocationOf -* [Equipment](../../Equipment.md).feeds -* [Equipment](../../Equipment.md).isFedBy -* [Architecture](../../../../Space/Architecture/Architecture.md).isFedBy -* [Document](../../../../Information/Document/Document.md).documentTopic -* [Document](../../../../Information/Document/Document.md).url -* [Lease](../../../../Event/Lease.md).leaseOf -* [PointOfInterest](../../../../Information/PointOfInterest.md).objectOfInterest -* [Portfolio](../../../../Collection/Portfolio.md).includes -* [ServiceObject](../../../../Information/ServiceObject/ServiceObject.md).relatedTo -* [Meter](../../Meter/Meter.md).meters -### Inherited -* [Loop](../../../../Collection/Loop/Loop.md).includes -* [System](../../../../Collection/System/System.md).includes -* [Asset](../../../Asset.md).hasPart -* [Asset](../../../Asset.md).isPartOf -* [EquipmentCollection](../../../../Collection/Equipment-.md).includes diff --git a/Doc/Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md b/Doc/Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md new file mode 100644 index 000000000..f994ab273 --- /dev/null +++ b/Doc/Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md @@ -0,0 +1,50 @@ +[Index](../../../index.md) > [Point](../../Point.md) > [Parameter](../Parameter.md) > [GatewayConnectionParameter](#) +# GatewayConnectionParameter + +**Display name:** Gateway Connection Parameter
+**DTMI:** dtmi:org:w3id:rec:GatewayConnectionParameter;1 + +--- + +## Child interfaces +* [IoTHubConnectionParameter](IoTHubConnectionParameter.md) + +--- + +## Relationships + +### Inherited Relationships +* **[Point](../../Point.md):** isPointOf + +--- + +## Properties + +### Inherited Properties +* **[Parameter](../Parameter.md):** lastKnownValue +* **[Point](../../Point.md):** aggregate, customProperties, customTags, hasQuantity, hasSubstance, identifiers, name + +--- + +## Target Of +### General +* [Portfolio](../../../Collection/Portfolio.md).includes +* [PointOfInterest](../../../Information/PointOfInterest.md).objectOfInterest +* [Agent](../../../Agent/Agent.md).owns +* [Space](../../../Space/Space.md).isLocationOf +* [Lease](../../../Event/Lease.md).leaseOf +* [Point](../../Point.md).isPointOf +* [Document](../../../Information/Document/Document.md).documentTopic +* [Document](../../../Information/Document/Document.md).url +* [ServiceObject](../../../Information/ServiceObject/ServiceObject.md).relatedTo +* [Architecture](../../../Space/Architecture/Architecture.md).isFedBy +* [Equipment](../../../Asset/Equipment/Equipment.md).feeds +* [Equipment](../../../Asset/Equipment/Equipment.md).isFedBy +* [Meter](../../../Asset/Equipment/Meter/Meter.md).meters +### Inherited +* [ActuationEvent](../../../Event/Point-/ActuationEvent.md).targetPoint +* [Architecture](../../../Space/Architecture/Architecture.md).hasPoint +* [Asset](../../../Asset/Asset.md).hasPoint +* [ExceptionEvent](../../../Event/Point-/ExceptionEvent.md).sourcePoint +* [ObservationEvent](../../../Event/Point-/ObservationEvent/ObservationEvent.md).sourcePoint +* [ServiceObject](../../../Information/ServiceObject/ServiceObject.md).producedBy diff --git a/Doc/Point/Parameter/GatewayConnection-/IoTHubConnectionParameter.md b/Doc/Point/Parameter/GatewayConnection-/IoTHubConnectionParameter.md new file mode 100644 index 000000000..ef2c5eede --- /dev/null +++ b/Doc/Point/Parameter/GatewayConnection-/IoTHubConnectionParameter.md @@ -0,0 +1,49 @@ +[Index](../../../index.md) > [Point](../../Point.md) > [Parameter](../Parameter.md) > [GatewayConnectionParameter](GatewayConnectionParameter.md) > [IoTHubConnectionParameter](#) +# IoTHubConnectionParameter + +**Display name:** IoT Hub Connection Parameter
+**DTMI:** dtmi:org:w3id:rec:IoTHubConnectionParameter;1 + +--- + +## Relationships + +### Inherited Relationships +* **[Point](../../Point.md):** isPointOf + +--- + +## Properties + +|Name|Display name|Description|Schema|Writable| +|-|-|-|-|-| +|deviceId|**en**: Device ID|**en**: The Device ID of the device connected to Azure IoT Hub|string|True| +|hostname|**en**: Hostname|**en**: The Hostname of the Azure IoT Hub the gateway is connected to|string|True| +### Inherited Properties +* **[Parameter](../Parameter.md):** lastKnownValue +* **[Point](../../Point.md):** aggregate, customProperties, customTags, hasQuantity, hasSubstance, identifiers, name + +--- + +## Target Of +### General +* [Portfolio](../../../Collection/Portfolio.md).includes +* [PointOfInterest](../../../Information/PointOfInterest.md).objectOfInterest +* [Agent](../../../Agent/Agent.md).owns +* [Space](../../../Space/Space.md).isLocationOf +* [Lease](../../../Event/Lease.md).leaseOf +* [Point](../../Point.md).isPointOf +* [Document](../../../Information/Document/Document.md).documentTopic +* [Document](../../../Information/Document/Document.md).url +* [ServiceObject](../../../Information/ServiceObject/ServiceObject.md).relatedTo +* [Architecture](../../../Space/Architecture/Architecture.md).isFedBy +* [Equipment](../../../Asset/Equipment/Equipment.md).feeds +* [Equipment](../../../Asset/Equipment/Equipment.md).isFedBy +* [Meter](../../../Asset/Equipment/Meter/Meter.md).meters +### Inherited +* [ActuationEvent](../../../Event/Point-/ActuationEvent.md).targetPoint +* [Architecture](../../../Space/Architecture/Architecture.md).hasPoint +* [Asset](../../../Asset/Asset.md).hasPoint +* [ExceptionEvent](../../../Event/Point-/ExceptionEvent.md).sourcePoint +* [ObservationEvent](../../../Event/Point-/ObservationEvent/ObservationEvent.md).sourcePoint +* [ServiceObject](../../../Information/ServiceObject/ServiceObject.md).producedBy diff --git a/Doc/index.full.md b/Doc/index.full.md index 32e7db81f..97126bb7c 100644 --- a/Doc/index.full.md +++ b/Doc/index.full.md @@ -176,8 +176,10 @@ * [ICTEquipment](Asset/Equipment/ICT-/ICTEquipment.md) * [AudioVisualEquipment](Asset/Equipment/ICT-/AudioVisualEquipment.md) * [Controller](Asset/Equipment/ICT-/Controller/Controller.md) - * [BACnetController](Asset/Equipment/ICT-/Controller/BACnet-.md) - * [ModbusController](Asset/Equipment/ICT-/Controller/Modbus-.md) + * [BACnetController](Asset/Equipment/ICT-/Controller/BACnet-/BACnetController.md) + * [BACnetAndModbusController](Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md) + * [ModbusController](Asset/Equipment/ICT-/Controller/Modbus-/ModbusController.md) + * [BACnetAndModbusController](Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md) * [DataNetworkEquipment](Asset/Equipment/ICT-/DataNetworkEquipment/DataNetworkEquipment.md) * [EthernetPort](Asset/Equipment/ICT-/DataNetworkEquipment/EthernetPort.md) * [EthernetSwitch](Asset/Equipment/ICT-/DataNetworkEquipment/EthernetSwitch.md) @@ -593,6 +595,8 @@ * [Temperature_Alarm_Sensitivity_Parameter](Point/Parameter/Alarm_Sensitivity-/Temperature-.md) * [Delay_Parameter](Point/Parameter/Delay-/Delay_Parameter.md) * [Alarm_Delay_Parameter](Point/Parameter/Delay-/Alarm-.md) + * [GatewayConnectionParameter](Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md) + * [IoTHubConnectionParameter](Point/Parameter/GatewayConnection-/IoTHubConnectionParameter.md) * [Humidity_Parameter](Point/Parameter/Humidity-/Humidity_Parameter.md) * [High_Humidity_Alarm_Parameter](Point/Parameter/Humidity-/High_Humidity_Alarm_Parameter.md) * [Humidity_Tolerance_Parameter](Point/Parameter/Tolerance-/Humidity-.md) diff --git a/OntologyDecisionRecords/ODR 002 GatewayConnectionParameter.md b/OntologyDecisionRecords/ODR 002 GatewayConnectionParameter.md new file mode 100644 index 000000000..5c5b495d5 --- /dev/null +++ b/OntologyDecisionRecords/ODR 002 GatewayConnectionParameter.md @@ -0,0 +1,19 @@ +# ODR 002: GatewayConnectionParameter + +## Context + +An IoT [Gateway](../Doc/Asset/Equipment/ICT-/Gateway.md) is a device responsible for handling transfer data to different communication protocols. A modern IoT gateway enables bidirectional communication. + +In the case that a cloud service needs to send a cloud-to-device message to the gateway, the connection information needed to accomplish this could be represented as a [Parameter](../Doc/Point/Parameter/Parameter.md). + +## Decisions + +1. We will create a [GatewayConnectionParameter](../Doc/Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md) that uses the REC DTMI `dtmi:org:w3id:rec:GatewayConnectionParameter;1`. + +1. We will NOT model security credentials in the connection parameters; it is recommended that a key vault, or similar technology, is used to store credentials. + +## Consequences + +Application services will need to implement application logic to support the different model extensions. + +Application services will be responsible for securing the appropriate authorization to send messages. The GatewayConnectionParameters just provide configuration parameters. \ No newline at end of file diff --git a/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-.json b/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-.json deleted file mode 100644 index 146d89145..000000000 --- a/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@id": "dtmi:org:w3id:rec:BACnetController;1", - "@type": "Interface", - "description": { - "en": "BACnet controller." - }, - "displayName": { - "en": "BACnet Controller" - }, - "@context": ["dtmi:dtdl:context;2"], - "extends": "dtmi:org:w3id:rec:Controller;1" -} diff --git a/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/Modbus-.json b/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/Modbus-.json deleted file mode 100644 index 99ede8935..000000000 --- a/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/Modbus-.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@id": "dtmi:org:w3id:rec:ModbusController;1", - "@type": "Interface", - "description": { - "en": "Modbus controller." - }, - "displayName": { - "en": "Modbus Controller" - }, - "@context": ["dtmi:dtdl:context;2"], - "extends": "dtmi:org:w3id:rec:Controller;1" -} diff --git a/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/GatewayConnectionParameter.json b/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/GatewayConnectionParameter.json new file mode 100644 index 000000000..47d10f369 --- /dev/null +++ b/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/GatewayConnectionParameter.json @@ -0,0 +1,9 @@ +{ + "@id": "dtmi:org:w3id:rec:GatewayConnectionParameter;1", + "@type": "Interface", + "displayName": "Gateway Connection Parameter", + "extends": "dtmi:org:brickschema:schema:Brick:Parameter;1", + "@context": [ + "dtmi:dtdl:context;2" + ] +} \ No newline at end of file diff --git a/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/IoT-/IoTHubConnectionParameter.json b/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/IoT-/IoTHubConnectionParameter.json new file mode 100644 index 000000000..55bc630fd --- /dev/null +++ b/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/IoT-/IoTHubConnectionParameter.json @@ -0,0 +1,35 @@ +{ + "@id": "dtmi:org:w3id:rec:IoTHubConnectionParameter;1", + "@type": "Interface", + "displayName": "IoT Hub Connection Parameter", + "extends": "dtmi:org:w3id:rec:GatewayConnectionParameter;1", + "contents": [ + { + "@type": "Property", + "schema": "string", + "description": { + "en": "The Device ID of the device connected to Azure IoT Hub" + }, + "displayName": { + "en": "Device ID" + }, + "name": "deviceId", + "writable": true + }, + { + "@type": "Property", + "schema": "string", + "description": { + "en": "The Hostname of the Azure IoT Hub the gateway is connected to" + }, + "displayName": { + "en": "Hostname" + }, + "name": "hostname", + "writable": true + } + ], + "@context": [ + "dtmi:dtdl:context;2" + ] +} \ No newline at end of file