From 8f94516f0a387322a728821cd509c105ae7e321a Mon Sep 17 00:00:00 2001 From: Christopher Bupp Date: Mon, 13 Mar 2023 11:13:46 -0400 Subject: [PATCH 1/6] Creating a BACnetAndModbusController and a IoTHubConnectionParameter --- .../BACnet-/BACnetAndModbusController.md | 49 +++++++++++++++++ .../Controller/BACnet-/BACnetController.md | 54 +++++++++++++++++++ .../Controller/Modbus-/ModbusController.md | 54 +++++++++++++++++++ .../GatewayConnectionParameter.md | 50 +++++++++++++++++ .../IoTHubConnectionParameter.md | 49 +++++++++++++++++ Doc/index.full.md | 8 ++- .../Equipment/ICT-/Controller/BACnet-2.json | 15 ++++++ .../Gateway-/GatewayConnectionParameter.json | 9 ++++ .../IoT-/IoTHubConnectionParameter.json | 35 ++++++++++++ 9 files changed, 321 insertions(+), 2 deletions(-) create mode 100644 Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md create mode 100644 Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetController.md create mode 100644 Doc/Asset/Equipment/ICT-/Controller/Modbus-/ModbusController.md create mode 100644 Doc/Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md create mode 100644 Doc/Point/Parameter/GatewayConnection-/IoTHubConnectionParameter.md create mode 100644 Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-2.json create mode 100644 Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/GatewayConnectionParameter.json create mode 100644 Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/IoT-/IoTHubConnectionParameter.json diff --git a/Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md b/Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md new file mode 100644 index 000000000..0fa87c528 --- /dev/null +++ b/Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md @@ -0,0 +1,49 @@ +[Index](../../../../../index.md) > [Asset](../../../../Asset.md) > [Equipment](../../../Equipment.md) > [ICTEquipment](../../ICTEquipment.md) > [Controller](../Controller.md) > [BACnetController](BACnetController.md) > [BACnetAndModbusController](#) +# BACnetAndModbusController + +A controller capable of communicating with both BACnet and Modbus. + + +**Display name:** BACnet/Modbus Controller
+**DTMI:** dtmi:org:w3id:rec:BACnetAndModbusController;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 +* [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/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](../../../Equipment.md).feeds +* [Equipment](../../../Equipment.md).isFedBy +* [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/BACnet-/BACnetController.md b/Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetController.md new file mode 100644 index 000000000..11d88dc01 --- /dev/null +++ b/Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetController.md @@ -0,0 +1,54 @@ +[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 + +--- + +## Child interfaces +* [BACnetAndModbusController](BACnetAndModbusController.md) + +--- + +## 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 +* [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/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](../../../Equipment.md).feeds +* [Equipment](../../../Equipment.md).isFedBy +* [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-/ModbusController.md b/Doc/Asset/Equipment/ICT-/Controller/Modbus-/ModbusController.md new file mode 100644 index 000000000..d77cf7f65 --- /dev/null +++ b/Doc/Asset/Equipment/ICT-/Controller/Modbus-/ModbusController.md @@ -0,0 +1,54 @@ +[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 + +--- + +## Child interfaces +* [BACnetAndModbusController](../BACnet-/BACnetAndModbusController.md) + +--- + +## 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 +* [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/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](../../../Equipment.md).feeds +* [Equipment](../../../Equipment.md).isFedBy +* [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/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-2.json b/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-2.json new file mode 100644 index 000000000..ca8e0b473 --- /dev/null +++ b/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-2.json @@ -0,0 +1,15 @@ +{ + "@id": "dtmi:org:w3id:rec:BACnetAndModbusController;1", + "@type": "Interface", + "description": { + "en": "A controller capable of communicating with both BACnet and Modbus." + }, + "displayName": { + "en": "BACnet/Modbus Controller" + }, + "@context": ["dtmi:dtdl:context;2"], + "extends": [ + "dtmi:org:w3id:rec:BACnetController;1", + "dtmi:org:w3id:rec:ModbusController;1" + ] +} \ No newline at end of file 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 From e70c60dfada2b795f099193996d43bd612eb3fe3 Mon Sep 17 00:00:00 2001 From: Christopher Bupp Date: Mon, 13 Mar 2023 11:21:41 -0400 Subject: [PATCH 2/6] renamed the file. Unsure of the file name pattern --- .../Controller/{BACnet-2.json => BACnetAndModbusController.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/{BACnet-2.json => BACnetAndModbusController.json} (100%) diff --git a/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-2.json b/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnetAndModbusController.json similarity index 100% rename from Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-2.json rename to Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnetAndModbusController.json From 637a6aab7b4becc83a65e99d529bb025f24e3195 Mon Sep 17 00:00:00 2001 From: Christopher Bupp Date: Wed, 5 Apr 2023 16:36:03 -0400 Subject: [PATCH 3/6] Removing old doc files. Adding 2 ODRs to capture relevant decisions that this PR requires. --- .../Equipment/ICT-/Controller/BACnet-.md | 49 ------------------- .../Equipment/ICT-/Controller/Modbus-.md | 49 ------------------- .../ODR TBD: GatewayConnectionParameter.md | 19 +++++++ .../ODR TBD: Multiple Inheritance.md | 17 +++++++ 4 files changed, 36 insertions(+), 98 deletions(-) delete mode 100644 Doc/Asset/Equipment/ICT-/Controller/BACnet-.md delete mode 100644 Doc/Asset/Equipment/ICT-/Controller/Modbus-.md create mode 100644 OntologyDecisionRecords/ODR TBD: GatewayConnectionParameter.md create mode 100644 OntologyDecisionRecords/ODR TBD: Multiple Inheritance.md 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/OntologyDecisionRecords/ODR TBD: GatewayConnectionParameter.md b/OntologyDecisionRecords/ODR TBD: GatewayConnectionParameter.md new file mode 100644 index 000000000..b0e87a062 --- /dev/null +++ b/OntologyDecisionRecords/ODR TBD: GatewayConnectionParameter.md @@ -0,0 +1,19 @@ +# ODR TBD: 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/OntologyDecisionRecords/ODR TBD: Multiple Inheritance.md b/OntologyDecisionRecords/ODR TBD: Multiple Inheritance.md new file mode 100644 index 000000000..928c14a69 --- /dev/null +++ b/OntologyDecisionRecords/ODR TBD: Multiple Inheritance.md @@ -0,0 +1,17 @@ +# ODR TBD: Multiple Model Inheritance + +## Context + +While building out the core ontology, there have been scenarios where models have needed to extend multiple models. One example is a device that is a [Gateway](../Doc/Asset/Equipment/ICT-/Gateway.md), a [BACnetController](../Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetController.md), and a [ModbusController](../Doc/Asset/Equipment/ICT-/Controller/Modbus-/ModbusController.md). + +DTDLv2 has a limitation of only allowing 2 interfaces to be extended. In the above scenario, it makes sense to create a [BACnetAndModbusController](../Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md). The new model is now able to extend Gateway and BACnetAndModbusController. + +## Decisions + +1. We will allow models that extend up to 2 other models. +1. We will enable RealEstateCore tools to support multiple inheritance + +## Consequences + +1. We will need to update DTDL2MD to list out all extended models. +1. We will need to update DTDL2SHACL to handle multiple extensions. \ No newline at end of file From 0df911fecb86d4e924bd9ee7818b1fd9d305839e Mon Sep 17 00:00:00 2001 From: Christopher Bupp Date: Thu, 9 Nov 2023 09:20:27 -0500 Subject: [PATCH 4/6] Removed the specific types of Controllers. Industry trend is that most controllers support multiple protocols. --- .../Asset/Equipment/ICT-/Controller/BACnet-.json | 12 ------------ .../Controller/BACnetAndModbusController.json | 15 --------------- .../Asset/Equipment/ICT-/Controller/Modbus-.json | 12 ------------ 3 files changed, 39 deletions(-) delete mode 100644 Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-.json delete mode 100644 Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnetAndModbusController.json delete mode 100644 Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/Modbus-.json 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/BACnetAndModbusController.json b/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnetAndModbusController.json deleted file mode 100644 index ca8e0b473..000000000 --- a/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnetAndModbusController.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "@id": "dtmi:org:w3id:rec:BACnetAndModbusController;1", - "@type": "Interface", - "description": { - "en": "A controller capable of communicating with both BACnet and Modbus." - }, - "displayName": { - "en": "BACnet/Modbus Controller" - }, - "@context": ["dtmi:dtdl:context;2"], - "extends": [ - "dtmi:org:w3id:rec:BACnetController;1", - "dtmi:org:w3id:rec:ModbusController;1" - ] -} \ No newline at end of file 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" -} From 75d206af5c674e95a3375f8fdd00574c89d319ce Mon Sep 17 00:00:00 2001 From: Christopher Bupp Date: Thu, 9 Nov 2023 09:23:22 -0500 Subject: [PATCH 5/6] removing documentation. --- .../BACnet-/BACnetAndModbusController.md | 49 ----------------- .../Controller/BACnet-/BACnetController.md | 54 ------------------- .../Controller/Modbus-/ModbusController.md | 54 ------------------- 3 files changed, 157 deletions(-) delete mode 100644 Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md delete mode 100644 Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetController.md delete mode 100644 Doc/Asset/Equipment/ICT-/Controller/Modbus-/ModbusController.md diff --git a/Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md b/Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md deleted file mode 100644 index 0fa87c528..000000000 --- a/Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md +++ /dev/null @@ -1,49 +0,0 @@ -[Index](../../../../../index.md) > [Asset](../../../../Asset.md) > [Equipment](../../../Equipment.md) > [ICTEquipment](../../ICTEquipment.md) > [Controller](../Controller.md) > [BACnetController](BACnetController.md) > [BACnetAndModbusController](#) -# BACnetAndModbusController - -A controller capable of communicating with both BACnet and Modbus. - - -**Display name:** BACnet/Modbus Controller
-**DTMI:** dtmi:org:w3id:rec:BACnetAndModbusController;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 -* [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/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](../../../Equipment.md).feeds -* [Equipment](../../../Equipment.md).isFedBy -* [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/BACnet-/BACnetController.md b/Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetController.md deleted file mode 100644 index 11d88dc01..000000000 --- a/Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetController.md +++ /dev/null @@ -1,54 +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 - ---- - -## Child interfaces -* [BACnetAndModbusController](BACnetAndModbusController.md) - ---- - -## 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 -* [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/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](../../../Equipment.md).feeds -* [Equipment](../../../Equipment.md).isFedBy -* [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-/ModbusController.md b/Doc/Asset/Equipment/ICT-/Controller/Modbus-/ModbusController.md deleted file mode 100644 index d77cf7f65..000000000 --- a/Doc/Asset/Equipment/ICT-/Controller/Modbus-/ModbusController.md +++ /dev/null @@ -1,54 +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 - ---- - -## Child interfaces -* [BACnetAndModbusController](../BACnet-/BACnetAndModbusController.md) - ---- - -## 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 -* [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/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](../../../Equipment.md).feeds -* [Equipment](../../../Equipment.md).isFedBy -* [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 From fdd9453bfc5da575a114e92d8b4845beac0ad55c Mon Sep 17 00:00:00 2001 From: Christopher Bupp Date: Thu, 9 Nov 2023 09:26:41 -0500 Subject: [PATCH 6/6] Updated the ODRs to reflect the decisions --- ...md => ODR 002 GatewayConnectionParameter.md} | 2 +- .../ODR TBD: Multiple Inheritance.md | 17 ----------------- 2 files changed, 1 insertion(+), 18 deletions(-) rename OntologyDecisionRecords/{ODR TBD: GatewayConnectionParameter.md => ODR 002 GatewayConnectionParameter.md} (96%) delete mode 100644 OntologyDecisionRecords/ODR TBD: Multiple Inheritance.md diff --git a/OntologyDecisionRecords/ODR TBD: GatewayConnectionParameter.md b/OntologyDecisionRecords/ODR 002 GatewayConnectionParameter.md similarity index 96% rename from OntologyDecisionRecords/ODR TBD: GatewayConnectionParameter.md rename to OntologyDecisionRecords/ODR 002 GatewayConnectionParameter.md index b0e87a062..5c5b495d5 100644 --- a/OntologyDecisionRecords/ODR TBD: GatewayConnectionParameter.md +++ b/OntologyDecisionRecords/ODR 002 GatewayConnectionParameter.md @@ -1,4 +1,4 @@ -# ODR TBD: GatewayConnectionParameter +# ODR 002: GatewayConnectionParameter ## Context diff --git a/OntologyDecisionRecords/ODR TBD: Multiple Inheritance.md b/OntologyDecisionRecords/ODR TBD: Multiple Inheritance.md deleted file mode 100644 index 928c14a69..000000000 --- a/OntologyDecisionRecords/ODR TBD: Multiple Inheritance.md +++ /dev/null @@ -1,17 +0,0 @@ -# ODR TBD: Multiple Model Inheritance - -## Context - -While building out the core ontology, there have been scenarios where models have needed to extend multiple models. One example is a device that is a [Gateway](../Doc/Asset/Equipment/ICT-/Gateway.md), a [BACnetController](../Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetController.md), and a [ModbusController](../Doc/Asset/Equipment/ICT-/Controller/Modbus-/ModbusController.md). - -DTDLv2 has a limitation of only allowing 2 interfaces to be extended. In the above scenario, it makes sense to create a [BACnetAndModbusController](../Doc/Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md). The new model is now able to extend Gateway and BACnetAndModbusController. - -## Decisions - -1. We will allow models that extend up to 2 other models. -1. We will enable RealEstateCore tools to support multiple inheritance - -## Consequences - -1. We will need to update DTDL2MD to list out all extended models. -1. We will need to update DTDL2SHACL to handle multiple extensions. \ No newline at end of file