Hallo,
hab mich heute mal hingesetzt und versucht aus dem vorhandenen (danke an alle die daran beteiligt waren), das in 99_MyUtils.pm umzusetzen, dazu muss ich sagen das ich keinerlei Programmiererfahrungen habe (learning by doing) rausgekommen ist dabei folgendes:
durch die Umsetzung in MyUtils ist es möglich durch Übergabe verschiedener Parameter den Wlan Status einzubinden ohne Anpassungen am Code vornehmen zu müssen. (Userfriendly)
2 dummys definieren und ein at wie im Beispiel definieren fertig.
Bei mir habe ich das für insgesamt 4 WlanDevices gemacht und zu meiner eigenen Überraschung funktioniert es, man sollte aber darauf achten das die Aktualisierung für die verschiedenen at definitionen nicht zur gleichen Zeit ablaufen, also nicht alle mit at +*00:05:00 definieren sondern unterschiedlich. Vieleicht gibts hierfür noch Verbesserungsvorschläge von jemand der Ahnung hat.
Was mich noch ein bischen stört ist der zweite dummy der ja für das setzen der $LanID missbraucht wird if($TestUser =~ m/$FBLandevice/){fhem "set $WlanNrdummy $lanDev";}
ich hatte dann sowas versucht wie if($TestUser =~ m/$FBLandevice/){$LanID = $lanDev} aber erfolglos, da gibts doch bestimmt was ?
Den seperaten HomeStatus hab ich bei dieser Variante rausgenommen (brauchte ich nicht) kann man aber einfach wieder einfügen, und die abzufragenden Devices hab ich nur bis 20 gemacht.
Also wer möchte :
Den folgenden Code in eine vorhandene 99_MyUtils.pm kopieren oder eine neue wie
hier beschrieben erstellen.
###############################FB Wlan/LAN Device Status###################################################################
#
# define nameofWlanstat dummy
# define nameofWlanDevNr dummy
# define MyWlanStatus at +*00:05:00 { fbwlanstat('nameofFBLandevice','nameofWlanstatdummy','nameofWlanDevNrdummy') }
# Beispiel:
# define WLAN_Status dummy
# define Smartphone1 dummy
# define MyWlanStatus at +*00:05:00 { fbwlanstat('PC-192-168-178-44','WLAN_Status','Smartphone1') }
#
sub
fbwlanstat
{
my $FBLandevice = $_[0];
my $Wlandummy = $_[1];
my $WlanNrdummy = $_[2];
my @Devicelist=("0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20");
my $UserLanID="";
my $StatusLanID="";
my $TestUser="";
my $LanID = Value("$WlanNrdummy");
$UserLanID=qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice$LanID/name);
$StatusLanID=qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice$LanID/active);
$StatusLanID=$StatusLanID * 1;
if ($UserLanID =~ m/$FBLandevice/) {
if ($StatusLanID == 1) {
if (Value("$Wlandummy") ne "1") {
fhem "set $Wlandummy 1";
}
}
else {
if (Value("$Wlandummy") ne "0") {
fhem "set $Wlandummy 0";
}
};
Am Montag, 28. Mai 2012 12:04:10 UTC+2 schrieb AnonymousHolger: