Rotary Phone Home Control

In our house old rotary phones are used as a remote for Sonos, Philips Hue and to ring the door bell. Turning the dial on one of the phones starts playing an MP3 on the phone. Turning the dial of the phone in another room dims the light, or turns it on or off.

We use an old Ericofoon, a red and green Dutch T65:

I connected the 2 pins of the phones to an ESP8226 (nodemcu). You can buy them for cheap on Chinese webshops.

The C code below is counting pulses. I used platformio to compile the ESP8226 code and upload it. The ESP8226 requests a Raspberry Pi to evaluate an URL. The Python code for the Raspberry Pi will be subject of another post.

Vintage Phone Home Control Center

An old phone, a raspberry pi, a handful of resistors and a simple python script make a very nice home control center.
The phone is a T65 TDK. It was very popular in the Netherlands in the 70’s and 80’s. It comes in a few colors, but preferably orange.

The phone now controls our Sonos audio system and our Philips Hue lights. The little black button rings the front door bell, great gimmick for the kids.

Button functions:

  • 1: a radio station
  • 2: volume up
  • 3: another radio station
  • 4: previous song
  • 5: play / pause
  • 6: next song
  • 7: a playlist
  • 8: volume down
  • 9: another playlist
  • *: Philips Hue off
  • 0: Philips Hue dimmed
  • #: Philips Hue bright

And the Python script

The script calls an URL on the home server: another raspberry pi which controls all connected devices. A description of this home server will be the subject for a future picnic.

BSO Totaalpakket of Schoolwekenpakket met incidentele vakantieopvang

Ludens Utrecht biedt 2 BSO paketten aan: een totaalpakket en een schoolwekenpakket. Met een schoolwekenpakket heb je geen opvang tijdens de vakanties (wel tijdens studiedagen). Als je incidenteel toch opvang wenst tijdens vakanties kun je losse dagen afnemen. Onze kinderen gaan maar zelden naar de BSO tijdens de vakantie dus intuïtief zou je voor het schoolwekenpakket kiezen. De prijzen van de twee paketten liggen wel erg ver uit elkaar, dus misschien moeten we er toch een sommetje aan wagen:

  • Totaalpakket:
    • 7,06 € per uur (Pt)
  • Schoolwekenpakket:
    • 9,46 € per uur voor schooldagen (Ps)
    • 8,46 € per uur voor vakantiedagen (Pv)

Een jaar heeft ongeveer 40 schoolweken en op schooldagen gaan de kinderen 3 uur naar de BSO (Us = 3×40 = 120 uur per jaar). We rekenen met 13 vakantieweken per jaar. Op deze vakantiedagen rekent Ludens 10 uren (Uv = 10×13 = 130 uur per jaar).
Vanaf hoeveel vakantiedagen U is het goedkoper om een totaalpakket af te nemen?

\((Us + Uv) Pt = Us Ps + U Pt\)

\(U = \frac{(Us + Uv) Pt – Us Ps}{Pv} = 74\;uren\)

Dus als je kind van de 7.4 van de 13 vakantieweken naar de BSO brengt dan is het al gunstiger om een totaalpakket af te nemen.


Wat gebeurt er als we de kinderopvangtoeslag (KOT) meenemen in onze berekening? De kinderopvangtoeslag is inkomensafhankelijk en voor het eerste en de volgende kinderen. De overheid subsidieert kinderopvang tot een maximum uurtarief van 6,95 €. In onderstaande figuur staat het netto uurtarief voor verschillende toetsingsinkomens (totaal van de inkomsten in box 1, 2 en 3).

En in onderstaande figuur het minimum aantal vakantieuren voor verschillende inkomens:

Voor lage inkomens is het altijd gunstiger om het totaalpakket te nemen. Voor hogere inkomens loont het al om het totaalpakket te nemen als je, afhankelijk van je inkomen en het aantal kinderen, tussen de 0 en 5,5 van de 13 vakantieweken.

Vakantie BSO bij Ludens is dus veel goedkoper minder duur dan je in eerste instantie zou denken. En je krijgt voor hetzelfde bedrag veel flexibiliteit. Uiteindelijk betaal je het natuurlijk allemaal zelf.

Voor de liefhebber de python code van het sommetje (met dank aan de mannen van checkbrutonetto voor de kinderopvangtoeslag data):

Control Sonos with Python using SoCo 0.9

I made a python wrapper function around SoCo 0.9 because the documentation of SoCo is very limited. I hope it helps 🙂

iot is a homebrew logger

Next Party Planner

You feel like a party (or a picnic) but you have to find a reason. Why not celebrate that you (or you and your family) exist for 100 years, or 2 million hours, or 10 thousand weeks?

Go to Next Party Planner. Fill in your birthdays and check the next opportunity for a picnic.

Did you know?

  • That the The Beatles would have been 10 billion seconds old on 11 December 2020.
  • That the The Rolling Stones will be 300 years old on 2 February 2019.
  • That Radiohead will be 200 years old on 27 January 2019.
  • That the Obama’s will be 150 years old on 23 november 2018 and 80 million minutes old on 3 June 2019

Python sunset timer for Philips Hue

The Philips Hue has a nice API. It took me a few picnics to figure out how it works. So for your convenience I give you a few snippets of Python code.

First you have to figure out what your username is:

With this username you can check lights or turn them on and off:

And now a wrapper function:

The iot class is a homebrew event logger:

You can use crontab to set timers. But why not make it yourself 🙂

You have to put all timers in timers.txt
Yes, I know, it looks a lot like crontab. This one is not better, but I made it myself 🙂

And you need to know when the sun rises and sets. I didn’t write this class myself but I also forgot where I found it. Credits to the anonymous maker!

Convert gedcom to html with bootstrap, d3 and jquery using python

What did the life of my grandfather look like? Did he have siblings? Who were his parents? I had many question and on one of these Sunday afternoon I decided to go for it. I tried some genealogy websites and offline programs and selected Gramps. I found my grandfather into some of those websites that have digitized family records and started filling my database with ancestors, aunts, great aunts. I found that my grandfather had a small brother who died at the age of 3 and that his mother died of Spanish flu.

And then the moment came to share the result with my family, the ones that are still alive. I tried a few html generators but they all looked fairly old fashioned. Therefore I wrote one myself: gedcom2html. Gedcom is a (or the) standard for genealogy files. Gedcom2html uses d3 sunbursts for an ancestor and descendant fan chart. It uses d3 force simulation for a graph of all individuals in the gedcom file.

An example says more than words. So have a look at the family tree of the Dutch Royal Family  You can convert a gedcom file to html yourself using my script on github: gedcom2html

Unfortunately the solution doesn’t scale. It works excellent for a gedcom file with a few hundred individuals. But with a larger gedcom file (>2000) the html files explode to 500 kB each. The script should be improved by moving functionality from the server (python) to the client (javascript). All data should be in a single json file and be read by the JS script. To be fixed during a future picnic.