Hauptmenü

99_Utils.pm Fehlermeldung

Begonnen von kutschi, 29 März 2013, 23:38:02

Vorheriges Thema - Nächstes Thema

kutschi

Hallo,

ich habe folgende Meldung in der 99_Utils.pm

2013.03.29 23:29:39 1: reload: Error:Modul 99_Utils deactivated:
 Illegal declaration of subroutine main::ltrim at ./FHEM/99_Utils.pm line 77, <$fh> line 3.

Meine Utils sieht wie folgt aus:
Mir fehlt da noch etwas der durchblick.

Gruß Kutschi

##############################################
# $Id: 99_Utils.pm 1932 2012-10-06 20:15:33Z ulimaass $
package main;

use strict;
use warnings;
use POSIX;

sub
Utils_Initialize($$)
{
 my ($hash) = @_;
}

sub
time_str2num($)
{
 my ($str) = @_;
 my @a = split("[- :]", $str);
 return mktime($a[5],$a[4],$a[3],$a[2],$a[1]-1,$a[0]-1900,0,0,-1);
}

sub
min($$)
{
 my ($a,$b) = @_;
 return $a if($a lt $b);
 return $b;
}

sub
max($$)
{
 my ($a,$b) = @_;
 return $a if($a gt $b);
 return $b;
}

sub
abstime2rel($)
{
 my ($h,$m,$s) = split(":", shift);
 $m = 0 if(!$m);
 $s = 0 if(!$s);
 my $t1 = 3600*$h+60*$m+$s;

 my @now = localtime;
 my $t2 = 3600*$now[2]+60*$now[1]+$now[0];
 my $diff = $t1-$t2;
 $diff += 86400 if($diff <= 0);

 return sprintf("%02d:%02d:%02d", $diff/3600, ($diff/60)%60, $diff%60);
}


######## trim #####################################################
# What  : cuts blankspaces from the beginning and end of a string
# Call  : { trim(" Hello ") }
# Source: http://www.somacon.com/p114.php ,
#
http://www.fhemwiki.de/wiki/TRIM-Funktion-Anfangs/EndLeerzeichen_aus_Strings_entfernen
sub trim($)
{
  my $string = shift;
  $string =~ s/^\s+//;
  $string =~ s/\s+$//;
  return $string;
}

######## ltrim ####################################################
# What  : cuts blankspaces from the beginning of a string
# Call  : { ltrim(" Hello") }
# Source: http://www.somacon.com/p114.php ,
#
http://www.fhemwiki.de/wiki/TRIM-Funktion-Anfangs/EndLeerzeichen_aus_Strings_entfernensub
ltrim($)
sub ltrim($)
{
  my $string = shift;
  $string =~ s/^\s+//;
  return $string;
}

######## rtrim ####################################################
# What  : cuts blankspaces from the end of a string
# Call  : { rtrim("Hello ") }
# Source: http://www.somacon.com/p114.php ,
#
http://www.fhemwiki.de/wiki/TRIM-Funktion-Anfangs/EndLeerzeichen_aus_Strings_entfernensub
rtrim($)
sub rtrim($)
{
  my $string = shift;
  $string =~ s/\s+$//;
  return $string;
}

######## UntoggleDirect ###########################################
# What  : For devices paired directly, converts state 'toggle' into 'on' or
'off'
# Call  : { UntoggleDirect("myDevice") }
#         define untoggle_myDevice notify myDevice { UntoggleDirect
("myDevice") }
# Source:
http://www.fhemwiki.de/wiki/FS20_Toggle_Events_auf_On/Off_umsetzen
sub UntoggleDirect($)
{
my ($obj) = shift;
Log 4, "UntoggleDirect($obj)";
if (Value($obj) eq "toggle"){
  if (OldValue($obj) eq "off") {
    {fhem ("setstate ".$obj." on")}
  }
  else {
    {fhem ("setstate ".$obj." off")}
  }
}
else {
  {fhem "setstate ".$obj." ".Value($obj)}
}
}


######## UntoggleIndirect #########################################
# What  : For devices paired indirectly, switches the target device 'on' or
'off' also when a 'toggle' was sent from the source device
# Call  : { UntoggleIndirect("mySensorDevice","myActorDevice","50%") }
#         define untoggle_mySensorDevice_myActorDevice notify
mySensorDevice { UntoggleIndirect
("mySensorDevice","myActorDevice","50%%") }
# Source:
http://www.fhemwiki.de/wiki/FS20_Toggle_Events_auf_On/Off_umsetzen
sub UntoggleIndirect($$$)
{
 my ($sender, $actor, $dimvalue) = @_;
 Log 4, "UntoggleDirect($sender, $actor, $dimvalue)";
 if (Value($sender) eq "toggle")
 {
   if (Value($actor) eq "off") {fhem ("set ".$actor." on")}
   else {fhem ("set ".$actor." off")}
 }
 ## workaround for dimming currently not working with indirect pairing
 ## (http://culfw.de/commandref.html: "TODO/Known BUGS - FS20 dim commands
should not repeat.")
 elsif (Value($sender) eq "dimup") {fhem ("set ".$actor." dim100%")}
 elsif (Value($sender) eq "dimdown") {fhem ("set ".$actor." ".$dimvalue)}
 elsif (Value($sender) eq "dimupdown")
 {
   if (Value($actor) eq $dimvalue) {fhem ("set ".$actor." dim100%")}
      ## Heuristic above doesn't work if lamp was dimmed, then switched
off, then switched on, because state is "on", but the lamp is actually
dimmed.
   else {fhem ("set ".$actor." ".$dimvalue)}
   sleep 1;
 }
 ## end of workaround
 else {fhem ("set ".$actor." ".Value($sender))}

 return;
}


######## FhemLanStat  ############
# Aufrufbeschreibung: FhemLanStat('ip-Adresse oder Netzwerkname','Name
Dummy',['ip-Adresse oder Netzwerkname','Name Dummy'],[...])

sub
FhemLanStat($@)
{
 my $laenge = 0;
 my $i = 0;
 my $net_device="";
 my $dm_device ="";
 my $attendance="Abwesend";
 my $ret = "";

 $laenge = @_;
 if (($laenge % 2) ne 0){
   $ret = "Anzahl Parameter nicht korrekt.";
       return $ret;
 }

 for ($i=0;$i < $laenge;$i+=2){

   $net_device = $_[$i];
   $dm_device  = $_[($i+1)];

   # Vollstaendigen Pfad zum Script angeben
   $net_device=qx(/opt/fhem/FHEM/FhemUtils/lanping.sh $net_device);
   if(right(trim($net_device), 2) eq "Ok"){
       $attendance="Anwesend";
   } else {
       $attendance="Abwesend";
   }


   fhem "set $dm_device $attendance";
 }
}


sub right{
   my ($string,$nr) = @_;
   return substr $string, -$nr, $nr;
}

sub left{
   my ($string,$nr) = @_;
   return substr $string, 0, $nr;
}

sub XBMC_Status
{
my $device = $_[0];
my $status ="Wert nicht durch Funktion beschrieben";

$status  = qx(service xbmc status);

{fhem ("set $device $status")};

return ();
}




1;

MisterEltako

Nach erstem Überfliegen deins Textes würde ich auf die fehlende Auskommentierung tippen:

######## rtrim ####################################################
# What : cuts blankspaces from the end of a string
# Call : { rtrim("Hello ") }
# Source: http://www.somacon.com/p114.php ,
#
#http://www.fhemwiki.de/wiki/TRIM-Funktion-Anfangs/EndLeerzeichen_aus_Strings_entfernensub
#rtrim($)
sub rtrim($)
{
my $string = shift;
$string =~ s/\s+$//;
return $string;
}

Weiterhin bei allen von dir eingetragenen http-Links, z.B
# Source:
#http://www.fhemwiki.de/wiki/FS20_Toggle_Events_auf_On/Off_umsetzen
sub UntoggleIndirect($$$)

u.s.w....

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310