Tchibo Wetterstation 433 MHz - Dekodierung mal ganz einfach

Hallo jurs,
super ! Musste ich natürlich direkt mit meinem Sensor ausprobieren. Hier die ersten Datensequenzen, wie sie auf dem seriellen Monitor ausgegeben werden. Hat auf Anhieb geklappt.

Start!

Start Bit L: 8030   H: 208
Data Bits: 36
L: 1012 1012 2008 2016 2024 2016 1012 2016 1004 1012 1008 1016 1004 1012 1000 1012 1000 2028 996 1016 2020 1008 2016 2020 1008 1012 1012 1004 1020 2012 1012 996 1020 2016 2012 2016 
H: 188 180 188 184 184 180 184 184 180 184 184 184 184 180 184 184 184 188 184 180 184 188 184 176 184 180 184 180 180 184 184 184 184 184 180 184 
001111010000000001001011000001000111

Start Bit L: 8070   H: 184
Data Bits: 36
L: 1012 996 2016 2028 2012 2028 1020 2016 1020 1020 1020 1020 1016 1020 1016 1012 1008 2024 1012 1012 2036 1020 2016 2012 1020 996 1012 1012 1008 2016 1012 1012 1004 2020 2016 2028 
H: 180 184 184 184 180 184 168 172 192 172 168 172 172 172 176 180 184 180 176 180 172 172 172 184 184 184 184 184 184 176 184 184 184 180 180 184 
001111010000000001001011000001000111

Start Bit L: 8060   H: 180
Data Bits: 36
L: 1012 1008 2012 2020 2020 2020 1012 2024 1012 1016 1012 1008 1024 1004 1012 1016 1004 2024 1012 1016 2024 1008 2028 2016 1004 1012 1016 1000 1020 2012 1000 1012 1016 2012 2012 2012 
H: 184 184 188 184 180 180 184 180 176 176 180 180 172 180 180 180 184 180 176 180 180 184 172 184 184 184 180 180 180 184 184 184 184 188 184 188 
001111010000000001001011000001000111

000001000111 Temperatur 7.1
01001011 Feuchte 75%
Die Daten meiner Fernbedienung für Funksteckdosen werden allerdings nicht dekodiert - die Anzeige bleibt leer.

erni-berni:
Die Daten meiner Fernbedienung für Funksteckdosen werden allerdings nicht dekodiert - die Anzeige bleibt leer.

Um Funksteckdosen auszulesen und anzustreuern nutze ich immer RCSwitch (GitHub - sui77/rc-switch: Arduino lib to operate 433/315Mhz devices like power outlet sockets.)
Da kommt dann sowas raus http://www.the-intruder.net/funksteckdosen-von-rev-uber-arduino-ansteuern/
Klappt bis jetzt immer! :wink:

erni-berni:
Hallo jurs,
super ! Musste ich natürlich direkt mit meinem Sensor ausprobieren. Hier die ersten Datensequenzen, wie sie auf dem seriellen Monitor ausgegeben werden. Hat auf Anhieb geklappt.

So dachte ich mir das, dass es eben möglichst universell funktioniert und Daten verschiedener Sensoren zur Anzeige bringt.

Danke für die Rückmeldung!

erni-berni:
Die Daten meiner Fernbedienung für Funksteckdosen werden allerdings nicht dekodiert - die Anzeige bleibt leer.

Hast Du geprüft, ob die Fernbedienung auch auf 433 MHz sendet?

Hm, also bei mir funktioniert es mit einer Fernbedienung für ein "Quigg" Funksteckdosen-Set, und danach habe ich die Variable für die untere Datenbitzahl auf 20 gesetzt. Möglicherweise gibt es Funksteckdosen, die weniger als 20 Bit senden. Vielleicht mal probieren:
#define MINPULSECOUNT 14
oder eine andere Zahl unter 20. Da Funksteckdosen nur ein/aus Befehle erhalten könnte es sein, dass es vielleicht auch bei einem Hersteller weniger als 20 übertragene Datenbits sind.

Wie teuer waren die Funksteckdosen? Wenn sie überdurchschnittlich viel gekostet haben, bestünde auf 433 MHz auch die Möglichkeit, dass sie ihr Signal mit Frequenzmodulation statt mit Amplitudenmodulation modulieren. In dem Fall würde man zum Empfangen andere Empfänger benötigen (FM Receiver). Und auch mit Amplitudenmodulation sind andere Übertragungsverfahren denkbar, die ohne das extralange Startbit im Funkprotokoll auskommen, da müßte mein Sketch dann ebenfalls passen.

Ist vielleicht irgendein Hersteller erkennbar, der Deine Funksteckdosen produziert hat?
(Manchmal kann man Details dann im Internet googeln.)

Shojo:
Um Funksteckdosen auszulesen und anzustreuern nutze ich immer RCSwitch (GitHub - sui77/rc-switch: Arduino lib to operate 433/315Mhz devices like power outlet sockets.)
Da kommt dann sowas raus http://www.the-intruder.net/funksteckdosen-von-rev-uber-arduino-ansteuern/
Klappt bis jetzt immer! :wink:

REV-Funksteckdosen scheinen das Nexa-Protokoll zu verwenden, das hier dargestellt wird:
http://svn.telldus.com/svn/rf_ctrl/nexa_2_6_driver/trunk/NexaProtocol.txt

Dieses Protokoll kann von meinem Sketch gleich aus mehreren Gründen momentan nicht erkannt werden:
a) Das Protokoll startet nicht mit einem besonders langen LOW Impuls als Startbit
b) Die kürzesten LOW-Impulse im Protokoll sind nur 350 us lang, ich gehe standardmäßig von mindestens 450 us Bitdauer aus
#define MINBITPULSE 450

Mit einigen Änderungen müßte es machbar sein, auch die REV-Datenpakete irgendwie einzufangen. Die haben zwar keinen extralangen LOW-Impuls am Anfang, dafür aber einen extralangen LOW-Impuls am Ende des Datenpakets. Da die Datenpakete viermal wiederholt werden, könnte man so den Sync-Impuls am Ende des ersten Pakets als Startbit des zweiten Pakets auffassen. So bekäme man dann zwar nur maximal 3 der 4 gesendeten Pakete eingefangen, aber immerhin sollte es möglich sein.

Leider habe ich keine Möglichkeiten zum Testen, wenn ich die notwendigen Änderungen einbauen würde.

erni-berni, sind Deines vielleicht REV-Funksteckdosen (oder kompatible wie Nexa, Proove oder ARC Technology)?

Hallo jurs,
das Thema Funksteckdosen lässt sich abkürzen. Meine sind von Bahr und waren sehr günstig (Praktiker Angebot 4,99 für 3 Stück !!), Hersteller ELRO und 433 MHz. Das Protokoll entspricht dem PT2262 Protokoll, das sui in seiner Library dekodiert (http://blog.sui.li/2011/04/12/low-cost-funksteckdosen-arduino/). Die Library wird ja auch erwähnt.
Dieses Protokoll dieser Steckdosen arbeitet vollkommen anders als die Sensoren.
Du müsstest also den Dekodier-Algorithmus der RCSwitch Lib in dein Programm einbauen.

erni-berni:
das Thema Funksteckdosen lässt sich abkürzen. Meine sind von Bahr und waren sehr günstig (Praktiker Angebot 4,99 für 3 Stück !!), Hersteller ELRO und 433 MHz. Das Protokoll entspricht dem PT2262 Protokoll, das sui in seiner Library dekodiert (http://blog.sui.li/2011/04/12/low-cost-funksteckdosen-arduino/).

OK, das ist haargenau dasselbe wie das von mir ein Posting darüber verlinkte Nexa-Protokoll, das ein Hersteller Taiwan verwendet und das offensichtlich in ganz vielen Funksteckdosen weltweit zum Einsatz kommt, auf die vom taiwanesischen Hersteller ganz unterschiedliche Handelsmarken draufgepinselt werden.

erni-berni:
Dieses Protokoll dieser Steckdosen arbeitet vollkommen anders als die Sensoren.

Ja, die Funk-Wettersensoren senden eine einfache Bitlängencodierung, d.h. die Länge eines einzelnen Bits entscheidet, ob es ein 0-Bit oder ein 1-Bit ist, und zwar ist das Bit immer nur durch die Länge der LOW-Zeit zwischen zwei HIGH-Impulsen bestimmt.

Im Nexa-Protokoll für die/viele Funksteckdosen sind es dagegen nicht einzelne High- oder Low-Impulse, in deren Dauer das Bit steckt, sondern jedes Bit wird mit zwei High- und zwei Low-Impulsen übertragen, insgesamt vier Flankenwechsel für ein Bit.

erni-berni:
Du müsstest also den Dekodier-Algorithmus der RCSwitch Lib in dein Programm einbauen.

Nö, das soll ja nur ein Vorab-Analyseprogramm sein. Das soll nur generell ermitteln, was so an 433MHz Datenpaketen in der Luft unterwegs ist. Und zwar um das Timing der Bits unbekannter Sensoren herauszubekommen.

Bei den Funksteckdosen mit Nexa, REV, Proove, ARC-Technology, ELRO, PT2262 braucht man die Timings der Datenpakete ja gar nicht mehr herauszufinden: Die werden/wurden ja überhaupt nur mit zwei Timings hergestellt: Früher mit 650 us, heute mit 350 us Periodendauer T. Das sind dann ja eigentlich keine "unbekannten Sensoren" (auch wenn ein unbekannter Name draufsteht), sondern das Timing ist bekannt und welche Library man zur Dekodierung ansetzen kann.

Mal schauen, wenn ich beim Praktiker/Max Bahr mal günstig eine dieser Funksteckdosen bekommen kann, ob ich das Analyse-Programm dann nicht wenigstens noch so weit aufbohre, dass es anzeigen kann:

  • Funksteckdosen-Datenpaket erkannt

Hallo ihr Code- Experten!

Bin seit längerer Zeit beim Auswerten meiner 433MHz Temp-Sensoren mit dem RFM12 (OOK).
Das Erkennen der drei unterschiedlichen Typen klappt hervorragend.

Der Empfänger schnappt aber auch noch andere Signale auf, an denen ich mich jetzt auch noch üben will.
Ist in dem Bild die Manchester-Codierung zu sehen? Vielleicht sieht es einer gleich und ich kann mir die Knobelei sparen...

1120
-804
1164
-788
1104
-332
632
-844
620
-328
1176
-804
1164
-304
612
-360
616
-348
628
-848
604
-360
-356
1152
-816
604
-328
-316
604
-872
1108
-832
604
-356
632
-344
1148
-804
632
-316
632
-360
1148
-300
644
-848
1136
-804
1104
-328
632
-360
632
-328
648
-832
632
-316
660
-328
1148
-304
632
-344
632
-344
616
-360
616
-360
616
-864
1108
-840
1120
-820
1104
-328
620
-356
604
-372
632
-852
600
-356
632
-332
1120
-344
632
-344
604
-372
588
-388
616
-344
632
-852
1128
-820
600
-348
660
-316
632
-328
644
-348
616
-344
660
-316
644
-332
632
-344
616
-360
616
-360
632
-344
620
-340
632
-344
620
-356
620
-356
604
-376
616
-344
644
-332
616
-360
616
-360
616
-344
632
-360
620
-324
648
-344
632
-328
632
-360
616
-344
632
-344
620
-372
632
-328
632
-344
648
-316
632
-344
616
-372
1108
-860
1104
-320
644
-328
648
-332
644
-832
632
-328
616
-348
1148
-832
1120
-816
616
-332
632
-344
632
-344
1148
-300
664
-828
576
10236
1076
-832
1148
-804
1120
-316
616
-360
632
-848
616
-344
1176
-776
616
-344
1148
-304
644
-332
632
-344
644
-832
604
-360
652
-324
1132
-832
604
-344
1148
-300
632
1160
-780
612
-344
620
-356
1120
-832
620
-344
632
-356
604
-360
1132
-832
1096
-844
1120
-332
600
-360
644
-332
628
-864
0
-360
616
-364
1128
-316
616
-360
660
-300
648
-344
632
-328
620
-872
1120
-820
1132
-804
1148
-304
600
-376
616
-364
628
-860
604
-344
616
-348
1132
-312
632
-360
632
-344
604
-372
588
-380
596
-876
1120
-816
604
-360
644
-316
632
-360
616
-360
644
-332
616
-360
620
-356
616
-360
616
-344
632
-344
616
-348
616
-372
588
-372
632
-348
628
-344
620
-356
620
-344
644
-332
616
-360
632
-344
616
-360
632
-344
632
-328
652
-312
644
-344
632
-344
632
-332
600
-376
628
-360
616
-348
616
-360
628
-332
648
-328
632
-348
1160
-804
1116
-332
616
-360
604
-356
632
-860
576
-372
1148
-304
644
-848
588
-360
1104
-860
1108
-328
648
-832
600
-344
632
-344
648
10652
1104
-820
1132
-804
1148
-300
652
-312
624
-868
588
-360
1164
-800
640
-308
1148
-316
620
-356
620
-356
620
-860
588
-360
628
-348
1148
-816
604
-360
1132
-316
632
-848
1148
-804
600
-344
648
-328
1164
-804
604
-356
632
-332
1148
-816
604
-360
1148
-816
1120
-316
632
-344
616
-360
660
-820
600
-360
616
-344
1152
-312
648
-328
620
-356
620
-344
632
-356
604
-860
1120
-832
1120
-820
1120
-328
632
-344
616
-348
632
-860
588
-360
616
-360
1148
-284
648
-344
616
-360
632
-344
644
-332
632
-844
1120
-820
604
-356
632
-332
644
-344
620
-344
644
-332
632
-344
648
-328
600
-360
616
-360
632
-360
616
-344
644
-332
604
-372
616
-348
628
-344
620
-356
620
-372
604
-356
620
-344
616
-372
608
-356
632
-344
632
-344
632
-344
632
-328
632
-344
616
-376
588
-372
616
-360
616
-360
616
-344
632
-344
648
-328
620
-344
1164
-816
1136
-300
632
-344
616
-360
616
-860
604
-344
648
-328
632
-332
660
-328
-316
616
-876
588
-360
1148
-316
628
-836
600
-376
616

mde110:
Ist in dem Bild die Manchester-Codierung zu sehen?

Auf jeden Fall ist es keine einfache Bitbreitencodierung.

Aber eine typische Manchestercodierung ist es auch nicht. Bei einem typischen Manchestercode hast Du zwei verschiedene High-Längen und zwei verschiedene Low-Längen, aber diese sind jeweils gleich.

Du hast zwar auch je zwei verschiedene High-Längen und zwei verschiedene Low-Längen, aber diese sind jeweils verschieden lang.

High: ca. 1100 und ca. 630
Low: ca. 820 und ca. 330

In der Summe scheinen der lange High-Impuls und der kurze Low-Impuls sowie der kurze High-Impuls und der lange Low-Impuls den gleichen Wert zu ergeben:
1100 + 330 = 1430
630 + 820 = 1450

Aber es ist ja nicht so, daß immer ein kurzer Low-Impuls auf einen langen High-Impuls folgt und umgekehrt.
Ich habe keine Ahnung, was das für eine Codierung sein könnte.

Hi zusammen,

ich finde euren Artikel sehr interessant. Welchen Sender und Empfänger habt ihr benutzt?
Ich habe z.b. so einen gefunden:

Würde gerne meine im Bad fest verbauten Lüfter damit ansteuern. Deshalb hatte ich auch schon mal über

nachgedacht.

Eigentlich sind die Infos so interessant, dass man sie gesammelt auf einer Info Seite posten sollte (und nicht "verteilt" über mehrere Threats)...

Vielen Dank für Infos,
Bernhard

barnybe:
ich finde euren Artikel sehr interessant. Welchen Sender und Empfänger habt ihr benutzt?
Ich habe z.b. so einen gefunden:

Ja, genau solche verwende ich auch.

Allerdings bekommst Du für den Preis des Amazon Versenders bei Direktbestellung in China die fünffache Menge (also 5 Sender und 5 Empfänger) für den Preis, den der Amazon Versender bereits für nur ein Pärchen haben möchte.

Das sind die allerbilligsten, die es für 433 MHz gibt.

Ich verwende das RFM12 und TFA 30.3125 Außensender.

Hier http://www.ebay.com/itm/New-1pcs-433Mhz-RF-Transmitter-And-Receiver-Kit-For-Arduino-Project-EP98-/111037982767?pt=LH_DefaultDomain_0&hash=item19da61282f hatte ich eingekauft.

Bezüglich des Funk Einbauschalters:
Der gehört zu einem System http://www.hans-hats.de/elro-elro-home-control-c-563_930_874.html?osCsid=00c1b9d2728e38d8bd773e02d21eb099
das wird auf der Seite der rc-switch Library als "Known Device" geführt, Protokoll ist also bekannt.

Das werde ich auch mal probieren.Habe noch eine Empfänger und Tchibo-Sender da liegen.

Als ersten Schritt habe ich das Signal des Receivers über einen 10k Widerstand und einen 1uF Kondensator auf den Mikrofoneingang der Soundkarte gelegt und mit Audacity aufgezeichnet

Also Gnd-Gnd, Data-19kohm-Data, VCC-VCC und zwischen Data und Gnd den Kondenator ?
Im Internet finde ich nichts

Nein, alles in Serie, also
GND Receiver mit GND Soundkarte verbinden
DATA Receiver über einen 10k Widerstand und eine 10uF Kondensator (beides in Serie) mit einem Kanaleingang der Soundkarte verbinden.
Der Receiver braucht natürlich noch VCC.

Soll ich die fünf Volt von einem USB Port
nehmen und GND mit GND verbinden ?

Kannst du so machen, wobei ich die Erfahrung gemacht habe, dass die 5V vom USB Port "nicht sauber" sind und oft höherfrequente Störungen haben.
Das kannst du vermindern, wenn du zwischen 5V und GND einen Keramikkondensator von 100nF und dazu parallel einen Elko von 100uF einbaust.
Aber versuch's ruhig mal erst ohne, wenn's geht ist es ja gut so.

Hallo zusammen,

habe mir ein RFM12 (ohne "B"; also 5V) und ein TFA gekauft. Jetzt fehlt mir nur noch ein Schaltplan und ein Programm für Arduino-Uno R3 1.024;-))
Scherz beiseite: wer hat ein lauffähiges Programm mit zugehörigem Anschlussbild für den RFM12 (oder wo kann ich beides finden)?

Vielen Dank schon mal im Voraus
Barny

Hallo Barny,

was willst du denn überhaupt machen?
Wenn das nicht zu diesem Beitrag passt, dann mach besser ein neues Topic auf.

Gruß
Reinhard

Hi zusammen,

hatte vor einigen Tagen von mde110 diese Infos bekommen (RFM12 + Temp-sensor).
Habe vor eine Lüftungsanlage damit zu steuern (und noch vieles mehr,-). Aktuell habe ich DHT22 angeschlossen, würde aber mangels Leitungen gerne auch Funk sensoren anschliessen. Auch für die Aktoren eignet sich Funk meines Erachtens super gut und es gibt weniger Risiko und 220V und 5V bleiben sauber getrennt. Hatte mir vor einiger Zeit eine Conrad relaiskarte geholt (mit CE-Kennzeichnung), weil ich da diesen Thread noch nicht gesehen hatte. Jetzt möchte ich es lieber per Funk machen.
Also nochmal: Wie schliesse ich das RFM12 an meinen Arduino an und welche Library und evtl ein Demo gibt es? Von da aus kann ich dann wieder weiterentwickeln. Ideal wäre natürlich ein paar Zeilen, die über das RFM12 direkt meinen TFA sensor ausliest und anzeigt und evtl. ein Demo, wie ich eine Steckdose ein und ausschalten kann.

Gruß,
Barny

Hallo Leute!
Wollte, nachdem ich hier ein wenig gelesen habe, auch mal meinen Senf dazu geben.
Ich hatte vor einigen Monaten auch vor, Daten von einem Funk-Temperatur Sender zu Decodieren. Hatte dann aber erst mal anderes zu tun.
Habe mir letzte Woche dann einfach eine einfache Funkwetterstation bei Edeka gekauft. War dort im Angebot für 9,99€.
Gleich zerlegt, RF-Empfänger und DCF77 ausgelötet. RF-Empfänger an Arduino angeschlossen und mal den Sketch "Sketch zur Vorab-Analyse unbekannter 433-MHZ-Wettersensoren und Fernbedienungen von 433MHz-Funksteckdosen" aus Post 19 ausprobiert. Und siehe da, ich bekomme die Bitfolge von dem Sender angezeigt. Habe diese dann auch dekodiert. Temperatur und Luft feuchte kann ich damit auslesen (momentan noch manuell, werde es in den nächsten Tagen noch ändern). Danach habe ich die Funkschalter meiner verschiedenen Steckdosen ausprobiert. Auch diese kann ich damit Decodieren.
Dieser Sketch hat mir echt geholfen. Danke!!!

Gruß Titus

titus75:
Dieser Sketch hat mir echt geholfen. Danke!!!

:open_mouth: Oh, endlich mal ein Feedback zum Sketch aus Reply #19 - Danke für die Rückmeldung!
(Dann weiß ich, dass es wenigstens einer sinnvoll verwenden konnte. )