Inhaltsverzeichnis

Casafan Funkfernsteuerung

Die Casafan Funkfernbediungen verwenden keine Standardcodes bzw. keinen gängigen 433MHz Chips für die Kommunikation sondern eine Microcontroller. Deshalb muss man die Codes mittels eines Software-Defined-Radio (SDR) decodieren. Die günstigste Lösung ist ein SDR auf Basis eines RTL-Chipsets. Mit der geeigneten Software kann man dann die 433MHz Signale mit folgendem Kommando decodieren:

rtl_433 -A -R 0

Das Ergebnis sieht dann z.B. wie folgt aus:

Detected OOK package	2020-01-04 12:47:06
Analyzing pulses...
Total count:  224,  width: 321.51 ms		(80377 S)
Pulse width distribution:
 [ 0] count:   70,  width:  396 us [392;412]	(  99 S)
 [ 1] count:  154,  width:  796 us [792;804]	( 199 S)
Gap width distribution:
 [ 0] count:  154,  width:  400 us [400;412]	( 100 S)
 [ 1] count:   63,  width:  804 us [800;812]	( 201 S)
 [ 2] count:    6,  width: 9620 us [9620;9624]	(2405 S)
Pulse period distribution:
 [ 0] count:   56,  width:  800 us [796;820]	( 200 S)
 [ 1] count:  105,  width: 1200 us [1196;1208]	( 300 S)
 [ 2] count:   56,  width: 1600 us [1596;1608]	( 400 S)
 [ 3] count:    6,  width: 10020 us [10020;10028]	(2505 S)
Level estimates [high, low]:  15885,     18
RSSI: -0.1 dB SNR: 29.5 dB Noise: -29.6 dB
Frequency offsets [F1, F2]:   18679,      0	(+71.3 kHz, +0.0 kHz)
Guessing modulation: Pulse Width Modulation with multiple packets
Attempting demodulation... short_width: 396, long_width: 796, reset_limit: 9628, sync_width: 0
Use a flex decoder with -X 'n=name,m=OOK_PWM,s=396,l=796,r=9628,g=816,t=160,y=0'
pulse_demod_pwm(): Analyzer Device 
bitbuffer:: Number of rows: 7 
[00] {32} 90 a0 c1 29 : 10010000 10100000 11000001 00101001 
[01] {32} 90 a0 c1 29 : 10010000 10100000 11000001 00101001 
[02] {32} 90 a0 c1 29 : 10010000 10100000 11000001 00101001 
[03] {32} 90 a0 c1 29 : 10010000 10100000 11000001 00101001 
[04] {32} 90 a0 c1 29 : 10010000 10100000 11000001 00101001 
[05] {32} 90 a0 c1 29 : 10010000 10100000 11000001 00101001 
[06] {32} 90 a0 c1 29 : 10010000 10100000 11000001 00101001 

Decodierte Werte

Die Werte lassen sich wie folgt durch Ausprobieren decodieren:

Byte 1 Ventilator-ID
Byte 2 Ventilator-ID
AUSMAX MIN
Byte 31LLicht 010101010101
2 Licht 001100110011
3 Licht 000011110011
4 Licht 000000001111
5 Licht 000000000011
6 Licht 000000000011
7 Laufrichtung 0V1R
8Hunbenutzt 1fix
Byte 41Lunbenutzt1fix
2 unbenutzt 0fix
3 unbenutzt 0fix
4 unbenutzt 1fix
AUS123456
5 Ventilatorstufe 0100101
6 Ventilatorstufe 0010011
7 Ventilatorstufe 0001111
8Hunbenutzt 0fix

Pulslängen

Um dann senden zu können muss man noch die Pulslängen im Milisekunden und deren Folge kennen. Diese lassen sich mittels des Kommandos:

rtl_433 -w OOK:-

ermitteln. Für einen Block sieht das z.B. so aus:

412 404
796 404
800 804
400 404
800 400
800 400
804 400
800 804
400 400
804 804
396 404
800 404
800 400
800 404
800 400
800 804
400 804
400 404
800 400
800 400
804 400
800 408
796 404
796 404
800 404
800 404
796 404
800 804
400 404
800 404
796 804
400 9624

Analyse

Es gibt also zwei Pulslängen: 400ms und 800 ms. Das entspricht auch den vom ersten Kommando ermittelten Werten. Die erste Spalte ist das Sendesignal (pulse) und die zweite die Pause (gap). Jedem 400ms Signal geht eine 800ms Pause voran und jedem 800ms Signal geht eine 400ms Pause voran.

Es zeigt sich ausserdem: