I have now implemented an XML configuration file for ORControl. It describes the hierarchy of home automation objects and devices describing floor containing rooms and rooms containing windows, doors, radiators, sockets, lights, appliances, sensors etc, and windows having blinds, switches etc. It also specifies all other configuration parameters including ports used etc. It gives credentials for email, the Google calendar etc. It specifies my spotify playlists and TV channel numbers and names. It gives identifiers a names to all objects and devices.
I parse it using a Java stax parser.
This is a step towards productising my hoe automation system.
One issue with OpenRemote is that it has a flat structure of devices with no hierarchy. A hierarchy is needed to answer question like whether a room or a floor is occupied or how much power a room or floor is using. It can also help link devices to a graphical view of the house.
I might make my configuration file complete enough to enable me to generate the OpenRemote configuration rather than using OpenRemote designer. For the moment they are complementary.
The configuration file starts the definition of an ontology for talking about the home automation devices. I plan to change my current set of commands that OpenRemote uses into a more structured language for controlling the devices and defining queries. I might eventually implement natural language processing, but for the moment a language with a consistent structure is sufficient.
I have written a simple Java chat client to talk to the ORControl server as an alternative to using the OpenRemote apps and consoles. I decided against using XMPP for the moment, as it is more complex than I currently need. The chat client will use the structured language. The main syntax of the language is: . So I can say thing like “Light 4 on” or “Living room light on”, to turn the light on, and things like “living room light status” to query the status. I can use the device hierarchy to ask things like “Dining room occupied” or “Ground floor occupied”.
I will also use the language for my first version of voice control.