ThingFacet is a reusable TQL component that defines the software interactions with a "thing" and represent the "thing" in the software. A "thing" can be sensors, actuators, devices, or a particular aspect or function of a more complex machine. A ThingFacet has Attributes and Actions.
Attributes are containers of values. They can be used for the following purposes:
(1) Store parameters required to make a protocol specific invocation to the thing, such as <
String
Name
=
"InterfacePort"
/>
(2) Store information received from the thing, such as <Number
Name
=
"TempValue"
/>
(The TempValue from the temperature sensor)
(3) Hold fixed information about the thing, such as <
String
Name
=
"Unit"
default
=
"Celsius"
/>
(4) Act as control variables - variable that can activate certain actions. They are called "actionable attributes". Actionable attributes are linked with one or more actions in the same ThingFacet by a modifier "KnownBy". For example: <
Number
Name
=
"TempValue"
KnownBy
=
"SerialReadAction"
/>
Action is where the processes to interact with things are defined.