culfw: Initialisierung der RF Parameter im EEPROM bzw. CC1101

Begonnen von RaspII, 22 Februar 2017, 14:02:27

Vorheriges Thema - Nächstes Thema

RaspII

Hi,
gibt es irgendwo eine Beschreibung nach welchen Regeln bzw. zu welchen Zeitpunkten die C1101 Parameter in das EEPROM und danach in den CC1101 geschrieben werden?

Falls nicht wäre es schön wenn mir das jemand erklären kann.



Gesendet von meinem SM-G900F mit Tapatalk

RaspII

rudolfkoenig

Da die Frage ungenau ist, ist die Antwort auch: Beim booten, aktiviert wird es durch X21.

Ich warne von culfw "hacking", wenn man sowas nicht durch Code-Lesen beantworten kann. Der Code ist nicht fuer Lehrzwecke entstanden, und ist inzwischen durch die vielen "Parallel-Maintainer" relativ verwirrend.

RaspII

Hallo Rudolf,
Danke für die schnelle Antwort (wie immer)
Ich interpretiere Deine Antwort auf meine ungenaue Frage wie folgt:

  • Die Initialisierungswerte werden beim Booten ins EEPROM geschrieben
  • Die Übertragung vom EEPROM auf den CC1101 erfolgt (Atkivierung) ausschliesslich durch X21 (also kein automatisches Übertragen/Initialisieren des CC1101 z.B. beim Booten)

Zur Erklärung:
Ich habe diese Frage gestellt, weil ich eben nicht hacken werde/will.
Den Code habe ich auf die schnelle überflogen, konnte mir aber keine Reim daraus machen.

Ich habe EEPROMs bisher nur genutzt, wenn Informationen z.B. das Abstecken/Anstecken eines Systems "überleben" sollen.
Das ein EEPROM jedesmal beim Booten neu initialisiert wird verstehe ich nicht, d.h. das macht aus meiner Sicht keinen Sinn (dann kann man die Werte ja gleich im Dauerspeicher=Flash ablegen).
Desweiteren habe ich im Code gesehen, dass viele Module (Somfy-RTS, auch mein KOPP_FC...) den CC1101 selbst initialisieren und den EEPROM Inhalt ignorieren, das macht alles aus meiner Sicht wenig Sinn (aber es gibt sicher Gründe dagfür)

Deshalb habe ich mal die Frage nach dem Ablauf gestellt.

Und jetzt mein eigentliches Problem
Da ich in meinem Modul die RF Parameter hart initialisiere, wenn in FHEM das KOPP_FC Protokoll einstellt, werden natürlich alle Frequenzen etc. hart geschrieben (Das KOPP Protokoll läuft nicht mit den Standard Parametern. In meiner Routine wird der CC1101 auch jedes mal vor dem Senden komplett neu konfiguriert).
Es gibt jetzt aber einige CC1101 Bausteine die eine relativ hohe Frequenzabweichung haben. Mich hat ein Anwender gefragt ob ich nicht zulassen will, dass die Frequenz über Standard CUL Kommandos geändert werden kann.

Dazu muss ich aber verstehen wie das ursprüngliche CUL Design gedacht war.
(Du schreibst selbst, dass der Code nicht für Lehrzwecke geschrieben wurde)

Eine Frage die ich mir stelle (wenn nicht mehr meine KOPF_FC Firmware den CC1101 initialisiert sondern ich mich auf die EEPROM Werte verlasse):
Schalte ich dann in FHEM z.B. in der fhem.cfg, nach dem Anlegen des CUL Devices, die Frequenz um, wirkt diese Umschaltung dann auch noch, wenn der CUL z.B. durch einen Reset geht.....

Hoffe ich konnte meine Frage hiermit etwas präzisieren.
RaspII

rudolfkoenig

Sorry, ich habe mich falsch ausgedrueckt: beim Flashen wird das EEPROM geschrieben, und beim X21 das EEPROM ins CC1101 geladen. Das gilt nur fuer SlowRF. Andere Protokolle (MAX/HM/ZWave) haben einen festen Satz an Parameter im Code, den kann man nicht aendern, d.h. freq und co ist fuer diese wirkungslos. Wie es mit KOPP ausschaut, weiss ich nicht.

RaspII

ok, dann habe ich das verstanden.

D.h. das EEPROM bleibt immer erhalten, nur beim Flashen wird es neu initialisiert.
Bei Kopp ist es derzeit wie bei MAX/HM/ZWave implementiert. Das ist das eigentliche Problem, wenn man später noch die Frequenz anpassen will weil man CC1101 Bausteine mit "schlechtem" Quarz vom Chinesen verwendet.

Mal ins unreine gedacht:
Wenn das Kopp Protokoll beim einem CUL nur exclusiv genutzt wird (ist zur Zeit so implementiert):
Dann könnte ich mir doch in der KOPP Firmware einen Befehl erstellen, der die KOPP-CC1101 Konfiguration einmalig ins EEPROM schreibt.
(dieser Befehl würde ich an der FHEM Oberfläche nur anbieten sobald das Kopp Protokoll auf einem Device aktiviert ist)
Danach könnte jeder die Standard Befehle nutzen um die Kopp-Default Werte zu ändern. (Dummerweise ist die Kopp-Konfiguration dann nach jedem Firmware Update wieder weg und man muss die Parameter neu setzen).

Gibt des aus Deiner Sicht noch eine besser geeignete Vorgehensweise?
(Das Problem scheint mit der aktuellen Implementierung der culfw nicht einfach lösbar zu sein)
RaspII

rudolfkoenig

Ich favorisiere auch deine Idee.

Als ich mit culfw angefangen habe, habe ich nicht im Traum daran gedacht, mehrere unterschiedliche Protokolle zu unterstuetzen. Beim Einbau von HM (das war das "zweite" Protokoll) schien eine Konfiguration nicht notwendig zu sein, da die Gegenstelle auch CC1101 verwendet. Weiterhin habe ich kein "Filesystem" fuers EEPROM geschrieben, deswegen ist es ein Qual, freie Plaetze in EEPROM zuverlaessig zu finden oder zu erweitern.

A.Harrenberg

Hi,

bin erst gerade auf den Thread gestossen.
Zitat von: RaspII am 22 Februar 2017, 21:22:28
Bei Kopp ist es derzeit wie bei MAX/HM/ZWave implementiert. Das ist das eigentliche Problem, wenn man später noch die Frequenz anpassen will weil man CC1101 Bausteine mit "schlechtem" Quarz vom Chinesen verwendet.
Wie groß ist denn die Abweichung der Frequenz? Gibt es dann gar keinen Empfang? Es gibt beim CC1101 nämlich ein FREQEST Register mit dem man während einer Übertragung die (geschätze) Frequenzabweichung auslesen kann. Den Wert kann man in ein OFFSET Register schreiben und den Empfang dadurch deutlich verbessern.

Das ganze müsste man natürlich filtern/plausibilisieren und sich den Wert nach Möglichkeit auch im EEPROM ablegen, hätte aber den Vorteil das der User keine Frequenzen ausprobieren muss und sich das System selbst laufend "nachjustiert".

Bei meinen bisherigen Messungen zeigen sich allerdings nur marginale Differenzen im Bereich von wenigen kHz, wobei ich aktuell noch nicht mit meinem ganzen ZWave-Zoo teste sondern nur mit zwei Geräten.

Nur mal so als kleine Anregung.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

RaspII

#7
Hallo Andreas,
die Idee ist gut,
Wenn ich mich richtig erinnere hatte ich bei den schlechten Cc1101 Bausteinen extrem verminderte Reichweite und immer mal wieder fehlerhafte Blöcke.
Die von Dir vorgeschlagene Funktionalität ist wohl eher dafür gedacht, Abweichungen der unterschiedlichen Sender zu erfassen, macht aber nichts, könnte trotzdem klappen (man müsste den EEPROM Wert am besten auf einen Mittelwert hin adaptieren..)
Die Abweichungen hatte ich in einem anderen Thread dokumentiert, den Link liefere ich nach.

Nachtrag: Abweichung war ca. 18 kHz
Siehe https://forum.fhem.de/index.php?topic=47846.msg408601.msg#408601
RaspII

A.Harrenberg

Hi RaspII,
Zitat von: RaspII am 12 Mai 2017, 17:36:40
Nachtrag: Abweichung war ca. 18 kHz
Siehe https://forum.fhem.de/index.php?topic=47846.msg408601.msg#408601
puh, bei 18 kHz sollte es aber noch keinen massiven Einbruch in der Empfangsqualität geben. Mit was für einer Bandbreite hantiert denn KOPF_FC? Und wie das FOC eingestellt?
Die 18 kHz sollte das FOC aber locker ausgleichen können.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

RaspII

Mist, da fehlt ne 0
180kHz!!

Gesendet von meinem SM-G900F mit Tapatalk

RaspII

A.Harrenberg

Hi,

ok, 180 kHz ist dann schon eher eine Hausnummer.

Aber auch das sollte der FOC noch halbwegs gut hinbekommen, allerdings abhängig von der eingestellten Bandwidth und den Parametern für den FOC.

Ich habe mir gerade mal die Parameter für den CC1101 aus den Sourcen for KOPP rauskopiert. Wenn ich das richtig sehe dann ist die Einstellung "relativ" schmalbandig mit 162 kHz, das FOC Limit ist auf +/- Banbreite/4 eingestellt, d.h. der FOC kann überhaupt nur +/- 40 kHz ausgleichen.

Devitation steht auf 47,6 kHz, das kommt mir hoch vor, ich habe bisher was in der Größenordnung 20-30 kHz gesehen. Im Zusammenhang mit der Bandbreite kommt mir das auch relativ eng vor. Ich bin der Meinung das Deviation +/- auf die Mittenfrequenz gilt, während die Bandbreite eine absolute Breite angibt.

Vielleicht kannst Du ja mal versuchen die Bandbreite etwas großzügiger (300 kHz) zu setzen. Das würde den FOC schon mal auf +/- 80 kHz aufweiten, Du kannst da aber auch das FOC Limit mal auf Bandbreite/2 setzen, dann wärest Du schon bei +/- 160 kHz.

Das ist aber auch mit Vorsicht zu geniessen, der FOC tendiert nämlich durchaus dazu an einen Rand zu "wandern" und dann wärst Du Im Zweifelsfall wieder weit weg von Deiner Mittenfrequenz...

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

RaspII

Auf der anderen Seite kann man sich das alles sparen, wenn man sich auf die "guten" cc1101 Bausteine beschränkt. Im Moment nutze ich die selben Einstellungen wie der Herstellers selbst. Abweichungen hatten bei mir bisher immer zu schlechteren Reichweiten geführt.

Gesendet von meinem SM-G900F mit Tapatalk

RaspII

A.Harrenberg

Hi,

wo hast Du denn die Parameter her? Ich habe auf die Schnelle nur die Frequenz und Bandbreite +/- 50 kHz gefunden.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY