Autor Thema: Alternative culfw  (Gelesen 396849 mal)

Offline Telekatz

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 795
Antw:Alternative culfw
« Antwort #1830 am: 03 März 2019, 16:33:42 »
Im LOG sieht man, dass die IT Nachrichten etwa alle 42 ms gesendet werden. Wenn jedoch die HM Nachricht gesendet wird, entsteht eine längere Pause zwischen den IT Nachrichten:
2019.03.03 15:08:18.715 5 : CUL/RAW: /i005511DA
2019.03.03 15:08:18.757 5 : CUL/RAW: /i005511D9
2019.03.03 15:08:18.800 5 : CUL/RAW: /i005511DA
2019.03.03 15:08:18.843 5 : CUL/RAW: /i005511DA
2019.03.03 15:08:18.886 5 : CUL/RAW: /i005511DA
2019.03.03 15:08:18.929 5 : CUL/RAW: /i005511DA
2019.03.03 15:08:18.971 5 : CUL/RAW: /i005511DA
2019.03.03 15:08:19.014 5 : CUL/RAW: /i005511DA
>> Jetzt HM geschaltet manuell
2019-03-03 15:08:19.062 CUL_HM sz_lightSpot set_toggle
2019.03.03 15:08:19.073 3 : CUL_HM set sz_lightSpot toggle
2019.03.03 15:08:19.076 5 : CUL/RAW: /i005511DA
2019-03-03 15:08:19.338 CUL_HM sz_lightSpot dim: stop:on
2019-03-03 15:08:19.338 CUL_HM sz_lightSpot pct: 100
2019-03-03 15:08:19.338 CUL_HM sz_lightSpot on
2019.03.03 15:08:19.344 5 : CUL/RAW: /i005511DA
2019.03.03 15:08:19.347 5 : CUL/RAW: /i005511D9
2019.03.03 15:08:19.350 5 : CUL/RAW: /i005511D9
2019.03.03 15:08:19.352 5 : CUL/RAW: /i005511DA

2019.03.03 15:08:19.356 5 : CUL/RAW: /i005511DA
Wenn die Pause größer als 300 ms wird, reicht das aus, um als neue Nachricht interpretiert zu werden.

Die 300 ms können können angepasst werden, indem man folgenden Code in die Board.h einfügt:
#define REPTIME      38Der Wert mit 8 ms multipliziert ergibt die gewünschte Pause. Versuche mal den Wert höher zu stellen, bis keine unerwünschten Wiederholungen auftreten.

Offline sven.scherf

  • Full Member
  • ***
  • Beiträge: 111
Antw:Alternative culfw
« Antwort #1831 am: 03 März 2019, 19:27:11 »
Hi,

hat super geklappt.
Habe die Fernbedienungen von den Steckdosen nach zweimaligem drücken in Fhem anlegen können.
Die der raw Einstellung für meinen CUL habe ich auch versucht, hier wird es sich jedoch erst später zeigen da der Fehler immer sporadisch aufgetreten ist.

Ich habe noch ein paar Fragen in Bezug auf das Anlernen durch das mehrmaligen drücken der Tasten der Fernbedienung.

Nachdem es bei der ersten FB geklappt hatte habe ich dann in der fhem.cfg alles gespeichert und dann in meiner anderen config Datei ausgelagert.
Soweit so gut.
Dann wollte ich mit der zweiten FB weitermachen und dies hatte nicht geklappt, ich bekam immer nur unknown code !!

Autocreate und autosave waren aktiviert.
Dann restart von Fhem und es ging. Hier habe ich nur Fragezeichen.
Was hätte ich hier anders machen können ?

Dann habe ich noch eine Fernbedienung von einem LED Controller in meinem Flurschrank, hier möchte ich aber nur den LED Controller steuern.
Diese Fernbedienung läßt sich aber nicht durch zweimaliges drücken in Fhem registrieren.
Hier bekomme ich auch nur immer wieder
Global global UNDEFINED IT_00000000 IT 00000000 0100 1000
UNKNOWNCODE i000402
UNKNOWNCODE i000409

Hier habe ich den CUL mal auf X67 gestellt und dies Z.B habe ich hier empfangen


Taste Rot
UNKNOWNCODE p11  272  976   32   96  256  976  26  1  3 2   288 12336     0 E7 FFFBFCC0
2019-02-22 18:20:41.129 CUL CUL_1 UNKNOWNCODE p 7  272  976  864  400  272  944  24  1  3 0   272 12320     0 E7 000402
2019-02-22 18:20:41.172 CUL CUL_1 UNKNOWNCODE p 7  320  928  832  432  272  976  24  1  3 0   288 12304     0 E7 000402
2019-02-22 18:20:41.216 CUL CUL_1 UNKNOWNCODE p11  304  960  672   64  288  944  25  1  3 1   272 12304     0 E7 FFFBFD80
2019-02-22 18:20:41.259 CUL CUL_1 UNKNOWNCODE p11  288  944  496  240  288  960  25  1  3 1   288 12320     0 E6 FFFBFD80
2019-02-22 18:20:41.301 CUL CUL_1 UNKNOWNCODE p11  288  960  736   48  288  944  25  1  3 1   288 12304     0 E7 FFFBFD80
2019-02-22 18:20:41.344 CUL CUL_1 UNKNOWNCODE p11  288  960  624   96  288  960  26  1  3 2   304 12304     0 E5 FFFBFEC0

Mit set CUL_1 raw G0036c5113d361900040200 kann ich diese Farbe steuern

oder andere Taste

Taste grün

2019-02-22 18:21:34.529 CUL CUL_1 UNKNOWNCODE p 7  304  944  608  624  240 1008  24  1  3 0   288  6736     0 E4 000408
2019-02-22 18:21:34.572 CUL CUL_1 UNKNOWNCODE p 7  304  928  848  416  288  960  24  1  3 0   240 12336     0 E2 000408
2019-02-22 18:21:34.615 CUL CUL_1 UNKNOWNCODE p 7  288  960  832  416  256 1008  24  1  3 0   288 12320     0 E6 000408
2019-02-22 18:21:34.658 CUL CUL_1 UNKNOWNCODE p11  288  960  656   16  240 1008  25  1  3 1   224 12352     0 E5 FFFBF780
2019-02-22 18:21:34.701 CUL CUL_1 UNKNOWNCODE p 7  288  960  848  416  176 1072  24  1  3 0   272 12304     0 E6 000408
2019-02-22 18:21:34.744 CUL CUL_1 UNKNOWNCODE p 7  320  928  624  656  272  976  24  1  3 0   224 12352     0 E4 000408
2019-02-22 18:21:34.787 CUL CUL_1 UNKNOWNCODE p 7  288  960  880  384  240 1008  24  1  3 0   272 12320     0 E5 000408
2019-02-22 18:21:34.830 CUL CUL_1 UNKNOWNCODE p11  288  960  448  288  240 1008  25  1  3 1   240 12336     0 E4 FFFBF780
2019-02-22 18:21:34.873 CUL CUL_1 UNKNOWNCODE p 7  288  960  848  416  288  960  24  1  3 0   240 12336     0 E2 000408
2019-02-22 18:21:34.915 CUL CUL_1 UNKNOWNCODE p 7  288  976  848  400  240 1008  24  1  3 0   288 12304     0 E6 000400
2019-02-22 18:21:34.958 CUL CUL_1 UNKNOWNCODE p 7  304  960  832  400  272  992  24  1  3 0   272 12304     0 E5 000408
2019-02-22 18:21:35.001 CUL CUL_1 UNKNOWNCODE p 7  288  944  880  352  272  992  24  1  3 0   240 12336     0 E4 000408

Mit set CUL_1 raw raw G0036c5133a351a00040800 kann ich diese Farbe steuern


Hat man hier eine Möglichkeit den Code als intertechno in das System zu bekommen ?


Vielen Dank schon einmal und Grüße

Sven

Raspi 3 mit CUL Stick 433/868MHZ, Homematic

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2130
Antw:Alternative culfw
« Antwort #1832 am: 07 März 2019, 18:30:05 »
@Telekatz
Danke dir! Sorry, werde vermtl. langsam nervig, aber ich komm weder in der Sache noch im Verständnis irgendwie weiter :(

1. Egal wie ich REPTIME setze, ich kann eigentlich keine ernsthafte Änderung feststellen.

Ich habe ich zuerst gedacht, dass mein neuer Wert (definiert in board.h) nicht zum Zuge kommt, aber ich hab eine Ausgabe des Defines eingebaut und es ist mMn korrekt gesetzt an der relevanten Stelle:

Line 471 in rf_receive.c:
#define STRING2(x) #x
#define STRING(x) STRING2(x)
#pragma message "REPTIME = " STRING(REPTIME)
        if(roby == oby && (ticks - reptime[CC_INSTANCE] < REPTIME)) // 38/125 = 0.3 sec
          packetCheckValues.isrep = 1;
      }
#error stop

Gibt das hier aus:
../../clib/rf_receive.c: In function 'RfAnalyze_Task':
../../clib/rf_receive.c:473:9: note: #pragma message: REPTIME = 125
 #pragma message "REPTIME = " STRING(REPTIME)
         ^
../../clib/rf_receive.c:477:2: error: #error stop
 #error stop
  ^

Also REPTIME ist an der Stelle (die einzige, wo es verwendet wird?) 125, also 1000 ms.

Wenn ich die Fernbedienung der ELRO gedrückt und am besten etwas rumschwenke, dann sieht das so aus:
2019.03.04 22:58:26.785 5: CUL/RAW: /i00551113
2019.03.04 22:58:27.043 5: CUL/RAW: /i00551112
2019.03.04 22:58:27.730 5: CUL/RAW: /omDB695610
2019.03.04 22:58:28.331 5: CUL/RAW: /omDB6D2011
2019.03.04 22:58:28.933 5: CUL/RAW: /omDB69001C
2019.03.04 22:58:28.976 5: CUL/RAW: /omDB6B581C
2019.03.04 22:58:29.190 5: CUL/RAW: /omDB6D601C
2019.03.04 22:58:29.276 5: CUL/RAW: /omDB6D801B
2019.03.04 22:58:29.576 5: CUL/RAW: /omDB6B0012
2019.03.04 22:58:29.919 5: CUL/RAW: /i00551108
2019.03.04 22:58:30.434 5: CUL/RAW: /i00551111
2019.03.04 22:58:30.648 5: CUL/RAW: /i00551110

Folgende Fragen kommen bei mir auf:
  • REPTIME ist also 1000 ms. Wieso können immer noch identische Nachrichten zum Beispiel bei 22:58:30.434 und bei 22:58:30.648 auftauchen? Da liegen nur ~200 ms dazwischen.
  • Ich bin mir recht sicher, dass die "/om"-Nachrichten auch durch die Fernbedienung erzeugt wurden. Ich hab zwar Oregon-Sensoren, aber die reden viel seltener und die Nachrichten sind dann viel länger.
Gleiches Verhalten kann ich genau so mit der Original-FW provozieren.

Missverstehe ich irgendwas grundsätzlich an dem REPTIME-Mechanismus? Ich dachte, dass zwischen zwei identischen Nachrichten (exklusive RSSI) mindestens REPTIME * 8 ms vergehen müssen, damit sie als neue Nachricht akzeptiert wird. Eine neue identische Nachricht resettet den Zähler (sprich: ich kann eine Stunde lang identische Nachrichten schicken im Abstand von 50 ms und nur die allererste wird verarbeitet).

Offline Telekatz

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 795
Antw:Alternative culfw
« Antwort #1833 am: 07 März 2019, 20:34:37 »
Kann es sein, dass dein Empfänger deine FB nicht sonderlich gut empfängt? Der Filter wird nämlich nicht nur nach der REPTIME zurückgesetzt. Er wird auch zurückgesetzt, wenn eine zur vorherigen Nachricht unterschiedliche Nachricht dekodiert wird. Diese neue Nachricht wird aber nur dann ausgegeben, wenn sie zweimal hintereinander dekodiert wird. Wenn also dein Empfänger einzelne Nachrichten zwischendurch falsch dekodiert, könnte das die Wiederholungen erklären.

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2130
Antw:Alternative culfw
« Antwort #1834 am: 10 März 2019, 22:46:14 »
So, leider erst jetzt wieder Zeit gefunden, um dieser Front weiter zu machen.

Interessanter Punkt mit den unterschiedlichen Nachrichten... Ich hab mal den Maple ins gleiche Zimmer geholt hier. Jetzt ca. 1,5 m Luftlinie Distanz ohne Wand. Hab jetzt einen RSSI um ca. -60 dB.

Um zu testen, habe ich einmal Dauerfeuer von der ELPRO mit deiner X23-Firmware gemacht und einmal mit meiner Variante mit REP_TIME=250, also 2 Sekunden. Die Erwartung wäre, dass ich mit der X23-Firmware sehen kann, dass oft unterschiedliche Nachrichten empfangen werden um damit erklären zu können, dass die REP_TIME-FW oft doppelte Nachricht raus gibt mit einem Abstand kleiner 2 Sek.

Mit X23 siehts so aus (ich hab mal alle Nachrichten eingerückt, die nicht "004551" sind):
2019.03.10 22:25:36.742 5: CUL/RAW: /i0045510A
    2019.03.10 22:25:36.785 5: CUL/RAW: /ihFFFA476009
2019.03.10 22:25:36.829 5: CUL/RAW: /i00455100
2019.03.10 22:25:36.871 5: CUL/RAW: /i00455108
2019.03.10 22:25:36.914 5: CUL/RAW: /i0045510A
2019.03.10 22:25:36.957 5: CUL/RAW: /i00455107
2019.03.10 22:25:37.000 5: CUL/RAW: /i00455108
2019.03.10 22:25:37.043 5: CUL/RAW: /i004551FF
2019.03.10 22:25:37.086 5: CUL/RAW: /i0045510A
2019.03.10 22:25:37.129 5: CUL/RAW: /i00455106
2019.03.10 22:25:37.172 5: CUL/RAW: /i00455108
2019.03.10 22:25:37.258 5: CUL/RAW: /i00455106
2019.03.10 22:25:37.301 5: CUL/RAW: /i00455100
2019.03.10 22:25:37.344 5: CUL/RAW: /i00455108
2019.03.10 22:25:37.387 5: CUL/RAW: /i00455108
2019.03.10 22:25:37.430 5: CUL/RAW: /i004551FF
2019.03.10 22:25:37.473 5: CUL/RAW: /i0045510A
2019.03.10 22:25:37.516 5: CUL/RAW: /i00455106
2019.03.10 22:25:37.559 5: CUL/RAW: /i00455108
2019.03.10 22:25:37.602 5: CUL/RAW: /i00455100
2019.03.10 22:25:37.645 5: CUL/RAW: /i00455108
2019.03.10 22:25:37.688 5: CUL/RAW: /i0045510B
2019.03.10 22:25:37.731 5: CUL/RAW: /i00455108
2019.03.10 22:25:37.774 5: CUL/RAW: /i00455100
2019.03.10 22:25:37.817 5: CUL/RAW: /i00455108
2019.03.10 22:25:37.860 5: CUL/RAW: /i00455100
2019.03.10 22:25:37.903 5: CUL/RAW: /i0045510A
2019.03.10 22:25:37.946 5: CUL/RAW: /i00455106
2019.03.10 22:25:37.989 5: CUL/RAW: /i00455100
2019.03.10 22:25:38.032 5: CUL/RAW: /i0045510A
2019.03.10 22:25:38.075 5: CUL/RAW: /i00455106
2019.03.10 22:25:38.118 5: CUL/RAW: /i004551FF
2019.03.10 22:25:38.161 5: CUL/RAW: /i0045510A
2019.03.10 22:25:38.204 5: CUL/RAW: /i00455107
2019.03.10 22:25:38.247 5: CUL/RAW: /i00455107
2019.03.10 22:25:38.290 5: CUL/RAW: /i004551FF
2019.03.10 22:25:38.333 5: CUL/RAW: /i00455107
2019.03.10 22:25:38.375 5: CUL/RAW: /i00455106
2019.03.10 22:25:38.419 5: CUL/RAW: /i00455100
2019.03.10 22:25:38.505 5: CUL/RAW: /i00455107
2019.03.10 22:25:38.548 5: CUL/RAW: /i004551FF
2019.03.10 22:25:38.677 5: CUL/RAW: /i00455102
2019.03.10 22:25:38.805 5: CUL/RAW: /i00455100
2019.03.10 22:25:38.849 5: CUL/RAW: /i00455108
2019.03.10 22:25:38.891 5: CUL/RAW: /i00455100
2019.03.10 22:25:38.935 5: CUL/RAW: /i00455108
2019.03.10 22:25:38.977 5: CUL/RAW: /i00455100
2019.03.10 22:25:39.021 5: CUL/RAW: /i00455108
2019.03.10 22:25:39.063 5: CUL/RAW: /i00455100
2019.03.10 22:25:39.106 5: CUL/RAW: /i0045510A
2019.03.10 22:25:39.149 5: CUL/RAW: /i00455106
2019.03.10 22:25:39.197 5: CUL/RAW: /i00455108
2019.03.10 22:25:39.236 5: CUL/RAW: /i004551FF
    2019.03.10 22:25:39.322 5: CUL/RAW: /i20455105
2019.03.10 22:25:39.365 5: CUL/RAW: /i00455100
2019.03.10 22:25:39.408 5: CUL/RAW: /i00455109
2019.03.10 22:25:39.450 5: CUL/RAW: /i00455106
    2019.03.10 22:25:39.495 5: CUL/RAW: /i10455113
2019.03.10 22:25:39.580 5: CUL/RAW: /i00455100
2019.03.10 22:25:39.622 5: CUL/RAW: /i0045510A
2019.03.10 22:25:39.665 5: CUL/RAW: /i00455106
2019.03.10 22:25:39.708 5: CUL/RAW: /i00455100
2019.03.10 22:25:39.751 5: CUL/RAW: /i00455107
2019.03.10 22:25:39.795 5: CUL/RAW: /i00455100
2019.03.10 22:25:39.838 5: CUL/RAW: /i00455108
2019.03.10 22:25:39.880 5: CUL/RAW: /i00455107
    2019.03.10 22:25:39.925 5: CUL/RAW: /i05855108
2019.03.10 22:25:39.966 5: CUL/RAW: /i0045510C
2019.03.10 22:25:40.009 5: CUL/RAW: /i00455108
2019.03.10 22:25:40.052 5: CUL/RAW: /i00455100
2019.03.10 22:25:40.095 5: CUL/RAW: /i0045510A
    2019.03.10 22:25:40.138 5: CUL/RAW: /ihFFBCD2800C
2019.03.10 22:25:40.224 5: CUL/RAW: /i00455108
2019.03.10 22:25:40.267 5: CUL/RAW: /i00455108
2019.03.10 22:25:40.311 5: CUL/RAW: /i00455100
2019.03.10 22:25:40.353 5: CUL/RAW: /i0045510A
2019.03.10 22:25:40.439 5: CUL/RAW: /i00455100
2019.03.10 22:25:40.482 5: CUL/RAW: /i00455108
2019.03.10 22:25:40.525 5: CUL/RAW: /i0045510B
2019.03.10 22:25:40.568 5: CUL/RAW: /i00455108
2019.03.10 22:25:40.654 5: CUL/RAW: /i00455100
2019.03.10 22:25:40.697 5: CUL/RAW: /i00455109
2019.03.10 22:25:40.740 5: CUL/RAW: /i00455106
2019.03.10 22:25:40.783 5: CUL/RAW: /i004551FF
2019.03.10 22:25:40.826 5: CUL/RAW: /i00455106
2019.03.10 22:25:40.955 5: CUL/RAW: /i004551FF
2019.03.10 22:25:40.998 5: CUL/RAW: /i00455106
2019.03.10 22:25:41.042 5: CUL/RAW: /i00455100
2019.03.10 22:25:41.084 5: CUL/RAW: /i0045510A
2019.03.10 22:25:41.170 5: CUL/RAW: /i00455102
2019.03.10 22:25:41.213 5: CUL/RAW: /i0045510A
2019.03.10 22:25:41.256 5: CUL/RAW: /i00455106
2019.03.10 22:25:41.299 5: CUL/RAW: /i00455100
2019.03.10 22:25:41.385 5: CUL/RAW: /i00455106
2019.03.10 22:25:41.428 5: CUL/RAW: /i00455100
2019.03.10 22:25:41.557 5: CUL/RAW: /i00455102
2019.03.10 22:25:41.643 5: CUL/RAW: /i00455106
2019.03.10 22:25:41.686 5: CUL/RAW: /i00455108
2019.03.10 22:25:41.729 5: CUL/RAW: /i004551FF
2019.03.10 22:25:41.772 5: CUL/RAW: /i0045510A
2019.03.10 22:25:41.815 5: CUL/RAW: /i00455112
    2019.03.10 22:25:41.859 5: CUL/RAW: /i20455106
2019.03.10 22:25:41.901 5: CUL/RAW: /i00455100
2019.03.10 22:25:41.965 5: CUL/RAW: /i0045510A
2019.03.10 22:25:41.988 5: CUL/RAW: /i00455106
2019.03.10 22:25:42.031 5: CUL/RAW: /i004551FF
2019.03.10 22:25:42.073 5: CUL/RAW: /i00455106
2019.03.10 22:25:42.117 5: CUL/RAW: /i00455100
2019.03.10 22:25:42.160 5: CUL/RAW: /i00455109
2019.03.10 22:25:42.202 5: CUL/RAW: /i00455106
2019.03.10 22:25:42.245 5: CUL/RAW: /i004551FF
2019.03.10 22:25:42.288 5: CUL/RAW: /i00455106
2019.03.10 22:25:42.332 5: CUL/RAW: /i00455108
2019.03.10 22:25:42.375 5: CUL/RAW: /i004551FF
2019.03.10 22:25:42.418 5: CUL/RAW: /i00455108
2019.03.10 22:25:42.461 5: CUL/RAW: /i00455106
2019.03.10 22:25:42.547 5: CUL/RAW: /i004551FF
2019.03.10 22:25:42.590 5: CUL/RAW: /i0045510A
2019.03.10 22:25:42.633 5: CUL/RAW: /i00455106
2019.03.10 22:25:42.676 5: CUL/RAW: /i0045510B
2019.03.10 22:25:42.719 5: CUL/RAW: /i00455107
2019.03.10 22:25:42.805 5: CUL/RAW: /i00455101
2019.03.10 22:25:42.848 5: CUL/RAW: /i00455107
2019.03.10 22:25:42.891 5: CUL/RAW: /i00455108
2019.03.10 22:25:42.934 5: CUL/RAW: /i00455100
2019.03.10 22:25:42.977 5: CUL/RAW: /i00455108
2019.03.10 22:25:43.020 5: CUL/RAW: /i00455100
2019.03.10 22:25:43.063 5: CUL/RAW: /i0045510A
2019.03.10 22:25:43.106 5: CUL/RAW: /i00455106
2019.03.10 22:25:43.149 5: CUL/RAW: /i004551FF
2019.03.10 22:25:43.192 5: CUL/RAW: /i00455108
2019.03.10 22:25:43.235 5: CUL/RAW: /i00455107
2019.03.10 22:25:43.278 5: CUL/RAW: /i0045510C
2019.03.10 22:25:43.321 5: CUL/RAW: /i00455108
2019.03.10 22:25:43.364 5: CUL/RAW: /i004551FF
2019.03.10 22:25:43.407 5: CUL/RAW: /i00455107
2019.03.10 22:25:43.450 5: CUL/RAW: /i00455106
2019.03.10 22:25:43.493 5: CUL/RAW: /i00455108
2019.03.10 22:25:43.536 5: CUL/RAW: /i004551FF
2019.03.10 22:25:43.579 5: CUL/RAW: /i0045510A
2019.03.10 22:25:43.622 5: CUL/RAW: /i00455106
2019.03.10 22:25:43.665 5: CUL/RAW: /i00455100
2019.03.10 22:25:43.708 5: CUL/RAW: /i00455107
2019.03.10 22:25:43.751 5: CUL/RAW: /i004551FF
    2019.03.10 22:25:43.838 5: CUL/RAW: /ih6FFBAAE006
2019.03.10 22:25:43.880 5: CUL/RAW: /i004551FF
2019.03.10 22:25:44.009 5: CUL/RAW: /i004551FF
2019.03.10 22:25:44.052 5: CUL/RAW: /i00455106
2019.03.10 22:25:44.138 5: CUL/RAW: /i00455100
2019.03.10 22:25:44.224 5: CUL/RAW: /i004551FF
2019.03.10 22:25:44.267 5: CUL/RAW: /i00455107
2019.03.10 22:25:44.310 5: CUL/RAW: /i004551FF
2019.03.10 22:25:44.353 5: CUL/RAW: /i00455108
2019.03.10 22:25:44.396 5: CUL/RAW: /i00455108
2019.03.10 22:25:44.439 5: CUL/RAW: /i004551FF
2019.03.10 22:25:44.482 5: CUL/RAW: /i0045510A
2019.03.10 22:25:44.525 5: CUL/RAW: /i00455106
2019.03.10 22:25:44.568 5: CUL/RAW: /i004551FF
2019.03.10 22:25:44.611 5: CUL/RAW: /i00455106
2019.03.10 22:25:44.654 5: CUL/RAW: /i004551FF
2019.03.10 22:25:44.740 5: CUL/RAW: /i00455108
2019.03.10 22:25:44.783 5: CUL/RAW: /i00455106
2019.03.10 22:25:44.826 5: CUL/RAW: /i004551FF
2019.03.10 22:25:44.869 5: CUL/RAW: /i00455106
2019.03.10 22:25:44.913 5: CUL/RAW: /i00455100
2019.03.10 22:25:44.955 5: CUL/RAW: /i00455108
2019.03.10 22:25:44.999 5: CUL/RAW: /i004551FF
2019.03.10 22:25:45.041 5: CUL/RAW: /i00455106
2019.03.10 22:25:45.085 5: CUL/RAW: /i004551FF
2019.03.10 22:25:45.127 5: CUL/RAW: /i00455107
2019.03.10 22:25:45.170 5: CUL/RAW: /i004551FF
2019.03.10 22:25:45.213 5: CUL/RAW: /i00455108
2019.03.10 22:25:45.257 5: CUL/RAW: /i004551FF
2019.03.10 22:25:45.300 5: CUL/RAW: /i00455105
2019.03.10 22:25:45.342 5: CUL/RAW: /i004551FF
2019.03.10 22:25:45.386 5: CUL/RAW: /i00455106
2019.03.10 22:25:45.429 5: CUL/RAW: /i004551FF
2019.03.10 22:25:45.515 5: CUL/RAW: /i004551FF
2019.03.10 22:25:45.558 5: CUL/RAW: /i00455106
2019.03.10 22:25:45.601 5: CUL/RAW: /i0045510A
    2019.03.10 22:25:45.644 5: CUL/RAW: /ihFD9EA1E010
    2019.03.10 22:25:45.731 5: CUL/RAW: /i408AE10F
2019.03.10 22:25:45.816 5: CUL/RAW: /i004551FF
2019.03.10 22:25:45.859 5: CUL/RAW: /i00455107
2019.03.10 22:25:45.945 5: CUL/RAW: /i00455108
2019.03.10 22:25:45.988 5: CUL/RAW: /i00455108
2019.03.10 22:25:46.031 5: CUL/RAW: /i004551FF
2019.03.10 22:25:46.087 5: CUL/RAW: /i00455106
    2019.03.10 22:25:46.117 5: CUL/RAW: /i00255106
2019.03.10 22:25:46.160 5: CUL/RAW: /i004551FF
2019.03.10 22:25:46.203 5: CUL/RAW: /i00455108
2019.03.10 22:25:46.246 5: CUL/RAW: /i004551FF
2019.03.10 22:25:46.289 5: CUL/RAW: /i00455108
2019.03.10 22:25:46.332 5: CUL/RAW: /i0045510C
2019.03.10 22:25:46.461 5: CUL/RAW: /i004551FF
2019.03.10 22:25:46.504 5: CUL/RAW: /i00455106
2019.03.10 22:25:46.547 5: CUL/RAW: /i004551FF
2019.03.10 22:25:46.590 5: CUL/RAW: /i00455106
2019.03.10 22:25:46.633 5: CUL/RAW: /i004551FF
2019.03.10 22:25:46.762 5: CUL/RAW: /i004551FF
2019.03.10 22:25:46.805 5: CUL/RAW: /i00455106
2019.03.10 22:25:46.848 5: CUL/RAW: /i00455100
2019.03.10 22:25:46.891 5: CUL/RAW: /i00455108
2019.03.10 22:25:46.934 5: CUL/RAW: /i0045510A
2019.03.10 22:25:46.977 5: CUL/RAW: /i00455106
2019.03.10 22:25:47.020 5: CUL/RAW: /i00455101
2019.03.10 22:25:47.063 5: CUL/RAW: /i00455109
2019.03.10 22:25:47.106 5: CUL/RAW: /i00455106
2019.03.10 22:25:47.150 5: CUL/RAW: /i00455109
2019.03.10 22:25:47.192 5: CUL/RAW: /i00455106
2019.03.10 22:25:47.235 5: CUL/RAW: /i004551FF
2019.03.10 22:25:47.321 5: CUL/RAW: /i004551FF
2019.03.10 22:25:47.365 5: CUL/RAW: /i00455106
2019.03.10 22:25:47.407 5: CUL/RAW: /i004551FF
2019.03.10 22:25:47.451 5: CUL/RAW: /i00455109
2019.03.10 22:25:47.537 5: CUL/RAW: /i00455106
2019.03.10 22:25:47.580 5: CUL/RAW: /i004551FF
2019.03.10 22:25:47.623 5: CUL/RAW: /i00455107
2019.03.10 22:25:47.709 5: CUL/RAW: /i004551FF
2019.03.10 22:25:47.751 5: CUL/RAW: /i00455107
2019.03.10 22:25:47.795 5: CUL/RAW: /i004551FF
2019.03.10 22:25:47.838 5: CUL/RAW: /i00455106
2019.03.10 22:25:47.881 5: CUL/RAW: /i004551FF
2019.03.10 22:25:47.925 5: CUL/RAW: /i00455105
2019.03.10 22:25:48.010 5: CUL/RAW: /i0045510A
2019.03.10 22:25:48.053 5: CUL/RAW: /i00455106
2019.03.10 22:25:48.096 5: CUL/RAW: /i004551FF
2019.03.10 22:25:48.139 5: CUL/RAW: /i00455108
2019.03.10 22:25:48.182 5: CUL/RAW: /i004551FF
2019.03.10 22:25:48.225 5: CUL/RAW: /i00455105
2019.03.10 22:25:48.268 5: CUL/RAW: /i004551FF
2019.03.10 22:25:48.311 5: CUL/RAW: /i00455109
2019.03.10 22:25:48.354 5: CUL/RAW: /i00455106
2019.03.10 22:25:48.397 5: CUL/RAW: /i004551FF
2019.03.10 22:25:48.440 5: CUL/RAW: /i00455106
2019.03.10 22:25:48.483 5: CUL/RAW: /i004551FF
2019.03.10 22:25:48.569 5: CUL/RAW: /i00455106
2019.03.10 22:25:48.612 5: CUL/RAW: /i004551FF
2019.03.10 22:25:48.741 5: CUL/RAW: /i004551FF
2019.03.10 22:25:48.784 5: CUL/RAW: /i00455106
2019.03.10 22:25:48.827 5: CUL/RAW: /i004551FF
2019.03.10 22:25:48.871 5: CUL/RAW: /i00455106
2019.03.10 22:25:48.913 5: CUL/RAW: /i004551FF
2019.03.10 22:25:49.042 5: CUL/RAW: /i00455108
2019.03.10 22:25:49.085 5: CUL/RAW: /i0045510A
2019.03.10 22:25:49.128 5: CUL/RAW: /i00455106
2019.03.10 22:25:49.171 5: CUL/RAW: /i004551FF
2019.03.10 22:25:49.214 5: CUL/RAW: /i0045510A
2019.03.10 22:25:49.258 5: CUL/RAW: /i00455106
2019.03.10 22:25:49.300 5: CUL/RAW: /i004551FF
2019.03.10 22:25:49.344 5: CUL/RAW: /i00455106
2019.03.10 22:25:49.473 5: CUL/RAW: /i004551FF
2019.03.10 22:25:49.516 5: CUL/RAW: /i00455106
2019.03.10 22:25:49.559 5: CUL/RAW: /i004551FF
2019.03.10 22:25:49.602 5: CUL/RAW: /i00455108
2019.03.10 22:25:49.645 5: CUL/RAW: /i00455108
2019.03.10 22:25:49.688 5: CUL/RAW: /i00455100
2019.03.10 22:25:49.732 5: CUL/RAW: /i00455108
2019.03.10 22:25:49.774 5: CUL/RAW: /i004551FF
2019.03.10 22:25:49.817 5: CUL/RAW: /i00455107
2019.03.10 22:25:49.903 5: CUL/RAW: /i004551FF
2019.03.10 22:25:49.946 5: CUL/RAW: /i00455108
2019.03.10 22:25:49.989 5: CUL/RAW: /i00455110
2019.03.10 22:25:50.075 5: CUL/RAW: /i00455100
2019.03.10 22:25:50.118 5: CUL/RAW: /i00455107
2019.03.10 22:25:50.161 5: CUL/RAW: /i00455100
    2019.03.10 22:25:50.204 5: CUL/RAW: /i00555F07
Hm, also eigentlich recht selten andersartige Nachrichten empfangen.

Und dann jetzt die "normale" FW mit REP_TIME=250:
2019.03.10 22:35:03.918 5: CUL/RAW: /i0045511F
2019.03.10 22:35:04.090 5: CUL/RAW: /i00555F20
2019.03.10 22:35:04.989 5: CUL/RAW: /omD5552D4D5534B53334E7
2019.03.10 22:35:05.445 5: CUL/RAW: /i0045511D
2019.03.10 22:35:05.574 5: CUL/RAW: /i0045511D
2019.03.10 22:35:05.789 5: CUL/RAW: /i0045511F
2019.03.10 22:35:06.089 5: CUL/RAW: /i0045511D
2019.03.10 22:35:06.863 5: CUL/RAW: /i0045511E
2019.03.10 22:35:06.949 5: CUL/RAW: /i0045511E
2019.03.10 22:35:07.120 5: CUL/RAW: /i0045511E
2019.03.10 22:35:07.507 5: CUL/RAW: /i0045511E
2019.03.10 22:35:07.980 5: CUL/RAW: /i0045511E
2019.03.10 22:35:08.453 5: CUL/RAW: /i0045511E
2019.03.10 22:35:08.798 5: CUL/RAW: /omDB6B1E
2019.03.10 22:35:08.926 5: CUL/RAW: /i0045512D
2019.03.10 22:35:09.183 5: CUL/RAW: /i0045511E
2019.03.10 22:35:09.699 5: CUL/RAW: /i0045511E
2019.03.10 22:35:10.000 5: CUL/RAW: /i0045511E
2019.03.10 22:35:10.432 5: CUL/RAW: /i0045511E
2019.03.10 22:35:10.731 5: CUL/RAW: /i0045511F
2019.03.10 22:35:10.988 5: CUL/RAW: /i0045511E
2019.03.10 22:35:11.160 5: CUL/RAW: /i0045511F
2019.03.10 22:35:11.719 5: CUL/RAW: /i0045511E
2019.03.10 22:35:12.107 5: CUL/RAW: /i00455120
2019.03.10 22:35:12.880 5: CUL/RAW: /i0045511F
2019.03.10 22:35:12.966 5: CUL/RAW: /i0045511F
2019.03.10 22:35:13.439 5: CUL/RAW: /i0045511F
2019.03.10 22:35:14.084 5: CUL/RAW: /i0045511F
2019.03.10 22:35:14.471 5: CUL/RAW: /i0045511E
2019.03.10 22:35:14.858 5: CUL/RAW: /i0045511F
2019.03.10 22:35:14.944 5: CUL/RAW: /i0045511F
2019.03.10 22:35:15.030 5: CUL/RAW: /i0045511E
2019.03.10 22:35:15.502 5: CUL/RAW: /i0045511F
2019.03.10 22:35:15.675 5: CUL/RAW: /i0045511E
2019.03.10 22:35:16.233 5: CUL/RAW: /i0045511F
2019.03.10 22:35:16.405 5: CUL/RAW: /i0045511F
2019.03.10 22:35:16.836 5: CUL/RAW: /i0045511F
2019.03.10 22:35:17.051 5: CUL/RAW: /i0045511F
2019.03.10 22:35:17.223 5: CUL/RAW: /i0045511F
2019.03.10 22:35:17.481 5: CUL/RAW: /i0045511E
2019.03.10 22:35:17.867 5: CUL/RAW: /i0045511F
2019.03.10 22:35:18.427 5: CUL/RAW: /i0045511E
2019.03.10 22:35:18.599 5: CUL/RAW: /i0045511F
2019.03.10 22:35:18.814 5: CUL/RAW: /i0045511F
2019.03.10 22:35:18.986 5: CUL/RAW: /i00455120

Also man sieht, dass die 2 Sekunden sehr oft unterschritten werden (bzw. eigentlich *nie* erreicht werden?). Im X23-Modus hat man gesehen, dass zwar ab und zu andere Nachrichten empfangen werden, aber mMn nicht annähernd genug, um damit erklären zu können, dass die 2 Sek. nie erreicht werden.

Also wie ich es drehe und wende, ich finde leider nichts nachvollziehbares :(
Gibt es irgendwo den Quellcode der X23-Variante? Ich würde gerne nochmal auf dieser aufsetzen und REP_TIME erhöhen. Einfach um sicherzustellen, dass ich nicht auf zwei unterschiedlichen Quellcode-Ständen teste.

Mag nach wie vor sein, dass ich irgendwas nicht richtig verstehe, aber gefühlt muss ich sagen, werde ich den Eindruck nicht los, dass da irgendwo der Wurm drin ist in dieser Wiederholungserkennung  :-[

EDIT:
Achso: das eigentlich Ziel ist ja, zu verstehen, was der Empfang von Homematic-Nachrichten mit der ganzen Geschichte der doppelten Nachrichten zu tun hat... aber daran wage ich momentan gar nicht zu denken ^^
« Letzte Änderung: 10 März 2019, 22:49:25 von vbs »

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2130
Antw:Alternative culfw
« Antwort #1835 am: 12 März 2019, 23:13:05 »
@Telekatz
Ich denke, ich hab raus gefunden, woran es liegt (also mein Ursprungsproblem, dass der RC-Button nochmal empfangen wird, wenn ich HM schalte):
In dem Moment, in dem HM aktiv wird, ruft irgendjemand die Funktion reset_input() auf.

void reset_input(void)
{
  maxLevel[CC_INSTANCE]=0;
#ifdef USE_HAL
  hal_enable_CC_timer_int(CC_INSTANCE,FALSE);
#else
  TIMSK1 = 0;
#endif
  bucket_array[CC_INSTANCE][bucket_in[CC_INSTANCE]].state = STATE_RESET;
#if defined (HAS_IT) || defined (HAS_TCM97001)
  packetCheckValues.isnotrep = 0;
#endif
#ifdef SAM7
        HAL_timer_set_reload_register(CC_INSTANCE,0);
#elif defined STM32
      HAL_timer_set_reload_register(CC_INSTANCE,0xffff);
#else
        OCR1A = 0;
#endif
}

In der Funktion wird dann
  packetCheckValues.isnotrep = 0;gesetzt. Das wiederum führt dazu, dass die nächste IT-Message innerhalb der Serie, die meine RC sendet, dann als zweite Wiederholung aufgefasst wird und deshalb (nochmals) rausgesendet wird.

Hat mMn mit REP_TIME also nichts weiter zu tun. Alle Nachrichten eines Tastendrucks werden korrekt als Repeats erkannt.

Wenn ich die o.g. Zeile rausnehme, dann tritt das Problem nicht mehr auf. Kann aber die Nebenwirkungen auf den Rest nicht gut genug überblicken.

Reicht das für dich zum Verstehen und evtl. beheben? Mir ist's noch etwas rätselhaft, warum das bei dir nicht auftritt. Ich verstehe aber auch nicht gut genug, wer bzw. wann reset_input() aufgerufen wird.

Offline Telekatz

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 795
Antw:Alternative culfw
« Antwort #1836 am: 13 März 2019, 18:09:32 »
Ich denke nicht, dass man den Aufruf von reset_input() hier als Fehler werten kann. Das wird bei dir vermutlich nur deswegen aufgerufen, weil ein fehlerhaftes Paket empfangen wurde. Mein Vermutung ist ja immernoch, dass es sich bei dir um ein Problem mit dem Empfänger handelt. Ich vermute, dass beim Senden der HM Nachricht durch die Nähe zum IT Empfänger es zu einer kurzen Störung beim Empfang kommt.

Gibt es irgendwo den Quellcode der X23-Variante? Ich würde gerne nochmal auf dieser aufsetzen und REP_TIME erhöhen. Einfach um sicherzustellen, dass ich nicht auf zwei unterschiedlichen Quellcode-Ständen teste.
https://github.com/Telekatz/a-culfw/tree/repeated_IT

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2130
Antw:Alternative culfw
« Antwort #1837 am: 13 März 2019, 19:34:17 »
Ich denke nicht, dass man den Aufruf von reset_input() hier als Fehler werten kann. Das wird bei dir vermutlich nur deswegen aufgerufen, weil ein fehlerhaftes Paket empfangen wurde. Mein Vermutung ist ja immernoch, dass es sich bei dir um ein Problem mit dem Empfänger handelt. Ich vermute, dass beim Senden der HM Nachricht durch die Nähe zum IT Empfänger es zu einer kurzen Störung beim Empfang kommt.
Ok, aber ich kann es mir nicht erklären. Ist das ein Hardwareschaden? Der Empfang ist eigentlich ok (RSSI -60 bis -70). Der Maple steht mittlerweile 2m vor mir ohne Wand. Ich wüsste nicht, wie ich den Empfang noch verbessern könnte.

Ich hab mal zu Debug-Zwecken eine Firmware gebaut, die alle Nachrichten weitergibt und das letzte Byte der Nachricht als Debug-Ausgabe missbraucht:
0xF0 - Nachricht wäre normal versendet worden
0x01 - packetCheckValues.isrep
0x02 - packetCheckValues.isnotrep

Die Werte werden dann verodert.



Wenn ich mit der Fernbedienung HM schalte, sieht es dann so aus:
2019.03.13 19:16:43.447 5: CUL/RAW: /i10101500 <- erste RC-Nachricht wird empfangen aber nicht rausgesendet (kein 0xF0) (OK)
2019.03.13 19:16:43.585 5: CUL/RAW: /i101015F1 <- nochmals empfangen (isrep == 1) und wird versendet (0xF0) (OK)
2019.03.13 19:16:43.607 5: CUL/RAW: /i10101503 <- wieder empfangen (isrep == 1 und isnotrep == 1) wird aber nicht mehr versendet (kein 0xF0) (OK)
2019.03.13 19:16:43.623 5: CUL/RAW: /i10101503 <- ab hier wird erstmal nicht mehr versendet (OK)
2019.03.13 19:16:43.636 5: CUL/RAW: /i10101503
2019.03.13 19:16:43.678 5: CUL/RAW: /i10101503
2019.03.13 19:16:43.724 5: CUL/RAW: /i101015F1 <- jetzt auf einmal wird wieder versendet (0xF0). isnotrep ist nicht mehr gesetzt. es wurde reset_input aufgerufen ausgelöst durch HM (Problem)
2019.03.13 19:16:43.849 5: CUL/RAW: /i10101503
2019.03.13 19:16:43.873 5: CUL/RAW: /i10101503
2019.03.13 19:16:43.895 5: CUL/RAW: /i10101503
2019.03.13 19:16:43.909 5: CUL/RAW: /i10101503
2019.03.13 19:16:43.954 5: CUL/RAW: /i10101503
2019.03.13 19:16:44.000 5: CUL/RAW: /i101015F1 <- gleiches Spiel wieder...
2019.03.13 19:16:44.130 5: CUL/RAW: /i10101503
2019.03.13 19:16:44.148 5: CUL/RAW: /i10101503
2019.03.13 19:16:44.171 5: CUL/RAW: /i10101503
2019.03.13 19:16:44.185 5: CUL/RAW: /i10101503
2019.03.13 19:16:44.231 5: CUL/RAW: /i10101503
2019.03.13 19:16:44.276 5: CUL/RAW: /i10101503

Also eigentlich wirkt der Empfang auf mich stabil. Fehlerhafte Nachrichten müsste ich doch sehen, oder?

Hab ich noch andere Option, außer dem Auskommentieren von "packetCheckValues.isnotrep = 0;" in reset_input()? Und welche Probleme handel ich mir damit ein?

Danke

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2130
Antw:Alternative culfw
« Antwort #1838 am: 13 März 2019, 20:10:52 »
Achso, das war der Code, den ich benutzt habe:
https://github.com/verybadsoldier/a-culfw/tree/rep_debug

Offline Telekatz

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 795
Antw:Alternative culfw
« Antwort #1839 am: 13 März 2019, 21:11:39 »
Wie weit sind denn die Antenne des HM und des IT Moduls voneinander entfernt. Ich hab da den Verdacht, dass der IT Empfänger während des Sendens der HM Nachricht Störungen vom HM Modul empfängt, die er fälschlicherweise als Start einer SlowRF Nachricht interpretiert. Das kann er aber später nicht dekodieren und ruft daraufhin reset_input().

Du solltest mal weitere Debugmeldungen an den Stellen einbauen, an dem überall reset_input() aufgerufen wird, um die Stelle zu finden, an der das hier passiert.

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2130
Antw:Alternative culfw
« Antwort #1840 am: 14 März 2019, 23:02:39 »
Also die Antennen sind schon recht nah zusammen (siehe Bild). Aber mMn so wie auf dem MapleCUL vorgesehen.

Hab mal den Aufrufer von reset_input() identifiziert. Hadelt sich um rf_receive.c Zeile ~1260:
      } else if(hightime[CC_INSTANCE] > lowtime[CC_INSTANCE]) {
        addbit(b, 1);*/
      } else {
      /*  addbit(b, 0);*/
      /*  b->two.hightime = makeavg(b->zero.hightime, hightime[CC_INSTANCE]);
        b->two.lowtime  = makeavg(b->zero.lowtime,  lowtime[CC_INSTANCE]);*/
        reset_input();
      }
      break;

Scheint eine Interrupt-Routine zu sein. Aber ich verstehe zu wenig vom Ablauf, um sagen zu können was dort passiert. Hast du dazu evtl. eine Idee?

Offline Telekatz

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 795
Antw:Alternative culfw
« Antwort #1841 am: 17 März 2019, 13:21:53 »
Da wird das demodulierte Signal vom Receiver versucht zu analysieren. Dein Receiver empfängt irgend ein Signal, das wie ein bekanntes Sync Signal interpretiert wird, und bricht dann den Empfang ab, weil das Signal dann doch keinen Sinn ergibt.

Ob man "isnotrep = 0" in reset_input() weglassen kann müsste sich Björn mal anschauen, da der Code von ihm ist.

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2130
Antw:Alternative culfw
« Antwort #1842 am: 17 März 2019, 20:47:33 »
Das wär super. Ich betreibe das momentan so und ich hab bisher noch keine Nebeneffekte festgestellt. Aber das muss nicht viel heißen.

Liest er hier mit oder soll ich ihn mal anschreiben?

Offline bjoernh

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 762
Antw:Alternative culfw
« Antwort #1843 am: 22 März 2019, 21:03:36 »
Ich habe es zwar jetzt noch nicht komplett durchgelesen....
Es gibt aber Sender/Fernbedienungen welche zwischen den Aussendungen ein sleep machen. Dann läuft der timer ab und es wird ein neues paket erkannt.
Ein ähnliches Verhalten entsteht wenn die Übertragung gestört wird, dann kann ein Paket nicht dekodiert werden und das nächste wird als neues erkannt.
Die Stelle im code schaue ich mir mal an, wobei spontan denke ich macht es dann bei anderen Protokollen Probleme. So war damals beim Schreiben meine Erfahrung.

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2130
Antw:Alternative culfw
« Antwort #1844 am: 22 März 2019, 21:18:00 »
Danke dir. Ich sehe momentan das isnotrep=0 als meine einzige Option leider :( Telekatz sagte aber auch schon, dass es vermutlich durch einen gestörten Empfang ausgelöst wird. Jedoch wird dieser gestörte Empfang ziemlich sicher durch das Versenden (bzw. Empfang des ACK) des Homematic-Moduls ausgelöst. Also sozusagen hausgemacht.

Ich glaube, in dem Post hier, kann man am besten sehen, wie die Nachrichten bei mir aussehen:
https://forum.fhem.de/index.php/topic,35064.msg918675.html#msg918675

 

decade-submarginal