UserReadings mit einer Funktion die Varible $NAME übergeben

Begonnen von Haecksler, 16 Januar 2016, 16:31:54

Vorheriges Thema - Nächstes Thema

Haecksler

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

marvin78

in userReadings bekommst du über

$name

den Namen des Devices (Kleinschreibung).



Haecksler

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