Switching off the lights the hard way


How many components does it take to switch on a light by voice? Here we look at what’s involved in using a Neopixel strip as a Google Home connected light bulb.

There are multiple ways of issuing commands to Google Assistant like via IFTTT or api.ai but only using Actions SDK directly lets us issue short commands like “Hey Google, lights on” rather than “Hey Google, tell house lights to switch on”. When registering as a ‘Light’, it also lets us use existing built in traits like ‘brightness and colour’ without having to write our own intents and re inventing the wheel.

Ignoring the initial OAuth handshake the flow of data is as follows:
Voice > CHIP/Phone > Google Assistant > https  > express > Mosca MQTT > ESP32 > NeoPixel

Connecting to Google Actions requires a publicly accessible https endpoint, but getting proper SSL working on embedded in a home network behind a router is not easy, to say the least. So I opted to create a Dockerized HTTPS to MQTT gateway which will run on a publicly available VPS which will forward the received https traffic via MQTT to connected devices and respond back to the request with the MQTT reply from the device.
Continue reading

Android CI & CD with GitLab, Docker and HockeyApp


Recently IBM took over the mobile applications for one of the largest supermarket chains in Netherlands and I was assigned to the Android application which was created in 2013, a lifetime ago given the pace Android ecosystem been evolving.

Thanks to recent advancements in the development tools like Instant run, IntelliJ-based IDE, SSDs and the x86 emulators, development is much less painful than 5 years ago, but this project was missing a few important things like unit tests, automated tests (mocked & e2e), coding standard checking, code quality analyser and continuous deployment.

This list is a bit of a mouthful, so in this step, I’ll only look at the CI & CD part. while I’ve implemented this many times in other disciplines, I’ve never done this before in Android land. So I decided to blog about it to keep me motivated and to hopefully get some feedback from other developers.

1. Continuous integration with GitLab CI.
2. Build android apk in Docker.
3. Deploy to HockeyApp.
Continue reading