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.
Vorab: Kenne mich mit Eltako-Hardware nicht aus, aber:
Vielleicht hat das Modul in den jeweiligen Devices einattr DEVICE userattr rocker
gesetzt 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 [...] rocker
Jedenfalls 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.
Nein es heisst device attr rocker B.
Es wurde das attr Rocker erstellt.
Braucht es das überhaupt?
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.
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}});
Das Attribut "rocker" fehlt in der AttrList des EnOcean-Moduls. Wird in der nächsten Version berichtigt.