Li-ion batteries don’t like being fully charged. They will retain capacity significantly longer if you charge them up to 80% or less. Check this plot from Battery University:

If you usually use up all of your laptop battery during the day, gradual battery degradation is something you’ll have to live with. However, if you mostly work with AC charger plugged in, you can set lower limit to your battery charge and prolong its life.

I used to use web services such as OpenWeatherMap to monitor outside temperature in openHAB. I found out that sometimes they’re not very accurate and naturally they fail when the internet is down. So I decided to measure the temperature myself. After some searching, I decided to settle with battery powered ESP8266 wireless solution. The advantages are the following:

The trouble is that LEDE runs its own DNS server and advertises its address (e. g. 192.168.0.1) to clients via DHCP. When NetworkManager connects to OpenVPN it keeps this address as one of DNS resolvers (even if you add push "dhcp-option DNS 9.9.9.10" to OpenVPN server config). You can check it with

This way, DNS requests may occasionally be sent to the router which forwards them to configured servers skipping VPN tunnel and making them visible to the ISP (unless you’ve set up DNSCrypt, of course).

In this post I want to share some details about my simple low budget smart home system based on 433.92 MHz receiver/transmitter controlled by Arduino. It can be easily extended with many cheap wireless devices, such as door bells, remote sockets, smoke alarms, leak detectors, etc. I’ll describe how to control remote socket, receive alarms from wireless smoke detector and draw a plot of room temperature obtained from regular wired sensor.

Ever since I’ve learned about alternative router firmware I wanted to give it a try. With bugs and security holes being found in vendor firmware every now and then it was becoming even more relevant. Being an open source software advocate, I was mostly looking into OpenWrt. Unfortunately, my hardware was either not supported (ZyXEL P660 ADSL router) or in some early alpha stage (D-Link DIR-300). But then I learned about a reasonably cheap TP-LINK TL-WR841N[D] router which has good OpenWrt support. So I bought it (for ~18 €, got version 9.2) and immediately flashed OpenWrt on it — which was super easy: I just uploaded .bin file and waited for reboot.

Bitcoin Core, the “full” Bitcoin client, uses a lot of disk space to store the blockchain. I use GdMap to clean up my SSD and was recently shocked to see how many GBs are occupied by those files. So I decided to join the dark side and switch to a lightweight wallet. There are several of them around of which I chose Electrum. The only trouble I had were my old (donation) addresses that are too much of a hassle to change. I seem to have solved this problem by creating a second wallet in Electrum and here’s how I made it:

First, I imported private keys for all needed addresses from Bitcoin Core. In Debug Console I typed dumpprivkey "<address>" for every address I wanted to keep.

Then, I started up Electrum, selected File — New/Restore and entered all the keys I obtained in previous step. If you do that, pay attention to all warnings and remember to backup this wallet — you won’t be able to recover it with your seed.

After that I was able to use my old addresses to receive and send Bitcoins in Electrum. Minus the gigabytes of blockchain data.