Die Firma SELVE bietet eine einfache und gut dokumentierte Anleitung [1] zur Programmierung der Rollladensteuerung. Für den Zugriff wird der USB Stick „USB-RF Gateway“ benötigt. Auf einem aktuellen Linux System ist der Stick nach dem Einstecken sofort einsatzbereit. Für ein Windows Betriebssystem werden zusätzliche Treiber [2] benötigt.

Der USB Stick meldet sich als COM Port am System an. Die Befehle werden als XML an diesen COM Port gesendet und die Antwort erfolgt ebenfalls als XML. Für den Zugriff auf den COM Port verwenden wir die Bibliothek „serialport“. Erstelle ein neues Dub Projekt und gib als Abhängigkeit „serialport“ an.

{
	"name": "rollladensteuerung",
	"dependencies": {
		"serialport": "~>2.1.0"
	}
}

Wir erstellen eine Anwendung die über Kommandozeilenargumente gesteuert wird. Zum Öffnen des Rolladens mit der ID 3 wird
die Anwendung gerufen mit:

rollladensteuerung --device 3 --deviceFunction 6

Der Rolladen wurde zuvor mit der Selve USB-RF Gateway Software dem USB Stick bekannt gemacht.

import std.stdio: writeln;
import std.conv: text;
import std.getopt;

import serialport;

enum defaultComPort = "/dev/ttyUSB0";

enum DeviceFunction
{
    driveUp = 6,
    driveDown = 7,
    driveStop = 9
}

int main(string[] args)
{
    int device = 0;
    int deviceFunction = DeviceFunction.driveDown;
    string comPort = defaultComPort;
    
    getopt(args,
        "device", &device,
        "deviceFunction", &deviceFunction, 
        "comPort", &comPort);

    try
    {
        auto com = new SerialPortNonBlk(comPort, 115200);
        com.set(DataBits.data8);
        com.set(Parity.none);
        com.set(StopBits.one);

        string xml = 
            `<methodCall>
               <methodName>selve.GW.device.setFunction</methodName>
               <array><int>`~device.text~`</int><int>`~deviceFunction.text~`</int></array>
             </methodCall>`;
             
        com.write(xml);
        return 0;
    }
    catch (Exception e)
    {
        writeln(e.message);
        return 1;
    }
}

Tipp: Die Anwendung kann man auch für den Raspberry Pi erstellen und über Cron Jobs den Rolladen zu bestimmten Zeiten hoch und runter fahren.

1 https://www.rolladen-shop.de/media/pdf/0b/c0/ca/USB-RF-Stick_XML-Spezifikation_Rev_2-0-2-GER.pdf
2 www.ftdichip.com