Koti Home Automation And Mr. Rudolf, The Door Bell Bot

Ever since my friends Anna and Sergey gave me an Arduino Starter Kit as a birthday present, I’ve been experimenting with hardware: programming microcontrollers and connecting sensors to build a small home automation system. Prior to that I was a software-only person, with neither experience nor interest in hardware.

I thought I’d try that Arduino kit maybe once, since I had it anyway, and then just shove it in a closet somewhere. Then I connected a thermistor to the controller and saw my home temperature displayed in the console in Celsius, Fahrenheit and Kelvin! Seeing programs come to life, making things happen in real world and reacting to it got me excited for real. Turns out, those boring topics from school physics and math lessons have actual practical application. And I can be part of it, and come up with my own projects.

So here’s what I’ve been up to.

Koti Home Automation

A year of fiddling went by and I built myself a simple but extensible home automation system called Koti, which means “home” in Finnish.

On the picture above is the control panel: you can turn the lamp (or any electronic device) on and off, monitor temperature and light level in the house, see how long it’s been since someone last moved, and activate voice commands in the browser.

It’s all open source, check out the code. Built on top of Arduino Uno and Raspberry Pi, with Node.js on client and server. Control panel is built in React, to be cool and all. Plus there is a Telegram chat bot as an optional way for talking to the house on the go, cause that’s what I do now.


Here is how I see my home automation setup:

Here is what it actually looks like:

The House Is Not On Fire
The hardware lives in a cardboard box in Moscow and occasionally scares my subletters

It’s not crazy advanced or anything, but I am a little proud. Had a lot of fun building it, and learned a ton too.



Many people are doing similar and more creative projects, my favorite is Leonid Kaganov’s home server, with fingerprint scanner to open the door, and speakers that shame prankers who ring the door bell for fun: part 1 and part 2 (in Russian, use Google Translate, there are pictures too). And there is an open source Heimcontrol.js and SidLee Dashboard, to name a few.

I gave a detailed talk about my project at an awesome New York JavaScript meetup, Queens.js. Check out the slides and watch the video.

The House Is Not On Fire
Originally titled “Divide and conquer your house”

Mr. Rudolf

In winter of 2016 I moved to New York.


And I wanted to continue with my experimental projects on the go. But it made no sense to re-create the whole home automation experience at a temporary sublet, so I looked for something more portable. Around that time I discovered ESP8266 and, based on it, NodeMCU board for $3 on Aliexpress. Also known as the more robust Adafruit Feather Huzzah. It’s a small Arduino-compatable microcontroller with Wi-Fi and an ability to deep-sleep (thus consuming very little battery) and wake up either by timer or hardware interrupt, such as a button.


So I began exploring and asking myself how could I put this awesome tech to test. At that time we didn’t have American sim-cards and the intercom in our building was broken, so we couldn’t get packages delivered. Which I always believed to be so easy and “all the cool kids in America are doing it”. Here is how it went for us: USPS would just leave a note at the door saying “we couldn’t deliver, get the package at your local post office”, which is all right. But UPS would drive around with my package for a few days, and then leave a note saying “well, we couldn’t deliver, so know you have to get it yourself at our location somewhere on the South Pole. Good luck!”.

This madness had to stop. I went to Tinkersphere, which is basically an Aliexpress website come to life, and bought a hot yellow button, a battery case and some wires. The result:

On the left is my neighbourhood in Ridgewood, on the right is a cool macho picture, and a note from UPS saying “we couldn’t deliver your package”, and in the middle is the broken intercom and the button I added to it


So it’s a simple button, connected to ESP8266 that sleeps until pressed. Then it wakes up, connects to a Wi-Fi network (I borrowed the password from local barber shop), and sends a request to my VPS server, which in turn sends me a message via Telegram Bot API.

All of the code I used for the server and ESP8266 is also open source.

And I gave a light and fun 10-minute talk about this project — after which I’m known as developer-comedian — at my favorite JS meetup in the universe, Brooklyn JS, with real cool demo of the button in action. Check out the video and slides.