Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
The DateTime protocol can be used to display date/time on the console or you can use certain DateTime events to trigger rules.
The protocol also includes a sunrise/sunset calculation which needs your locations longitude, latitude and timezone to perform it's calculations. Longitude and latitude are entered as decimals and the timezone has to be the Java identifier eg. Europe/Berlin.
The following commands are available in the moment:
- date (returns a date/time as string depending on the given formatter)
- sunrise (returns the sunrise time as string depending on the given formatter)
- sunset (returns the sunset time as string depending on the given formatter)
- minutesUntilSunrise (returns an integer with the minutes until sunrise)
- minutesUntilSunset (returns an integer with the minutes until sunset)
- isDay (returns a boolean string)
- isNight (returns a boolean string)
OpenRemote Online Designer
Now, let's create some screen in OpenRemote Designer. OpenRemote Designer already supports Date/Time protocol, so all you need is account to log into it.
Our task will be to print the date on a page and also if it's day or night.
Create new Device
In "Building Modeler", create new device New>New Device
Still in "Building Modeler", select device that was created in step 1 and click on New>New Command Specify name and select "DateTime Protocol" as protocol.
DateTime specific settings:
- Latitude - The latitude of your location as decimal value
- Longitude - The longitude of your location as deciaml value
- Timezone - The Java identifier for your timezone. This is needed todo time corrections since the sunrise/sunset calculations are based on UTC-0
- What should be calculated - The identifier of the function. This must be one off the commands wich are mentioned above
- Formatting - A Java formatter string to convert the date/time into a string.
Here you can find some examples and the valid identifiers for the formatter string: http://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html
Since we are going to configure second command that will calculate day or night, click on "Submit and continue". This will store our current settings, but preserver filled-in values. We can then easily update settings without the need to re-enter all the values again.
In this command, we need to provide longitude and latitude, since the "isDay" command is based on sunrise/sunset calculation. We also need the timezone for time corrections. Since we are not going to add any other command, click on "Submit".
The DateTime protocol has been slightly improved in the OpenRemote Designer, starting with version 5.2
The UI has been reviewed to shorten labels and add detailed information as additional text revealed when you hover above the different fields.
Supported commands are now selected from a dropdown box, so users don't need to type them anymore.
A new parameter has been added: "Polling interval". It defines the rate at which the resulting value is updated, the default value being 1 minute. Using this last parameter requires Controller Pro version 1.0.11 or above.
Now we will create the sensors, that will use previously created commands to access values of our DateTime protocol.
Click on "New>New Sensor"
We will call our first sensor "DisplayDate Sensor". Select command "Display Date" and choose type "custom". You don't need to specify any custom state items. This way the string that comes from the command is displayed as is.
When all values are entered, click on "Submit" to save the sensor.
Again, click on "New>New Sensor" to create the sensor for our "isDay" command.
Name of this sensor will be "DateTime isDay Sensor". We use the "DateTime isDay" command for this sensor. Type is custom again and no items.
Submit this dialog to save the sensor. We are done in the Building Modeler and have created all commands and sensors.
Use sensor in UI Designer
To display our sensor values in a panel, you have to create a label for each and select the appropriate sensor. This example also includes 2 extra labels two describe our fields.
Here you can see the result of our work.