[gelöst] Repeater HM-Sys-sRP-Pl über AskSin++

Begonnen von petibub, 26 März 2022, 23:10:26

Vorheriges Thema - Nächstes Thema

papa

Das 0x02 Register und die Firmware-Version lassen sich mit wenig Aufwand im Homebrew anpassen.
Das wird aber am Verhalten nichts ändern. Aber vielleicht funktioniert dann die Gegenseite dann besser.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

noansi

#16
Hallo Frank,

zum spannenden "Compatibility Mode" ist hier https://de.elv.com/forum/kompatibilitaetsmodus-2264 zu lesen, dass damit wohl das LowBat Bit bei weitergeleiteten Nachrichten gelöscht werden kann.
Das wegen älterer Fernbedienungen, die beim Hören ihrer eigenen message mit lowBat Bit die rote Led wegen Fehlinterpretation leuchten lassen.

Gelesen wird Register 0x17 vom Repeater als Zufallswert.


2022.04.01 18:21:14.515 4: TSCUL_Parse: CUNX_HM868  15617672 A F101 11531272 00 14 EF A010 3991DE F11034 0202010AF10B100C34[b]18B0[/b] -32.5dB
2022.04.01 18:22:33.927 4: TSCUL_Parse: CUNX_HM868  15697076 A F101 11610408 00 14 27 A010 3991DE F11034 0202010AF10B100C34[b]B7D7[/b] -34dB
2022.04.01 18:22:42.386 4: TSCUL_Parse: CUNX_HM868  15705543 A F101 11618856 00 14 5C A010 3991DE F11034 0202010AF10B100C34[b]602C[/b] -35dB
2022.04.01 18:41:07.701 4: TSCUL_Parse: CUNX_HM868  00033613 A F101 12720160 00 14 33 A010 3991DE F11034 0202010AF10B100C34[b]1AB2[/b] -33.5dB
2022.04.01 18:41:20.999 4: TSCUL_Parse: CUNX_HM868  00046942 A F101 12733592 00 14 68 A010 3991DE F11034 0202010AF10B100C34[b]8C78[/b] -32dB
2022.04.01 18:41:33.533 4: TSCUL_Parse: CUNX_HM868  00059475 A F101 12746100 00 14 9D A010 3991DE F11034 0202010AF10B100C34[b]A16D[/b] -34dB
2022.04.01 18:41:48.582 4: TSCUL_Parse: CUNX_HM868  00074524 A F101 12761056 00 14 D2 A010 3991DE F11034 0202010AF10B100C34[b]3602[/b] -35.5dB

Also zufällige Registernummer und zufälliger Wert. Muss man also erst mal irgendwas draus machen, z.B. fix 0x17/0x00, damit man es anschließend regulär setzen kann. Netterweise ein vergleichbares Fehlverhalten, wie beim HM-MOD-RE-8 Firmware 1.2.  :)

@Papa: Das Homebrew müsste die "peers" ebenso liefern, wie es der original Repeater tut. Also SourceID + Burst Bit für jeden gesetzten repPeers Eintrag.
Ansonsten müsste nach meinem CUL_HM Verständnis der Homebrew Repeater eine eigene Model Id bekommen und entsprechend anders in CUL_HM behandelt werden, damit das mit den Sonderbehandlungen im Rahmen bleibt.
Ich rechne mal nicht damit, dass eq3 die Bugs im original Repeater noch gerade biegt. Somit sind die Bugs leider "Normalverhalten".  :(

Nebenbei, wie ist das Repeat Timing beim Homebrew Repeater. Ich hatte mal was um die 45ms für den Empfang einer wiederholten message gemessen. Das ist ebenfalls wichtig einzuhalten, damit auch eine Kommunikation stattfinden kann. Nur für das weiterleiten von broadcasts von z.B. Temperatursensoren spielt es keine Rolle.

Gruß, Ansgar.

noansi

#17
Hallo Frank,

compMode kann ich nun setzen, freilich ohne es lesen zu können.

Keine Änderung bezüglich Liste 2, egal ob 0x17 = 00, 01 oder FE.  :(

Zitatfhem liest ja erst die peers und danach dann die register von liste2.
ich würde mal das lesen der peers im code abschalten, dann den repeater eine weile stromlos schalten, und anschliessend die registerlisten auslesen.
Leider auch damit kein Erfolg.  :(
Dafür muss übrigens nicht der Code geändert werden. In HMConfig reicht:
,"0076" => {name=>"HM-SYS-SRP-PL"           ,st=>'repeater'          ,cyc=>''      ,rxt=>''       ,lst=>'1,2,p'        ,chn=>"",} # repeater

um erst die Listen 0, 1 und 2 zu lesen und dann erst die peers.
nur "zugehört":
2022.04.01 22:47:56.533 4: TSCUL_Parse: CUNX_HM868  14842479 A F001 10697880 00 0D 00 A410 3991DE F11034 06000000 -40.5dB
2022.04.01 22:47:56.666 4: TSCUL_Parse: CUNX_HM868  14842612 A F001 10698000 00 0A 00 8002 F11034 3991DE 00 -44.5dB
2022.04.01 22:47:58.786 4: TSCUL_Parse: CUNX_HM868  14844728 A F001 10700096 00 0E 01 A410 3991DE F11034 060100002A -36dB
2022.04.01 22:47:58.874 4: TSCUL_Parse: CUNX_HM868  14844820 A F001 10700212 00 0A 01 8002 F11034 3991DE 00 -44dB
2022.04.01 22:48:02.784 4: TSCUL_Parse: CUNX_HM868  14848730 A F001 10704012 00 10 02 A001 F11034 3991DE 00040000000000 -44dB
2022.04.01 22:48:02.891 4: TSCUL_Parse: CUNX_HM868  14848834 A F001 10704136 00 14 02 A010 3991DE F11034 0202010AF10B100C340000 -33.5dB
2022.04.01 22:48:03.007 4: TSCUL_Parse: CUNX_HM868  14848954 A F001 10704252 00 0A 02 8002 F11034 3991DE 00 -45dB
2022.04.01 22:48:03.052 4: TSCUL_Parse: CUNX_HM868  14848998 A F001 10704352 00 10 12 A001 F11034 3991DE 01040000000001 -44.5dB
2022.04.01 22:48:03.299 4: TSCUL_Parse: CUNX_HM868  14849244 A F001 10704620 00 10 12 A001 F11034 3991DE 01040000000001 -44.5dB
2022.04.01 22:48:03.420 4: TSCUL_Parse: CUNX_HM868  14849362 A F001 10704740 00 0C 12 A010 3991DE F11034 030801 -33dB
2022.04.01 22:48:03.531 4: TSCUL_Parse: CUNX_HM868  14849477 A F001 10704852 00 0A 12 8002 F11034 3991DE 00 -43.5dB
2022.04.01 22:48:03.653 4: TSCUL_Parse: CUNX_HM868  14849599 A F001 10704976 00 0C 13 A010 3991DE F11034 030000 -33.5dB
2022.04.01 22:48:03.771 4: TSCUL_Parse: CUNX_HM868  14849717 A F001 10705092 00 0A 13 8002 F11034 3991DE 00 -43.5dB
2022.04.01 22:48:03.872 4: TSCUL_Parse: CUNX_HM868  14849818 A F001 10705192 00 10 23 A001 F11034 3991DE 01040000000002 -44dB
2022.04.01 22:48:03.995 4: TSCUL_Parse: CUNX_HM868  14849937 A F001 10705312 00 0C 23 A010 3991DE F11034 030801 -33.5dB
2022.04.01 22:48:04.106 4: TSCUL_Parse: CUNX_HM868  14850051 A F001 10705424 00 0A 23 8002 F11034 3991DE 00 -43.5dB
2022.04.01 22:48:04.228 4: TSCUL_Parse: CUNX_HM868  14850174 A F001 10705548 00 0C 24 A010 3991DE F11034 03002A -35dB
2022.04.01 22:48:04.348 4: TSCUL_Parse: CUNX_HM868  14850294 A F001 10705664 00 0A 24 8002 F11034 3991DE 00 -44dB
2022.04.01 22:48:04.443 4: TSCUL_Parse: CUNX_HM868  14850389 A F001 10705764 00 0B 34 A001 F11034 3991DE 0103 -44dB
2022.04.01 22:48:04.583 4: TSCUL_Parse: CUNX_HM868  14850524 A F001 10705896 00 1A 34 A010 3991DE F11034 012A133F0156C58001F1103400F1103400 -34.5dB
2022.04.01 22:48:04.781 4: TSCUL_Parse: CUNX_HM868  14850727 A F001 10706008 00 0A 34 8002 F11034 3991DE 00 -43.5dB
2022.04.01 22:48:04.825 4: TSCUL_Parse: CUNX_HM868  14850771 A F001 10706132 00 0E 35 A010 3991DE F11034 0100000000 -33.5dB
2022.04.01 22:48:04.946 4: TSCUL_Parse: CUNX_HM868  14850892 A F001 10706248 00 0A 35 8002 F11034 3991DE 00 -44dB


Gruß, Ansgar.

petibub

Wow! Ich liebe die FHEM Community - Vielen Dank für die Unterstützung. Leider steige ich technisch aus, weil ich zu wenig vom Homematic Protokoll und seiner Anbindung in FHEM verstehe. Aber, dass ich die Information über die verbundenen Geräte in RegL_02 ablesen kann, das hilft mir schon viel weiter.

@Frank: soll ich noch ein "list" posten, oder hat sich das durch die Diskussion inzwischen erledigt?

@Papa:  Firmware-Version kann ich ändern, aber beim 0x02 Register steig ich aus.

Dadurch, dass der Repeater nun läuft und ich notfalls aus RegL_02 die Konfiguration entziffern kann, ist mein Ziel erreicht. Danke Allen für die Unterstützung (und die AskSin++ Bibliothek  :) ).

lg; Piotr

noansi

#19
Hallo Piotr,

Du kannst mal im aktuellen 10_CUL_HM.pm nach Zeile 10289 also nach
sub CUL_HM_repReadings($) {   # parse repeater
  my ($hash)=@_;


folgenden Code ergänzen:
  if (my $regl2 = ReadingsVal($hash->{NAME}, ($hash->{helper}{expert}{raw} ? '' : '.').'RegL_02.', undef)) {
    if ($regl2 =~ m/00:00/s) { # list 2 complete?
      my @regl2vals = split(/ /, $regl2);
      if (int(@regl2vals) >= 253) { # complete list 2 from homebrew repeater (only!)
        my @repPeers = ();
        for my $rg (@regl2vals) { # interpret repPeers from list 2
          next if (!$rg);
          my ($idx, $val) = split(/:/, $rg);
          next if ($idx eq '00');
          $idx -= 1;
          $val = hex($val);
          my $p = int($idx / 7);
          if (!defined($repPeers[$p])) {
            my %rph = ( src => 0,
                        dst => 0,
                        brdcst => 0 );
            $repPeers[$p] = \%rph;
          }
          my $b = $idx - $p*7;
          if    ($b < 3) { # source ID
            $repPeers[$p]->{src} += $val << ($b*8);
          }
          elsif ($b < 6) { # destination ID
            $repPeers[$p]->{dst} += $val << (($b-3)*8);
          }
          else { # broadcast flag
            $repPeers[$p]->{brdcst} = $val;
          }
        }
        $hash->{helper}{peerIDsRaw} = ''; # build peerIDsRaw from list 2
        my $rpav = '';
        for my $pr (@repPeers) {
          $hash->{helper}{peerIDsRaw} .= sprintf(",%06X%02X", $pr->{src}, $pr->{brdcst});
          $rpav .= $pr->{src} ? sprintf("%06X:%06X:", $pr->{src}, $pr->{dst}).($pr->{brdcst}?'y':'n').',' : ' ,';
        }
        $rpav =~ s/,$//;
        $attr{$hash->{NAME}}->{repPeers} = $rpav; # set attr repPeers from list 2
        $hash->{helper}{peerIDsRaw} .= ',00000000';
      }
    }
  }


Damit sollten die repPeers nach einem getConfig angezeigt werden, sofern mir kein Gedankenfehler unterlaufen ist.

Gruß, Ansgar.

papa

Alternativ kannst Du auch mal den anghängten Sketch testen. Ich habe mal die Version, das Register 0x02 und das Auslesen der Peers angepasst. Allerdings habe ich nur geprüft, dass der Code durch den Complier geht und nicht wirklich getestet.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

petibub

Lieber papa,

es hat tatsächlich geholfen, die repPeer_XX werden jetzt von FHEM empfangen und dargestellt. Vielen Dank!

lg; Piotr

PS: Erst jetzt dazugekommen, weil es den Spannungsregler am Arduino zerrissen hat und ich erst eine robuste Ersatzlösung basteln musste. Jetzt läuft der Repeater als Insellösung von Solarzellen gespeist  :).