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):
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...
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".
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 :-)
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
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.
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.
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.
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?
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.
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.
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
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
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.
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.
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?
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.
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
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.
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
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.
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.
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 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.htmlhttps://de.wikipedia.org/wiki/Manchester-Code
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
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
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.
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?
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
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.
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).
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
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
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 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.
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
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.
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
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
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...
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
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
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.
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...
Georg M. schrieb:> Auch möglich:>> 0: 700µs LOW + 350µs HIGH> 1: 350µs LOW + 700µs HIGHGü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
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
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)
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
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 :-)
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
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.
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
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