Eltako FMH4(S) erstellt unknown attribute rocker

Begonnen von Damu, 13 Oktober 2024, 10:13:07

Vorheriges Thema - Nächstes Thema

Damu

Hallo
Habe gestern 3 FMH4(S) verschlüsselt angelernt.
Hat glaube ich auch so geklappt.
Nach einem neustart hab ich folgendes auf der FHEM Startseite:
Zitatessages collected while initializing FHEM:configfile: FBSec_02: unknown attribute rocker. Type 'attr FBSec_02 ?' for a detailed list.
FBSec_01: unknown attribute rocker. Type 'attr FBSec_01 ?' for a detailed list.
FBSec_Res: unknown attribute rocker. Type 'attr FBSec_Res ?' for a detailed list.

Habe im Backub nachgeschaut.
Da wurde immer das attr "rocker B" erstellt.
Das wurde nun gelöscht, ich kann es auch nicht mehr setzten.

passibe

Vorab: Kenne mich mit Eltako-Hardware nicht aus, aber:

Vielleicht hat das Modul in den jeweiligen Devices einattr DEVICE userattr rockergesetzt und das wurde – wieso auch immer – nicht mitgespeichert und ist deshalb nach dem reboot nicht mehr verfügbar?

Oder (wahrscheinlicher?) im global-device? Alsoattr global userattr [...] rockerJedenfalls kannst du das einfach (am besten global) manuell setzen und die Fehlermeldung sollte verschwinden. Vorher natürlich im global device schauen, welche userattr da noch hinterlegt sind und die Liste entsprechend erweitern – nicht einfach stumpf über den Befehl.

Vielleicht auch mal im Backup nach userattr suchen und schauen, ob es das irgendwo gab.

Damu

Nein es heisst device attr rocker B.
Es wurde das attr Rocker erstellt.
Braucht es das überhaupt?

passibe

Ne, ich meine schon userattr. Das Attribut rocker gibt es per default nicht. Deshalb musst du FHEM mit dem Attribut userattr sagen, welche zusätzlichen Attribute du setzen willst bzw. ein Modul setzen will.

Wenn FHEM nichts über dieses zusätzliche, nicht-default Attribut weiß, dann kommt halt die Fehlermeldung
Zitat von: Damu am 13 Oktober 2024, 10:13:07unknown attribute rocker

Ob es das attr rocker braucht – keine Ahnung. Das musst du ggfs. nachlesen. Ich sage dir nur, wie du die Fehlermeldung aus deinem Eingangspost wegkriegst.

Damu

#4
ZitatNe, ich meine schon userattr. Das Attribut rocker gibt es per default nicht.

FHEM hat es mir aber erstellt:
10_EnOcean.pm Zeile 18144
Zitat# switch teach-in
      $attr{$name}{teachMethod} = 'STE';
      if ($info == 0) {
        $attr{$name}{comMode} = "uniDir";
        $attr{$name}{eep} = "D2-03-00";
        $attr{$name}{manufID} = "7FF";
        $attr{$name}{rocker} = "A";
        $attr{$name}{secMode} = "rcv";
        foreach my $attrCntr (keys %{$EnO_eepConfig{"D2.03.00"}{attr}}) {
          $attr{$name}{$attrCntr} = $EnO_eepConfig{"D2.03.00"}{attr}{$attrCntr};
        }
        readingsSingleUpdate($hash, "teach", "STE teach-in accepted EEP D2-03-00 Manufacturer: " . $EnO_manuf{"7FF"}, 1);
        Log3 $name, 2, "EnOcean $name STE teach-in accepted EEP D2-03-00 Rocker A Manufacturer: " . $EnO_manuf{"7FF"};
      } else {
        $attr{$name}{comMode} = "uniDir";
        $attr{$name}{eep} = "D2-03-00";
        $attr{$name}{manufID} = "7FF";
        $attr{$name}{rocker} = "B";
        $attr{$name}{secMode} = "rcv";
        foreach my $attrCntr (keys %{$EnO_eepConfig{"D2.03.00"}{attr}}) {
          $attr{$name}{$attrCntr} = $EnO_eepConfig{"D2.03.00"}{attr}{$attrCntr};
        }
        readingsSingleUpdate($hash, "teach", "STE teach-in accepted EEP D2-03-00 Manufacturer: " . $EnO_manuf{"7FF"}, 1);
        Log3 $name, 2, "EnOcean $name STE teach-in accepted EEP D2-03-00 Rocker B Manufacturer: " . $EnO_manuf{"7FF"};
      }
    }

Zeile 18718:
Zitatsub EnOcean_sec_createTeachIn($$$$$$$$$$$) {
  my ($ctrl, $hash, $comMode, $dataEnc, $eep, $macAlgo, $rlcAlgo, $rlcTX, $secLevel, $rocker, $subDef, $destinationID) = @_;
  my $name = $hash->{NAME};
  my ($data, $err, $response, $loglevel);
  # Info CNT = 2
  my $info = 0x20;
  # DATA_ENC = VAES
  my $slf = 3;
  return ("Cryptographic functions are not available", undef, 2) if ($cryptFunc == 0);
  # generate random private key
  my $pKey;
  for (my $i = 1; $i < 5; $i++) {
    $pKey .= uc(unpack('H8', pack('L', makerandom(Size => 32, Strength => 1))));
  }
  $attr{$name}{keySnd} = AttrVal($name, "keySnd", $pKey);
  $pKey = $attr{$name}{keySnd};
  $attr{$name}{comMode} = AttrVal($name, "comMode", $comMode);
  $attr{$name}{dataEnc} = AttrVal($name, "dataEnc", $dataEnc);
  $attr{$name}{eep} = $eep;
  $attr{$name}{macAlgo} = AttrVal($name, "macAlgo", $macAlgo);
  $attr{$name}{manufID} = AttrVal($name, "manufID", "7FF");
  $attr{$name}{rlcAlgo} = AttrVal($name, "rlcAlgo", $rlcAlgo);
  $attr{$name}{rlcTX} = AttrVal($name, "rlcTX", $rlcTX);
  $attr{$name}{rocker} = AttrVal($name, "rocker", $rocker) if (defined $rocker);
  $attr{$name}{secLevel} = AttrVal($name, "secLevel", $secLevel);

Zeile: 18727
Zitat# generate random private key
  my $pKey;
  for (my $i = 1; $i < 5; $i++) {
    $pKey .= uc(unpack('H8', pack('L', makerandom(Size => 32, Strength => 1))));
  }
  $attr{$name}{keySnd} = AttrVal($name, "keySnd", $pKey);
  $pKey = $attr{$name}{keySnd};
  $attr{$name}{comMode} = AttrVal($name, "comMode", $comMode);
  $attr{$name}{dataEnc} = AttrVal($name, "dataEnc", $dataEnc);
  $attr{$name}{eep} = $eep;
  $attr{$name}{macAlgo} = AttrVal($name, "macAlgo", $macAlgo);
  $attr{$name}{manufID} = AttrVal($name, "manufID", "7FF");
  $attr{$name}{rlcAlgo} = AttrVal($name, "rlcAlgo", $rlcAlgo);
  $attr{$name}{rlcTX} = AttrVal($name, "rlcTX", $rlcTX);
  $attr{$name}{rocker} = AttrVal($name, "rocker", $rocker) if (defined $rocker);
  $attr{$name}{secLevel} = AttrVal($name, "secLevel", $secLevel);

Zeile: 18756

Zitatif (defined $rocker) {
    $info |= 4;
    $info |= 1 if ($rocker eq 'B');
  } else {
    if (AttrVal($name, "secMode", "") =~ m/^rcv|biDir$/) {
      $attr{$name}{secMode} = "biDir";
      $info |= 1;
    } else {
      $attr{$name}{secMode} = "snd";
    }
  }

  %rlcAlgo = ('2++' => 0x40, '3++' => 0x80, '4++' => 0xC0);
  $slf |= $rlcAlgo{$attr{$name}{rlcAlgo}} if (exists $rlcAlgo{$attr{$name}{rlcAlgo}});
  $slf |= 0x20 if ($rlcTX eq 'true');
  my %macAlgo = (3 => 8, 4 => 0x10);
  $slf |= $macAlgo{$attr{$name}{macAlgo}} if (exists $macAlgo{$attr{$name}{macAlgo}});




klaus.schauer

Das Attribut "rocker" fehlt in der AttrList des EnOcean-Moduls. Wird in der nächsten Version berichtigt.