Developing a user interface

What should a user interface for Domogik do ?

Well, basically, what you want! Just keep in mind that Domogik is released with an administration user interface. This interface is used to manage Domogik, the plugins and the devices. You don’t need to handle these features and, I think you shouldn’t.

User interfaces should focus on control and visualisation:

  • display the devices and their features.
  • allow to control these devices features.
  • allow to view the history of these devices features.
  • organize devices by category, rooms or whatever you want.

Steps to follow

Specifications

First, you should do some specifications to see what you want to do and how to do it!

Note

There are already user interfaces for :

  • browsers : Domoweb, phpMyDomo
  • Android devices : Domodroid
  • iOS devices : iDomotic

You are obviously free to create a new user interface for these platforms, but maybe you could also contribute to them ;)

If you plan to create a new iOS, Android or Windows Phone application, you may interested to try some crossplatforms solutions like Kivy.org or any other. This solutions will help you to create applications that will work on many devices (iOS, Android, …).

Don’t forget to think about:

  • the screen layouts (responsive designs for HTML user interfaces, size screens and orientation for mobile devices)
  • the configuration
  • performances (the user experience is really better with very fast user interfaces)
  • be modern!
  • graphical resources (icons, background, fonts)
  • the documentation! It is maybe the main thing to do correctly : if the installation documentation is not clear, the user will not continue the installation and will try another user interface.

Read the documentation

You should read all the Domogik technical documentation, especially the REST and Message Queue parts. Don’t forget to look at data types </developers/package_development/plugins/data_types/index>

Prepare your project

You should use some online repository like github, this will allow you to easily manage your project (thanks to the bugtracker and wiki included). This will also allow users to easily contribute to your project.

You should also come and discuss with the Domogik team on irc. We can explain you some points, improve the doc if needed and give you some tips or warnings.

Start to code!

Here is how a user interface could be done…

First, the user is requested for the REST url (to access Domogik). There, the / url of the REST server will give you all other resources (Message Queue). Just ask this the first time and them allow the user to easily update this setting.

Then, the user could be requested to define a way to organize the devices (it can be rooms, pages, categories : you are the designer, it is up to you!). When this is done, let the user affect the devices to the rooms/pages/categories/…

To get the devices list and details, just use the /device url. You can also grab informations about only 1 device with the same url. Once you get these informations, you will be able to create some widgets for the device features.

Note

Another point of view is to create some widgets (for example a widget per data type or some complex widgets with several features of various data types), to let the user select and place them and to finish by requesting the user to select the devices features (filtered by data type) to use in the widget.