====How It Works====
To dynamically create asset properties and link them to external data, you'll need to go through a couple of steps.
===Create Folder===
In your //site// folder (ie. **/opt/web/sites/default** on Linux servers), create a writable folder called 'dynamiccontent'.
You may want to share this folder if you're planning on syncing with scripts or packages running on other systems, as this is where each of them will write a //json// file containing the different properties they want to create on your ARDI assets.
===Data Sources===
Make sure you have setup the data sources you want to read information from (if you are going to bind these properties to external data).
You'll need to know the data source name and address format before-hand.
For example, the system you're synchronising ARDI with might provide live data via REDIS and history via MYSQL. You should set up the appropriate ARDI data sources.
===Create JSON File===
Next, create a JSON file describing the properties you want to create on your assets.
For example...
{
"style": "property",
"type": "measurement",
"default": "0|PSI|0|100",
"name": "Pressure - Air PSI",
"attachto": 171,
"livebind": "DEEP>Objects/Air Pressure Sensor/Pressure - Air PSI",
"histbind": "DEEP>Air_Pressure_Sensor_Pressure_Air_PSI"
}
Above is an example of the file generated by a modelling system. It's converting //metric// variables to //imperial// ones.
==style==
Describes the type of dynamic content. At the present time, 'property' is the only supported option.
==type==
The type of property to be created. **measurement**, **status**, **enum** and **text** are the most common types.
==default==
The default value to write. This is in the same format that the properties are exported in - for example for a //measurement//, the format is **||||**.
==name==
The name of the property
==attachto==
The ID, name or reference number of the ARDI asset to attach this property to.
==livebind==
The live data address for this item, in the format **[sourcename]>[address]**.
In the example above, **DEEP** uses OPC-UA - this is the full OPC-UA address of the data point.
==histbind==
The historical address for this item, in the format **[sourcename]>[address]**.
In the example above, **DEEP** uses Prometheus. This is the full Prometheus point-name for the data point.
===Call Update===
Open the Dynamic Content admin page and press the 'Update' button. The property will be created, attached to assets, then bound to live and historical data (where applicable).
If for any reason results aren't what you expected, you can press **remove** to clear these changes.
===Schedule Updates===
If you're happy with results, you can use the Task Scheduler to schedule a routine (ie. 24-hour, 1 hour or 10-minute) call to the 'Update' function that will keep your ARDI system in-sync with the changes from your external application.
The update function will //not// perform redundant work - if a change has already been made, it won't waste time unappling-and-reapplying that change.