Becker Centronic CC31/CC51 Rolladen steuern OHNE USB Stick

Begonnen von ole1986, 10 April 2020, 12:39:21

Vorheriges Thema - Nächstes Thema

ole1986

Verwendung von Becker Centronic CC31/CC51 Rolladen mit USB Stick findest du hier

Ansätze ohne Becker USB Stick

TLDR;

Empfangen über SIGNALduino funktioniert.
Senden weist Differenzen in der Checksumme auf ABER STAND 27.12.2020 DER ROLLADEN REAGIERT (SPORADISCH)

Relevante Links
BILDER ZUM ROLLADEN
Firmware die FSK für SIGNALDUINO unterstützt (erforderlich)
angepassten 00_SIGNALduino.pm

Eingesetzte Mittel
Centronic Stick script | Version 0.8
Becker Centronic USB Stick zum absetzen identischer codes
---

Einstellungen

Register für 868.283 Mhz mit 2-FSK und Deviation von 40


get SIGDUINO raw CW000D,012E,022D,0347,04D3,0591,063D,0704,0832,0D21,0E65,0F3F,1057,11C4,1206,1323,14B9,1540,1700,1818,1914,1B00,1C00,1D92,2211,23EF,242B,2514,261F,3D00,3E00,4066,4169,4267,4375,4469,4582,4600


SIGNALduino auf verbose setzen um die Signale zu lesen


attr SIGDUINO verbose 4


Die aufgezeichneten Signale befinden sich in der Log Datei (z.B. /opt/fhem/log/fhem-<JAHR>-<MONAT>.log)

Funksignal auslesen

Den Befehl mit der FB absetzen

Zum Auslesen der Signale konnte ich den Wandschalter oder den USB Stick verwenden.
In beiden Fällen erhielt ich einen Manchester enkodierten Wert.

Um immer den selben Wert zu senden, empfehlt sich der Stick, da dort der Inkrementwert vor jedem aufsetzten zurückgesetzt werden kann.


# Inkrementwert auf 0 zurücksetzen
./centronic-stick.py --mod "2:0:1"
# Abschicken ein "DOWN" Befehl für die 2. unit auf Kanal 1
./centronic-stick.py --send DOWN --channel 5:1


Details zum code der von dem Stick gesendet wird:

Inkrement: 0 / Unit: 1737C / Command: DOWN
0000000002010B00000000001737C0210101004084 => CA5E62DB2542C1DB8


Ergebnis aus der Logfile


MC;LL=-809;LH=844;SL=-390;SH=443;D=CA5E62DB2542C1DB8;C=414;L=66;R=202;s18;b15;w;


WEITERE DETAILS ZUM VERWENDETEN USB STICK CODE

Funksignal senden

Durch das Empfangen scheint klar zu sein, das es sich hierbei um einen Manchester Code handelt.
Bevor allerdings das Signal erneut an den Rolladen geschickt werden kann, muss der Rolladen den selben Inkrementwert erneut akzeptieren.

Glücklicherweise haben wir festgestellt, das ein mehrfaches absetzen (3x) von z.B. dem "HALT" Befehl über den USB Stick den nächsten zu erwartenden Inkrementwert am Rolladen überschreibt (mehr dazu hier).

Rolladen auf das o.g. Signal (und damit verbundenen Inkrementwert) vorbereiten


# Den inkrement auf max (0xFFFF) minus 4 setzen (0xFFFB = 65531)
./centronic-stick.py --mod "2:65531:1"
# Überschreibe den Inkrementwert mit 5 aufeinander folgenden HALT Befehlen
./centronic-stick.py --send HALT --channel 2:1
./centronic-stick.py --send HALT --channel 2:1
./centronic-stick.py --send HALT --channel 2:1
./centronic-stick.py --send HALT --channel 2:1
./centronic-stick.py --send HALT --channel 2:1
# der letzte DOWN Befehl hat einen inkrement vom 0xFFFF



Somit beginnt für den Rolladen der nächste Inkrementwert bei 0x0 (also 0) und wir können den selben Befehl (welchen wir zuvor Empfangen haben erneut senden)

Senden über FHEM mit SIGNALduino


set SIGDUINO raw SC;R=6;SR;P1=1700;P2=-1700;D=212121;SM;C=416;D=CA5E62DB2542C1DB8


Abhängig von Signalqualität und dem purem Zufall reagiert der Rolladen, sobald dieser das richtige signal erhält.
Ich habe teilweise 10-15x den Sendebefehl verschickt, bis der Rolladen (und der USB Stick mit ./centronic-stick.py -l) den korrekten code empfangen hat.

Manchmal erscheinen auch anderen wilde kombinationen in dem USB Stick obwohl ein ganz anderen code übermittelt wurde, z.B.

b'\x020000000002010B000000000084DB10300B0300D8CB\x03'
b'\x020000000002010B00000000004FB6C03B0708004835\x03'
b'\x020000000002010B000000000008FEA0280A0C006417\x03'
b'\x020000000002010B0000000000B78D0030090200EA05\x03'


Doch zum heutigen stand (27.12.2020) hatte ich tatsächlich den ersten Erfolg das der Rolladen sich bewegt und der USB Stick ebenfalls den korrekten code zurückgegeben hat.

Offene Fragen

- Wie kann ich ggf. das Signal verbessern/verändern um Abweichungen zu verringern?
- Welche Cryptoanalytiker stellt sich zur Verfügung den Code etwas "genauer" zu betrachten :P

Sidey

Zitat von: ole1986 am 10 April 2020, 12:39:21
- Was genau erreiche ich mit "SC;R=12;SR;P0=-15200;D=0;" und warum funktioniert es nicht ohne?

Ich kann bei den angepassten Versionen nicht sagen, ob FSK Senden mit den üblichen Befehlen funktioniert, allerdings kann ich dir beantworten was deine Frage angeht.

SC = Send Combined, in genanntem Beispiel ist das aber unnötig, da nur ein Sendebefehl angegeben wird
R=12 = 12x Wiederholen
SR= Send raw
P0=-15200  15ms den Pegel low halten
D=0; Die Sequenz die gesendet werden soll


Zusammengefasst, es wird 12x 15ms der Pegel auf low gehalten, somit ist das eine Sendepause :)
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker