DIY HomeKit with Raspberry Pi and Xiaomi Robot Vacuum

Inspired by tweets of Steven Troughten-Smith, people started to experiment with Raspberry Pi’s as DIY HomeBridge devices. One of them is Wojtek Pietrusiewicz. He wrote a nice article which I used as base for this post.

Introduction

I own a Xiaomi Robot Vacuum. This robot can be controlled by the Xiaomi app, however, I don’t like it very much. The idea is to control this robot over HomeKit. To use HomeKit, I use an old Raspberry Pi 1B. The software will be HomeBridge.

Setting up the Pi

Installation and Configuration of Raspbian

Use Etcher to write the image to the SD card. Remount that SD card and add a file called „ssh“ in the root of the mounted partition. This will enable SSH from the beginning so that you can login directly to the Pi. I don’t want to attach a screen or keyboard to that machine so it will only be reachable over the network. Now boot your Pi from this SD card.

Identify the Pi’s IP (e.g. by looking at the network overview in your router). Now connect to that IP with user „pi“. The default password is „raspberry“. Please change the password now with passwd and assign a new user password.

Update everything with apt:

 

Install nodejs 8.9.4

According to Wojtek only this version works currently with HomeBridge. I did not test any other version so I’m just describing what I did on my machine:

  1. Download nodejs for the PI into your users homefolder, e.g. with wget https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-armv6l.tar.xz
  2. Unpack the file with tar -xvf node-v8.9.4-linux-armv6l.tar.xz
  3. cd node-v8.9.4-linux-armv61
  4. sudo cp -R * /usr/local/
  5. add export PATH=$PATH:/usr/local/bin to e.g. ~/.bashrc
  6. node should be now available

Install HomeBridge

  1. Install the necessary libraries: sudo apt-get install libavahi-compat-libdnssd-dev
  2. Install HomeBridge with npm: sudo npm install -g --unsafe-perm homebridge
  3. open /etc/default/homebridge and safe it with this content:
  4. open /etc/systemd/system/homebridge.service and safe it with this content:

Setting up HomeBridge with Xiaomi Robot Vacuum

  1. sudo npm install -g homebridge-xiaomi-mi-robot-vacuum miio
  2. open ~/.homebridge/config.json and safe it with this content:

    Generate a new MAC address separated by : using this website. You’ll need the IP address of your Xiaomi robot as well as the token. There are several ways to get the token. I’ve extracted mine from the iOS backup. Instead of uploading the token I’ve used this command on the token taken from the sqlite database:
  3. Check if everything is working by starting homebridge for the first time. It should show a QR code. If it does, cancel the process with ctrl+c

Automate HomeBridge startup

Adding the HomeBridge to iOS devices

  1. Install the Home app, if you’ve removed it from your device. You can reinstall it from the App store.
  2. Open the Home app and add a new device
  3. If you’ve give the app access to your camera, you can scan the QR code you’ve seen earlier. However, HomeBridge is now running as a daemon in the background so you won’t see that QR code. You can add the bridge manually by using the PIN you’ve set in the config.

Migrate from OpenElec to OSMC

I recently upgraded my ambilight clone from 50 to 104 LEDs and I’ve also updated my OpenElec installation on my Raspberry Pi B+ to 6.0.0. However, the hyperiond wasn’t able to communicate properly with Kodi so that no ambilight information was send to the LEDs: The LEDs would always be black, if I want to watch something on the Raspberry Pi.

I’ve opened an issue on github but I didn’t get  a useable response so far. The configuration and installation worked fine when I’ve connected with the iOS app or from the command line.

Today I’ve tried to use OSMC as surrogate for OpenElec and I’m really impressed: it worked almost out of the box with my old configuration. So I want to share what’s necessary to migrate from OpenElec to OSMC:

  1. Create a backup from your OpenElec .kodi folder. You’ll find this folder on OpenElec in /storage/.kodi
  2. Backup your hyperion.config.json or create a new one with HyperCon according to your setup
  3. Install OSMC on a SD card
  4. Boot from this SD card and follow the initial configuration screen
  5. Connect via SSH to OSMC. default user/password are osmc/osmc.
  6. Install hyperion according to nadnerb’s instructions. The spi part is important, since OSMC has SPI disabled by default. You’ll also want to remove the lirc line since this blocks the pins necessary for the default installation of WS2801 LEDs.
  7. Copy your hyperion.config.json to /etc. Be sure that you’ve changed the path to your effects folder from /storage/hyperion/effects to /usr/hyperion/effects
  8. Copy your .kodi folder to OSMC’s /home/osmc folder and overwrite any file
  9. Reboot and enjoy your known settings 🙂

Heos by Denon – Bluetooth dongle

I’ve recently bought a Heos HomeCinema and a Heos 1. The Heos devices are created by Denon and offer a multi room wifi speaker setup, similar to Sonos. Since Sonos did not offer a DTS compatible speakerbar for my TV, I’ve decided to give the Heos devices a try.

Its absolutely amazing how easy these devices are setup. You install the power and install an Android or iOS App on your phone. You can start the Heos app and can configure a new speaker. The speaker will be configured over a regular stereo audio cable. After this configuration step, the speaker will be available to all devices running the Heos app on your local network.

Denon currently promotes the GoPack: A battery pack for the Heos 1 and a bluetooth dongle which adds support for bluetooth connections on all Heos devices. However, Denon only sells the bluetooth adapter in combination with the battery pack. Since I don’t require the battery pack, I was wondering what kind of bluetooth dongle is required.

I’ve searched for a few weeks but finally found on amazon.com a bluetooth dongle which was used by a fellow Heos user. At the same time I tried to contact the Denon chat support and they recommended me this Bluetooth dongle. Regardless which one you’ll select, you’ll need a bluetooth 4.0 dongle with BCM20702 chipset:

HeosBluetooth_4_8

Just put the stick into the USB port of the Heos speaker:

HeosBluetooth_3_8

You can now press and hold the connect button until the Heos starts to blink green:

HeosBluetooth_6_8

The Heos is now in discovery mode and can be easily paired with your bluetooth enabled device. This also works for the Heos HomeCinema soundbar:

HeosBluetooth_7_8 HeosBluetooth_8_8

iMessage mit portierter Rufnummer benutzen

Wenn man ein neues iPhone besitzt muss man auf einige Details achten. Das ist insbesondere dann der Fall, wenn man einen neuen Vertrag abgeschlossen hat und seine alte Handynummer portieren möchte und diese für iMessage verwenden möchte.

Im Falle einer Portierung bekommt man eine temporäre Telefonnummer und kann diese erst einmal in dem neuen iPhone benutzen und dort für iMessage einrichten.

Am Tage der Portierung wird diese alte Nummer aber ungültig. Beide iPhones haben dann kein Netz mehr und Anrufer erhalten entsprechende Meldungen (temporäre Nummer: ist z.Z. nicht vergeben, portierte Nummer: ist z.Z. nicht erreichbar). Nach einem Neustart des neuen iPhones bucht sich das iPhone wieder im Netz ein und ist dann unter der portierten Nummer erreichbar. Allerdings stimmen die iMessage Einstellungen nicht und verweisen nach wie vor auf die temporäre Nummer. In diesem Fall muss man einige Einstellungen auf dem alten und neuen iPhone bearbeiten, so dass die temporäre Nummer entfernt und die portierte Nummer auf dem neuen iPhone aktiv wird.

Auf dem alten iPhone mit alter Sim und alter Nummer:

  • iMessage deaktivieren

Auf dem neuen iPhone mit neuer Sim und temporärer Nummer:

  • iMessage ist eingeschaltet und ist für die temporäre Nummer eingerichtet
  • iMessage abschalten
  • SIM Karte entfernen
  • Einstellungen, Allgemein, Zurücksetzen, Netzwerkeinstellungen
  • Bestätigen und iPhone neustarten lassen
  • SIM Karte wieder einsetzen
  • iMessage wieder einschalten und über die portierte Nummer in den iMessage Einstellungen freuen 🙂

Auf dem alten iPhone hat man jetzt die iMessage Einstellungen entfernt, es empfängt jetzt nicht mehr die Nachrichten.

Gigaset S810a & AVM Fritzbox 7490 – Telefonbucheinträge

Seitdem wir einen IP-Anschluss der Telekom besitzen, haben wir auch eine AVM Fritzbox 7490. Damit man endlich kabelfrei und in HD-Qualität telefonieren kann, haben wir uns für ein Gigaset S810a als DECT-Telefon entschieden. Die Bewertungen lesen sich sehr gut und ich habe auch bisher nur gute Erfahrungen mit dieser Kombination gemacht.

Allerdings nervte mich schon seit geraumer Zeit, dass ich verpasste Anrufe immer nur als Nummern angezeigt bekomme. Das gilt auch für einen gerade eingehen Anruf. Dabei habe ich doch extra im Telefonspeicher einige Telefonnummern eingetragen mit Namen, damit es entsprechend angezeigt wird. Doch Fehlanzeige, es wird immer noch nur die Nummer angezeigt.

Das Problem ist in diesem Fall wohl die Fritzbox 7490, die als DECT-Basisstation dient. Sie reicht die Nummern durch und hat damit Vorrang gegenüber dem internen Telefonbuch. D.h. hat man entsprechend Telefonbucheinträge in der Fritzbox hinterlegt, so werden verpasste Anrufe auch mit Namen und Bild auf dem Telefon angezeigt!

Es gibt leider nur einen Haken an der Sache: Auf dem Telefon gibt es eine Schnellzugriffstaste für das Telefonbuch. Diese Funktion lässt sich leider nicht umbelegen und somit hat man einen leicht umständlichen Weg zum Telefonbuch. Denn jetzt muss man sich durch verschiedene Menüs und Tasten gehen, was jedoch nur bei einem ausgehenden Anruf vielleicht mal stören sollte. Die verpassten Anrufe kann man immer noch schnell auswählen und direkt zurückrufen.