Articles
IoT LED controller
Smart lights are usually some of the first appliances to be added to a smart home. Although those can nowadays be purchased easily from various brands, I wanted to have my own hardware so as to integrate it better with other devices and software. Thus, I decided to an IoT LED controller that I can use in various projects where lighting has to be controlled via network protocols.
Wardrobe and outfits management web app
Have you ever bought a piece of clothing only to come home and realize you already had a similar one in your wardrobe? This happened to me the other day so I decided to fix the problem. To do so, I designed a simple web application in which the user can keep track of all the garments they own.
IoT Kernel
Over the years, I have written firmwares for various IoT devices such as lights, locks or heaters. Those firmwares would generally handle a common set of basic functions like managing wifi connection, serving a configuration web interface over HTTP or exchange MQTT messages. However, having to implement and maintain those functions for each individual firmware quickly became tedious work. Consequently, I decided to write a library to handle all those basic functions. This library is used as a base for IoT device firmwares, on top of which device-specific logic can easily be added.
Distributing a Helm chart on Artifact Hub
Building applications in a microservice architecture has become more and more popular recently. With this design pattern, an application is composed of multiple services that run independently and generally share data across network protocols.
Food manager
The other day, I found myself putting on some weight. This rather surprised me as I thought I was having a healthy diet and exercised almost daily. To identify the root of the problem, I decided to start measuring my calorie intake as well as the macronutrients that constitute said intake.
MQTT control dashboard
With the cloud native multi-user MQTT platform deployed, I started designing IoT devices that I could distribute to end users. However, without a GUI, interacting with those devices would be difficult. Of course, one could install applications like MQTT dash or similar but this would require tedious configuration such as MQTT broker and topics. I wanted to give users a simpler UX so I made this simple control interface that automatically displays a users devices and allows those to be controlled.
SONOFF S20 firmware
The SONOFF S20 is a cheap Wifi smart socket that enables the remote control of appliances for less than USD 10. Although the hardware is more than decent, its usage requires a proprietary app which most likely involves a third party server between the user and the device. Since the socket uses an ESP8266 at its core, I decided to write my own firmware for it.
Group and User Pickers
With the user management and group management microservices, users and their groups can be easily queried through HTTP requests. However, the GUI that the user interacts with must also be properly designed so as to provide an optimal UX. To facilitate the query of users via the GUI, I designed a group and user picker component for Vue.js that can be easily installed using NPM.
WiFi light bulb controller
Wifi controlled smart light bulbs can now be purchased from less than USD 10. However, those can often only be used by a specific application provided by the vendor and can involve exchanging data with a third party server. I wanted a solution to use my own software while benefiting from the cheap hardware so I replaced the wifi module of a a cheap Wifi light bulb my own electronics.
Group management microservice
As a graph database Neo4J is a great choice to manage highly relational data. On the other side, a great number of applications feature at least some form of user management system. With Neo4J, those users can be store as nodes and connected to other items via relationships. A typical example would be a blog, where both articles and users are individual nodes while authorships are represented by a relationship.