Forum: Mikrocontroller und Digitale Elektronik ThinkBee Hacking


von Oliver R. (superberti)


Angehängte Dateien:

Lesenswert?

Moin,

es gibt doch von ThinkBee diese batterielosen Schalter. Günstig, einfach 
anzubringen und auch noch wetterfest.
Nur die Empfänger finde ich nicht doll. Nur 230V und auch in den 
Schaltmöglichkeiten recht begrenzt.
Da muss natürlich eine flexiblere Lösung mit MCU her!

Ich habe mit dem HackRF einen Baseband-Mitschnitt (433,92 MHz und 20 MHz 
Bandbreite) mit einem Einschalter und einem Ausschalter angefertigt.
Wer mag, der kann sich die originalen .wav-Dateien hier herunterladen:

https://drive.google.com/file/d/1qdFoKUZUlZDegIM7bJkPCaEhAsy9CUfP/view?usp=sharing

Die aufgezeichneten Signale sind etwas übersteuert, aber man kann schon 
ganz gut erkennen, dass es sich um eine ASK/OOK-Modulation handelt. Nur 
kann ich die nicht so sehr den üblichen Line-Codes zuordnen. Zuerst sah 
es mir wie eine Manchester-Codierung aus, aber das kann aufgrund der 
immer gleich langen "high"-Zeiten (bis auf das "Stoppbit") eigentlich 
nicht sein.

Für mich sieht es eher so aus, also ob ein Wechsel auf "high" immer den 
Empfänger synchronisiert und dann die Länge der anschließenden Pause 
entscheidend für 0 oder 1 ist. Irgendwann kommt noch eine Art 
"Stopp-Bit" mit einer doppelt so langen "high"-Zeit.

Die Sequenz von 3-ca. 16 ms wird dann übrigens noch drei mal wiederholt, 
die habe ich in den Bildern abgeschnitten.

Was meint Ihr, was das für eine Kodierung sein könnte? Kann man das mit 
irgendeiner Packet-Engine der bekannten 433-MHz-Receiver (z.B. CC1101) 
auswerten? Oder nur direkt in der MCU?

Gruß,
Oliver

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Oliver R. schrieb:
> Für mich sieht es eher so aus, also ob ein Wechsel auf "high" immer den
> Empfänger synchronisiert und dann die Länge der anschließenden Pause
> entscheidend für 0 oder 1 ist.
Sehe ich auch so. Bekannt ist so ein Verfahren durch das 1-Wire 
Protokoll.

> Irgendwann kommt noch eine Art "Stopp-Bit" mit einer doppelt so langen
> "high"-Zeit.
Oder ein Startbit. Auf jeden Fall ist das ein Synchronisierungssignal. 
Und schlau ist es eigentlich immmer, die Synchronisierung am Anfang 
eines Telegramms zu machen.

von Oliver R. (superberti)


Lesenswert?

Lothar M. schrieb:
> Oliver R. schrieb:
>> Für mich sieht es eher so aus, also ob ein Wechsel auf "high" immer den
>> Empfänger synchronisiert und dann die Länge der anschließenden Pause
>> entscheidend für 0 oder 1 ist.
> Sehe ich auch so. Bekannt ist so ein Verfahren durch das 1-Wire
> Protokoll.

Ja, daran habe ich auch schon gedacht, es hat zumindest einige 
Ähnlichkeiten.

>
>> Irgendwann kommt noch eine Art "Stopp-Bit" mit einer doppelt so langen
>> "high"-Zeit.
> Oder ein Startbit. Auf jeden Fall ist das ein Synchronisierungssignal.
> Und schlau ist es eigentlich immmer, die Synchronisierung am Anfang
> eines Telegramms zu machen.

Also davor kommt definitiv nichts. Ich habe die Samples aus einer 
längeren Aufnahme recht genau herausgeschnitten. Bis zum ersten 
"Stopp-Bit" könnte es sich um ein Sync-Word mit 10 Bits handeln, die 
sind bei beiden Schaltern gleich. Danach kommen dann 40 Bits, die pro 
Schalter etwas unterschiedlich sind. Ich könnte mir eine Kennung 
vorstellen.
So wie ich das sehe, muss ich wohl dafür einen Decoder selbst schreiben, 
das Protokoll ist schon etwas speziell, sieht aber auch nicht allzu 
kompliziert aus.

Gruß,
Oliver

von Helmut -. (dc3yc)


Lesenswert?

Also nachdem das Ding keinerlei Prüfzeichen trägt, würde ich es in der 
EU nicht verwenden. Noch dazu, wo es nur Brandklasse V0 ist. Wenn es 
schmort oder brennt, wird das keine Versicherung übernehmen.
Da es laut Anleitung ein Anlernprotokoll ist, gehe ich davon aus, dass 
es verschlüsselt ist (evtl. Rolling Code?). Da wird es mit der 
Decodierung schlecht aussehen.

von Oliver R. (superberti)


Lesenswert?

Noch ein Grund mehr, an einem Niedervolt-Empfänger zu arbeiten. Die 
Empfänger habe ich auch gar nicht mitgekauft, nur die Schalter.
Die sollten aufgrund der fehlenden Batterie kaum von selbst brennen 
können ;-)

Ich habe noch mal die Bit-Zeiten vermessen:

High-kurz (Bit-Start?)     - 100 µs
High-lang (Start-Sync?)    - 200 µs
Pause kurz (1?)            - 100 µs
Pause lang (0?)            - 300 µs
Pause nach Sync(?)         - 600 µs


Die Zeiten schwanken so +/- 10 %, ich würde da eine Toleranz von 15 % 
einbauen (vorausgesetzt, das HackRF sampelt halbwegs zeitstabil).

Gruß,
Oliver

von Oliver R. (superberti)


Lesenswert?

Ach noch was:

Es gibt keinen Rolling-Code oder irgend etwas in der Art. Es werden 
stets die gleichen Signale gesendet. Der On-Schalter unterscheidet sich 
vom Off-Schalter ausschließlich im zweiten Teil der im Bild gezeigten 
Aufnahme, nach dem ersten langen High-Impuls.

Gruß,
Oliver

von Oliver R. (superberti)


Lesenswert?

So, es geht langsam voran:

Ich habe hier

https://github.com/Superberti/ThinkbeeReceiver/tree/main

einen kleinen Demodecoder eingestellt, der schon recht zuverlässig 
funktioniert. Ich kann damit zumindest beide Schalter und deren 
Betätigung unterscheiden.

Mangels unterschiedlicher Thinkbee-Hardware bleibt die Bedeutung der 
einzelnen Bits mehr Spekulation als Wissen.
Wer mag, der kann mich gerne mit Mitschnitten versorgen ;-)

Gruß,
Oliver

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.