Yamaha Diversion XJ600S

I own a Yamaha Diversion XJ600S from 2001. I bought this beauty in February of 2015 back in the Netherlands, right after I got my A2 driver’s license. Since then I’ve ridden over 20.000km with it, and over time I have installed some upgrades to improve safety, appearance and comfort.

Back in 2015, buying my “Div’je”

In 2015, my Diversion had the following:

  • 600 cc, 4-stroke engine.
  • Special air inlet rings to limit the power to 33.5 HP, to allow it to be ridden with an A2 driver’s license.
  • Dual front brakes (opposed to the single front brake Diversions that were made before 1996).
  • GIVI Monokey top and side suitcases.
  • LED front indicator lights.

Digital display

In 2018 I built a custom digital display. This is a 1.3″ OLED display with 128 x 64 pixels. I installed this board inside the speedometer cockpit.

2018-12-19 14.17.03
2018-12-17 15.10.58
2018-10-31 15.29.44
The display fitted inside the speedometer cockpit

The display shows me the following information:

  • GPS based speed (the control board includes a GPS chip).
  • Date and time, which is updated via GPS.
  • Temperature inside the speedometer cockpit.
  • A warning symbol if my battery voltage is below 11.5V.

It also has the possibility to add an SD-card to log the trip and a secondary temperature sensor which can measure the engine temperature. I however never implemented these options in the software, which I’ve also written myself.

In parallel with this change I swapped all the incandescent lightbulbs inside the speedometer unit for LED lights. They light up brighter, increasing the visibility of the analogue meters and indicator lights. Lastly I changed the backlight from an incandescent bulb to a unit which has LED’s and has a smoked screen.

Old vs. New backlight unit


Incompetent transport causing mass upgrade

In April 2021 my Diversion was in need of its usual yearly service. Transporting it to the workshop was done inside a closed trailer, and when the doors of the trailer opened it showed that my Div had fallen over on both sides, breaking both the left & right mirror and the windshield.

The damage after the transport

The shop didn’t feel much for repairing such an old bike, so after a bit of mental revalidation I decided to take this opportunity and order many other parts of the bike that I deemed needed upgrading. So in addition to a good clean and some silicon spray to make it shine nicely, the following parts ended up being replaced/added:

  • The stock mirrors were replaced by PUIG RS1 rear view mirrors. I feel they give the bike a sportier, more modern look.
  • The windshield was replaced by a taller GIVI D116S windshield, offering more protection against wind.
Rider’s view of the new windscreen and mirrors.
  • The top case and side cases, GIVI E460’s, used different keys. I ordered a set which included 3 new identical locks, meaning I now only need 1 key to open all suitcases.
  • Talking about the top case, I added the following items to it:
    • GIVI E81B, a metal rack on top of the top case.
    • GIVI E92 LED brake light, an additional brake light inside the top case.
    • GIVI E79 Backrest, for a little added comfort for any passengers.
The added components to the top case
  • Lastly, I replaced the headlight unit:
Old vs. New headlight unit

This headlight unit is actually made by a Norwegian, who developed this kit specifically for the newer Yamaha Diversion XJ600S models. The standard headlight of the Diversion lit the road quite poorly, so this upgrade was much needed. It also changes the appearance of the Diversion quite drastically, shaving off at least 5 years of its visible age.

What’s next

At this point I have recently done the upgrades written above, and I’d like to get some kilometers with them to see what I like and don’t like. I have plans to install engine protectors, which ‘catch’ the bike in case it falls over. At some point in time I also need to upgrade my A2 driver’s license to an A license, which would allow me to unleash the full 61 horses inside the engine (or however many are left after 20 years).

I’m also considering installing handlebar protectors, but my main point of irritation has been the indicator lights on the back. I haven’t been able to find a good replacement of the incandescent bulbs due to the way they are mounted on the GIVI rack, nor have I been able to find clear covers for the lights which would allow the placement of yellow LED bulbs. Those bulbs are right now the last non-LED’s on my Diversion, and replacement of these two is in my opinion way overdue.

The world of cryptocurrencies 2

One month ago I wrote about Bitcoin, eGLD and my trading bot. A lot has happened since, so I thought it was time for an update.

First of all, Bitcoin has reached even higher all-time highs. On 14-01-2021 the price of 1 BTC was $40110,-. At the moment however, I have re-invested the majority of my BTC into other altcoins and only keep a tiny bit of BTC available for my trading bot to play with. There are a couple of projects, besides from Elrond, I learned about which show a lot of potential for 2021 and beyond, which is why I traded my BTC for these coins instead. My portfolio currently contains the following coins:

  • eGLD
  • Ethereum
  • Theta & tFuel
  • Polkadot
  • Cardano

I’ll try to explain why I invested in these coins, and will give a small update on what I’m planning on doing next. Oh and the trading bot? It has made a 6% profit over the last month, which is next to nothing, so I won’t be focusing any more on that at this time.

Ethereum 2.0

Ethereum is currently market leader when it comes to running smart contracts (which is crypto-talk for programs). It is widely used as a platform to start new coins, run decentralized programs and is used for decentralized finance. It has however, as I previously described, its shortcomings in terms of processing speed. Ethereum is trying to update the network to improve this, which is what they call Ethereum 2.0.
The way they are achieving this is by implementing something called ‘sharding’. Sharding means that one has several blockchains running in parallel, which all report and connect to a ‘main’ blockchain. This implementation goes in 3 stages, and the first stage went live on the 1st of December 2020. The implementation of the entire Ethereum 2.0 is not expected to be finished before 2022, but the continued attention towards Ethereum will make the price steadily go up.

It is said that Ethereum will increase in value very soon due to the current market conditions Actally today, 19-1-2020, Ethereum broke its all-time high at $1440,-! Historically, the price ratio between Bitcoin and Ethereum has been 1:32, so it didn’t really matter if you choose to hold one or the other, but I think Ethereum 2.0 might change this BTC to ETH ratio in the future. This made me convert some of my Bitcoin into Ethereum.


Theta is a very interesting project, because it’s going to solve a big problem which is going to get relevant really soon. What they’ve build (and patented!) is a blockchain based video-delivery network. To understand why this has huge potential, one has to understand the way all our YouTube/Netflix/etc. video’s are delivered to our devices. Around the world each video content provider has a number of huge datacenters running which stream video’s to many simultaneous users. This is by-far the biggest cost for content providers due to the sheer amount of energy these datacenters use, and are also the biggest bottleneck in providing consistent video quality higher than Full HD to all users connected to these datacenters. Delivering higher quality content to all users requires such high investments in new infrastructure that it is just not feasible.

The problem with today’s Content Delivery Networks.

Theta aims to solve this problem using a blockchain which allows users to buffer videos for other (nearby) users. This completely eliminates the need for a centralized content delivery datacenter, and instead allows users to share their available bandwidth by buffering and streaming content to other users, for which they get a fee in return (tFuel). This allows for much higher video resolutions and for example 360° virtual reality (VR) streaming.

The Content Delivery solution made by Theta.

The fact that Theta has managed to patent their protocol means that anyone who wants to use it will need to pay Theta a fee. It also means that no other crypto blockchain project can come along and try to steal away some of the market Theta is serving, which are all very good for the Theta coin price. I strongly believe this protocol will get widely used in a few years, and that Theta will go up considerably in the next 3-5 years.

Already today you can earn tFuel by downloading and running the Theta Edge Node. I have this running on an old laptop, and it’s earning me a steady amount of tFuel each month. I don’t think the price of tFuel will get very high, but so far my electricity costs are lower than the price of tFuel I’ve earned. If you just want to check out the videos on the network, you can do so on theta.tv.

Polkadot & Cardano

Polkadot and Cardano are said to become the other main competitors of Ethereum, together with Elrond. Polkadot is actually invented and developed by a co-founder of Ethereum, Gavin Wood.

Both Cardano and Polkadot have a very active community and a good business plan. Polkadot already has a working blockchain that people can use, Cardano has planned to release their blockchain in February/March 2021. Both Cardano and Polkadot have a very active community and a good business plan. Polkadot even became the 4th biggest crypto coin on 17-01-2020, surpassing Ripple (XRP), and only has Tether (a stablecoin), Ethereum and Bitcoin in front of it.

I don’t know too much else about these coins, but here I trust the community and have therefore bought myself into these projects.

Future plans

Honestly, when going down the crypto-rabbithole one can go very deep. So far, my strategy on the coins I’ve invested in have been going long (buy them, plan to hold on to them for a few years before selling them again). I have been learning more and more about the crypto world, and have started to get an interest in trading coins which are not yet listed on exchanges. These coins are usually high risk, high reward, but one can get a lot of help on Twitter and Telegram in identifying the high profile coins which are about to increase >10x in value.

In order to trade these type of coins, one needs to use Uniswap. During the coming period, that’s where I’ll be hiding :).

Happy trading!

Cheers, Jesper.

The world of cryptocurrencies

We’ve all heard about Bitcoin. Bitcoin was last week (20-12-2020) at an all time high of $24.171,-, and in the last couple of months I’ve been trying to get a grip on the world of cryptocurrencies. Admittedly, I’m still unsure about the exact workings and why Bitcoin is valued at the price it currently is at, but I’d like to share at least the process on how I got started and what I’m trying to learn and achieve.

Now before we go on, I have to explain a few terms I’ve learned on the way but didn’t know at the time.

  • Cryptocurrency: A digital asset which can be traded.
    • When it is traded, a record is created which is stored in a ledger.
    • The ledger uses very strong cryptography, to make it anonymous.
    • Any new entry (block) in the ledger uses the previous block for its calculations. Therefore, one cannot modify the already processed blocks (which store previous trades) as this would change all the blocks after it as well. This is also called a ‘blockchain’.
    • The ledger is verified by miners. For a new block to be valid and added to the ledger, at least 51% of the miners must agree.
    • You can store cryptocurrency in a Wallet. You often access a wallet by uploading a specific file (keyfile) to it, in combination with a password.
  • Bitcoin (BTC): The first and best known cryptocurrency.
  • Altcoins: All the cryptocurrencies which are not Bitcoin.
  • Smart Contract: a program which is stored on the blockchain, which automatically runs when certain conditions are met.
  • Ethereum (ETH): The first altcoin, and currently the highest valued altcoin.
    Etherium improved over Bitcoin by enabling Smart Contracts.
  • Elrond eGold (eGLD): an altcoin which is still under development.

Still on so far? Good, let’s go back in time a bit.

How I started with crypto

One day a few months ago, a colleague came to me and asked if I knew something about cryptocurrencies. I guess at that time I knew as much as the average person does, which is not much. I knew about the existence of Bitcoin, and that it seems like a balloon which can inflate and deflate in value very rapidly (I still think that). A couple of days later, this colleague came by again and told me very enthusiastically about Elrond eGLD. I didn’t understand much of it, but I ended up buying a bunch of eGLD. Naturally, the value quickly dropped by almost 75% after I bought it, but I kept most of it with the promise that the price eventually would go up. At the point of writing, the price has risen again to levels above my buy-in price.

eGLD price ($) since my buy-in. Each bar represents a day. The white dotted line is my buy-in price. Total range is 03-09-2020 till 17-12-2020.

So why am I holding on to eGLD?

This info I learned over the last couple of months. I am definitely oversimplifying things here, partly because I don’t understand it fully and partly to try and keep this story readable and interesting.

Elrond is a team which is developing the Elrond Network. Ever since Bitcoin came out, many different engineers have started an Altcoin which according to them would rival Bitcoin and eventually take over the marked-lead’. Until now, none of them have succeeded in taking over the lead from Bitcoin, mostly due to a lack of a good business plan. The Elrond team however has understood that in order to reach the masses, a cryptocurrency need 4 things to work well:

  1. A scalable infrastructure to run your systems on.
  2. A sustainable economic model which runs on the infrastructure.
  3. Make the technology invisible and accessible.
  4. Create tools for external developers to build applications on your infrastructure.

Bitcoin is in its core relatively simple. There is an infrastructure capable of handling an x amount of transactions each second, and there is an y amount of total Bitcoin available. This means that Bitcoin is a good store of value, and a good medium to trade money on. But essentially it only fits the second and maybe the third point, although I found it difficult to get started with trading due to all the new terms I’d never heard about.


Ethereum took crypto a step further than Bitcoin with the introduction of Smart Contracts. With the Smart Contracts, Ethereum adds a different dimension to the blockchain technology. They also did a good job in creating different tools for developers, and it is now running many different applications. However, Ethereum is still limited to an x amount of transactions per second.


The Elrond Network aims to address this final problem, and also improve upon the accessibility issue. Firstly, the Elrond Network blockchain is both scalable and adaptive, which means it is not limited to an x amount of transactions per second. Secondly, for their economic model, they’ve created a crypto coin which is called eGold (or eGLD). I’m unsure about how the economic model behind it works, but I’m reading it’s good and sustainable. Thirdly, to make the technology accessible, they are creating an app – Maiar. The Maiar app will allow anyone with a mobile phone and a phone number to access the Elrond Network. In the app, people can trade eGLD without having to understand wallets or needing to deal with keyfiles. I’m sure it will be able to do more in the future, but the key thing here is easy access for anybody. Fourth and lastly, the Elrond team is working on tools for external developers (one of them is called Arwen).

All these factors together make it sound to me like a good investment. Currently, the Elrond Network is live and one can do trading in eGLD. Once the Maiar app comes out and developers are enabled to create Smart Contracts on the network, it should become more and more attractive for people to start using the Elrond Network. Due to this, the price of eGLD is expected to go up exponentially. My plan for now is to hold on to my eGLD for a few years and to hopefully after that time be able to sell some of them for a nice profit.

Automatic trading

Me being educated as an electrical engineer results in that I’m always thinking about ways to automate things. A natural thought is then to check if I can automate trading cryptocurrencies. Such a program should in essence do the following:

  1. Buy crypto before the price goes up.
  2. Cell the crypto before the price goes down again.

Sounds simple, but (accurately) predicting the future of any market has been tried by many people before me who did years of studying into this field and nobody has been able to create an algorithm that is 100% successful. Me, who knows nothing about financial markets, will also not be the one who does this. However, I do have other skills; I know a bit or two about programming, and I am able to look at what other’s have created before me. After a bit of googling I found Freqtrade, an open-source crypto currency trading bot written in Python which is actively maintained. The idea is that you define a Trading Strategy where you define triggers for the bot to act upon. The bot looks at the market every couple of seconds, and if one of the triggers is met the bot either buys or sells your assets into other crypto-currency.

One of the advantages of using Freqtrade is that it has a Telegram integration, meaning the bot can send messages on your phone when it buys or sells, so one can keep an eye on its performance. It also has the possibility to backtest different Strategies on historical market data, and it’ll tell you how much profit the bot would have made. I therefore decided to install a copy of it on my server to see if I could get it working and I was able to let it make a profit.

My configuration

Initially, I started Freqtrade with the default configuration and pairlist. The pairlist defines which coin-pairs the bot is allowed to trade. This default configuration attempts to increase the amount of Bitcoin (BTC) by buying altcoins with BTC and selling them. Freqtrade has a couple of default strategies, but I soon found a Github page with many different strategies, which I was able to download and backtest with.

One of the things I found was that it was difficult for me to properly understand what each configuration did and how it was making a profit. The amount of parallel trades are usually limited to 2 or 3, so even if the correct conditions were met for the bot to buy it often would not make a trade since it already had the maximum trades outstanding. This, in my mind, introduced a system of randomness in an already very random environment. After a while, I settled for the following configuration:

  • Try to maximize the amount of USDT (an altcoin which represents the USD).
  • Only allow trading USDT to BTC. Allow 1 parallel trade, and use all my funds on this one trade.

This made backtesting and running the bot a lot easier, as I could look at the graph on Binance and verify its behavior. During the November BTC bull run (a bull run is a longer period of rising prices and optimism in the market) the strategy that would have made the most profit was the Simple strategy, which is based on this book. I therefore have been using this strategy over the last month to try and see if I could optimize it.

Does it work?

Yes and no. The bot is only as good as the strategy, and a poor strategy will of course lose a lot of money. The Simple strategy overall works well, however it has the tendency to buy at both low’s and high’s. It has therefore earned almost as much money the last month as that it has lost.

Profit & Loss (PNL) over the last month.

The Simple strategy buys when there is a positive movement going on in the market, and sells after 1% of profit has been made. However, when it makes a sale by nature the price is going up (otherwise it wouldn’t have made a profit), so it has the tendency to buy-in again soon after it did the sale. By this time the positive movement is often coming to an end and the market is going down again. In order to prevent the bot from buying at these high peaks, I added a 2 hour lock on the buy-process, meaning the bot will wait 2 hours after selling before it attempts to buy again.

Unfortunately, the bot was down for maintenance during the two days where the BTC price went up with 30%. This would have been the perfect time for the Simple strategy to shine and earn me some nice profits.

So until now no profit. Is it worth it?

Wouldn’t it have been better to just invest in some BTC one month ago and call it the day? Currently, if you just look at the profits, yes. However, this neglects the fact that I’m having a lot of fun trying to optimize this bot and that, by the time it works well and the price of BTC suddenly does go down drastically, my bot will guarantee that I’m not loosing too much money either. I’d argue that the main purpose of this bot is not to make as much profit as possible (I have eGLD for that), but mainly to learn and to have fun.


This article is written by a financial noob. I’ve tried getting things correct and understandable, however if you feel something is off please let me know!

Cheers Jesper

Preparing the cabin

A special thanks to Helge in assisting me preparing the water pump, checking the drain and a thanks to both Arve and Helge with hogging the trees!

I recently got the keys of our cabin. Since this time I’ve been preparing it so my parents can come and be there for a few weeks during the winter. There are 1001 things I want to do there, but for the first few jobs we prioritized the ones that were most essential. The most essential was the water. During the winter the waterpipe freezes as it lies on the surface, so the cabin only has a pipe with running water from roughly April to October. If somebody wants to be there during the winter they need to bring and store their own water. The cabin has one (very old) sink and drain pipe, but the previous owner said they never used it. This meant we were unsure on the status of the drain, and if water actually leaves the cabin.

In order to make life at the cabin a bit more comfortable we installed a small pump and a waterpipe inside the cabin which allows you to wash your hands. In addition to that we checked the status of the drain, and made it so that water can safely be drained during the coming winter. We plan for this solution to be here only for a few months until spring allows for building something more integrated, but it is now possible to operate it as-is for at least a few years (just in case). Lastly, we decided to cut down some trees to get more light and a better view.

Installing a pump

Beneath the cabin there used to be a well which in the old days was used for supplying water. A handpump was connected to this well, which allowed you to pump up the water and for example wash your hands or fill up a bowl over a small sink. This system is still mounted on the wall, but the pump is disconnected from the well.

Original situation.

In order to get running water in the cabin we bought a small boat-pump, a hose, a switch and a bucket. The bucket will hold (drinking-)water which is filled up with the use of jerrycans. The pump can be lowered into the bucket and will, once powered on, pump the water through the pipe which is mounted with zip-ties to the old water pipe. This system was installed in a few hours, where the biggest challenge was to find a good location for the on/off switch and running the wires/pipes in a neat way.

Cutting cables and hoses

During installation we found that a small cutting board that was nailed to the wall. It was there to hide a hole in the wall, and turned out to be a perfect holder for our switch.

The old cutting board with the new switch.

A few hours of work, and suddenly we had running water!

The completed setup.

Checking the drain

Checking the drain turned out to be a more difficult job then we initially expected. The drain is a single pipe running from the sink to a concrete box outside filled with sand and small stones. These filter the water, after which it is released into the nature.

We had hoped that the water would run through this entire pipe and into the box. However, when we tried to pour water through the sink no water appeared inside the box. That meant the pipe had a breach somewhere, and we would have to locate it in order to make sure no water was leaking inside the cabin.

Firstly, we attempted to go underneath the cabin to check if we could find the drain pipe. This we did not, but we did find the old (disconnected) well which in the old days was used for the water supply.

Old well in the crawl space.

Outside the cabin we found that the drain pipe was overgrown with a tree. Judging by the size of the tree the pipe must have been there for many decades. It looked like this was at least one of the places the pipe was broken.

Tree which has grown over the drain pipe.

Ultimately we were able to find a spot outside where the pipe was easy to take apart and where water which was thrown into the sink was running out. At this point we dug a hole in the ground and filled it with gravel and stones. This will act as a filter, and allows us to use the sink during the upcoming winter without a risk of the pipe clogging up.

Preparing a hole with stones and gravel to prevent the drain pipe from clogging up during the next winter.

While we were working outside I installed some Christmas lights to make it a bit more cozy.

Christmas lights on the veranda.

Getting that view

The cabin is located at some height, but the view is completely blocked by mainly a big fir tree and many smaller trees. Cutting down trees is a job which can be done in a day and does not need much preparation, so we therefore decided to go to the cabin one day and start cutting down on the trees which were blocking the view.

The view before the trees were cut.

We started by cutting down the tree which had grown over the drain pipe and the large fir tree.

Cutting down the trees went surprisingly fast. Since we had the entire day we continued cutting down on some rotten trees and in general thinning out the amount of trees which were in the way. To assist we had a 4×4 which was very useful in pulling trees down in the right direction and in moving the cut down trees.

4×4 to assist with moving the cut down trees.

When the day was done there was a much better view and much more daylight! The increased amount of daylight is a welcome addition in the short winter days.

The view after the trees were cut down. One can now see the water in the distance, and the cabin receives much more daylight. There is also a decent gap in the tree line left to the house in the background

The cabin is now ready to be inhabited for a couple of weeks in a row. We have many jobs left which we hopefully can start on during the spring, but for now there is (some form of) running water, enough wood to heat the cabin and a decent view with sufficient daylight to not get depressed.

Cheers, Jesper

OpenVPN on a Raspberry Pi

My parents and I, who come from the Netherlands, have recently bought a cabin in Norway. We have a lot of wishes and ideas for this cabin, but one of the first projects I started on right after we signed the contract was the setup of a VPN server on a Raspberry Pi. The goal is to have any device connecting to the WiFi in the cabin appearing to be in the Netherlands, so that my parents can ‘work from home’ from the cabin and can stream Dutch TV and Dutch Netflix. For this to work, we need a router that can act as a VPN Client and a VPN Server to connect to.

By having the router connecting to the VPN Server, any device that connects to the router will also be connected via the same tunnel to the internet. By installing the VPN server on a Raspberry Pi, I can just ship a readily installed unit to the Netherlands with minimal setup steps for my parents while they remain 100% in control of their VPN endpoint. This is important to ensure that for example Netflix will not block their stream, as any data appears to come from their own home instead of a (known) VPN provider.

For this project we use the following components:

I recently bought an Asus RT-AC66U B1 router, which I know can act as a VPN Client. The Asus 4G-AC68U is a model from the same product line, which also includes a 4G simcard slot.

Software-wise, we only need only a handful of services/programs:

  • The latest Raspbian Lite
  • PiVPN
  • A Dynamic DNS provider, I’m using Google Domains
  • ddclient


The first step is obviously to flash Raspbian on an SD-card and shuf it into the Raspberry. I’m using Raspbian Lite since we know exactly which software packages we are going to use, and any dependencies will be installed with them. This will keep the overall system performance as high as possible.

After setting up Raspbian, we use SSH to log in as root and install PiVPN. PiVPN will install either OpenVPN or WireGuard, in our case OpenVPN as this is also supported in the Asus router. I have set up the IP configuration to be dynamic, so it can adapt to the setup in my parent’s house once it arrives in the post. Other than that I’ve used the standard settings, obviously choosing the right DNS Provider (Google Domains). I had also set up a Dynamic DNS entry in Google Domains prior to the Raspberry Pi installation, which will be used for this VPN setup.

Dynamic IP lookup

Since I don’t know the public IP address of my parents house (and they might have a dynamic IP address that changes every once in a while), one can use Dynamic DNS. Basically, Dynamic DNS checks the current public IP address of the host and sends this to a pre-configured DNS provider. The provider matches the IP address, for example, to a subdomain name, for example cloud.jessendelft.org. This way, anytime a device tries to find cloud.jessendelft.org they only have to ask the DNS provider, which will then provide them with the correct public IP address. To achieve this on the Raspberry Pi we can use ddclient. ddclient only needs to know a few basic parameters such as the login credentials of the DNS provider and does the rest by itself. It runs as a deamon in the background, automatically checking and updating the current public IP address in the DNS register.

I generated two OpenVPN configuration files which can be uploaded to VPN Clients and allows them to connect to the server, one for the Asus router and one for my private PC so I can test & debug the entire setup. These configuration files include instructions to use one of my subdomains to find the current public IP address of the OpenVPN Server in the Netherlands. This keeps the setup easy and flexible.

Lastly, I entered the Wi-Fi credentials of my parents house in a file called ‘wpa-supplicant.conf’ and placed this in the /boot/ folder of the Raspberry Pi, so they can use it both in wired and wireless mode. After running a few tests it was then ready to send it in the post, and hope that all works! I also included a guide for my father to set up the required port forwarding in his router in the Netherlands, so the VPN Server can be found from the internet.

Testing the setup

When the Raspberry Pi had arrived in the Netherlands it was time to put it to the test. We forwarded the required port in the router, gave it a static local IP address and attempted to connect from Norway.

Connecting was successful!
However, the test-pc did not have internet access.

The VPN Server in its natural habitat.

Some debugging later revealed that the ethernet port did not have the default eth0 name, but something more tropical. Changing the name of the ethernet port in the configuration (iptables) fixed the problem and allowed internet access through the VPN tunnel. Hooray!

Lastly we installed Log2Ram, which limits the logging done to the SD-card to extend the lifetime of the system. SD-cards can get corrupted when written too often to, so in order to limit the amount of write cycles Log2Ram will save all logs in RAM memory and only once a day write the entire logfiles to the SD-card.

A reboot to make sure everything works and it was finally time to check the speed of the connection!

Speedtest over 4G

Honestly, this is 10x as high as expected when we started on this project so we’re certainly very happy about this! This will allow my parents to comfortably travel to their cabin and use the internet, while they appear to be in the Netherlands.

Playing with Grafana & InfluxDB

In my search for a way to display the data being collected by Homey I often have seen Grafana as an option. Grafana is a tool to visualize data in graphs, gauges, tables, etc. It reads data from a database, is very responsive and easy to work with. As a bonus, FreeNAS offers a community plug-in which has both Grafana and InfluxDB installed and ready to go, so I could easily set up a jail to try it out.

Homey by itself does not log any data. To have it upload its variables to the InfluxDB database I just had to install the InfluxDB App, fill in the IP address of the Grafana jail & credentials of the database, et voila! From the Grafana interface I started seeing the potential Query fields being populated with all the data that Homey had to offer. Not much time after that, I had my first Dashboard populated with energy measurements, real-time power consumption and temperature data from different rooms in the house. With a little more playing around this Dasboard was shown as an iframe on my Magic Mirror.

Grafana dashboard shown as an iframe on the Magic Mirror

After doing this I realized that FreeNAS is also a great source of data (CPU usage, network & HDD speeds, RAM usage etc.) and a place where I’d like to get some more overview of what’s happening. Naturally, a quick Google-search yielded tons of people who had done this before, and I followed this guide to get FreeNAS to upload its data to a separate InfluxDB database and create a Dashboard in Grafana. I then used this dashboard as an inspiration to create a similar one for Homey and by the end of the day I had 3 different dashboards which give me a neat insight in how well my core-components from my smart home are working.

An additional line in the reverse proxy configuration and the Grafana jail was accessible through the internet. Curious on how it looks? You can find it here: cloud.jessendelft.org/grafana/.
Username: viewer
Password: viewer123

I am not sure yet if I want to keep using this system, as I ultimately want some form of 2D/3D interactive map of my house to show this information. As an interim solution though, this is quite nice and I was surprised by how easy it was to include this in my system. I like the fact that all the ground-work is up and running (FreeNAS, Reverse Proxy, Homey, etc.), and that it apparently is working so well that it is easy to build layers of complexity upon them with for example the Grafana dashboards. If you have comments/ideas on what I can do with my data, or how I can improve my system even more, please let me know in the comments!


Steampunk Taptower build

I can’t believe this project took me almost a year to complete! In August 2019 I was browsing around Thingiverse for some cool idea’s to 3D print, when I found a Steampunk Tap Handle made by Fuzzie/The Beergineer:

I knew I wanted this as well, so I 3D printed the parts, spray-painted them and assembled them together with some scrap tubing and 8mm screwing rods. I also had some leftover APA102 LED strip from the Ambilight system laying around which could be used to light up the tap handle, and I ordered a couple of Arduino Nano’s to control this LED strip.

The assembled beer tab, with multi-colored LED’s on the inside.

The prototype was up and running rather quickly. I put the Arduino on a breadboard, connected the light strip to it and uploaded the code from The Beergineer. Before it worked though I made some changes to the code, which can be found on Bitbucket (including the changelog). Most notably I introduced interrupt-based reading of the push button opposed to polling it. This push button is used to change the light pattern shown inside the tab handle. I also programmed it so that every time the button is pressed, the new state is written to EEPROM so the same light pattern is shown after a power outage. Lastly I changed the main loop from an if-else loop (which had 4 if-statements) to a switch, to prevent unnecessary calculations.

Arduino Nano on a breadboard. Note the beautiful ‘push button’, aka red wire with capacitor.

And it was at this moment where this project ended up in a moving box, and didn’t find it’s way out until June 2020…


Almost 10 months after I started this project I dug up the beer tap as we would be going to our cabin during the holiday, which is where I planned on installing this. Before installation the Arduino was put inside a plastic box and covered in hot glue, to give it some resistance against rain. I soldered the wires to the headers, installed a push button on the outside of the case and put a Molex connector on the wires to make installation easy. Additionally I added a switch connected to the Arduino, which can turn the LED’s inside the handle on and off.

On the top: planning the box-layout.
On the bottom: components are in place.


At our cabin we have a refrigerator with a beer tab on top. Installation was a matter of unscrewing the old tab and screwing on the new tab.

Installation of the Steampunk Beer Tab.


During the night, the LED’s inside the Tab Handle create a very cool looking scene:

The Beer Tab at night, showing different light patterns.


I think this was a fun little project to do. Unfortunately I wasn’t able to properly hide the cables as the metal in the tab tower was too strong to drill through with the tools we had available at the cabin. Therefore, they run on top to the black box which holds the Arduino. Other than that, I am very happy with the result.

Cheers! And don’t forget, keep Beergineering!


Homey – The center of my smart home

Anybody who has a couple of smart devices in their house will recognize the fact that every brand seemingly has their own way of communicating with their devices. This can quickly result in you having a ton of different apps on your phone, each controlling one separate thing. In addition, they’ll probably tell you you need a dedicated hub to communicate with these devices. This means you are either stuck with one brand, or with multiple brands that are incompatible with each other.

“Do you want the lights to turn on when you come home? Sorry, your smart light bulbs are not compatible with the door sensor. Want to be woken up when your basement is flooding? Sure, just get a flood-sensor, a new app on your phone and make sure your phone is always on & connected otherwise you won’t receive the notification.”

From the time working with smart devices I have come up with a few rules I try to stick to as much as I can:

  1. No services should run on my phone directly, otherwise they will drain the battery and they require me to always have my phone on. They should be offloaded to a dedicated external device.
  2. My phone should have as little apps as possible.
  3. Devices, and in particular the lights, should have a high WAF-factor (Wife Acceptance Factor), meaning:
    1. They should work quickly and reliably.
    2. They should preferably have a physical button, or at least have voice control so that they are easy to (manually) control.
  4. Lesser important, but where possible choose a device that does not require WiFi to avoid unnecessary traffic on my WiFi network which could make it slow.

A big help in living after these rules has been my Athom Homey. I bought a Homey V2.0 in November 2019, and since then it has slowly become the center of my smart home. Homey is a smart home hub, able to communicate directly with over 50.000 devices of over 1000 manufactures, without the need for additional hubs. It is able to communicate over both WiFi, ZigBee, Z-Wave, 433MHz, 868MHz, Infrared and Bluetooth, so it is extremely versatile in terms of what devices it can communicate with.

Homey has become the center of my smart home.

Homey is also accessible from outside my local network, so as long as I have internet I can check up on the status of my devices at home. At the time of writing I have around 30 devices integrated into Homey, and 17 apps to control all of them and the automation’s that run behind them.

Current integrations

Smart WiFi sockets

One of the simplest things you can start with when starting your smart home are smart WiFi sockets. These plug in your existing wall outlet, and measure the voltage, current and power of whatever is plugged in to them. In addition, they have a relay which you can use to turn things on & off.

Homey can use the relay to turn things on and off, for example the power to our robot vacuum Dustin to control when it is allowed to charge. Additionally, with the help of Flows (which I’ll explain a bit further down) you can automatically detect when a device is on by monitoring the energy consumption. This is useful for, for example, the washing machine or the dishwasher. In our case, when the washing machine is running it uses a certain amount of power. Homey monitors if the power consumption of the smart WiFi socket exceeds 100W, and if it does it turns on a virtual device which is called ‘Washing Machine’. Vice versa, if the energy consumption drops below 10W for over 5 minutes, the virtual device ‘Washing Machine’ is turned off. A full guide on how to implement this can be found here. This is used to calculate the total energy consumption & price, but also allows us to ask ‘Hey Google, is the Washing Machine on?’, and Google Home will understand and tell us the answer.

In my case, I currently use BlitzWolf SHP6 sockets (10A versions) for controlling power to the Playstation and Dustin, and BlitzWolf SHP2 sockets (16A versions) for monitoring the washing machine and the dryer. All of these sockets are re-branded Tuya sockets, and I have flashed them with ESPurna software to make them compatible with Homey and remove the need for a separate BlitzWolf hub. I am considering moving towards Aqara smart plugs as they use Zigbee instead of WiFi, see rule #4.

Homey integration into Google Home

Talking about Google Home, Homey is integrated into Google Home. This means that any device that is added into Homey automatically gets forwarded to Google Home! This makes it very simple to add voice steering to anything, from the Awning to the Playstation.

Google Home overview, showing the devices on the Balcony. All devices are accessed by Google Home through Homey.

One exception to the ‘easy integration’ are the Aqara temperature sensors. Homey does not support the synchronization of sensors to Google Home (link). I therefore made a virtual thermostat for each sensor, which did allow exposure to Google Home. This however meant that if one asks for the temperature in the living room, Google Home will respond with ‘The temperature is set to X, and currently it is Y degrees’.

Philips Hue

Homey communicates with my Philips Hue bridge over WiFi/LAN. The Hue bridge takes care of the communication with the light bulbs and light switches over Zigbee. Theoretically Homey could take over the functionality of the Hue bridge completely (Homey talks Zigbee after all), but I have one reason why I haven’t switched it out yet: Reliability. The Hue system has over the last 4 years proven itself to be very, very stable. We have never had issues where we pressed a button, the lights would not come on. They respond quickly, all the time. I have realized this is essential to keep the family on-board with the whole smart home journey.

Also, I can tinker as much with Homey as I want while the lights and light switches will still be working fine as they are on a separate system. Lastly, resetting each separate light and programming it into Homey will require a lot of work (with 4 light switches and 17 light bulbs this is quite a job). Since everything works so smoothly, it is best to keep this system as is for now.


Here in Norway every energy meter is since January 2019 ‘smart’, as they are all required to have a HAN-port (Home Area Network-port). This port reports every second the real time power consumption of your house over M-Bus, which means that when you connect an M-Bus reader to this port you can get this information send over for example WiFi or Zigbee.

This is where Tibber comes in. They are a Norwegian energy provider and sell a little device called a Tibber Pulse. The Pulse connects to the HAN-port (but also works with smart energy meters in other countries), snaps onto the front of your meter with magnets and sends the data over WiFi to Homey.
Tibber is also my energy provider and connected to Homey, which means Homey has access to my current energy prices, information on lowest and highest energy prices during the day as well as statistical data on the price. This I use for example to calculate how much it costed to wash our clothes, or to charge Dustin during the time of the day the energy prices are at their lowest.

BTW, if you want to sign up for Tibber, give me a shout! We can both earn €50,-/500NOK in their web store if I register you as invited!


Flows in Homey are like If This Then That (IFTTT) applets. You can program certain ‘triggers’ which start an automation (If This), which will then perform certain actions (Then That). In addition you can program parameters which need to be met before the actions are performed. A few examples I have below are:

  • Detect if somebody is showering.
  • Virtual Devices.
  • Automating the extending and retracting of the awning.

Detect showering

This was my first automation, and mostly meant to try out the ‘Flows’. This flow runs when humidity changes in the bathroom. When the humidity is greater than 80%, the first flow creates a notification saying ‘Somebody is showering!’, and then deactivates itself. A second flow activates when the humidity is lower than 80% and the first flow is disabled. This indicates the shower is back off, so it simply re-enables the first flow.

Two flows to give a notification when somebody is showering.

This has worked remarkably well so far. I’ve never seen any false positives, nor any double notifications.

Virtual Devices

If a device cannot be added directly to Homey, maybe because it is a ‘dumb’ device or it is incompatible, it is often possible to make a Virtual Device by looking at the power consumption, like what we do with the washing machine.

Another possibility for virtual devices is to use them as (voice activated) triggers, for example with the Playstation. When the virtual device ‘Playstation’ is turned on by Google Home (‘Hey Google, turn on the Playstation’), Homey runs a flow which turns the electrical socket on, turns the TV on and sets it to the right input channel. The TV then sends a CEC command to the Playstation, which will turn it on as well.

When the virtual device ‘Playstation’ is turned on by voice, it turns on the TV, Playstation socket and sets the TV to the correct input.

There is also a second flow that turns the Playstation power socket off again when the power consumption drops below 10W, and the countdown timer (which is set to 5 minutes) is not running.

Awning automation

The awning motor which I recently installed can be steered from Homey using a Z-Wave signal. An extensive description of how the awning is extended and retracted based on the seasons & weather can be found here.

Future Expansions/Idea’s

I have ordered a couple of different Aqara sensors to go and try out. All of these sensors use Zigbee to communicate, which I like a lot as it doesn’t clutter my WiFi network. Among the things I have ordered are firstly a wall switch which I’m planning to use to steer some of the lights in the hallway. Secondly, a door sensor to turn up the light intensity of those same lights for a couple of minutes when the front door is opened. Lastly, I ordered a flood sensor which should give an alert on the Google Home devices when it detects a flooding, as well as flashing the lights. I also have some cool ideas for the Xiaomi lux sensors, which could completely automate the awning and the lights in the living room.

Another thing I am looking for is a cool-looking dashboard which I can for example put on a tablet somewhere in the house, which can then be used by the rest of my family to control devices and check the status on them. This will greatly increase the WAF factor because it makes the data more accessible. I am considering to use MQTT to push data to the Magic Mirror, where I can create a floor map to show the status, but this won’t enable us to steer devices. If you have any suggestions, please let me know in the comments below!


Unfortunately, as I mentioned in my Roborock post, the Xiaomi Mi Home app is outdated which means I cannot control my Roborock through Homey. I have temporarily added the Roborock directly into Google Home, but hopefully the developer will come with an update for this app. I am also considering looking into this myself, as it looks like the app is not actively maintained any longer.

Lastly, we have a Sharp TV in the living room which uses an RF control. As no library has been created to control TV’s over RF with Homey, it cannot be added. Homey is also physically in a different room, so even if we switch out the TV for one that is controlled by IR, Homey couldn’t control it.
If I want to control the TV (and the amplifier & TV set-top box) I have two options; the first is to start creating my own app for Homey, however I find that my time to do this is quite limited. The other option is to buy a Broadlink RM Pro, which should be able to learn the controls of the TV and should also be able to steer the amplifier and set-top box (which are using IR). If you have any more idea’s/suggestions, please drop me a message!


Cheers, Jesper


Roborock S5 Max

Please meet Dustin! For my girlfriends birthday I bought a Xiaomi Roborock S5 Max, after having talked about it for many months. I dislike vacuuming and do this at most once a week. My girlfriend on the other hand would like me to vacuum every day, so we both agreed this could be a very good solution for the both of us! The Roborock S5 Max is able to do both vacuum cleaning and mopping, and I haven’t been able to find any negative review of them, hence why I choose this model.

The Roborock S5 Max has the possibility to change the name. So after a short brainstorm session with the family ranging from Bob, JARVIS (which is already the name of the house) and Dusty we landed on Dustin.

First impressions

My first impressions with this product are very positive! Dustin has a LiDAR sensor peeking out from the roof, which it uses for navigation and mapping. The mapping feature is very impressive, as it creates a 2D map of my house while it is vacuuming. Simultaneously it logs on the map where it is and where it has been. In addition to the LiDAR it has a big bumper with a pressure sensor on the front to stop it running into low items, and sensors on the bottom preventing it from falling down the stairs.

  • Running Dustin for the first time. On the top, mapping the house for the first time. On the bottom, mapping and cleaning were done.

After the house was mapped you can manually divide it into different rooms. This allows you to clean specific rooms, or set different vacuum/mopping settings depending on which room it is in. The map also allows for setting ‘no go zones’ and ‘virtual walls’, which make it not go into a specified area.

The LiDAR is slightly offset from the middle. This means it can do a 360 on the spot to very accurately see depth, which means you can manually set it anywhere in your house and it is able to locate itself and automatically drive back to the dock. I have tried this a couple of times, and in ~80% of the instances it successfully managed to locate itself in the house and return to the dock.

  • Mapping complete, and the house is divided into rooms. Also a no-go zone (the red square) and no-mopping zones (the purple squares) have been set up.

Using the map you can also drop a pin to where you want it to go to. After it reached this location, you can tell it to do a ‘Spot Cleaning’, which cleans an area of 1,5m² around that spot. Very handy!

Are there any shortcomings?

I have found a few so far. When the LiDAR sees a mirror, it is convinced the room is 2x bigger than it actually is due to the reflection. This causes it to misjudge where walls are, and it get’s confused as it tries to reach these spaces. In my case, when cleaning the hallway it finds that there must be a room connected to the hallway that extends into the wardrobe, and that it actually extends all the way into the living room. It then tries to drive around to the other side to access this room, only to see that there actually is a wall there. It tries this three times in a row before it gives up cleaning this area (but hey, it shows commitment!).

  • On the left, the map is shown as when Dustin is placed in front of the mirror. The closet is painted red in Photoshop, and it can be seen that the walls on the back of the closet have disappeared. On the right, you can see that Dustin tried to drive back and forth a couple of times, and that when it is on the back side of the closet the walls are drawn as they are.

Another shortcoming is that it sometimes gets stuck on the doorway steps, especially when it tries to drive parallel over the doorway steps. There might be a solution by creating a separate room over these doorsteps as suggested on Reddit, but I haven’t been able to test this properly yet.

Lastly, I haven’t been able to find a way to integrate this unit into my Athom Homey. To centralize all my automation’s I’d like to have it integrated into Homey, but unfortunately the Xiaomi Mi Home library is not updated which means it cannot talk to this Roborock model. For now I integrated it directly into Google Home (an integration that would normally have been done through Homey), which at least enables voice steering.


So far, Dustin has been vacuuming our house multiple times in the last week. The rest of the family seems to be happy with him as they are using him extensively and without my help. I have good faith in that I’m able to fix the doorway problem, and if all else fails I can always make them lower so that Dustin is able to clear them better. All in all, I am very happy we finally have one running around :).

If you have any tips/updates on the Homey integration or the other issues I’m seeing, feel free to drop me a comment below!

Awning Motor #2 – Installation & Configuration

Installing the Dooya awning motor was a bit cumbersome, due to the sheer size of the awning. Our awning is 7 meters long, which means that it requires at least 3 persons to lift the unit off and on the roof. In total we needed 2 installation attempts. During the first attempt we managed to remove the old, manual crank system and slide the motor into the awning. After we slid in the motor we found that the manual crank system was wider than the new motor, which meant the motor could not be slid in completely whilst also being attached to the side plate supporting the awning:


Old crank vs. new motor. The lower picture shows that the motor is not fully slid into the awning.

To allow the motor to be slid in completely there were basically 2 options:

  1. Shorten the support beam holding the awning to the roof.
  2. Use bolts to offset the motor from the side plate.

Shortening the support beam would be the most elegant solution, although this means that reverting to the manual crank at a later time will not be possible. The quality of the motor is not known, and failure is always an option. Therefore we chose to get some 50mm M6 bolts and a whole bunch of washers to offset the motor from the side plate. Simultaneously, the motor was rotated 180 degrees so that the power cable and antenna would exit on the top instead of the bottom, allowing for neater cable management.

The motor with the 50mm offset. Now the motor is fully slid into the awning.

After pairing the remote control to the motor and adjusting the outer limits, it was very satisfying to find out that it working well. It looks like the motor has enough torque to comfortably pull the awning back up, which hopefully means it won’t break in the near future.

Homey and Google Home integration

The remote control uses Z-Wave to steer the up & down movement of the motor. Homey is able to steer Z-Wave devices, and according to the Homey forums the Brel Motors app should be able to be paired to and control the Dooya DM45RM motor that is installed here.


On the left: Pairing the Dooya motor
On the right: The control interface in Homey.

Pairing was very simple. The app asks to push one of the buttons on the remote control that is already paired to the motor. From that signal it can determine the unique communication key to the motor (which ensures that a neighbor won’t accidentally control my motor), as well as the correct up, down & stop signal. A concern I had was that Homey was too far away to reliably control the motor, as it is positioned 3 rooms away from the motor, but the Z-Wave signal seems to have no problem reaching the motor.

My Homey was already integrated into Google Home. After a quick refresh, the Sunshade appeared in the Google Home app. Sweet!

And finally, it was time for a test:

You may notice that I say ‘close the sunshade’ instead of ‘lower the sunshade’. This is because Google recognizes the awning as blinds, which means they can only be ‘closed’ and ‘opened’. Fortunately this is not a problem whatsoever as it is easy to remember, and in the worst case Google doesn’t understand our command and we need to say it twice.

Some more Homey configuration

With Homey being able to control the awning, I could program a couple of ‘flows’. Flows can be compared with IFTTT applets that are managed and run inside Homey.


To the left: 4 flows to automatically steer the awning.
To the right: detailed view of the flow that lowers the awning.

I set up 4 flows for now:

  1. The first flow automatically lowers the awning at 11:00 if the weather is good.
  2. The second flow retracts the awning at sunset.
  3. The third flow retracts the awning when the weather applet shows it’s raining.
  4. The fourth flow retracts the awning when the weather applet shows the wind speed is over 39 km/h, which equals to Beaufort 6 or higher.

The flows that retract the awning will always run once they are triggered, regardless if the first flow has been triggered or not. This is because we are able to lower the awning manually with the remote control, and this motor only allows for a one-way communication. Therefore Homey has no way of knowing the current state of the awning. If the awning is already retracted, the motor is blocked by the end-switch and nothing will happen. To avoid spamming the motor with retract-signals a timer set to 1 hour is activated, which blocks new retract signals.

With this project done the balcony refurbishment is (for now) complete. We can now comfortably sit outside, enjoy the view and get ourselves some shadow whenever we want it with very little effort. The last couple of days have been quite sunny as well, so we have been able to enjoy our new setup quite a lot.