Problem beim Peeren von Homeatic Wired Aktor Ein- und Ausgängen

Begonnen von fritzhugo123, 22 März 2017, 21:05:05

Vorheriges Thema - Nächstes Thema

Thorsten Pferdekaemper

Zitat von: fritzhugo123 am 23 März 2017, 17:58:02
Ich habe gesehen, dass ich die Datei 10_HM485.pm noch in der Version 0.7.24 benutze.
Das ist für diesen Fehler egal.

Zitat
Sollte ich diese manuell auf die letzte Version aktualisieren?
Nein, da die Datei dann nicht mehr mit den anderen zusammenpasst.

Zitat
Müsste ein fhem update das nicht automatisch tun?
Kommt darauf an, wie Du den Kram installiert hast.
Mach mal das, was hier beschrieben ist:
https://wiki.fhem.de/wiki/HomeMatic_Wired#Installation_und_Upgrade_in_FHEM

Danach klappt das auch mit dem FHEM-update.
...aber wie gesagt: Hilft bei Deinem Problem nichts.

Gruß,
   Thorsten
FUIP

Ralf9

ZitatHier das list von dem IO Modul.
Damit ist mir klar, warum im Fehlerfall die peersettings um ein Byte versetzt ins EEPROM des IO Moduls geschrieben werden.
Durch das um ein Byte versetzte schreiben ins EEPROM, wird aus den 49152 für "dont use" die 20-25 Sek

Wenn man sich die beiden Gerätebeschreibungsdateien anschaut, sieht man den Unterschied:
'HMW_IO12_SW7_DR':
long_on_time_mode   "index" => 17.7
short_jt_on       "index" => 15.3
short_on_time  "index" => 9
short_off_time "index" => 13

'HMW_IO12_SW7_DR_V3_02':
long_on_time_mode   "index" => 7.7
short_jt_on       "index" => 16.3
short_on_time  "index" => 10
short_off_time  "index" => 14


Wenn man nun in Deinem list von dem IO Modul schaut, sieht man, daß dort die falschen Address indexe vom 'HMW_IO12_SW7_DR_V3_02' stehen
Short_on_time:  Address index 10
Short_off_time:  Address index 14

Solange dort die falschen Address indexe stehen, werden alle peerings die eingerichtet oder geändert werden zu Blinklichtern.


ZitatDie Peersettings sehen immernoch kaputt aus und die "Schleife" wird auch wieder gestartet.
Hast Du vor dem wieder einrichten der peerings ein fhem neustart gemacht?


Damit HM-wired mit FHEM 5.8 funktioniert, muß das csrfToken abgeschaltet werden
attr WEB.* csrfToken none

Hier ist eine Beschreibung warum das csrfToken eingeführt wurde
https://forum.fhem.de/index.php/topic,68314.msg598070.html#msg598070

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

Hallo Thorsten,

da mir u.a. bei meinen Selbstbau HM-wired IO-Modulen auch aufgefallen ist, daß bei der Zuordnung der Gerätebeschreibungsdatei die Firmware-Version nicht richtig berücksichtigt wird, habe ich es in meiner Version angepasst.

Meine Anpassungen habe ich mit #### markiert

sub initModels() {

foreach my $deviceKey (keys %deviceDefinitions) {
if ($deviceDefinitions{$deviceKey}{'supported_types'}) {
foreach my $modelKey (keys (%{$deviceDefinitions{$deviceKey}{'supported_types'}})) {
if ($deviceDefinitions{$deviceKey}{'supported_types'}{$modelKey}{'parameter'}{'0'}{'const_value'}) {
$models{$modelKey}{'model'} = $modelKey;
$models{$modelKey}{'name'} = $deviceDefinitions{$deviceKey}{'supported_types'}{$modelKey}{'name'};
$models{$modelKey}{'type'} = $deviceDefinitions{$deviceKey}{'supported_types'}{$modelKey}{'parameter'}{'0'}{'const_value'};

my $minFW = $deviceDefinitions{$deviceKey}{'supported_types'}{$modelKey}{'parameter'}{'2'}{'const_value'};
$minFW = $minFW ? $minFW : 0;
$minFW = '000' . $minFW;          ####
$minFW = substr($minFW, -4);      ####
$models{$modelKey}{'versionDeviceKey'}{$minFW} = $deviceKey;
}
# Handling of the "generic" device
                # This is probably not perfect, but should work
  elsif($deviceKey eq 'HMW_GENERIC') {
                    $models{$modelKey}{'model'} = $modelKey;
                    $models{$modelKey}{'name'} = $deviceDefinitions{$deviceKey}{'supported_types'}{$modelKey}{'name'};
$models{$modelKey}{'type'} = 0;
$models{$modelKey}{'versionDeviceKey'}{'0000'} = $deviceKey;     ####
}
}
}
}
#print Dumper(%models);
}


sub getDeviceKeyFromHash($) {
my ($hash) = @_;

if(defined($hash->{devHash})) {
$hash = $hash->{devHash};
}

my $retVal = '';
if ($hash->{'MODEL'}) {
my $model    = $hash->{'MODEL'};
my $fw  = $hash->{'FW_VERSION'} ? $hash->{'FW_VERSION'} : 0;
my $fw1 = $fw ? int($fw) : 0;
my $fw2 = ($fw * 100) - int($fw) * 100;

my $fwVersion = hex(
sprintf ('%02X%02X', ($fw1 ? $fw1 : 0), ($fw2 ? $fw2 : 0))
);

foreach my $version (sort keys (%{$models{$model}{'versionDeviceKey'}})) {     #### sort
if ($version <= $fwVersion) {
$retVal = $models{$model}{'versionDeviceKey'}{$version};
} else {
last;
}
}
}

return $retVal;
}


Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Thorsten Pferdekaemper

Hi,
das ist in meiner momentanen Entwickler-Version schon repariert, nur dass auch die Conditions (GE, GT, LE etc.) beachtet werden und die Priority auch noch ausgewertet wird.
Gruß,
    Thorsten
FUIP

fritzhugo123

So, einen Schritt weiter bin ich nun.
Nach dem Löschen der Datei werden die Module jetzt neu eingelesen.

Ich kann allerdings kein neues Peering machen, ich erhalte die Fehlermeldung noch PeerID free.
In den Internals sehe ich folgende Zuordnungen:

peer_act_25
   
channel_52 → unknown
peer_act_26
   
channel_52 → unknown
peer_act_3
   
channel_52 → unknown
peer_act_4
   
channel_52 → unknown
peer_act_5
   
channel_52 → unknown
peer_act_6
   
channel_52 → unknown
peer_act_7
   
channel_52 → unknown
peer_act_8
   
channel_52 → unknown
peer_act_9
   
channel_52 → unknown
peer_sen_0
   
channel_52 ← unknown
peer_sen_1
   
channel_52 ← unknown
peer_sen_10
   
channel_52 ← unknown
peer_sen_11
   
channel_52 ← unknown
peer_sen_12
   
channel_52 ← unknown
peer_sen_13
   
channel_52 ← unknown
peer_sen_14
   
channel_52 ← unknown
peer_sen_15
   
channel_52 ← unknown

Was muss ich tun, um diese loszuwerden, so dass ich wieder ein neues Peering erstellen kann?

fritzhugo123

Ich habe den Raspberry dann noch einmal neu gestartet und nun funktioniert wieder alles.
Auch ein neues Peering konnte ich erstellen.

Was eine einzelne Datei doch so alles anrichten kann...

Vielen Dank für die Geduld und den Support.
Ich bin wieder etwas schlauer geworden und wünsche viel Erfolg bei der Aktualisierung des HM485 Moduls.

LG

Thorsten Pferdekaemper

Hi,
das mit den channel_52 ist auch schon gefixt. Leider habe ich anscheinend noch ein paar Problemchen eingebaut, denen ich jetzt noch nachgehen muss. Es kann also noch ein bisschen dauern, bis ich das "ausliefern" kann.
Gruß,
   Thorsten
FUIP