HomeKit & Window Cover using Somfy Motor (Oximo io)

DIY: How to Connect Somfy Oximo io to Apple HomeKit for ~ 50€

Two weeks ago I got new windows including window covers. The roller shutters are driven by a Somfy radio motor.

Like many of those motors available, they are still not compatible with Apple HomeKit. Also (if available in the futur) the integration would cost ~300€ to buy a Somfy TaHome (base station).

As with my driveways on my property, I wanted to use the radio technology provided and simply connect the remote control to HomeBridge on a Raspberry Pi

A wall switch was supplied with the motors. So I carefully disassembled the remote control of the Somfy remote switch and analysed how I could bridge the buttons of the remote control to my Raspberry Pi. Unfortunately the remote control has no soldering pads that can easily be used to connect the GPIOs of the Raspberry Pi. I have decided to use the VIA (vertical interconnect access) to connect. In these I put a single wire from a stranded wire to make the contact (yes, no soldering – not perfect but working).

On the following image you can see which contact points have to be led out of the switch to be able to control all buttons remotely.

Contact points on the board to trigger all switches via GPIO+relais

The thin wires are soldered to usual wires. All of them are attached to the board with hot glue. The hot glue also protects against contact with the battery and other contact points.

To control the railais with Rasperry Pi via HomeKit I use homebridge with the plugin homebridge-gpio-device.

The rollo motors / remote control / rails are then configured with the following configuration.

{
    "bridge": {
        "name": "Mirror & Rollos",
        "username": "0E:C2:3D:7E:B4:5C",
        "port": 51454,
        "pin": "260-44-014"
    },
    "accessories": [
        {
            "accessory": "GPIODevice",
            "name": "Rollos",
            "type": "WindowCovering",
            "pins": [
                12,
                13
            ],
            "inverted": true,
            "shiftDuration": 2,
            "initPosition": 100
        },
        {
            "accessory": "GPIODevice",
            "type": "StatelessProgrammableSwitch",
            "name": "Push Button",
            "pin": 14
        }
    ],
    "platforms": [
        {
            "name": "Config",
            "port": 8581,
            "auth": "form",
            "theme": "auto",
            "tempUnits": "c",
            "lang": "de",
            "platform": "config"
        }
    ]
}

Fix of README.md for installation with a Raspberry Pi 4 (Pull Request is still open at the time of writing this article): https://github.com/AndreasPrang/homebridge-gpio-device

Open Garten Door with Siri / HomeKit and Raspberry Pi

_57Garden doors usually are connected to a DC power source interrupted by a push button. With the following simple setup it’s possible to close the circuit with HomeKit (Siri or Home-App on Apple Watch, iPhone, iPad) for a defined time.

What you should buy

At all the setup will cost round about 50€. For some additional bucks you can buy a card with more than one relay to control many doors, Lamps, power lines, … with one setup.

Installation

    • Install Debian 8 on the SD-Card
    • Login over SSH
    • Configure WiFi if needed
    • Install all you need with:
    • > sudo su
      > apt install -y curl
      > curl -sL https://raw.githubusercontent.com/AndreasPrang/pastebin/master/Garden%20Door%20Opener%20-%20Raspberry%20PI/GardenDoorSetupRPi.sh | bash -
      
      > reboot
  • Connect the Relay on Pin 7, 5V and GND
  • Connect the relay to the door opener circuit
  • Add the new device to your Home App on your iPhone with the default key (can be changed in /root/.homebridge/config.json)
  • 031-45-154
  • (optional) Configure more relais / devices in /root/.homebridge/config.json

Project GIT-Repository: homebridge-gardendoor

New lines before prompt (Bash, Fish)

Fish_Shell_new_linesThe following script adds two empty lines before every new command line prompt using fish shell.

mkdir -p ~/.config/fish/functions
echo 'function fish_prompt 
    set_color $fish_color_cwd 
    echo "" 
    echo "" 
    echo "" 
    echo -n (prompt_pwd) 
    set_color normal 
    echo -n " > " 
end' > ~/.config/fish/functions/fish_prompt.fish

 

The following command adds the leading empty lines in bash:

echo "export PS1='\n\n$ '" >> ~/.bashrc

SSH Public/Private-Key Login Generator 2.0

SSH_Public_Private_Key_Loin_GeneratorThis little script offers the following functionalities:

  • Install new public/private ssh key to log in without username / password
  • Install existing public key on multiple remote server
  • Register private key locally

After installation of your (new) keys you will be able to login to your server without user / password credentials.

Download (or contribute) on gitHub

„SSH Public/Private-Key Login Generator 2.0“ weiterlesen

Programming Languages – Simple Speed Test

swift-heroI wrote a very basic speed test in SwiftJavaJavaScript, C / C++, PythonRuby, and Perl. Awesome is the speed of Swift. It’s up to two times faster than Java und up to 3 times faster than C / C++ depending which function will be used. For this test I implemented the following simple function:

    long sum = 0;
    for (Integer n = max; n > 0;  n--) {
        double foo = n / 17;
        sum = sum + n ;
    }

I published the test on gitHub. If you want to implement more complex / meaningful tests or found a bug please please contribute some code. ?

https://github.com/AndreasPrang/Programming-Languages-Speed-Test

 

Language wiime Elapsed
Swift 232ms
Java 518ms
JavaScript 606ms
C 1016ms
Objective-C 1062ms
C++ 1065ms
Python 7796ms
Ruby 8666ms
Perl 19673ms

HowTo: Remove all Docker Images and Containers (disk full)

Docker_(container_engine)_logoIf you’re developing docker containers, after a while you might notice one very big file:

/var/lib/docker/devicemapper/devicemapper/data

The get ride off old unused docker images and containers and refuce the data-file use this two commands:

#!/bin/bash

# Delete all containers
docker rm $(docker ps -a -q)

# Delete all images
docker rmi $(docker images -q)