Hallo,
bin am verzweifeln, vielleicht kann mir jemand kurz auf die Sprünge helfen.
Ich will $NAME als Variable an eine Funktion übergeben, leider ohne erfolg.
Das userReading schaut so aus:
userReadings Zeit1Mo {Zeitenheizung($NAME)}
Die Funktion so:
# UserReadings Zeiten Heizung
sub Zeitenheizung($) {
my ($HZ) = @_;
$ HZ = ReadingsVal($HZ,"state","");
my @zeiten = split(/\:/,$HZ);
$zeiten[0] = sprintf("%d",$zeiten[0]);
$zeiten[1] = sprintf("%.0f",($zeiten[1]/60*10));
$zeiten[2] = ".";
return ($zeiten[0].$zeiten[2].$zeiten[1]);}
Folgender fehler erscheint, dann im Reading:
Error evaluating HeizungZ1Mo userReading Zeit1Mo: Global symbol "$NAME" requires explicit package name at (eval 648669) line 1.
Kann mir bitte jemand auf die Sprünge helfen.
Danke!
Gruß,
Stefan
in userReadings bekommst du über
$name
den Namen des Devices (Kleinschreibung).
Perfekt! Danke! ;D
Hallo zusammen,
nun habe ich in dieser Sache nochmals ein Problem, das in der Funktion beschriebene modify wird leider nicht ausgeführt.
# UserReadings Zeiten Heizung
sub Zeitenheizung($) {
my ($HZ) = @_;
my $DZ = ReadingsVal($HZ,"state","");
my @zeiten = split(/\:/,$DZ);
$zeiten[0] = sprintf("%d",$zeiten[0]);
$zeiten[1] = sprintf("%.0f",($zeiten[1]/60*10));
$zeiten[2] = ".";
my @TZ = split(/[0-9]/,$HZ);
$TZ[2] = "HeizungZ1".$TZ[1]; $TZ[3] = "HeizungZ2".$TZ[1]; $TZ[4] = "HeizungZ3".$TZ[1]; $TZ[5] = "HeizungZ4".$TZ[1];
fhem("modify ".$HZ." HeizungVar1 1|{Value(".$TZ[2].")}|An 1|{Value(".$TZ[3].")}|Aus 1|{Value(".$TZ[4].")}|An 1|{Value(".$TZ[5].")}|Aus");
return $zeiten[0].$zeiten[2].$zeiten[1];}
Hat vielleicht jemand einen Tipp?
Danke!
Gruß,
Stefan