Somfy steuern mit CUL

Hallo Symcon-Begeisterte,

ich hab endlich meine Markisen dazu überredet mit Symcon (auf Raspi) zu funktionieren. Es ist momentan nur in ein Dummy-Instanz verpackt, funktioniert aber für meine Zwecke. Schön wäre ein Modul, aber dazu fehlt mir der Nerv…

  1. Serial Port mit dem nanoCUL anlegen (evtl mit udev einen fixen Namen vergeben)

  2. Dummy anlegen, Variable zur permanenten Speicherung des Rolling Codes

und eine Integer-Variable mit den Werten 1, 2, 4 und evtl. 8 in einem eigenen Profil anlegen.

  1. Script für die Erstellung des Funkbefehls und Senden dieses Befehls
<?php
if (IPS_GetInstance(50595)['InstanceStatus'] == 102) {
   $c=GetValueInteger(37273);
   //$c=8; nur zum Testen, z.B. 8 ... PROG

    if (in_array($c, array(1,2,4,8)) == true){

        $rc=GetValueInteger(12962)+1;
        SetValueInteger(12962, $rc);
        $cmd=sprintf('YsA0%d0%04XA00000', $c, $rc);
        SPRT_SendText(50595, $cmd . chr(13) . chr(10));
        SPRT_SendText(50595, $cmd . chr(13) . chr(10));
    }
}
  1. Events anlegen für z.B. bei Aktualisierung der Variable Command Script zum Senden auslösen

Essenziell ist der Code YsA0C0rrrrA0000x der sich so zusammensetzt:
Ys … Sendebefehl Somfy (siehe Beschreibung culfw), bei Doppel oder Mehrfach-CUL muss vor jedem Befehl ein * für das 2. Sendemodul, ** für das 3. Sendemodul vorangestellt werden, also z.B. *YsA020000A00000 für das 434 MHz Modul im DoppelCUL (1. 868 MHz, 2. 434 MHz), Rolling Code nur beispielhaft 0, Kanal 0

A0 … Key (kann genau so belassen werden)
C … Code 1=MY, 2=AUF, 4=AB, 8=PROG
0 … Checksumme, kann auf 0 bleiben und wird dann berechnet
rrrr … Rolling Code in Hex, wird nach jedem Befehl inkrementiert. Wichtig!!! Code nicht verlieren, da sonst der Empfänger verweigert und ein Reset mit neuem Anlernen gestartet werden muss. Ein wenig tolerant ist der Empfänger, wenn der Wert im Toleranzbereich bleibt.
A00000, A00001, … Kanal 0, 1, … wenn mehrere Empfänger vorhanden sind

Zum Anlernen des CUL mit der vorhandenen Steuerung (z.B. Telis 4 RTS) den Empfänger in den Programmiermodus bringen (Kanal auswählen,
Prog-Taste etwa 2 s drücken, Motor bewegt sich kurz),
den Befehl 8 senden. Z.B. im Script $c=8; setzen und laufen lassen. Das Script sendet dann „YsA0800000A00000“. Der Motor sollte sich zur Bestätigung kurz bewegen und mit 1, 2 und 4 steuerbar sein.
$c=8; wieder auskommentieren :wink:

Ein paar weiterführende Links
RTS-Protokoll Somfy Smoove Origin RTS Protocol | PushStack
Somfy Handbuch https://downloads.somfy.de/frontend/catalogs/175712/1/pdf/complete_print.pdf

VG
Klemens

1 „Gefällt mir“