I’ve been busy with a few other things, so that’s why it has been silent on the IoT front. As I also just past half of the blog posts, I thought this would be good time to reflect on the plan and report the latest status. In this blog I’ll go through all projects/libraries and use cases presented in the plan and show the status. Some to-do’s are marked italic: these might happen after the challenge deadline.
Open Source Projects
These are the projects that I’m making available as open source on my GitHub account during this challenge. They are all set up so that they can be reused by others in their own home automation projects.
As described in Publishing activity from Z-Way to MQTT messages are published for each status change. It also subscribes to the responding topics, so you’re able to turn on and off devices through MQTT as well. The topics and devices used are completely configurable. With this all major functionality is done.
- Publish a message on scene activation (e.g. used for each secondary push button on the wall)
- Get it published on the Z-Way App store, already uploaded June, but still no response
- Publish energy usage
Making sure I can use Chef to fully install the Raspberry Pi 3 I needed to update a few recipes, but also create a completely new one for Z-Way. This was a major hurdle and took more time than expected, but I learned a lot from it. In Cooking up the nodes: Thuis Cookbook you can learn more about it.
Plex doesn’t allow me to add a plugin directly in the server, but there is an API and WebSockets for status messages. For now only some research has been done and some models set up. It will be implemented as Java library, likely with a similar set up as I’m using for integrating Java and MQTT.
- Set up projects
- Implement models and client code for API
- Implement models and client code for WebSockets
- Forward events through CDI and MQTT
The library for using CEC (Consumer Electronics Control) in Java was developed about 10 months ago and already performs the most common functionality (monitoring stands-status, turning on/off devices, changing volume and changing outputs). However it should still be integrated with the remainder of the system.
- Integrate library with Core
- Forward messages through MQTT
The work on the MQTT UIKit for iOS is just started and will be the subject of the next blogpost. The goal is to provide reusable UI elements which update their status by subscribing to a MQTT topic and are able to send messages as well.
- Implement several UI elements (button, slider, info)
- Integrate them with MQTT
- Build an app around them
Light when and where you need it
Sensors are placed in both the kitchen and the entrance room. The Core knows about them and as described in Core v2: A Java EE application rules are defined to turn the lights in those rooms on and off depending on movement and time. This works pretty well already!
- Further optimize the rules
- See if improvements can be made by using iBeacons
The implementation of this use case is mostly dependent on iBeacons being in place. As they are finally delivered, I can start setting them up.
- Set up iBeacons
- Integrate them with the iOS app (which will publish MQTT messages about their current location in the house)
The Z-Wave hardware for the home cinema is in place (using a 6-socket PowerNode), so they can be turned on and off. As mentioned above the Plex and CEC libraries are work in progress. When these are there we can make a full integration.
- Finish Plex and CEC libraries
- Set up a Raspberry Pi for the CEC communication
- Integrate them with the Core
- Add and integrate a DIY ambilight
Mobile & On-The-Wall-UI
Work on the iOS UI elements is just started. Further development of the iPhone and iPad apps depends on this. The iPad is already mounted on the wall though!
- Finish MQTT UIKit
- Create an app for the dashboard (both mobile and On-The-Wall)
- Provide basic actions (turning on/off device, triggering scenes and providing information)
- Show the current movie playing in Plex and pause/start
- Add speech commands
- Create a custom app for the kitchen (either iPad or web)
Work has not started on the Wake-up light, mainly because one of the required components (the MOVE) is not delivered yet. As it’s an Indiegogo project, it’s not certain when it will be delivered. I’m not counting on it for the duration of the challenge. I will start on the wake-up light with only bedroom light gradually turning on.
- Sleep Cycle doesn’t have a web hook available yet, so it’s still needed to set up a Philips Hue bridge
- Install Z-Wave dimmer in the bedroom
- Install and integrate the MOVE
Most lights can already be switched manually using the buttons on the walls. Some of them should however be switched using the secondary button, which does a scene activation. I have to add support for this to the Zway-MQTT.
- Add support for secondary buttons in Zway-MQTT
Energy monitoring & saving
For energy monitoring I only did some research yet. InfluxDB seems to be a good candidate for storing the data. As time is running out, I’m not sure if I’ll be able to fulfill this use case.
- Let Zway-MQTT publish energy usage
- Integrate YouLess to record total energy usage of the house
- Create reports based on the usage
Up to now I mostly set up infrastructure and backend code. It’s now time to really start implementing the selected use cases. This is what I will focus on for the upcoming weeks. Although there is only 1 month left until the deadline, I’m confident I can implement most of them on time!