Forum: HF, Funk und Felder Wie nennt man dieses Bit-Encoding Verfahren?


von Michael D. (nospam2000)


Lesenswert?

Hi,

ich habe von meiner "Heidemann Funkklingel Komplett-Set 70835 HX Action" 
das Protokoll decodiert um den Sensor durch einen Eigenbau zu ersetzen. 
Das Senden mit einem ESP32+CC1101 funktioniert auch gut.

Rein interessehalber würde mich interessieren wie man das Bit-Encoding 
Verfahren nennt, welches dort für die einzelnen Bits verwendet wird, da 
es mir nicht geläufig ist.

Ein Bit besteht aus jeweils 3 Symbolen (OOK, 350 µs lang):
1
        Symbol                    Decodiertes Bit
2
  space-mark-space (0-1-0)            0
3
  mark-mark-space  (1-1-0)            1

  Viele Grüße,

   Michael

: Bearbeitet durch User
von tja (Gast)


Lesenswert?

nachdem immer noch keiner geschrieben hat werfe ich mal ein propritäres 
Verfahren ein, da für mich so eine Encodierung keinen Sinn macht. Auch 
eine kurze Recherche mit Google hat bei mir nichts ergeben.
Das dritte Bit ist einfach nur Overhead und verschwendet Bandbreite und 
Energie. Zudem lassen sich 3 bit auch nicht schön im uC verarbeiten...

von Hugo H. (hugo_hu)


Lesenswert?

Michael D. schrieb:
> Ein Bit besteht aus jeweils 3 Symbolen (OOK, 350 µs lang):

Michael D. schrieb:
> Rein interessehalber würde mich interessieren wie man das Bit-Encoding
> Verfahren nennt, welches dort für die einzelnen Bits verwendet wird, da
> es mir nicht geläufig ist.

Aus meiner Sicht: Bescheuert - ein Bit ist ein Bit und setzt sich nicht 
aus 3 Bit zusammen. Vermutlich hast Du irgendetwas "fehlinterpretiert".

von Michael D. (nospam2000)


Angehängte Dateien:

Lesenswert?

Hi,

vielleicht war die Frage zu abstrakt gestellt, daher hier ein Bild des 
Signals wie es aufgezeichnet wurde.
1
Signal  010 010 010 010 010 110 010 010 110 110 110 110 010
2
Bits     0   0   0   0   0   1   0   0   1   1   1   1   0

Die Frage ist, wie heißt das Encoding welches die Bits auf das Signal 
abbildet. Ist das bekannt oder proprietär?

 Michael

von Hugo H. (hugo_hu)


Lesenswert?

Michael D. schrieb:
> ich habe von meiner "Heidemann Funkklingel Komplett-Set 70835 HX Action"
> das Protokoll decodiert um den Sensor durch einen Eigenbau zu ersetzen.

Wenn Du meinst.

Michael D. schrieb:
> Rein interessehalber würde mich interessieren wie man das Bit-Encoding
> Verfahren nennt, welches dort für die einzelnen Bits verwendet wird, da
> es mir nicht geläufig ist.

Sieht man - Du hast vermutlich keinerlei Ahnung.

Aber Hauptsache:

Michael D. schrieb:
> Das Senden mit einem ESP32+CC1101 funktioniert auch gut.

Dann ist doch alles O. K. - viel Spaß noch :-)

: Bearbeitet durch User
von Michael D. (nospam2000)


Lesenswert?

Hugo H. schrieb:

> Aus meiner Sicht: Bescheuert - ein Bit ist ein Bit und setzt sich nicht
> aus 3 Bit zusammen.

Das nennt sich Encoding und ist die Abbildung von der Signal-Ebene in 
die Bit-Ebene. Normalerweise wird hier z.B. der Manchester Code, 
SDLC/HDLC, RLL, GCR, etc. verwendet. Diese Codes achten normalerweise 
darauf, das nicht zu viel Overhead produziert wird, d.h. typischerweise 
maximal 2 Symbole pro Bit.

Bei heutigen Codes werden eher mehrere Bits pro Symbol übertragen. 3 
Symbole für ein Bit zu benutzen ist schon außergewöhnlich, daher frage 
ich ja hier.

Da insgesamt nur 13 Bit übertragen werden (inklusive Präambel) ist der 
Overhead natürlich vernachlässigbar.

Das kannst du dir wie beim Morsecode vorstellen.

   Michael

von Wolfgang (Gast)


Lesenswert?

tja schrieb:
> Das dritte Bit ist einfach nur Overhead und verschwendet Bandbreite und
> Energie.

Sichere Synchronisation durch den 1-0 Übergang muss nicht unbedingt 
Verschwendung sein.

von qwerty (Gast)


Lesenswert?

Ich glaube, dass es für die code redundancy ist, wie z.B. wie beim 
Hamming code.

https://en.wikipedia.org/wiki/Triple_modular_redundancy

versuch mal die bits einbisschen zu manipulieren wie in der Liste im 
WIKI Artikel und schau ob es noch funktioniert.

von Gerhard O. (gerhard_)


Lesenswert?

Die ersten fünf Ausstrahlungen sind höchstwahrscheinlich 
Synchronisationszeichen um den einfachen UHF-Empfänger bzw. den 
Bitslicer zu trainieren damit die Extrahierung der Daten höchste 
Empfindlichkeit bekommt und um die unzusammenhängenden Zufallsbits ohne 
Signal zum Schweigen zubringen.

von Hugo H. (hugo_hu)


Lesenswert?

Michael D. schrieb:
> Da insgesamt nur 13 Bit übertragen werden (inklusive Präambel) ist der
> Overhead natürlich vernachlässigbar.

Woraus genau schließt Du das? Aus dem dargestellten Ausschnitt?

Michael D. schrieb:
> 3 Symbole für ein Bit zu benutzen ist schon außergewöhnlich, daher frage
> ich ja hier.

Seit wann werden Symbole übertragen? Verwechselst Du da nicht etwas?

von A. S. (Gast)


Lesenswert?

Du hast also lange und kurze 1-Pegel. Verwendet wird sowas in Barcodes, 
dcf77, morsen. Ist ein "Return to Zero"- Verfahren, im Gegenteil zu NRZ.

Der Vorteil: der Takt ist gleich mit drin. Mehr Daten als z.b. FSK oder 
Manchester, dafür nicht symmetrisch.

von Hugo H. (hugo_hu)


Lesenswert?

A. S. schrieb:
> Du hast also lange und kurze 1-Pegel. Verwendet wird sowas in Barcodes,
> dcf77, morsen. Ist ein "Return to Zero"- Verfahren, im Gegenteil zu NRZ

High und Low werden überall in der Digitaltechnik verwendet. Das hat 
nichts mit "Symbolen" zu tun.

A. S. schrieb:
> Ist ein "Return to Zero"- Verfahren, im Gegenteil zu NRZ.

Erkläre das mal bitte verständlich - für Dumme.

A. S. schrieb:
> Der Vorteil: der Takt ist gleich mit drin. Mehr Daten als z.b. FSK oder
> Manchester, dafür nicht symmetrisch.

Das auch bitte - für Dumme.

von Michael D. (nospam2000)


Lesenswert?

Hugo H. schrieb:
> Woraus genau schließt Du das? Aus dem dargestellten Ausschnitt?

Das ist kein Ausschnitt, das ist das komplette Signal, welches mit 5ms 
Abstand ca. 100 mal wiederholt wird.

> Michael D. schrieb:
> Seit wann werden Symbole übertragen? Verwechselst Du da nicht etwas?

Aus https://de.wikipedia.org/wiki/Symbol_(Nachrichtentechnik):
"Als Symbol werden in der digitalen Übertragungstechnik und 
Nachrichtentechnik die verschiedenen Zeicheneinheiten zur Übertragung 
des Informationsgehaltes bezeichnet. Die Anzahl der pro Zeitspanne 
übertragenen Symbole ist die Symbolrate und wird in der Einheit Baud 
ausgedrückt."

 Michael

von Michael D. (nospam2000)


Lesenswert?

Hugo H. schrieb:
> High und Low werden überall in der Digitaltechnik verwendet. Das hat
> nichts mit "Symbolen" zu tun.

Es kam vermutlich nicht klar rüber, aber es geht hier um 
Nachrichtentechnik und Funkübertragung, nicht um Digitaltechnik. Ich 
dachte das wäre durch die Wahl des Forums "HF, Funk und Felder" und 
Begriffe wie "Funkklingel" und CC1101 klar.

  Michael

von Hugo H. (hugo_hu)


Lesenswert?

Michael D. schrieb:
> Aus https://de.wikipedia.org/wiki/Symbol_(Nachrichtentechnik):
> "Als Symbol werden in der digitalen Übertragungstechnik und
> Nachrichtentechnik die verschiedenen Zeicheneinheiten zur Übertragung
> des Informationsgehaltes bezeichnet. Die Anzahl der pro Zeitspanne
> übertragenen Symbole ist die Symbolrate und wird in der Einheit Baud
> ausgedrückt."

Na, dann lies mal genau nach, was ein Baud ist. Baud <> Bit.

Die Grundlagen solltest Du Dir schon aneignen, wenn Du irgendwelche 
Signale manipulieren willst.

von Gustl B. (-gb-)


Lesenswert?

Hugo H. schrieb:
> Sieht man - Du hast vermutlich keinerlei Ahnung.

Hugo H. schrieb:
> Erkläre das mal bitte verständlich - für Dumme.

Aha, das passt ja zusammen.

Hier liegt glaube ich eine falsche Interpretierung von "Symbol" vor. Bei 
RZ gibt es zwei Symbole,
1: positives Signal, Pause
0: negatives Signal, Pause.

Aber: Das wird immer als ein Symbol gesehen. Also Signal und Pause 
zusammen sind ein Symbol.

Hier in dem was Michael D. sieht gibt es auch zwei Symbole:
1: langes Signal, kurze pause
0: kurze Pause, kurzes Signal, kurze Pause.

Aber Beides ist wieder jeweils nur ein Symbol.

von Hugo H. (hugo_hu)


Lesenswert?

Michael D. schrieb:
> Es kam vermutlich nicht klar rüber, aber es geht hier um
> Nachrichtentechnik und Funkübertragung, nicht um Digitaltechnik.

Natürlich geht es um Digitaltechnik. Wie sonst kommen Deine "Symbole" 
zustande?

von Hugo H. (hugo_hu)


Lesenswert?

Gustl B. schrieb:
> Aber Beides ist wieder jeweils nur ein Symbol.

Verstehst Du selbst, was Du da geschrieben hast?

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Hugo H. schrieb:
> Natürlich geht es um Digitaltechnik. Wie sonst kommen Deine "Symbole"
> zustande?

Die Zustände auf der Leitung sind nicht direkt die Bits. Wenn man sich 
z. B. RZ angucket, dann ist die Zeit die das Signal an ist die Hälfte 
der Dauer eines Bits. Es werden also 0,5 Bit/Symbol übertragen. Und hier 
sind es eben 1/3 Bit/Symbol.

Beitrag #6677307 wurde von einem Moderator gelöscht.
Beitrag #6677310 wurde von einem Moderator gelöscht.
Beitrag #6677316 wurde von einem Moderator gelöscht.
von Fpgakuechle K. (Gast)


Lesenswert?

Man kann es so beschreiben:

Aus dem Signal lässt sich der Bittakt zurückgewinnen, da jeder 1->0 
Wechsel genau periodisch erfolgt.
die Codierung ist allerdings nicht gleichstromfrei, da die '0' Folge wie 
die '1' Folge gleich codiert werden. Jedenfalls im letzten Post.

Also vielleicht ist es eine 'verunglückte Biphase Mark codierung.

Könnte auch als Variante des DCF77 beschrieben werden, dort ist bei 100 
ms Absenkungsphase der AM eine '0' kodiert, bei 200 ms eine '1'.

http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-DCF77/

bei DCF77 würde es bei dreierraster so ausschauen
1
Signal  100 100 100 100 100 110 100 100 110 110 110 110 100
2
3
Bits     0   0   0   0   0   1   0   0   1   1   1   1   0

von Gustl B. (-gb-)


Lesenswert?

Hugo H. schrieb:
> Verstehst Du selbst, was Du da geschrieben hast?

Unklar, vielleicht ist das auch gar nicht scharf definiert.

Wir haben hier entweder:

a) Zwei die Symbole, Signal und kein Signal und drei Symbole 
zusammen definieren ein Bit.

Man könnte das aber auch anders interpretieren und zwar als
b) zwei dreimal so lange Symbole Signal Signal kein Signal und *kein 
Signal Signal kein Signal*.

Und dann kodiert jedes Symbol ein Bit. Ist eben Definitionssache was man 
jetzt als ein Symbol versteht.

: Bearbeitet durch User
Beitrag #6677321 wurde von einem Moderator gelöscht.
von Georg M. (g_m)


Lesenswert?

Michael D. schrieb:
> Ein Bit besteht aus jeweils 3 Symbolen (OOK, 350 µs lang):
>
1
>         Symbol                    Decodiertes Bit
2
>   space-mark-space (0-1-0)            0
3
>   mark-mark-space  (1-1-0)            1
4
>

Auch möglich:

0: 700µs LOW + 350µs HIGH
1: 350µs LOW + 700µs HIGH

von Michael D. (nospam2000)


Lesenswert?

Georg M. schrieb:
> Auch möglich:
> 0: 700µs LOW + 350µs HIGH
> 1: 350µs LOW + 700µs HIGH

Stimmt, das klingt deutlich plausibler als die 0-1-0 Folge!

  Michael

von A. S. (Gast)


Lesenswert?

Hugo H. schrieb:
> High und Low werden überall in der Digitaltechnik verwendet. Das hat
> nichts mit "Symbolen" zu tun.

Ich habe nicht von Symbolen gesprochen. Ich habe von 1-pegeln 
gesprochen, der TO hat sie so bezeichnet.

Du hängst Dich an den Bezeichnungen auf, ohne irgendwas beizutragen.

Ich glaube Dir nicht, dass Du nicht weißt, wie man aus dem Signal den 
Takt gewinnen kann.

Entweder trollst Du oder willst am Ende nur den korrekten Terminus für 
Jehova anbringen.

von A. S. (Gast)


Lesenswert?

Georg M. schrieb:
> Auch möglich:
> 0: 700µs LOW + 350µs HIGH
> 1: 350µs LOW + 700µs HIGH

Naja, hier ist auch die dritte Version möglich:

100 und 101. Hätte ganz leichte Vorteile, da das allererste Bit aus der 
Sättigung oft nicht genauso gut vermessen werden kann.

Allerdings wäre die Folge dann im eine 0 verschoben:

Bits:  0   0   0   0   1   0   0   1   1   1   1   0   0


Kann man am gezeigten Signal nicht erkennen, dazu müsste es anders 
anfangen oder aufhören.

von Fpgakuechle K. (Gast)


Lesenswert?

Michael D. schrieb:
> Ein Bit besteht aus jeweils 3 Symbolen (OOK, 350 µs lang):        Symbol


IMHO liegt da bereits der Denkfehler, das kann IMHO nicht der 
ursprüngliche Code im Übertragungskanal sein, weil es sich um einen 
Luftstrecke handelt und Elektromagnetische Wellen erst bei Frequenzen 
höher ca. 10 KHz übertragen.

Was also der TO hier angegeben hat ist das demodulierte Signal, nicht 
das tatsächlich übertragene.

Für das tatsächlich übertragene Signal fehlt das Trägersignal.

Und das man aus dem Signal auch den Bitclock extrahieren/Entfernen muss 
(und kann) bevor man das decodiert wurde auch schon mehrmals erwähnt. Es 
braucht eben nicht nur den Pegel sondern auch den (gültigen) 
Zeitpunkt/Takt um aus einer Zeitreihe U = f(t) den logischen Wert zu 
extrahieren.

von Günter Lenz (Gast)


Lesenswert?

von Michael D. schrieb:
>das Protokoll decodiert

Nein, hast du nicht, du hast nur demoduliert und
möchtest es nun decodieren. Was du mit Signal bezeichnet
hast sind die Bits und was du mit Bits bezeichnet hast
sind Zeichen. Mit Gruppen von drei Bits kannst du
8 Zeichen in einer Gruppe codieren. Eigentlich kann
die Frage hier nur der Hersteller beantworten. Mann
kann sich ja unendlich viele Übertragungsprotokolle
ausdenken. Erst müsste man mal wissen was die Bits sind.
HF an aus, oder vielleicht auch die Länge der Impulse,
also die Breite der roten Balken, kurzer Balken = 0,
Langer Balken = 1. Dann muß man wissen wie viele
Bits ein Gruppe hat. Könnte 3, 5, 7, oder vielleicht
auch 8 sein. Dann muß man noch wissen wo fängt die
Gruppe an und wo hört sie auf. Das nennt sich Start-
und Stopbit.

>Normalerweise wird hier z.B. der Manchester Code,
>SDLC/HDLC, RLL, GCR, etc. verwendet.

Glaube ich hier weniger. Manchester Code wird benutzt
wenn man eine Übertragungsleitung hat die keine
Gleichspannung übertragen kann, zum Beispiel wenn
in der Leitung ein Kondensator oder Übertrager sitzt.
Manchester Code hat gemittelt keinen Gleichspannungsanteil.

http://www.netzmafia.de/skripten/hardware/PC-Schnittstellen/seriell.html

https://de.wikipedia.org/wiki/Manchester-Code

von Michael D. (nospam2000)


Angehängte Dateien:

Lesenswert?

Fpgakuechle K. schrieb:
> IMHO liegt da bereits der Denkfehler, das kann IMHO nicht der
> ursprüngliche Code im Übertragungskanal sein, weil es sich um einen
> Luftstrecke handelt und Elektromagnetische Wellen erst bei Frequenzen
> höher ca. 10 KHz übertragen.

Die Träger-Frequenz des OOK Signals liegt bei 434.056 MHz. Die roten 
Balken im Bild meines oberen Postings sind das AM demodulierte Signal.

Die einzelnen Schwingungen sieht man im Original Bild nur deswegen 
nicht, weil ich weit rausgezoomt habe um das Gesamtsignal darzustellen. 
Daher habe ich hier noch ein im Bild angehängt, welches einen Ausschnitt 
desselben Signals zeigt, so dass man 700 Samples (350µs) sieht. Das 
entspricht dem ersten schmalen Block.

> Glaube ich hier weniger. Manchester Code wird benutzt
> wenn man eine Übertragungsleitung hat die keine
> Gleichspannung übertragen kann, zum Beispiel wenn
> in der Leitung ein Kondensator oder Übertrager sitzt.

Ich glaube nicht nur, dass hier keine Manchester Code eingesetzt wird, 
ich weiß es sogar mit Bestimmtheit, da das Signal nicht zum Manchester 
Code passt. Das war nur als Beispiel für verwendete Codes.
Generell wird der Manchester Code aber für einige Funksignale 
eingesetzt, z.B. beim eQ-3/ELV/Technoline ETH.

@gm hat mich der Lösung der Eingangsfrage näher gebracht:
  0: 700µs LOW + 350µs HIGH
  1: 350µs LOW + 700µs HIGH

Damit kann ich jetzt weitersuchen wo der Code sonst noch eingesetzt wird 
und ihn richtig benennen.

  Michael

von Sinus T. (micha_micha)


Lesenswert?

Michael D. schrieb:
> Signal  010 010 010 010 010 110 010 010 110 110 110 110 010
> Bits     0   0   0   0   0   1   0   0   1   1   1   1   0

Wenn die Signal-Bits eine Null vorher anfangen, d.h., man an Anfang eine 
Null einfügt, dann sieht das so aus
1
Signal  001 001 001 001 001 011 001 001 011 011 011 011 001 0
2
Bits     0   0   0   0   0   1   0   0   1   1   1   1   0

dann ist jedes Bit in eine 0-1-Sequenz eingebettet, also null-bit-eins, 
so dass Fehler ziemlich gut erkannt werden können.
Früher gab es auch mal ein ein Kassetten-Aufzeichnugsverfahren bei 
irgendeinem Heimcomputer, der diese Methode auch nutzte. War sehr 
langsam, aber zuverlässig. Weiß aber nicht mehr, welcher.

von Axel R. (axlr)


Lesenswert?

Da kann man ne WS2812 direkt drann betreiben. Hihi

von A. S. (Gast)


Lesenswert?

Michael D. schrieb:
> @gm hat mich der Lösung der Eingangsfrage näher gebracht:
>   0: 700µs LOW + 350µs HIGH
>   1: 350µs LOW + 700µs HIGH

Da es ja nur 3 Möglichkeiten für den Anfang gibt, hast Du denn mal 
überlegt, ob es nicht doch mit mark anfängt?

Beitrag "Re: Wie nennt man dieses Bit-Encoding Verfahren?"

Warum sollte man mit einer Pause anfangen. Mit mark anfangen macht jede 
Auswertung viel einfacher. Und hier auch zuverlässiger.

Oder bist Du sicher, dass Deine Enkodierung stimmt?

von Fpgakuechle K. (Gast)


Lesenswert?

Michael D. schrieb:
> Fpgakuechle K. schrieb:
>> IMHO liegt da bereits der Denkfehler, das kann IMHO nicht der
>> ursprüngliche Code im Übertragungskanal sein, weil es sich um einen
>> Luftstrecke handelt und Elektromagnetische Wellen erst bei Frequenzen
>> höher ca. 10 KHz übertragen.
>
> Die Träger-Frequenz des OOK Signals liegt bei 434.056 MHz. Die roten
> Balken im Bild meines oberen Postings sind das AM demodulierte Signal.
>
> Die einzelnen Schwingungen sieht man im Original Bild nur deswegen
> nicht, weil ich weit rausgezoomt habe um das Gesamtsignal darzustellen.
> Daher habe ich hier noch ein im Bild angehängt, welches einen Ausschnitt
> desselben Signals zeigt, so dass man 700 Samples (350µs) sieht. Das
> entspricht dem ersten schmalen Block.

Danke für das Bild mit dem Trägersignal. Manchmal ist neben der AM im 
Träger noch ein Phasensprung/-shift moduliert, um einen Takt besser 
rückgewinnbar zu machen.

Und dann stellt sich auch die Frage wie AM '0' und '1' 'codiert' und ob 
es sich tatsächlich um AM (modulierter Hilfsträger A2A) oder doch eine 
CW-modulation (getasteter Träger A1A) handelt.

Wer eine Handfunke hat kann ja mal die Bakenkennung in verschiedenen 
Betriebsarten abhören (CW, FM) beispielsweise. das hört sich dann 
'invertiert an (Striche und Punkte getauscht).

https://de.wikipedia.org/wiki/Modulationsart

Volle Träger-amplitude heist genaugenommen unmoduliertes Signal, kann 
also auch '0' bedeuten und nicht '1'. Reduzierte Trägeramplitude dagegen 
bedeudet hoher Modulationsgrad.

https://de.wikipedia.org/wiki/Amplitudenmodulation#Modulationsgrad

von Fpgakuechle K. (Gast)


Angehängte Dateien:

Lesenswert?

Anbei eine, leider suboptimale, Skizze zur Taktrückgewinnung und 
Data-Abtastung

Für eine Datenübertragung bedarf es nicht nur eine Vereinbarung über die 
Wertcodierung (bspw. High -> '1') sondern auch der Abtastzeitpunkt muss 
bekannt sein. Der Zeitpunkt, zu dem der Augenblickswert (also High oder 
low) übermittelt wird, ist durch den Bit-Takt bekannt.

Jetzt sei weiter vereinbart, das der Bit-Takt 50% duty cycle hat, also 
die Hälfte der Periode '0' und die andere Hälfte '1' sei.

Jetzt überträgt man aber nicht die Taktflanke zum Abtastzeitpunkt, 
sondern die vorhergehende Flanke - in der Skizze die steigende Flanke im 
Nutzsignal, wo im sender-Bit-clock eigentlich eine fallende Flanke ist.

Soll jetztz eine '0' übertragen werden, wechselt der Sender innerhalb 
der ersten halben Periode nach der steigenden Flanke auf 0, anderfalls 
erst in der zweiten Hälfte.

Dadurch enstehen je nach '0' oder '1' kurze oder lange Pulse.

Der Empfänger generiert jetzt ein Bit-Taktsignal, dessen aktive Flanke 
(Abtastzeitpunkt) in der Mitte zu den 0-1 Flanken des Nutzsignals liegt 
und erwischt mit diesem genau den Zeitpunkt wo der passende Wert für 
diese Bit gesendet wird.

von A. S. (Gast)


Lesenswert?

Fpgakuechle K. schrieb:
> Der Empfänger generiert jetzt ein Bit-Taktsignal, dessen aktive Flanke
> (Abtastzeitpunkt) in der Mitte zu den 0-1 Flanken des Nutzsignals liegt
> und erwischt mit diesem genau den Zeitpunkt wo der passende Wert für
> diese Bit gesendet wird.

Noch einfacher, wenn man mit mark anfängt, also 0:=100 und 1:=101 als 
Signale:

Periodendauer = fallende zu fallende Flanke (bei nur einem 0-Bit kann 
ich keinen Takt bestimmen). Darum ggf. Framing-Bits zum 
einsynchronisieren.

Das erste Bit war 0, wenn die steigende Flanke nach der Hälfte der 
Periodendauer liegt, sonst 1.

Bisher hat der TO keinen Hinweis, dass das Signal 110 und 010 sein soll 
(bzw. 011 und 001).

von Michael D. (nospam2000)


Angehängte Dateien:

Lesenswert?

A. S. schrieb:
> Noch einfacher, wenn man mit mark anfängt, also 0:=100 und 1:=101 als
> Signale

Das einzige was einigermaßen klar ist, ist das demodulierte Signal:
1001001001001011001001011011011011001

Wie das genau zu interpretieren ist, kann nur vermutet werden wenn man 
was passendes findet. Vorne und hinten können beliebige Nullen dran 
sein.

Es gibt mehrere passende Lösungen für das Line Encoding:
A) So wie ich ganz oben angefangen habe
1
data element    signal element
2
  0                      010
3
  1                      110
4
==> 010 010 010 010 010 110 010 010 110 110 110 110 010
5
     0   0   0   0   0   1   0   0   1   1   1   1   0

B) So wie von "von Georg M. (g_m)" vorgeschlagen:
1
data element    signal element
2
  0                      001
3
  1                      011
4
==> 001 001 001 001 001 011 001 001 011 011 011 011 001
5
     0   0   0   0   0   1   0   0   1   1   1   1   0

C) So wie von dir vorgeschlagen:
1
data element    signal element
2
  0                      100
3
  1                      101
4
==> 100 100 100 100 101 100 100 101 101 101 101 100 100
5
     0   0   0   0   1   0   0   1   1   1   1   0   0

Alle drei Line Encodings funktionieren gleichermaßen. Es kommen immer 13 
Data Elements hinten raus, allerdings bei deiner Variante C) um ein Bit 
nach links rotiert.

Man muss noch dazusagen, dass rein formal am Anfang ja erst die Präambel 
und das Sync-Word kommen. Wie lange dies jeweils ist, ist nicht bekannt.
Beide weichen normalerweise vom Line Encoding der Nutzdaten ab, damit 
man den Anfang eines Frames eindeutig erkennen kann ("Sync"), aber was 
ist schon normal wenn man 0.1 Cent sparen kann :-)

Den Sender habe ich mal aufgeschraubt, da sind folgende Teile drin:
1. TFR433H von Vectron International Inc drin 
(https://pdf1.alldatasheet.com/datasheet-pdf/view/137508/VECTRON/TFR433H.html).
Resonator mit einer Frequenz von 433.420 MHz.

2. PT4450 von Princeton Technology Corp
PT4450 is a high performance ASK/OOK transmitter for the Remote Keyless 
Entry (RKE) systems. It consists of a SAW oscillator, power amplifier, 
and one-shot circuit which control the SAW oscillator and power 
amplifier
https://datasheetspdf.com/pdf/727886/PTC/PT4450/1

3. mit "M7T" beschriftete MCU? Hat 8 Pins, Pin 7 geht an den Eingang des 
OOK Transmitters.
Siehe Bild.

Ich nehme an der M7T ist eine MCU, es wird also kein spezieller Sende-IC 
verwendet der bestimmte Line Encodings kann, sondern die MCU wird die 
Signal Elements direkt an den OOK Sender rausschicken eben mit einem 
proprietären Line Encoding.

  Michael

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Michael D. schrieb:
> Das einzige was einigermaßen klar ist, ist das demodulierte Signal:
> 1001001001001011001001011011011011001

Wird immer nur dieses Signal empfangen? Falls ja, dann ist es schwierig, 
überhaupt von einem code oder so zu sprechen. Es kann dann genauso gut 
ein Bitstuffing sein, dass spätestens nach 2 Nullen eine 1 eingestufft 
wird. Oder einfach eine Zufallsfolge, die sich der Entwickler ausgedacht 
hat, weil sie gut in die Schaltung passt.

von Günter Lenz (Gast)


Lesenswert?

von Michael D. schrieb:

>Das einzige was einigermaßen klar ist, ist das demodulierte Signal:
>1001001001001011001001011011011011001

>Es gibt mehrere passende Lösungen für das Line Encoding:
>A) So wie ich ganz oben angefangen habe

>data element    signal element

>  0                      010

>  1                      110

>==> 010 010 010 010 010 110 010 010 110 110 110 110 010von Michael D.

>     0   0   0   0   0   1   0   0   1   1   1   1   0

Wenn du meinst das es Dreiergruppen sind.
Warum bist du dir da so sicher?
Kann man es auch so interpretieren.

==> 010 010 010 010 010 110 010 010 110 110 110 110 010von Michael D.
     2   2   2   2   2   6   2   2   6   6   6   6   2

Es könnte ja auch sein das es vierergruppen sind und
das erste bit ein Startbit ist.
Dann kann man es so interpretieren:

>Das einzige was einigermaßen klar ist, ist das demodulierte Signal:
>1 0010 0100 1001 0110 0100 1011 0110 1101 1001
    2     4    9    6    4   11    6   13   9

Wie es wirklich ist, weiß nur der Hersteller.

von Günter Lenz (Gast)


Lesenswert?

Oder in Hex, vorher war die Dezimale Interpretation.

>Das einzige was einigermaßen klar ist, ist das demodulierte Signal:
>1 0010 0100 1001 0110 0100 1011 0110 1101 1001
    02   04   09   06   04    0B  06   0D   09

von Gerhard O. (gerhard_)


Lesenswert?

Michael D. schrieb:
> Hi,
>
> vielleicht war die Frage zu abstrakt gestellt, daher hier ein Bild des
> Signals wie es aufgezeichnet wurde.
> Signal  010 010 010 010 010 110 010 010 110 110 110 110 010
> Bits     0   0   0   0   0   1   0   0   1   1   1   1   0
>
> Die Frage ist, wie heißt das Encoding welches die Bits auf das Signal
> abbildet. Ist das bekannt oder proprietär?
>
>  Michael

Der Sender hat Einstellungen für Adresse und Klingelart. Wiederhole 
Deine Meßreihe und dokumentiere die unterschiedliche Kodierung für alle 
möglichen Einstellungen. Möglicherweise ist ein Nibble für Adresse und 
der zweite Teil für die Klingelart vorgesehen. Es könnte trotz aller 
Gerüchte so einfach sein;-) Die ersten fünf Nullen sind ja nur der 
Preambel.

von Günter Lenz (Gast)


Lesenswert?

Oder das Ganze eine einzige Binärzahl ist,
und das erste Bit ein Startbit ist.
1001001001001011001001011011011011001 = Dez 9821271769
                                      = Hex 24964B6D9

von Günter Lenz (Gast)


Lesenswert?

Dann kann es auch noch sein dass das niederwertigste
Bit zuerst gesendet wird, bei der Seriellen COM-Schnittstelle
ist das so, dann müsten alle Bitsequenzen umgedreht werde.

http://www.netzmafia.de/skripten/hardware/PC-Schnittstellen/async.gif

von Michael D. (nospam2000)


Lesenswert?

Günter Lenz schrieb:
> Wenn du meinst das es Dreiergruppen sind.
> Warum bist du dir da so sicher?

Ich bin nicht sicher, aber damit passt es einigermaßen und was besseres 
habe ich nicht gefunden.

> Kann man es auch so interpretieren.
>
> ==> 010 010 010 010 010 110 010 010 110 110 110 110 010von Michael D.
>      2   2   2   2   2   6   2   2   6   6   6   6   2

So würde man das nicht encoden, da es bei reinen 000 keine 
Synchronisation gibt, es fehlen dann die 0/1 Übergänge. Typischerweise 
darf es nicht mehr als 5 aufeinanderfolgende Nullen im OOK Signal geben 
(z.B. bei SDLC/HDLC).

Für die Vierergruppen gilt dasselbe.

> Wie es wirklich ist, weiß nur der Hersteller.

Letztendlich weiß das nur der Entwickler.

 Michael

von Michael D. (nospam2000)


Lesenswert?

Gerhard O. schrieb:
> Der Sender hat Einstellungen für Adresse und Klingelart.

Bei meinem Sender kann ich leider nur die Empfindlichkeit einstellen.
Die Klingelart wird beim Empfänger eingestellt und eine Adresse kann man 
nicht einstellen.

Aber ja, genau diese Variation des gesendeten Signals fehlt mir.

> Die ersten fünf Nullen sind ja nur der Preambel.

Das nehme ich auch an.

  Michael

von Mathias A. (mrdelphi)


Lesenswert?

Michael D. schrieb:
> Bei meinem Sender kann ich leider nur die Empfindlichkeit einstellen.
> Die Klingelart wird beim Empfänger eingestellt und eine Adresse kann man
> nicht einstellen.

Hmm ok, d.h. der Sender braucht nur dieses eine Bitmuster senden 
können... Es könnte also hier in der Tat einfach eine Zufallszahl sein, 
wie oben jemand schon vorgeschlagen hat. Womöglich bei der Produktion 
dem Sender und dem zugehörigen Empfänger ins Flash geschrieben... Für 
eine eindeutige Seriennummer sind es ein bisschen wenig Bits :-)

Interessant wäre mal zu sehen, was ein anderer Sender von diesem Modell 
für ein Bitmuster aussendet...

Oder vielleicht könnte man auch von den im Empfänger vorhandenen 
Bauteilen Rückschlüsse ziehen auf ein mögliches Format...

von Fpgakuechle K. (Gast)


Lesenswert?

Du schreibst doch oben was vom Transceiver IC TI CC1101. Helfen da nicht 
die Ausführungen ab S. 37 des Datenblattes 
https://www.ti.com/lit/ds/symlink/cc1101.pdf?ts=1620103606339 weiter?

von Michael D. (nospam2000)


Lesenswert?

Fpgakuechle K. schrieb:
> Du schreibst doch oben was vom Transceiver IC TI CC1101. Helfen da nicht
> die Ausführungen ab S. 37 des Datenblattes weiter?

Leider nein. Ich verwende den CC1101 um dieses Signal zu erzeugen um den 
original Sender zu ersetzen. Dafür muss ich aber alles abschalten was 
man normalerweise verwendet (Preamble, Sync-Word, Adress, Packet-Len, 
CRC, Whitening, FEC, Manchester Code) und komplett im "Raw"-Mode mit 
einer festen Länge senden. Zum Glück unterstützt der CC1101 das 
überhaupt.

Die ersten 15 Bit könnte ich auf 16-Bit verlängern und als Sync-Word 
verwenden. Das würde auch den Empfang ermöglichen und dabei etwas 
vorfiltern.

Die Library "SmartRC-CC1101-Driver-Lib" unterstützt das auch nicht 
direkt und fügt immer die Paketlänge mit ein, aber das konnte ich 
glücklicherweise umgehen ohne den Original Code zu patchen.

Das SmartRF Studio kann auch keine Pakete mit fester Länge schicken. Man 
kann die Register zwar manuell setzen, die Register Inhalte werden aber 
beim Senden überschrieben.

Ohne HackRF und URH weiß man erstmal nicht, was nicht passt, die 
Kombination ist schon Klasse!

  Michael

von Michael D. (nospam2000)


Lesenswert?

Mathias A. schrieb:
> Oder vielleicht könnte man auch von den im Empfänger vorhandenen
> Bauteilen Rückschlüsse ziehen auf ein mögliches Format...

Wenn der Empfänger nennenswert anders aufgebaut ist als der Sender, dann 
würde ich den Entwickler entlassen ;-)

Im Ernst, der Empfänger sollte auf Stromsparen ausgelegt sein und die 
CPU schlafen lassen solange kein relevantes Signal kommt. Dazu benötigt 
man tatsächlich einen Funkempfänger welcher zumindest die sync-word 
Erkennung selbständig macht. Das Problem gibt es beim Senden nicht.
Andererseits hat der Empfänger auch 2 Baby-Zellen anstatt zwei 
Mignon-Zellen.

Vielleicht schraube ich ihn ja auch noch auf.

> Interessant wäre mal zu sehen, was ein anderer Sender
> von diesem Modell für ein Bitmuster aussendet

Wenn jemand ein ähnliches Modell hat und irgendeinen SDR, dann wäre ich 
an einer Aufzeichnung interessiert (am besten mit URH).

  Michael

: Bearbeitet durch User
von Gerhard O. (gerhard_)


Lesenswert?

Mögliche Batterielebensdauer: Ich habe bei mir auch eine drahtlose 
Klingel in betrieb. Da sind vier D-Monozellen drin und halten bei mir 
mindestens fünf Jahre.

von Mathias A. (mrdelphi)


Lesenswert?

Michael D. schrieb:
> Mathias A. schrieb:
>> Oder vielleicht könnte man auch von den im Empfänger vorhandenen
>> Bauteilen Rückschlüsse ziehen auf ein mögliches Format...
>
> Wenn der Empfänger nennenswert anders aufgebaut ist als der Sender, dann
> würde ich den Entwickler entlassen ;-)

Naja, wenn Sender und Empfänger gleich aufgebaut wären, dann würde ich 
auch den Entwickler entlassen, schließlich soll der Empfänger empfangen 
und nicht senden ;-) Aber ich weiß was Du meinst, sie dürften ziemlich 
spiegelbildlich aufgebaut sein...


> Im Ernst, der Empfänger sollte auf Stromsparen ausgelegt sein und die
> CPU schlafen lassen solange kein relevantes Signal kommt. Dazu benötigt
> man tatsächlich einen Funkempfänger welcher zumindest die sync-word
> Erkennung selbständig macht. Das Problem gibt es beim Senden nicht.

Das war auch mein Gedanke gewesen, wenn man Glück hat findet man Doku 
für den verbauten Empfänger und dann wüsste man ja welche Codierungen 
der versteht.

Wobei es natürlich auch wie im Sender ein uC sein könnte, wenn man den 
per Pin-Change-Interrupt aufwachen lässt braucht der ja auch so gut wie 
keine Energie. Zumindest dann wenn der Empfänger nicht zu häufig am Pin 
wackelt solange er kein Signal empfängt. Ich habe keine Erfahrung wie 
solche Empfänger sich üblicherweise verhalten...

von Mario M. (thelonging)


Lesenswert?

Georg M. schrieb:
> Auch möglich:
>
> 0: 700µs LOW + 350µs HIGH
> 1: 350µs LOW + 700µs HIGH

Günter Lenz schrieb:
> und
> das erste bit ein Startbit ist.

Genau so ist es. Erst kommt ein (kurzer) Start-Impuls und dann 12 Bits 
in obiger Kodierung. Die ersten 8 Bit sind die ID, damit mehrere 
Klingeln voneinander zu unterscheiden sind. Danach kommen 4 Bit für die 
Klingelmelodie, falls der Sender die Einstellung zulässt. Die ID wird 
beim Einlegen der Batterien zufällig erzeugt.

Quelle: 
https://github.com/MalteP/usbfunk/blob/master/firmware/wireless.c

von Michael D. (nospam2000)


Lesenswert?

SignalDuino hat da auch was, das bekomme ich allerdings mit meinen 
Beobachtungen noch nicht ganz in Deckung, siehe 
https://raw.githubusercontent.com/Ralf9/RFFHEM/master/FHEM/lib/signalduino_protocols.pm 
:
1
"79"  =>  ## Heidemann | Heidemann HX | VTX-BELL
2
            # https://github.com/RFD-FHEM/SIGNALDuino/issues/84
3
            # MU;P0=656;P1=-656;P2=335;P3=-326;P4=-5024;D=0123012123012303030301 24 230123012123012303030301 24 230123012123012303030301 24 2301230121230123030303012423012301212301230303030124230123012123012303030301242301230121230123030303012423012301212301230303030124230123012123012303030301242301230121230123030303;CP=2;O;
4
            # https://forum.fhem.de/index.php/topic,64251.0.html
5
            # MU;P0=540;P1=-421;P2=-703;P3=268;P4=-4948;D=4 323102323101010101010232 34 323102323101010101010232 34 323102323101010101010232 34 3231023231010101010102323432310232310101010101023234323102323101010101010232343231023231010101010102323432310232310101010101023234323102323101010101010232343231023231010101010;CP=3;O;
6
            # https://github.com/RFD-FHEM/RFFHEM/issues/252
7
            # MU;P0=-24096;P1=314;P2=-303;P3=615;P4=-603;P5=220;P6=-4672;D=0123456123412341414141412323234 16 123412341414141412323234 16 12341234141414141232323416123412341414141412323234161234123414141414123232341612341234141414141232323416123412341414141412323234161234123414141414123232341612341234141414141232323416123412341414;CP=1;R=26;O;
8
            # MU;P0=-10692;P1=602;P2=-608;P3=311;P4=-305;P5=-4666;D=01234123232323234141412 35 341234123232323234141412 35 341234123232323234141412 35 34123412323232323414141235341234123232323234141412353412341232323232341414123534123412323232323414141235341234123232323234141412353412341232323232341414123534123412323232323414;CP=3;R=47;O;
9
            # MU;P0=-7152;P1=872;P2=-593;P3=323;P4=-296;P5=622;P6=-4650;D=01234523232323234545452 36 345234523232323234545452 36 345234523232323234545452 36 34523452323232323454545236345234523232323234545452363452345232323232345454523634523452323232323454545236345234523232323234545452363452345232323232345454523634523452323232323454;CP=3;R=26;O;
10
            # https://forum.fhem.de/index.php/topic,58397.msg879878.html#msg879878
11
            # MU;P0=-421;P1=344;P2=-699;P4=659;P6=-5203;P7=259;D=1612121040404040404040421216121210404040404040404212161212104040404040404042121612121040404040404040421216121210404040404040404272761212104040404040404042121612121040404040404040421216121210404040404040404212167272104040404040404042721612127040404040404;CP=4;R=0;O;
12
    {
13
      name      => 'wireless doorbell',
14
      comment      => 'Heidemann | Heidemann HX | VTX-BELL',
15
      id      => '79',
16
      zero      => [-2,1],
17
      one      => [-1,2],
18
      start        => [-15,1],
19
      clockabs    => 330,
20
      clockpos    => ['zero',1],
21
      format      => 'twostate',  # 
22
      preamble    => 'P79#',      # prepend to converted message
23
      clientmodule  => 'SD_BELL',
24
      modulematch    => '^P79#.*',
25
      length_min    => '12',
26
      length_max    => '12',

Die P0..P9 Definitionen sind jeweils die High- und Low-Zeiten (mit "-" 
Prefix) des OOK Signals, und werden im "D=" string verwendet für das 
Line Encoding.

  Michael

von Mathias A. (mrdelphi)


Lesenswert?

Michael D. schrieb:
> SignalDuino hat da auch was, das bekomme ich allerdings mit meinen
> Beobachtungen noch nicht ganz in Deckung

Da scheint es wohl ähnliche aber im Detail doch unterschiedliche 
Lösungen zu geben -- das folgende trifft für Deinen Sender ja auch nicht 
zu oder?

Mario M. schrieb:
> Erst kommt ein (kurzer) Start-Impuls und dann 12 Bits in obiger
> Kodierung. Die ersten 8 Bit sind die ID, damit mehrere Klingeln
> voneinander zu unterscheiden sind. Danach kommen 4 Bit für die
> Klingelmelodie, falls der Sender die Einstellung zulässt. Die ID wird
> beim Einlegen der Batterien zufällig erzeugt.

Ich meine den Teil dass sich die ID beim Einlegen der Batterie ändert 
und dass die ersten 8 Bit die ID sind (vermute ich, weil davon 4 Bit 
Null sind)

von Michael D. (nospam2000)


Lesenswert?

Mario M. schrieb:
> Die ersten 8 Bit sind die ID, damit mehrere
> Klingeln voneinander zu unterscheiden sind. Danach kommen 4 Bit für die
> Klingelmelodie

Super, danke für den Tipp das passt genau!

Die Klingelmelodie kann ich jetzt mit dem CC1101 wählen. Mein 
Original-Sender (HX70372, HX70835, HX70836) unterstützt das nicht.

Ob sich die ID bei meinem Sender auch beim Batteriewechsel ändert muss 
ich noch prüfen.

  Michael

von Mathias A. (mrdelphi)


Lesenswert?

Michael D. schrieb:
> Ob sich die ID bei meinem Sender auch beim Batteriewechsel ändert muss
> ich noch prüfen.

Ah ok -- ich war davon ausgegangen dass das bei deinem Sender nicht der 
Fall ist, aber wundere mich gerade selbst wie ich darauf kam :-)

von Michael D. (nospam2000)


Lesenswert?

Mathias A. schrieb:
> Ah ok -- ich war davon ausgegangen dass das bei deinem Sender nicht der
> Fall ist, aber wundere mich gerade selbst wie ich darauf kam :-)

Ich war auch davon ausgegangen, bzw. hatte es garnicht in Betracht 
gezogen.

Es ist tatsächlich so, dass sich die ID beim Batteriewechsel ändert.

  Michael

von Nikolaus S. (Firma: Golden Delicious Computers) (hns)


Lesenswert?

Michael D. schrieb:
> Hi,
>
> Rein interessehalber würde mich interessieren wie man das Bit-Encoding
> Verfahren nennt, welches dort für die einzelnen Bits verwendet wird, da
> es mir nicht geläufig ist.
>
> Ein Bit besteht aus jeweils 3 Symbolen (OOK, 350 µs lang):
>
1
>         Symbol                    Decodiertes Bit
2
>   space-mark-space (0-1-0)            0
3
>   mark-mark-space  (1-1-0)            1
4
>

Das ist eine Pulsweiten/dauer-Umtastung. 0 bedeutet kurzer Impuls, 1 
langer Impuls innerhalb eines festen Zeitrasters (anders als beim Morsen 
wo es kurze und lange Impulse, aber feste Pausen gibt).
Würde ich in Analogie zu ASK, FSK, PSK einfach "PWSK" (Pulse Width Shift 
Keying) nennen. Einen speziellen Fachbegriff habe ich auf die Schnelle 
nicht gefunden.
Etwas ungewöhnlich ist bei diesem Code die Taktrückgewinnung aus dem 
Signal, da es ja nicht mit einer klaren Flanke 0->1 beginnt. Sondern 
sich anscheinend aus der Flanke 1->0 des vorherigen Bits ableitet.

von Kurt (Gast)


Lesenswert?

Michael D. schrieb:
> Mathias A. schrieb:
>> Ah ok -- ich war davon ausgegangen dass das bei deinem Sender nicht der
>> Fall ist, aber wundere mich gerade selbst wie ich darauf kam :-)
>
> Ich war auch davon ausgegangen, bzw. hatte es garnicht in Betracht
> gezogen.
>
> Es ist tatsächlich so, dass sich die ID beim Batteriewechsel ändert.
>
>   Michael

Also los gehts zum Parkplatz, max 254 mal die Batterie rausnehmen, 
irgendeiner gibt Antwort.

 Kurt

von Michael D. (nospam2000)


Lesenswert?

Nikolaus S. schrieb:
> Das ist eine Pulsweiten/dauer-Umtastung. 0 bedeutet kurzer Impuls, 1
> langer Impuls
> Würde ich in Analogie zu ASK, FSK, PSK einfach "PWSK" (Pulse Width Shift
> Keying) nennen

Ja ich denke der Begriff "Pulse Width Code" trifft es am besten.
Das ist ja schon der Line Encoding Layer oberhalb der ASK (OOK) 
Modulation.

  Michael

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.