OR Controller 2.5
THIS PROTOCOL IS DISABLED BY DEFAULT AS IT IS NOT MAINTAINED, IF YOU ARE INTERESTED IN THIS PROTOCOL THEN PLEASE GET IN TOUCH developers[at]openremote.io
.
Controller Protocol is intended to connect an OpenRemote Controller 2.5 to an OpenRemote Manager 3.0. We'll explain how you can connect your own controller, or the existing Home Example Demo Controller.
Connect an OpenRemote Controller
In the following example, you link your own controller by using the controller address http://my.controller:8688/controller
.
- Login to the manager UI (
https://localhost/manager
asadmin/secret
) - Select the Assets tab and click
Create asset
at the top of the Asset list on the left - Set the following:
- Asset name:
Controller Agent
- Parent asset:
Smart City -> Energy Management -> Stadhuis
and select 'OK' - Asset Type:
Agent
- Asset name:
- Click
Create asset
at bottom of screen and then clickEdit asset
in the top right - Click
Edit asset
and add a new attribute:- Name:
controllerConfig
- Type:
Controller Client
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then configure the Attribute configuration by setting/adding configuration items as follows (do not forget to click on 'Add item' for every item) :- Controller Base URI:
http://my.controller:8688/controller
- HTTP basic auth username: if a basic auth is defined on the Controller 2.5
- HTTP basic auth password: if a basic auth is defined on the Controller 2.5
- Controller Base URI:
- Click
Save asset
at bottom of the screen
You now have a Controller protocol to communicate with your own Controller 2.5 as long as you have an internet connection and an attribute will be linked.
The attribute status is DISCONNECTED until a Controller 2.5 is really available on the provided base URL.
We can now add a linked attribute in Manager to the new Agent such that we can get sensors status and execute commands.
Configuring Attributes to use a Controller Agent
For each different case, we will consider a concrete example and how to implement them in the Manager UI.
Getting Controller 2.5 sensor status
Starting from an example :
Value of a temperature sensor (named 'tempSensor') on a device name 'HomeDevice' :
- Controller 2.5: a single command triggers the read of the value and a sensor uses that command to make the value available.
Configuration:
- Select the Smart City -> Energy Management -> Stadhuis asset in the asset list
- Click
Edit asset
in top right - Add a new attribute:
- Name:
homeTemp
- Type:
Temperature in Celcius
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then add the following configuration items:- Agent protocol link: Controller Agent -> controllerConfig
- Controller Device name: HomeDevice
- Controller Sensor name: tempSensor
You have in homeTemp
the temperature returned by the Controller 2.5
Execute a Controller 2.5 command
Starting from an example :
Send a setpoint command 'tempSetpoint' on device name 'homeDevice'
- Controller 2.5: a single command that sends the temperature setpoint, it takes no parameter. There is no sensor associated with it.
Configuration:
- Select the Smart City -> Energy Management -> Stadhuis asset in the asset list
- Click
Edit asset
in top right - Add a new attribute:
- Name:
setTemp
- Type:
Temperature in Celsius
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then add the following configuration items:- Agent protocol link: Controller Agent -> controllerConfig
- Controller Device name: HomeDevice
- Controller Command name: tempCommand
In your Stadhuis asset, you have an attribute where you can click on 'Write' button to execute the command on the linked Controller 2.5.
More information
If there is a value into attribute value when you click on 'Write', the attribute value will be added as parameter into the command request to Controller 2.5.
Execute a Controller 2.5 (text) command
Starting from an example :
Send a play command 'playTV' over IR on device name 'homeDevice'
- Controller 2.5: a single command that sends the IR code, it takes no parameter. There is no sensor associated with it.
Configuration:
- Select the Smart City -> Energy Management -> Stadhuis asset in the asset list
- Click
Edit asset
in top right - Add a new attribute:
- Name:
playSignal
- Type:
Text
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then add the following configuration items:- Agent protocol link: Controller Agent -> controllerConfig
- Controller Device name: HomeDevice
- Controller Command name: playTV
In your Stadhuis asset, you have an attribute where you can click on 'Write' button to execute the command on the linked Controller 2.5.
More information
If there is a value into attribute value when you click on 'Write', the attribute value will be added as parameter into the command request to Controller 2.5.
Execute a Controller 2.5 multivalue command
Starting from an example :
Control a fan with 3 speeds: low, mid, high on a device name 'homeDevice'
- Controller 2.5: a command to read the state of the fan and a sensor 'fanState' associated with it + commands with no parameter to turn fan off 'fanOff', set it to low speed 'fanLow', medium speed 'fanMed' or high speed 'fanHigh'
Configuration:
- Select the Smart City -> Energy Management -> Stadhuis asset in the asset list
- Click
Edit asset
in top right - Add a new attribute:
- Name:
fanSpeed
- Type:
Text
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then add the following configuration items:- Agent protocol link: Controller Agent -> controllerConfig
- Controller Device name: HomeDevice
- Controller Sensor name: fanState
- Controller Commands map:
{ "off": "fanOff", "low": "fanLow", "medium": "fanMed", "high": "fanHigh" }
In your Stadhuis asset, you have an attribute where you can click on 'Write' button to execute the command linked to the value of the given attribute ("off", "low", "medium" or "high"). And the polling system will keep the attribute value updated with the latest status know of the fan.
More information
If you don't want to have a polling to get the status of the sensor, you can simply don't add the item 'Controller Sensor name'.
Execute a Controller 2.5 switch with a Manager Toggle/Switch
Starting from an example :
Control a light bulb on device name 'HomeDevice'
- Controller 2.5: a command to read the state of the light, a sensor 'lightState' associated with it, a command 'onCmd' to turn light on and a command 'offCmd' to turn light off (with no parameter)
Configuration:
- Select the Smart City -> Energy Management -> Stadhuis asset in the asset list
- Click
Edit asset
in top right - Add a new attribute:
- Name:
lightSwitch
- Type:
On/Off toggle
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then add the following configuration items:- Agent protocol link: Controller Agent -> controllerConfig
- Controller Device name: HomeDevice
- Controller Sensor name: lightState
- Controller Commands map:
{ "true": "onCmd, "false": "offCmd" }
In your Stadhuis asset, you have a switch/toggle attribute you can check or uncheck and click on 'Write' button to execute the command linked to the value of the switch/toggle. And the polling system will keep the attribute value updated with the latest status know of the fan.
It is the only case where you have to follow a template for commands map item. You must use true/false as attribute name for the two commands map.
Controller connection
If the connection is lost with a Controller defined in an Agent, the connection will be checked every 5 seconds until the connection is up and running again. All the linked attributes to the disconnected agent will be put on hold until the connection is back to normal.
Specify another device name for command execution
Starting from an example :
Set the volume of an amplifier defined on two different device name on a Controller 'SensorDevice' & 'CmdDevice'
- Controller 2.5: a command to read the value of the volume and a sensor 'ampVolume' associated with it on device 'SensorDevice' and a command 'setAmpVol' to set the volume taking the level as the argument
Configuration:
- Select the Smart City -> Energy Management -> Stadhuis asset in the asset list
- Click
Edit asset
in top right - Add a new attribute:
- Name:
ampLevel
- Type:
Text
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then add the following configuration items:- Agent protocol link: Controller Agent -> controllerConfig
- Controller Device name: SensorDevice
- Controller Sensor name: ampVolume
- Controller Device name for command: CmdDevice
- Controller Command name:
setAmpVol
In your Stadhuis asset, you have an attribute where the value is updated by polling request and where you can click on 'Write' button to send the command to set the volume with the value of the attribute in parameter.
'Controller Device name for command' is a way to overwrite in the same attribute the device name for command only.
Home Example Demo on OpenRemote 2.0 (Designer)
As you may know, we have a Home Example representing a typical Residential Application: https://github.com/openremote/Documentation/wiki/Example-Home.
You may find other useful information on : https://github.com/openremote/Documentation/wiki/Example-Home
A demo controller is available online on : http://demo.openremote.com:8688/controller
We'll use the demo Controller in a concrete example here.
Configure Controller Agent
- Login to the manager UI (
https://localhost/manager
asadmin/secret
) - Select the Assets tab and click
Create asset
at the top of the Asset list on the left - Set the following:
- Asset name:
Controller Agent
- Parent asset:
Smart City -> Energy Management -> Stadhuis
and select 'OK' - Asset Type:
Agent
- Asset name:
- Click
Create asset
at bottom of screen and then clickEdit asset
in the top right - Click
Edit asset
and add a new attribute:- Name:
controllerConfig
- Type:
Controller Client
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then configure the Attribute configuration by setting/adding configuration items as follows (do not forget to click on 'Add item' for every item) :- Controller Base URI:
http://demo.openremote.com:8688/controller
- Controller Base URI:
- Click
Save asset
at bottom of the screen
You now have a Controller protocol to communicate with your own Controller 2.5 as long as you have an internet connection and an attribute will be linked.
The attribute status is CONNECTED as the Demo Controller is already available (if you have an internet connection).
We can now add a linked attribute in Manager to the new Agent such that we can get sensors status and execute commands.
Temperature attribute
On the Demo Controller, we have a sensor for the temperature. We'll catch this information in our manager.
- Select the Smart City -> Energy Management -> Stadhuis asset in the asset list
- Click
Edit asset
in top right - Add a new attribute:
- Name:
comfortTemp
- Type:
Text
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then add the following configuration items:- Agent protocol link: Controller Agent -> controllerConfig
- Controller Device name: Heating
- Controller Sensor name: VR1.COMFORT
- Read Only: checked
You should now have an attribute with a temperature value set to the last version received from the polling on the Controller.
Increase Comfort temperature
The comfort temperature can be increase or decrease. Let's add the necessary attribute to increase the temperature :
- Select the Smart City -> Energy Management -> Stadhuis asset in the asset list
- Click
Edit asset
in top right - Add a new attribute:
- Name:
incComfortTemp
- Type:
Text
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then add the following configuration items:- Agent protocol link: Controller Agent -> controllerConfig
- Controller Device name: Heating
- Controller Command name: VR1.COMFORT.inc
Click on 'Save asset' and now you'll have a new attribute available. If you click on the 'Write' button, it'll send the configured command to the controller. And if we refresh the Asset, we should have a new value for the 'comfortTemp' attribute.
Decrease Comfort temperature
The comfort temperature can be increased or decreased. Let's add the necessary attribute to decrease the temperature:
- Select the Customer A -> Smart Home asset in the asset list
- Click
Edit asset
in top right - Add a new attribute:
- Name:
incComfortTemp
- Type:
Text
- Name:
- Click
Add attribute
and then expand the new attribute (using button on the right of the attribute) then add the following configuration items:- Agent protocol link: Controller Agent -> controllerConfig
- Controller Device name: Heating
- Controller Command name: VR1.COMFORT.dec
Click on 'Save asset' and now you'll have a new attribute available. If you click on the 'Write' button, it'll send the configured command to the controller. And if we refresh the Asset, we should have a new value for the 'comfortTemp' attribute.