ThingWorx Model Definition and Composer > Things > Thing Properties
  
Thing Properties
Thing properties are used to describe the data points that are related to a Thing. For example, a customer may have a Name property and Address property. A truck may have the following properties: Driver, Capacity, and Location.
Properties are a simple and convenient way to know the current conditions of a Thing. Properties can be static (for example, Manufacturer and Model Number) or dynamic (for example, Temperature). You set up properties based on your asset structure, business processes, and the solutions you want to deliver.
When you create a property, you can select one of the following:
My Property
A property for a local Thing. This is the default setting.
Local Bound
Links the property to a property defined on a different Thing on the ThingWorx server. You can set this property to be read-only and it can still receive a value from another property on the server. This is not used for remote devices, unless you are creating a local binding to a remotely-bound property.
Remote
If a remote device will connect to the Thing, you would create a binding between the property defined on that remote device and the RemoteThing entity in ThingWorx. You use this to send and receive property updates from a remote device over an active WebSocket connection.
Each property has a name, description, and a data type (Base Type). Depending on the base type, additional fields may be enabled. A simple scalar type, like a number or string, adds basic fields like default value. More complex base types have more options. For example, a type of Infotable includes the ability to define a Data Shape to describe the data structure of the Infotable.
For more information, see the Base Types table below.
* 
If a local Thing and a remote Thing have a property with the same name, and another property is bound to the remote property setting, the remote property also sets the local property value.
Alerts
For information about alerts, see Alerts.
Aspects
Properties can have the following aspect settings:
Persistent
If selected, or set to true, each value change is persisted to the database.
Persistent property database writes occur asynchronously to avoid deadlocks. While the set property occurs immediately, the database write occurs asynchronously at a later point in time. The following validations occur before a persistent property value is written to the database:
The thing must still exist
The thing must have an id
The thing id and the pending write id must match
The thing must still define the property with the same name as the pending write
The defined property must still be persistent
Updates and restarts do not affect queue processing.
Read-only
If selected, or set to true, the data is static and cannot be written at run time. The only way to change the value is by changing the default value. This is useful for static configuration data.
Logged
If selected, or set to true, the property value is automatically logged to a value stream when the data changes (based on the data change type).
Data Change Info
Data Change Type
This setting specifies when a data change event is triggered by a property value change. You use it when other processes need to be initiated based on the value of the property. Each subscriber is sent a change notice along with an Infotable that contains the old and new property values. For example, you may want to set up a subscription for changes to the DeliverySchedule property. If the schedule changes, you could notify the driver via SMS.
Data Change Type options are as follows:
Always: Fire the event to subscribers for any property value change.
Never: Do not fire a change event.
On: For most values, any change will trigger an event. For more complex base types, such as Infotables, event rules may be different.
Off: Fire the event if the new value evaluates to a Boolean false.
Value: For numbers, if the new value has changed by more than the threshold value, fire the change event. For non-numbers, this setting behaves the same as Always.
Remote Binding Info
If the Binding option is set to Remotely bound, the following options are available.
Option
Description
Remote Property Name
The name of the property as it exists at the Edge.
* 
The property name and the bound Edge thing property name do not need to be the same.
Cache Method
Cache method provides the following ways to read bound Edge Property values.
Read from server cache prohibits server requests to the Edge Property value. It will only retrieve the value from the server. Any updates to the server-cached Edge Property value are dependent upon the Edge Property's Data Change Type and the Scan Rate (i.e. Edge Property value push definition). Without the proper settings at the Edge Property, it is possible for the server to never have the Edge Property value and to only return the server property's default value. If the Data Change Type of the Edge Property to which you are binding equals ALWAYS or VALUE, the cache type will default to this setting.
Fetch from remote every read retrieves the Edge Property value from the Edge for every request. There is no caching involved with this option. If the Data Change Type of the Edge Property to which you are binding equals NEVER, the cache type will default to this setting.
Cached for specific time allows you to control the frequency by which requests to the Edge Property are made. Upon the first request the server will access the Edge Property for its value, then not make another request to the Edge Property per the defined number of seconds, though the Edge Property may update the server value (via push) in that time frame.
Cache Interval
The amount of time (in seconds) the server will cache the Edge property value before a request for the property value retrieves it from the Edge. The value is always retrieved from the Edge upon first request.
Start Type
Specifies the value a remotely-bound property initializes with when its Thing starts or restarts. This initialized value does not trigger a property change event.
Use Default Value: sets the initial value of the property to the specified default value, despite the edge-side value. If the property is persisted, then the initial value will be set to the last value persisted to the database.
Read Edge Value: queries the edge for its current value so that the value on the server is always in sync with the value on the edge, even when the Thing restarts on the server.
Push Type
Push Type applies only to Edge Enhanced Thing Properties. These components have the ability to push their value changes to the server. This ability is can be configured via the server property binding.
Pushed based on value change: you can also configure a value change threshold. When you use this setting, you can also set the Push Threshold value, which is a deadband that must be exceeded in order for a new value to be pushed to the server from the edge.
Never pushed
Always pushed
Push Threshold
This option is available if Push Type is set to Pushed based on value change. It specifies the range (plus or minus) around the edge property value for the property value push to occur. The property value must change by more than the specified value.
When Disconnected
Specifies how the remote property value binding should be handled if the connection to the remote thing is temporarily lost.
Ignore values that are changing while disconnected.
Fold all the changes into a single last changed value: Sends the last changed value when the connection is restored.
Timeout
The timeout used for calls to remote things when doing a property read or write.
Use system default: 30 seconds
Custom timeout. If selected, add to Timeout Interval (sec).
Base Types
The defined base type provides context around the data that is stored in the property. The following base types are available for all Thing entities:
Base Type
Description
BASETYPENAME
A valid base type name.
BLOB
A binary large object.
BOOLEAN
A true or false value.
DASHBOARDNAME
The name of a dashboard.
DATASHAPENAME
A reference to a data shape in the model, and therefore, has special handling.
DATETIME
A formatted date and time.
GUID
Globally unique identifier. When a GUID property is created, a GUID is automatically created if a default value or value is not set by the user. The following behaviors are followed for persistent and non-persistent GUID properties and are also applicable in a federation scenario:
If the property is set as persistent or not persistent and a default value or value is not set by the user, a new GUID value is generated each time the Thing is initialized. If there is a system or Thing restart, a new value is generated.
If the property is persistent and a default value or value is set by the user, a new value will not be generated upon Thing or system restart.
GROUPNAME
A user group name.
HTML
Some HTML content.
HYPERLINK
A standard URL (such as www.thingworx.com).
IMAGE
Binary data that can be rendered as an image.
IMAGELINK
A URL link to an image.
INFOTABLE
A standard representation of data in ThingWorx that is similar to a SQL result set. There are a number of built-in services for building, consuming, and parsing an Infotable.
INTEGER
A number that can be written without a fractional component.
JSON
A JavaScript Object Notation (JSON) object.
LOCATION
Standard World Geodetic System (WGS) 84 coordinate, expressed as [longitude, latitude], elevation.
LONG
The LONG type should be used when a range that is longer than what the INTEGER base type provides is required.
MASHUPNAME
A reference to a ThingWorx mashup, and therefore, has special handling.
MENUNAME
The name of a menu.
NUMBER
A number.
* 
Exponential values are allowed. For example, 123e45.
PASSWORD
A masked password value.
* 
See Passwords for additional information.
QUERY
A JSON object that includes an array of filters. Each filter should include value, type, and fieldname.
SCHEDULE
A cron-based schedule (configured using the Schedule Editor).
STRING
Any amount of alphanumeric characters.
TAGS
ThingWorx tag values.
TEXT
Any amount of alphanumeric characters. The difference with STRING is that TEXT is indexed.
THINGCODE
A numerical representation of a Thing containing a Domain ID and Instance ID. For example, 2:1.
THINGNAME
A reference to a Thing, and therefore, has special handling.
THINGSHAPENAME
A reference to a Thing Shape in the model, and therefore, has special handling.
THINGTEMPLATENAME
The name of a Thing Template.
USERNAME
A reference to a ThingWorx user that is defined in the system.
VEC2
A collection of two numbers. For example, 2D coordinates x and y.
VEC3
A collection of three numbers. For example, 3D coordinates x, y, and z.
VEC4
A collection of four numbers. For example, 4D coordinates x, y, z, and w.
XML
An XML snippet or document.
* 
The values entered in the Min Value and Max Value fields are for information only. Actual values less than or greater than the specified values are accepted.
Related Links
Naming Properties
Programmatically Adding Properties to Things