Calaos V3 is coming!

Hey everyone! It’s been a long time since the last update. We are not writing that much, but that doesn’t mean we are sleeping! In fact a huge amount of work has been done since the last release of v2. Let’s present you some new stuff and what work we have done so far.

Calaos Server

A lot of work has been done on calaos_server. First many rewrite of some not so good component were done. This was mainly to improve stability and robustness of the server. For example before, a lot of blocking work was done directly inside calaos_server. Now all action that takes time to perform, runs on a separate process. A good example is communication with hardware (like Wago, or 1Wire), that was done in the main process, and thus blocking before calaos_server can continue executing more rules. This was also a problem when some hardware were not responding, calaos_server could have been very slow to respond to events (like pressing on a switch).

Using that same infrastructure allows us to also make all LUA scripts run outside of calaos_server. And now, starting from v3, scripts can run for long time and they would not slow down calaos_server anymore.

New hardware support

Of course, all of this comes also with new hardware support! Calaos now supports all those new hardware devices:

  • MySensors nodes, DIY wireless platform (http://mysensors.org)
  • Open Lighting Architecture, DMX server that supports USB DMX or LAN interfaces (https://www.openlighting.org/ola/)
  • Generic LAN devices (Ping and WakeOnLan objects)
  • Direct KNX support (using eibnetmux)
  • Milight/Limitless low cost led bulbs
  • USB Blinkstick devices
  • Philips Hue bulbs

API

The calaos_server API for communicating with all clients has been improved a lot. Before today, there was a simple HTTP+JSON API plus a not-so-good TCP API. Today the TCP API is dropped and a new Websocket API comes in.

Websocket allows us to keep long time connection through HTTP. The most useful enhancement we directly have is no more polling for checking IO states. Calaos mobile and web-app benefits right away from this feature, and they are way faster than before.

Calaos home

Calaos has been updated to use latest EFL and Websocket.

Calaos web-app

The web app was actually in a bad shape and because the code base was a mess, we decided to rewrite entirely (well not entirely actually) and use the brand new websocket API. Now the webapp is small, fast and optimized.

Calaos mobile

Calaos mobile has been improved. It supports now the new websocket API (that saves bandwidth on mobile network), but keeps compatibility with the old v2 calaos_server and its HTTP only API. This will allow us to update the app on the stores soon. All reported bugs are also fixed, and neat features have been added such as Automatic Login when you start the app, or 3D touch Quick Actions on iOS9/iPhone6S (Quick Actions lists the most used scenarios you have for quick start).

Also cameras is finally working. But unfortunately it will only work with the next v3, as there is a nasty bug in v2 that prevents calaos_mobile to get camera pictures…

calaos mobile Quick Actions

Calaos OS

On calaos-os we have updated a lot of packages for improving security. But most importantly, we made calaos-os working with websocket and SSL connections. This was done by dropping lighttpd and using haproxy instead because right now calaos_server is a real HTTP server and serves all web pages for calaos-webapp. Some required tools are also installed (but disabled by default) like OLA (Open Lightning Architecture) or KNX (eibnetmux daemon).

We also improved running the image in virtual machine like Virtualbox.

Another great tools we are going to write for the next release is a backup/restore script. This will let you easily migrate from V2 to V3 just by doing a backup before the update, and restoring the backup after installation. The tool will take care of putting all your configuration files where they need to be. Updates are going to be fast! 🙂

Calaos installer

We implemented something really great in Calaos installer, automatic documentation for IO. That means that the doc is automatically generated and displayed to the user for all IO properties. To explain better here is a screenshot when going under properties dialog of an IO:

IODoc

All properties that were obscure before, are now correctly explained and you know what value can be set or not. This is going to help a lot of users understand how to configure correctly all options.

The script section also gained new features, and of course the support of all new hardware has been added.

When will the V3 be out?

In the next weeks we are going to to some alpha builds, so you guys can test out all the new functions. So stay tuned for the next update!

Calaos OS

What is Calaos OS? That question is asked quite often.

Calaos is not a single software and if you want to get a full Calaos stack running and configured you need to setup all the following softwares :

  • calaos_server
  • calaos_home
  • calaos_web
  • A web server (for serving calaos_web)
  • Configure SSL and certificated on your web browser. It’s needed if you wand to connect to calaos_server remotely, it’s the case for calaos_installer and for the mobile application. SSL is there to guarantee that the connection between your mobile and calaos box is encrypted. Otherwise all the informations you send are readable.
  • Compile calaos dependencies (EfL and Elementary)

Some people have skills to get all this stuff running on regular Linux distributions, but for the majority of people, that’s not the case, and they should use Calaos OS, as it embed all the required software in a single image. It’s also covering a lot of hardware configuration and their specificities. The Idea of using Calaos OS is to keep all the hard and complex work of integration inside Calaos OS, and give to the users a real good experience.

Calaos OS repository : http://github.com/calaos/calaos_os

Calaos OS is based on the Yocto/OpenEmbedded. This is an amazing build system, which allows us to create a specific GNU/Linux distribution four our specific needs.

In our case, the Yocto version we are using is Yocto 1.5 (Dora). We are using systemd as for the init process, XOrg for the graphics stack. and Connman for the nework manager. Calaos server and Calaos home are started at boot. For calaos-web we are using Lighttpd to serve pages. We are also using EFL 1.7

If your electronic board, or your PC is not currently supported by Calaos OS. It’s most of the time just that we never tried it. So it’s maybe not a big thing to add your new architecture in Calaos OS. If the architecture is supported by Yocto, there is a lot of chances that adding it to Calaos OS is easy. Take a look at http://layers.openembedded.org to see if a yocto BSP exists for your hardware.

Even that it’s simple to add a new architecture, it takes a lot of time and space on your harddrive to build a full image of Calaos OS. So please be patient and keep in mind that you need a real big machine to build an image. Currently i’m using a Core i7 machine with 8GB of ram, and it take arround 2hours to build a complete image for Raspberrypi.

Building your own image is easy to do, just follow the steps in the Calaos OS Readme :

https://github.com/calaos/calaos-os/blob/master/README.md

If you get into troubles, don’t hesitate, to ask questions on the forum : https://calaos.fr/forum or on IRC (#calaos on irc.freenode.org) We will guide you.

 

Calaos Mobile

I’ve been working lately on a new mobile application. Now you are going to say: “what, again?”, and you’re right 🙂

But some history first. At the beginning we only had one (not so good) mobile app that was for iOS. And it was only allowing you to use a native iOS interface from your local network, and when outside, it loaded an ugly web UI from calaos_web. No Android. Then a few years ago I started working on a complete rewrite of the iOS app. Entirely native. No more web. It was never released, because I had a lot of pain to make fully working every time Apple updated their SDK. And again, no Android.

Then, 3 months ago I wanted to try something new. Qt Quick for mobile Apps. Since I’am used to Qt development for quite some time now, it was a great opportunity to see if Qt is now ready for mobile development. Result: We have now a new Calaos Mobile app that runs on iOS and Android! The project is available as always on Github and to build it you will need the Qt SDK.

I also implemented a new cool feature for the mobile app: Favorites

Favorites is what you get on the main screen when the application starts, and it allows you to add your preferred items directly to the home page. This means less clicks to start your often used scenarios. For now only standard items can be added to the favorites view, but later I’m going to add some more special favorites items, stay tuned!

The mobile app will be available soon in the Apple Store and Google Play.

Here are some screenshots running on iOS:

Edit favorites Config Music Media Room My Home, rooms Favorites view Login