Forum: HF, Funk und Felder Berker FunkBus (Funkschalter) 433Mhz Prüfsumme?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Markus S. (links)


Angehängte Dateien:

Lesenswert?

hallo zusammen,
hatte gestern die idee das Berker funkbus system (Funksteckdosen 
lampeneinbauteile Rollos etc.) was wir zuhause haben auch mit dem PC 
steuern zu können^^
online bekommt man nur wenig Infos na ja wiso sollte Berker auch alle 
Infos raus rücken^^
Einzige was ich gefunden habe war: 
http://www.berker.com/uploads/tx_berkerproposal/Elektronik-Handbuch_Berker.zip

So daraufhin habe ich ein Sender zerlegt und die Elektronik an ein PIC 
angeschlossen.
PIC per USB an PC und erste Software zum senden von Signalen 
geschrieben.
Bzw zum auslesen des Signals was der Schalter normalerweise sendet.

Habe bis jetzt alles hin bekommen konnte auch ner menge bits functionen 
zuweisen (siehe Anhang).

Stehe jetzt aber vor einem Problem wie berechne ich die Prüfsumme???
Hoffe einer von euch hat ne idee dazu.

Bisher kann ich nur Signale klonen möchte aber selber mit neuer sn
"Fernbedienungen" simulieren da die Schalter mehrere Sender lernen 
können.
Möchte ja nicht alle Funk-Schalter Aufmachen kable anlöten und bits 
auslesen :)

Markus (Links)

von Jörg S. (joerg-s)


Lesenswert?

Erst mal Respekt wegen der Aufschlüsselung des Funk-Protokolls! :)

Wegen der Prüfsumme:
Ich vernute mal bei 5-Bit wird es wohl keine CRC sein. Die 5 Bit würden 
natürlich schön auf die 5 Protokoll-Gruppen passen (Also ein Bit pro 
Gruppe), aber das scheint nicht hin zu kommen. Auffällig ist das das 
letzte Bit immer ne 1 ist. Könnte also sein das die letzte 1 nicht mehr 
zur Prüfsumme dazu gehört?

von Markus S. (links)


Lesenswert?

die Möglichkeit besteht ist mir auch schon aufgefallen bin bei den 5Bits
von der Pdf ausgegangen muss ja nicht alles stimmen was da steht.
was mir auch noch einfällt ist das ich das letzte bit von den "daten" 
nicht zuordnen konnte möglicherweise gehört es zu der Prüfsumme.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

stoppbit ?

von Markus S. (links)


Lesenswert?

könnte gut sein.
habe mir die Daten nochmal angesehen glaube fast das das letzte 
"datenbit" ein Parität bit ist.
Wenn man jetzt von einm stopbit ausgeht bleibt eine 4bit Prüfsumme gibt 
es da eine?
kenne mich mit CRC und co nicht wirklich aus und habe denn wiki text 
noch nicht vollständig verstanden.

Markus

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Habe mir das PDF durchgeschaut. Es scheint sich doch nicht um ein 
Stoppbit zu handeln, Pariry passt da schon eher.

CRC ist auch über nibble(4 bit)möglich und würde hier passen
CRC adiert Daten constanter Wortbreite(hier 4/5 Bit?) auf ein gesetztes 
Carry (Überlaufbit) wird eins aufaddiert. Zyklisch halt.

http://de.wikipedia.org/wiki/Cyclic_Redundancy_Check

von Markus S. (links)


Lesenswert?

hi
hoffe habe das crc Prinzip jetzt verstanden habe versucht ein vb.net 
Programm zu schrieb das crc generieren kann. Momentan Läuft ne Art 
Blueforce Methode zum finden des Generatorpolynom hoffe habe keinen 
fehler bei meiner Berechnung deshalb mal paar Ergebnisse hoffe kann 
jemand mal überprüfen.
Generatorpolynom:  110101

Daten            Ergebnis
11011            | 00101
11111            | 01110
1111101010101001 | 01001
00101100011010111110010001100000000000010001 | 10111

Danke

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Ob es funktioniert weist du wenn dein Progamm eine Summe zu generieren 
vermag welche der Empfänger akzeptiert.

von Markus S. (links)


Angehängte Dateien:

Lesenswert?

so habe jetzt alle Möglichkeiten von Generatorpolynom 0x0001 bis 0xFFFF 
durch und konnte keine Gemeinsamkeiten der aufgezeichneten Daten finden.
Sie es über alle Daten oder nur über die 16Datenbits. Ob mit letztem "1" 
bit oder ohne. Wer das Programm was ich geschriben hab haben will is im 
anhang ist denke ich ganz praktisch :)
Gibt es noch andere arten von Prüfsummen ?

Markus

von Jörg S. (joerg-s)


Lesenswert?

Das einfachste wäre eine einfache addierung aller Bytes ohne 
berücksichtigung eines überlaufs (wird bei Profibus gemacht).

von Matthias (Gast)


Lesenswert?

Wir haben im Studium mal eine Möglichkeit gezeigt bekommen, durch 
Anhängen von ein paar Prüfbits einen 1-Bit Fehler korrigiert zu 
bekommen.

Leider hab ich grad die Infos nicht zur Hand. Aber es war irgend was
mit Matrix und diversen "Polynomen".

Kann ja sein, dass die die Anzahl der Aussendungen so klein wie möglich
halten wollen und daher eine Fehlerkorrektur drin haben, statt bloß eine
Fehlerdetektierung.

von Markus S. (links)


Lesenswert?

@Jörg Das mit der addierung haut leider nicht hin.

@Matthias Wenn dir der name des Verfahrens wieder einfällt sag pls 
bescheint.
wies ja nicht was das so an Rechenleistung braucht in den Schaltern is 
zumindest immer ein Pic drin Leider geht das auslesen nicht wäre ja zu 
einfach :P

Markus

von Martin L. (Gast)


Lesenswert?

Fehlerkorrektur geht nicht. Dafür ist die Anzahl der Püfbits zu gering. 
Die Brute-Force Methode wäre - so das System linear arbeitet - ein 
Gleichungssystem mit entsprechend vielen Unbekannten aufzustellen und es 
dann zu lösen/lösen lassen.

Viele Grüße,
 Martin L.

von Markus S. (links)


Lesenswert?

Habe mittlerweile 171 Aufgenommene Daten.
Das einzige was ich raus bekommen habe ist das alle "OFF" befehle eine 
Invertierung von z.b. Prüfbits: 1-0000-1 zu 1-1111-1 zu haben scheinen.
und alle Daten die das 2 mal gesendet werden haben eine inv im von z.b. 
Prüfbits: 1-1111-1 zu 1-1101-1.
und das erste bit ist parabilität aller Daten. aber wie ich auf die 4 
mittleren komme weis ich einfach nicht.
aber auf mehr bin ich noch nicht gekommen :(

Markus

von J. Menzenbach (Gast)


Lesenswert?

Hallo,
ich bin zwar kein Fachmann aber sehr daran interessiert von einem 
Slimbook aus das Berker Funkbus System zu steuern.
Es gibt ein Funksendemodul mit dem man dies machen könnte und ebenso die 
dazugehörige Software.
Das ganze nennt sich "Boss 4 Help" Umgebungssteuerung.
Leider kann man dieses Funksendemodul nicht einzeln sondern nur im 
Komplettpaket bei der Firma "Meier & Schütte" käuflich erwerben.

Bei meiner Suche bin ich auf das "Scase Select mit 433,42 ASK Modul"
gestolpert.
http://www.insors.de/article.php?news_id=116&category_id=11&subcat_id=3
Jetzt bin ich aber nicht so ein Fachmann zu entscheiden ob dieses Gerät 
dafür tauglich sein könnte.

Vielleicht könnte mir jemand von Euch einen Tip geben.


Grüße  Josef

von Martin L. (Gast)


Lesenswert?

Hallo,

ist die Prüfsumme derweilen geklärt oder soll ich mich mal drann setzen?

Viele Grüße,
 Martin L.

von Markus S. (links)


Lesenswert?

hi
bin bei der Prüfsumme noch nicht weiter.
wenn Interesse besteht kann ich gerne alle ausgelesenen Codes von mir 
hoch laden.

ob die oben genannte Hardware zu verwenden ist kann ich nicht sagen ich 
habe mir den sender aus einen PIC16F4455 und eines Berker sender moduls 
aus einem Funk wand Sender 4764 zusammen gebaut und an USB gehängt. Der 
sender lässt sich parallel betreiben. mit ein bisschen löte Arbeit.

Markus

von Wireless A. (wireless)


Lesenswert?

Markus S. schrieb:
> hi
> bin bei der Prüfsumme noch nicht weiter.
> wenn Interesse besteht kann ich gerne alle ausgelesenen Codes von mir
> hoch laden.
>
> ob die oben genannte Hardware zu verwenden ist kann ich nicht sagen ich
> habe mir den sender aus einen PIC16F4455 und eines Berker sender moduls
> aus einem Funk wand Sender 4764 zusammen gebaut und an USB gehängt. Der
> sender lässt sich parallel betreiben. mit ein bisschen löte Arbeit.
>
> Markus

Hi
Ich habe ein potenzielles Prüfsumme gefunden. Können Sie alle 
ausgelesenen Codes hoch laden, dann kann ich es controlieren vor ich es 
hoch laadt.

mfg

Wireless

von Markus S. (links)


Angehängte Dateien:

Lesenswert?

hallo,
anbei habe ich mal mein Datenbank als xls Exportiert :)
bin mal gespannt ob ihre function bei allen codes klappt.

Markus

von Wireless A. (wireless)


Lesenswert?

Hallo,

Ich dachte fur die Prüfsumme:
xxxx-1
|||| |
|||| #- stop bit
|||#--- OFF (OFF = 1)
||#---- ?
|#----- ON  (ON  = 1)
#------ ?
aber es klappt nicht. schade! Hamming code ist es auch nicht.

Können Sie bitte erklären wie man das gemessen habt? Ich verstehe nicht 
wie man das an USB kann Anschließen. Habben Sie software fur das?
Ich möchte mein Ferbedinung auch auslesen. Dann kann ich die Prüfsumme 
vergleichen mit dein Daten. Bitte können Sie dein Methode erklären.

Grüße

von Markus S. (links)


Lesenswert?

hallo,
also als erstes habe ich die Fernbedienung aufgeschraubt dann per 
Soundkarten ossi die pin am ic identifiziert der das zu sendende Signal 
ausgibt (sieht genauso aus wie in meiner txt beschrieben) 5V für diese 
Signal Übertragung habe ich auf einem pic mit USB emuliertem COMP port 
eine Software geschrieben die dieses dann an den pc sendet. der PC 
wiederum wertet den ganzen code soweit mir das Protokoll bekannt ist 
aus.
da ich momentan in reha bin kann ich keine Fotos der Pins an den 
verschiedenen Schalter Modellen liefern.
Pins sind aber nicht schwer zu finden.

hier ein Auszug aus der user.c der Code basiert auf dem Mikrochip USB 
CDC Beispiel.
1
void Delayu(unsigned int x)
2
{ 
3
unsigned int i = 0;
4
while(1) {
5
if(i==x) break;
6
i++;
7
}
8
}
9
10
#define IR_611us   542
11
12
unsigned char a = 0;
13
unsigned char b = 0;
14
unsigned char c = 0;
15
16
unsigned char readberker = 0;
17
unsigned char lastsend = 0;
18
void User_Process(void)
19
{
20
21
if(mUSBUSARTIsTxTrfReady()){
22
  if(readberker > 0) {
23
    lastsend = 1;
24
    b=1;
25
    c=0;
26
    a=0;
27
    while(PORTBbits.RB0);   //wait Low
28
    while(!PORTBbits.RB0);   //wait Hi
29
      Delayu(IR_611us);    //wait 611us
30
    if(PORTBbits.RB0 = 0) return;
31
      Delayu(IR_611us);    //wait 611us
32
    if(PORTBbits.RB0 = 0) return;
33
34
    //while(PORTBbits.RB0);   //wait Low
35
    while(1) {
36
      if(c >= 49 ) break;
37
      if(lastsend != PORTBbits.RB0){ //wait Change
38
        a=PORTBbits.RB0;
39
          Delayu(IR_611us);    //wait 611us
40
        if(a != PORTBbits.RB0) { 
41
          output_buffer[c] = 0x31; //1
42
        } else {
43
          output_buffer[c] = 0x30; //0
44
        }
45
        lastsend = PORTBbits.RB0;
46
        c++;
47
      }
48
    }    
49
    output_buffer[c] = 0x0d; c++;
50
    output_buffer[c] = 0x0a; c++;
51
    output_buffer[c] = 0x00;
52
    mUSBUSARTTxRam((byte*)output_buffer,c); 
53
    readberker--;
54
    while(PORTBbits.RB0);   //wait Low
55
     Delayu(80000);    //wait
56
    while(PORTBbits.RB0);   //wait Low
57
    return;
58
  }
59
}
60
61
 if(getsUSBUSART(input_buffer,64))
62
    {
63
    switch (input_buffer[0])
64
    {
65
    case 'i': 
66
    readberker = 4;
67
    break;
68
    }
69
  }
70
71
}

Markus

von Wireless A. (wireless)


Angehängte Dateien:

Lesenswert?

Ich habe die Prüfsumme gefunden!
Es ist sehr Komplex, daher habe ich ein C# program geschrieben.

Ich möchte gern auch die fernbedienung klonen, wie hat man das gemacht? 
auch via usb? Bitte beschreiben Sie, wie!

von Markus S. (links)


Angehängte Dateien:

Lesenswert?

hi,
werde nächste Woche wieder zuhaue sein dann kann ich die Vorgang gerne 
dokumentieren und hier einstellen. hätte auch noch Interesse an ihrem 
Visual c# code so das ich ihn auf einen pic umsetzen kann :)
von den unterlagen die ich momentan auf dem Laptop habe kann ich 
folgendes sagen:
Die Schaltung basiert auf einem PIC16F4455 alternativ gehen wenn ich 
mich richtig erinnere PIC18F2550, PIC18F2455, PIC18F4550 meine die waren 
fast baugleich bist auf Speichergröße und PIN Anzahl wobei ich bei 
diesem Projekt nur 2 Pins zum benötigte.
RB0 als input pin zum auslesen des signals.
und PWM2 auf den ich einen 433Mhz sender angeschlossen habe. wobei man 
natürlich auch ohne PWM senden kann ich nutze nur die Tatsache das durch 
die Modulation energy gespart wird und für andere Protokolle wie z.b. 
für denn oft in billig Funksteckdosen oder rollos verbauten PL2292 / 
HX2292 wird eine Modulation benötigt.
auf PWM1 habe ich IR Dioden angeschlossen was hier aber mal weiter 
unwichtig ist. gesteuert wird der PIC über eine in USB emulierte comp 
Schnittstelle.
anbei hab ich mal den kompletten Code
die Verarbeitung findet in user\user.c stand.
Bilder und alles weiter kann ich erst zuhause machen.
hoffe das die infos ein wenig weiterhelfen. habe zuhause auch noch 
VB.net codes für tcp/ip server zum nutzen des pics an einem anderem pc 
auch wenn ich sagen muss das dieser nur auf die schnelle zusammen 
gecoded wurde aber er tut seinen Zweck :)

Markus

von Wireless A. (wireless)


Angehängte Dateien:

Lesenswert?

Hi,
mein Code ist in die Anhang.
Ich hoffe das Sie die Dokumentation können hochladen!

Grüße

von Markus S. (links)


Angehängte Dateien:

Lesenswert?

hi,
habe der zeit einiges zu erledigen.
habe jetzt mal auf die schnelle das nötigste zum Wandsender zusammen 
gefast.

Markus

von Wireless A. (wireless)


Lesenswert?

Hi,

Können Sie bitte auch dokumentieren wie man das Sender hat gemacht?

Ich habe Probleme mit es Anschließen von die Hardware.

Danke!

von Tipetan (Gast)


Lesenswert?

Hallo,
ich habe von Microkontrollern keine Ahnung aber ich bin über diesen 
Beitrag gestoßen weil ich mit Hilfe meiner Fritzbox7390 und der 
Firmware-Erweiterung fhem und einem CUL-USB-Stick meine Hausautomation 
mit Berker komponenten durchführen möchte. Ich habe von der Fa. Insta 
eine Protokollbeschreibung gefunden und hoffe das ihr was damit anfangen 
könnt.
(Insta = Berker = Gira = Jung)

http://www.ledtrix.de/index.php?page=4434

Viel Erfolg noch!

von Robert T. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
dieser Artikel ist ja schon älter aber ich habe mich etwas mit damit 
beschäftigt und wollte eine Lösung für Arduino schaffen. Ganz ist mir 
das leider nicht gelungen, da die hier veröffentlichte CRC-Berechnung 
leider nicht passt. Meinen Ansatz könnt ihr auf GitHub unter
 https://github.com/Thro42/InstaFunkbus

Ich habe auch ein paar Sequenzen aus meiner Fernbedienung angehängt, 
vielleicht schaft es ja doch jemand die Checksumme zu knacken.
Viel Erfolg noch!

von Denny (Gast)


Lesenswert?

Hello,

I have the insta funkbus modules.
I am trying to make them smart using the rfxcom module.

Did somebody manage to make the funkbus devices smart?

I can read the funkbus (ID: 3F CC) but i can not pair them with my 
rfxcom module

Packettype        = UNDECODED RF Message
UNDECODED FunkBus:412C183B2000D3801210

Thanks,

Denny

von Jesse H (Gast)


Lesenswert?

Denny, did you get any further? I'm looking into pretty substantial Gira 
System2000 setup (12 dimmers, 8 switches and about 15 wall push 
buttons). The idea is to make it work with Philips Hue (maybe replacing 
the dimmers) without losing the functionality of the wall push buttons 
..

von Christian Z. (zany)


Lesenswert?

Falls noch jemand nach der Prüfsumme sucht, ich habe da heute zufällig 
kurz reingesehen: https://github.com/merbanan/rtl_433/pull/1896

Es ist ein einfaches XOR Schema, eine 8-Bit Maske von 10001100 (0x8c) 
rotierte zweimal links pro Bit (0x32 nach der ersten Rotation), über die 
Bits 0-42, nicht das Parity Bit 43. (Positionen in Wire-Order, 
MSB->LSB).

von Ernst (e-l)


Lesenswert?

Just to inform others.

I have made a receiver on the two wire funkbus with a resistor and an 
opto-coupler to read frames of wireless transmitters from gira. Using 
ESP32 module, hardware interrupt, microseconds timer, free-rtos-queue 
with delta-timestamps.

The telegramms as explained matches perfectly, thank you.

Also the checksum seems to be working, thank you zany.
 - Intensionally introducing an bit-error is detected with the 
algorithm.
 - Checked with two different transmitters, all the button-press-types.

Following signals match from the Gira receiver:

------------------------------------------------------------------
Übertragung: 433Mhz AM ASK, checked with a spectrum analyser

------------------------------------------------------------------
Low level coding:
  _ __       __    __ __    _
 |     |     |  |  |     |  |  |
_|     |__ __|  |__|     |__|  |__.....
 |  0  |  0  |   1  |  0  |  1  |

Timing parameters: (1k Baud, 1000bps effectively)
BIT0 > 900us
BIT0 < 1150us
BIT1 > 400us
BIT1 < 600us

------------------------------------------------------------------
Protokoll
 ___ ____ ____ ________________ ____ ________________ ____
|****|xxxx|xxxx|xxxxxxxxxxxxxxxx|xxxx|xxxxxxxxxxxxxxxp|xxxx|1|
|    |    |    |                |    |                |    |
 4Bit 4Bit 4Bit      16Bit       4Bit       16Bit      4Bit
       |    |         |           |          |          |
       |    |         |           |          |          #--Checksum
       |    |         |           |          #--Data
       |    |         |           #--Battery state
       |    |         #--serialnumber
       |    #--subtype
       #--sendertype

------------------------------------------------------------------
Examples:
bitString: 0010110001111001111110100101000000000000100111001
Formatted:  type:0010 subtype:1100 serial:0111100111111010 state:0101 
data:0000000000001001 cs:11001
received bytes: 2C 79 FA 50 00 9C  : checksum = ok

bitString: 0010110001111001111110100101000000000000110011101
Formatted:  type:0010 subtype:1100 serial:0111100111111010 state:0101 
data:0000000000001100 cs:11101
received bytes: 2C 79 FA 50 00 CE  : checksum = ok

bitString: 0010110001000001011110100101000000000000100101111
Formatted:  type:0010 subtype:1100 serial:0100000101111010 state:0101 
data:0000000000001001 cs:01111
received bytes: 2C 41 7A 50 00 97  : checksum = ok

bitString: 0010110001000001011110100101000000000000110001011
Formatted:  type:0010 subtype:1100 serial:0100000101111010 state:0101 
data:0000000000001100 cs:01011
received bytes: 2C 41 7A 50 00 C5  : checksum = ok

------------------------------------------------------------------

: Bearbeitet durch User
von Christian S. (karlheinz2000)


Lesenswert?

Kann man als Funkmodul die einfachen 3-Pin 433MHz Teile verwenden?
https://www.ebay.de/itm/395115399859

von Ernst (e-l)


Lesenswert?

Hello Christian.

My first thought was, the modulation is FM. But reading the topic, I see 
ASK is being used.

The measurements are already some time ago, no notes on this. Next week 
I will check my current Gira transmitters with a decent 
spectrum-analyser. If it's AM, then it is worth a try.

von Ernst (e-l)


Angehängte Dateien:

Lesenswert?

Checked the transmitter I have. (See picture)

what is unexpected is the center frequency, it is 433.4MHz. A popular 
value but not the by Gira advertised frequency of 433,24MHz.

The instrument is not really a great radio receiver but it is very 
likely the transmitter is ASK. FM demodulation gives hardly any signal. 
Tracing the amplitude in time fits perfectly with the telegrams send on 
the FunkBus.

So using a transmitter like https://www.ebay.de/itm/395115399859 should 
be possible. I like to try this and will order a few of those.

However keep in mind, to be a kind of legal and responsible, never 
occupy the 433MHz band averagely more than 1% (In a timespan of, I think 
10 seconds). Also don't exceed 10mW output power.

To be continued...

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.