mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 12:49:34 +00:00
HMLAN:updates
git-svn-id: https://svn.fhem.de/fhem/trunk@25201 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
1feffd2193
commit
20936d10af
@ -5,6 +5,7 @@ package main;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use DevIo;
|
||||
use Time::HiRes qw(gettimeofday time);
|
||||
use Digest::MD5 qw(md5);
|
||||
|
||||
@ -51,8 +52,8 @@ my $HMmlSlice = 12; # number of messageload slices per hour (10 = 6min)
|
||||
|
||||
sub HMLAN_Initialize($) {
|
||||
my ($hash) = @_;
|
||||
use DevIo;
|
||||
|
||||
require "$attr{global}{modpath}/FHEM/DevIo.pm";
|
||||
|
||||
# Provider
|
||||
$hash->{ReadFn} = "HMLAN_Read";
|
||||
@ -82,6 +83,8 @@ sub HMLAN_Initialize($) {
|
||||
"wdTimer:5,10,15,20,25 ".
|
||||
"logIDs:multiple,sys,all,broadcast ".
|
||||
$readingFnAttributes;
|
||||
$hash->{NotifyOrderPrefix} = "47-"; #make sure, HMLAN_DoInit is called once prior to CUL_HM initialisation
|
||||
return;
|
||||
}
|
||||
sub HMLAN_Define($$) {#########################################################
|
||||
my ($hash, $def) = @_;
|
||||
@ -89,7 +92,7 @@ sub HMLAN_Define($$) {#########################################################
|
||||
|
||||
if(@a != 3) {
|
||||
my $msg = "wrong syntax: define <name> HMLAN ip[:port]";
|
||||
Log3 $hash, 2, $msg;
|
||||
Log3 $a[0], 2, $msg;
|
||||
return $msg;
|
||||
}
|
||||
DevIo_CloseDev($hash);
|
||||
@ -99,7 +102,7 @@ sub HMLAN_Define($$) {#########################################################
|
||||
$dev .= ":1000" if($dev !~ m/:/ && $dev ne "none" && $dev !~ m/\@/);
|
||||
|
||||
if($dev eq "none") {
|
||||
Log3 $hash, 1, "$name device is none, commands will be echoed only";
|
||||
Log3 $name, 1, "$name device is none, commands will be echoed only";
|
||||
$attr{$name}{dummy} = 1;
|
||||
return undef;
|
||||
}
|
||||
@ -118,6 +121,7 @@ sub HMLAN_Define($$) {#########################################################
|
||||
@{$hash->{helper}{q}{apIDs}} = \@arr;
|
||||
|
||||
$hash->{helper}{q}{scnt} = 0;
|
||||
$hash->{helper}{q}{sending} = 0;
|
||||
$hash->{helper}{q}{loadNo} = 0;
|
||||
$hash->{helper}{q}{loadLastMax} = 0; # max load in last slice
|
||||
my @ald = ("0") x $HMmlSlice;
|
||||
@ -136,9 +140,10 @@ sub HMLAN_Define($$) {#########################################################
|
||||
readingsSingleUpdate($hash,"state","disconnected",1);
|
||||
$hash->{owner} = "";
|
||||
HMLAN_Attr("delete",$name,"loadLevel");
|
||||
$hash->{Clients} = ":CUL_HM:";
|
||||
|
||||
my $ret = DevIo_OpenDev($hash, 0, "HMLAN_DoInit");
|
||||
return $ret;
|
||||
return DevIo_OpenDev($hash, 0, "HMLAN_DoInit") if $init_done;
|
||||
return;
|
||||
}
|
||||
sub HMLAN_Undef($$) {##########################################################
|
||||
my ($hash, $arg) = @_;
|
||||
@ -165,12 +170,13 @@ sub HMLAN_RemoveHMPair($) {####################################################
|
||||
}
|
||||
sub HMLAN_Notify(@) {##########################################################
|
||||
my ($hash,$dev) = @_;
|
||||
if ($dev->{NAME} eq "global" && grep (m/^INITIALIZED$/,@{$dev->{CHANGED}})){
|
||||
if ($dev->{NAME} eq "global" && grep (m/^INITIALIZED|REREADCFG$/,@{$dev->{CHANGED}})){
|
||||
if ($hash->{helper}{attrPend}){
|
||||
my $aVal = AttrVal($hash->{NAME},"logIDs","");
|
||||
HMLAN_Attr("set",$hash->{NAME},"logIDs",$aVal) if($aVal);
|
||||
delete $hash->{helper}{attrPend};
|
||||
}
|
||||
DevIo_OpenDev($hash, 0, "HMLAN_DoInit");
|
||||
HMLAN_writeAesKey($hash->{NAME});
|
||||
}
|
||||
elsif ($dev->{NAME} eq $hash->{NAME}){
|
||||
@ -641,6 +647,7 @@ sub HMLAN_Parse($$) {##########################################################
|
||||
my @mFld = split(',', $rmsg);
|
||||
my $letter = substr($mFld[0],0,1); # get leading char
|
||||
|
||||
$hash->{helper}{q}{sending} = 0 if ($letter eq "R");
|
||||
if ($letter =~ m/^[ER]/){#@mFld=($src, $status, $msec, $d2, $rssi, $msg)
|
||||
# max speed for devices is 100ms after receive - example:TC
|
||||
my ($mNo,$flg,$type,$src,$dst,$p) = unpack('A2A2A2A6A6A*',$mFld[5]);
|
||||
@ -936,6 +943,7 @@ sub HMLAN_DoInit($) {##########################################################
|
||||
|
||||
$hash->{helper}{q}{keepAliveRec} = 1; # ok for first time
|
||||
$hash->{helper}{q}{keepAliveRpt} = 0; # ok for first time
|
||||
$hash->{helper}{q}{sending} = 0;
|
||||
|
||||
my $tn = gettimeofday();
|
||||
my $wdTimer = AttrVal($name,"wdTimer",25);
|
||||
@ -986,11 +994,16 @@ sub HMLAN_KeepAlive($) {#######################################################
|
||||
my($in ) = shift;
|
||||
my(undef,$name) = split(':',$in);
|
||||
my $hash = $defs{$name};
|
||||
my $tn = gettimeofday();
|
||||
if ($hash->{helper}{q}{sending}) { #Currently sending, reschedule KeepAlive
|
||||
RemoveInternalTimer( "keepAlive:".$name);# avoid duplicate timer
|
||||
InternalTimer($tn+0.1,"HMLAN_KeepAlive", "keepAlive:".$name, 1);
|
||||
return;
|
||||
}
|
||||
$hash->{helper}{q}{keepAliveRec} = 0; # reset indicator
|
||||
|
||||
return if(!$hash->{FD});
|
||||
|
||||
my $tn = gettimeofday();
|
||||
my $wdTimer = AttrVal($name,"wdTimer",25);
|
||||
my $rht = int($tn)>>15 ;
|
||||
if( $rht != $hash->{helper}{setTime}){# reset HMLAN watch about each 10h
|
||||
@ -1156,13 +1169,15 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
=item device
|
||||
=item summary IO device for wireless homematic
|
||||
=item summary_DE IO device für funkgesteuerte Homematic Devices
|
||||
=begin html
|
||||
|
||||
<a name="HMLAN"></a>
|
||||
<a id="HMLAN"></a>
|
||||
<h3>HMLAN</h3>
|
||||
<ul>
|
||||
The HMLAN is the fhem module for the eQ-3 HomeMatic LAN Configurator.<br>
|
||||
@ -1182,7 +1197,7 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
</ul>
|
||||
<br/><br/>
|
||||
|
||||
<a name="HMLANdefine"><b>Define</b></a>
|
||||
<a id="HMLAN-define"></a><h4>Define</h4>
|
||||
<ul>
|
||||
<code>define <name> HMLAN <ip-address>[:port]</code><br>
|
||||
<br>
|
||||
@ -1191,36 +1206,38 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<a name="HMLANset"><b>Set</b></a>
|
||||
<a id="HMLAN-set"></a><h4>Set</h4>
|
||||
<ul>
|
||||
<li><a href="#hmPairForSec">hmPairForSec</a></li>
|
||||
<li><a href="#hmPairSerial">hmPairSerial</a></li>
|
||||
<li><a href="#hmreopen">reopen</a>
|
||||
reconnect the device
|
||||
</li>
|
||||
</li>
|
||||
<li><a href="#hmrestart">restart</a>
|
||||
Restart the device
|
||||
</li>
|
||||
<li><a href="#HMLANset_reassignIDs">reassignIDs</a>
|
||||
<li><a id="HMLAN-set-reassignIDs"></a>reassignIDs<br>
|
||||
Syncs the IDs between HMLAN and the FHEM list.
|
||||
Usually this is done automatically and only is recomended if there is a difference in counts.
|
||||
</li>
|
||||
<br><br>
|
||||
</ul>
|
||||
<a name="HMLANget"><b>Get</b></a>
|
||||
<a id="HMLAN-get"></a><h4>Get</h4>
|
||||
<ul>
|
||||
<li><a href="#HMLANgetassignIDs">assignIDs</a>
|
||||
<a id="HMLAN-get-assignIDs"><b>Get</b></a>
|
||||
<li>assignIDs<br>
|
||||
Gibt eine Liste aller diesem IO zugewiesenen IOs aus.
|
||||
</li>
|
||||
</li>
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<a name="HMLANattr"><b>Attributes</b></a>
|
||||
<a id="HMLAN-attr"></a><h4>Attributes</h4>
|
||||
<ul>
|
||||
<li><a href="#addvaltrigger">addvaltrigger</a></li>
|
||||
<li><a href="#do_not_notify">do_not_notify</a></li>
|
||||
<li><a href="#attrdummy">dummy</a></li>
|
||||
<li><a href="#HMLANlogIDs">logIDs</a><br>
|
||||
<a id="HMLAN-attr-logIDs"></a>
|
||||
<li><a id="HMLAN-attr-logIDs">logIDs</a><br>
|
||||
enables selective logging of HMLAN messages. A list of HMIds or names can be
|
||||
entered, comma separated, which shall be logged.<br>
|
||||
The attribute only allows device-IDs, not channel IDs.
|
||||
@ -1229,31 +1246,27 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
<b>sys</b> will log system related messages like keep-alive<br>
|
||||
in order to enable all messages set "<b>all,sys</b>"<br>
|
||||
</li>
|
||||
<li><a name="HMLANloadLevel">loadLevel</a><br>
|
||||
<li><a id="HMLAN-attr-loadLevel"></a>loadLevel<br>
|
||||
loadlevel will be mapped to reading vaues. <br>
|
||||
0:low,30:mid,40:batchLevel,90:high,99:suspended<br>
|
||||
the batchLevel value will be set to 40 if not entered. This is the level at which
|
||||
background message generation e.g. for autoReadReg will be stopped<br>
|
||||
</li>
|
||||
<li><a href="#hmId">hmId</a></li>
|
||||
<li><a name="HMLANhmKey">hmKey</a></li>
|
||||
<li><a name="HMLANhmKey2">hmKey2</a></li>
|
||||
<li><a name="HMLANhmKey3">hmKey3</a></li>
|
||||
<li><a name="HMLANhmKey4">hmKey4</a></li>
|
||||
<li><a name="HMLANhmKey5">hmKey5</a><br>
|
||||
<li><a id="HMLAN-attr-hmKey" data-pattern="hmKey.*"></a>hmKey / hmKey2-5<br>
|
||||
AES keys for the HMLAN adapter. <br>
|
||||
The key is converted to a hash. If a hash is given directly it is not converted but taken directly.
|
||||
Therefore the original key cannot be converted back<br>
|
||||
</li>
|
||||
<li><a href="#hmProtocolEvents">hmProtocolEvents</a></li><br>
|
||||
<li><a name="HMLANrespTime">respTime</a><br>
|
||||
<li><a id="HMLAN-attr-respTime"></a>respTime<br>
|
||||
Define max response time of the HMLAN adapter in seconds. Default is 1 sec.<br/>
|
||||
Longer times may be used as workaround in slow/instable systems or LAN configurations.</li>
|
||||
<li><a name="HMLAN#wdTimer">wdTimer</a><br>
|
||||
<li><a id="HMLAN-attr-wdTimer">wdTimer</a><br>
|
||||
Time in sec to trigger HMLAN. Values between 5 and 25 are allowed, 25 is default.<br>
|
||||
It is <B>not recommended</B> to change this timer. If problems are detected with <br>
|
||||
HLMLAN disconnection it is advisable to resolve the root-cause of the problem and not symptoms.</li>
|
||||
<li><a name="HMLANhmLanQlen">hmLanQlen</a><br>
|
||||
<li><a id="HMLAN-attr-hmLanQlen">hmLanQlen</a><br>
|
||||
defines queuelength of HMLAN interface. This is therefore the number of
|
||||
simultanously send messages. increasing values may cause higher transmission speed.
|
||||
It may also cause retransmissions up to data loss.<br>
|
||||
@ -1261,7 +1274,7 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
1 - is a conservatibe value, and is default<br>
|
||||
5 - is critical length, likely cause message loss</li>
|
||||
</ul><br>
|
||||
<a name="HMLANparameter"><b>parameter</b></a>
|
||||
<a id="HMLAN-parameter"></a><h4>parameter</h4>
|
||||
<ul>
|
||||
<li><B>assignedIDsCnt</B><br>
|
||||
number of IDs that are assigned to HMLAN by FHEM.
|
||||
@ -1280,7 +1293,7 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
<li><B>msgLoadCurrent</B><br>
|
||||
Current transmit load of HMLAN. When capacity reaches 100% HMLAN stops sending and waits for
|
||||
reduction. See also:
|
||||
<a href="#HMLANloadLevel">loadLevel</a><br></li>
|
||||
<a href="#HMLAN-attr-loadLevel">loadLevel</a><br></li>
|
||||
<li><B>msgLoadHistoryAbs</B><br>
|
||||
Historical transmition load of IO.</li>
|
||||
<li><B>msgParseDly</B><br>
|
||||
@ -1288,7 +1301,7 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
It therefore gives an indication about FHEM system performance.
|
||||
</li>
|
||||
</ul><br>
|
||||
<a name="HMLANreadings"><b>parameter and readings</b></a>
|
||||
<a id="HMLAN-readings"></a><h4>parameter and readings</h4>
|
||||
<ul>
|
||||
<li><B>prot_disconnect</B> <br>recent HMLAN disconnect</li>
|
||||
<li><B>prot_init</B> <br>recent HMLAN init</li>
|
||||
@ -1305,7 +1318,7 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
=end html
|
||||
=begin html_DE
|
||||
|
||||
<a name="HMLAN"></a>
|
||||
<a id="HMLAN"></a>
|
||||
<h3>HMLAN</h3>
|
||||
<ul>
|
||||
Das HMLAN ist das fhem-Modul für den eQ-3 HomeMatic LAN Configurator welcher als IO
|
||||
@ -1324,45 +1337,46 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<a name="HMLANdefine"><b>Define</b></a>
|
||||
<a id="HMLAN-define"><b>Define</b></a>
|
||||
<ul>
|
||||
<code>define <name> HMLAN <ip-address>[:port]</code><br>
|
||||
<br>
|
||||
Der Standard-Port lautet: 1000.<br/>
|
||||
Wenn keine IP-Adresse angegeben wird, wird auch kein Gerät geöffnet; man kann
|
||||
also auch ohne angeschlossene Hardware experimentieren.
|
||||
also auch ohne angeschlossene Hardware experimentieren.
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<a name="HMLANset"><b>Set</b></a>
|
||||
<a id="HMLAN-set"><h4>Set</h4></a>
|
||||
<ul>
|
||||
<li><a href="#hmPairForSec">hmPairForSec</a></li>
|
||||
<li><a href="#hmPairSerial">hmPairSerial</a></li>
|
||||
<a id="HMLAN-set-hmreopen"><b>Set</b></a>
|
||||
<li><a href="#hmreopen">reopen</a>
|
||||
Connection zum IO device neu starten</li>
|
||||
<li><a href="#hmrestart">restart</a>
|
||||
Neustart des IOdevice
|
||||
</li>
|
||||
<li><a href="#HMLANset_reassignIDs">reassignIDs</a>
|
||||
</li>
|
||||
<li><a id="HMLAN-set-reassignIDs">reassignIDs</a>
|
||||
Synchronisiert die im HMLAN eingetragenen IDs mit der von FHEM verwalteten Liste.
|
||||
I.a. findet dies automatisch statt, koennte aber in reset Fällen abweichen.
|
||||
</li>
|
||||
</li>
|
||||
</ul>
|
||||
<br><br>
|
||||
<a name="HMLANget"><b>Get</b></a>
|
||||
<a id="HMLAN-get"></a><h4>Get</h4>
|
||||
<ul>
|
||||
<li><a href="#HMLANgetassignIDs">assignIDs</a>
|
||||
<li><a id="HMLAN-get-assignIDs">assignIDs</a>
|
||||
Gibt eine Liste aller diesem IO zugewiesenen IOs aus.
|
||||
</li>
|
||||
</li>
|
||||
</ul>
|
||||
<br><br>
|
||||
|
||||
<a name="HMLANattr"><b>Attributes</b></a>
|
||||
<a id="HMLAN-attr"><h4>Attributes</h4></a>
|
||||
<ul>
|
||||
<li><a href="#do_not_notify">do_not_notify</a></li><br>
|
||||
<li><a href="#attrdummy">dummy</a></li><br>
|
||||
<li><a href="#addvaltrigger">addvaltrigger</a></li><br>
|
||||
<li><a href="#HMLANlogIDs">logIDs</a><br>
|
||||
<li><a id="HMLAN-attr-logIDs">logIDs</a><br>
|
||||
Schaltet selektives Aufzeichnen der HMLAN Meldungen ein. Eine Liste der
|
||||
HMIds oder Namen, die aufgezeichnet werden sollen, können - getrennt durch
|
||||
Kommata - eingegeben werden.<br>
|
||||
@ -1372,35 +1386,31 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
<b>sys</b> zeichnet alle systemrelevanten Meldungen wie keep-alive auf.<br>
|
||||
<b>all,sys</b> damit wird die Aufzeichnung aller Meldungen eingeschaltet<br>
|
||||
</li>
|
||||
<li><a name="HMLANloadLevel">loadLevel</a><br>
|
||||
<li><a id="HMLAN-attr-loadLevel">loadLevel</a><br>
|
||||
loadlevel mapped den Auslastungslevel auf die Namen in ein Reading. <br>
|
||||
0:low,30:mid,40:batchLevel,90:high,99:suspended<br>
|
||||
Der batchLevel Wert wird auf 40 gesetzt., sollte er fehlen.
|
||||
Das ist der Levelbei dem die Hintergrundnachrichten z.B. durch autoReadReg gestoppt werden<br>
|
||||
</li><br>
|
||||
<li><a href="#hmId">hmId</a></li><br>
|
||||
<li><a name="HMLANhmKey">hmKey</a></li><br>
|
||||
<li><a name="HMLANhmKey2">hmKey2</a></li><br>
|
||||
<li><a name="HMLANhmKey3">hmKey3</a></li><br>
|
||||
<li><a name="HMLANhmKey4">hmKey4</a></li><br>
|
||||
<li><a name="HMLANhmKey5">hmKey5</a><br>
|
||||
<li><a id="HMLAN-attr-hmKey" data-pattern="hmKey.*"></a>hmKey / hmKey2-5<br>
|
||||
AES Schlüssel für den HMLAN Adapter. <br>
|
||||
Der Schlüssel wird in eine hash-Zeichenfolge umgewandelt. Wenn eine Hash-Folge unmittelbar
|
||||
eingegeben wird, erfolgt keine Umwandlung, sondern eine eine direkte Benutzung der Hash-Folge.
|
||||
Deshalb kann der Originalschlüssel auch nicht entschlüsselt werden.<br>
|
||||
</li>
|
||||
<li><a href="#hmProtocolEvents">hmProtocolEvents</a></li><br>
|
||||
<li><a name="HMLANrespTime">respTime</a><br>
|
||||
<li><a id="HMLAN-attr-respTime">respTime</a><br>
|
||||
Definiert die maximale Antwortzeit des HMLAN-Adapters in Sekunden. Standardwert ist 1 Sekunde.<br/>
|
||||
Längere Zeiten können übergangsweise in langsamen und instabilen Systemen oder in
|
||||
LAN-Konfigurationen verwendet werden.</li>
|
||||
<li><a name="HMLAN#wdTimer">wdTimer</a><br>
|
||||
<li><a id="HMLAN-attr-wdTimer">wdTimer</a><br>
|
||||
Zeit in Sekunden, um den HMLAN zu triggern. Werte zwischen 5 und 25 sind zulässig.
|
||||
Standardwert ist 25 Sekunden.<br>
|
||||
Es wird <B>davon abgeraten</B> diesen Timer zu verändern. Wenn Probleme mit
|
||||
HMLAN-Abbrüchen bestehen wird empfohlen die Ursache des Problems zu finden
|
||||
und zu beheben und nicht die Symptom.</li>
|
||||
<li><a name="HMLANhmLanQlen">hmLanQlen</a><br>
|
||||
<li><a id="HMLAN-attr-hmLanQlen">hmLanQlen</a><br>
|
||||
Definiert die Länge der Warteschlange des HMLAN Interfaces. Es ist deshalb die Anzahl
|
||||
der gleichzeitig zu sendenden Meldungen. Erhöhung des Wertes kann eine Steigerung der
|
||||
Übertragungsgeschwindigkeit verursachen, ebenso können wiederholte Aussendungen
|
||||
@ -1409,7 +1419,7 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
1 - ist ein Wert auf der sicheren Seite und deshalb der Standardwert<br>
|
||||
5 - ist eine kritische Länge und verursacht wahrscheinlich Meldungsverluste</li>
|
||||
</ul>
|
||||
<a name="HMLANparameter"><b>parameter</b></a>
|
||||
<a id="HMLAN-parameter"><h4>parameter</h4></a>
|
||||
<ul>
|
||||
<li><B>assignedIDsCnt</B><br>
|
||||
Anzahl der IDs, die von FHEM einem HMLAN zugeordnet sind.
|
||||
@ -1430,7 +1440,7 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
<li><B>msgLoadCurrent</B><br>
|
||||
Aktuelle Funklast des HMLAN. Da HMLAN nur eine begrenzte Kapzität je Stunde hat
|
||||
Telegramme abzusetzen stellt es bei 100% das Senden ein. Siehe auch
|
||||
<a href="#loadLevel">loadLevel</a><br></li>
|
||||
<a href="#HMLAN-attr-loadLevel">loadLevel</a><br></li>
|
||||
<li><B>msgLoadHistoryAbs</B><br>
|
||||
IO Funkbelastung vergangener Zeitabschnitte.</li>
|
||||
<li><B>msgParseDly</B><br>
|
||||
@ -1439,7 +1449,7 @@ sub HMLAN_getVerbLvl ($$$$){#get verboseLevel for message
|
||||
des Systems von FHEM.
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HMLANreadings"><b>Parameter und Readings</b></a>
|
||||
<a id="HMLAN-readings"><h4>Parameter und Readings</h4></a>
|
||||
<ul>
|
||||
<li><B>prot_disconnect</B> <br>letzter HMLAN disconnect</li>
|
||||
<li><B>prot_init</B> <br>letzter HMLAN init</li>
|
||||
|
Loading…
Reference in New Issue
Block a user