Hallo
habe in der 99_myUtils.pm diesen Code
#Das ist die Berechnung der aktuell nutzbaren Energiemenge (Temperaturen >40°, 8 Fühler, Puffer 3200 l ).
sub CalcEnergiemenge(@)
{
my @Array=@{shift()};
my $Sum = 0;
foreach(@Array)
{ $Sum += ($_ > 40 ? $_ : 40) }
return sprintf("%d", (($Sum - 180)/ 8 * 3200 * 0.001163));
}
diesen möchte ich per userreading aufrufen wie kann ich da ein array senden.
so klappt es nicht
attr myuvr_messuebersicht userReadings Energiemenge {CalcEnergiemenge (ReadingsVal"myuvr_messuebersicht","Sensor01", 0) , (ReadingsVal"myuvr_messuebersicht","Sensor02", 0),(ReadingsVal"myuvr_messuebersicht","Sensor03", 0),(ReadingsVal"myuvr_messuebersicht","Sensor04", 0),(ReadingsVal"myuvr_messuebersicht","Sensor05", 0),(ReadingsVal"myuvr_messuebersicht","Sensor06", 0),(ReadingsVal"myuvr_messuebersicht","Sensor07", 0),(ReadingsVal"myuvr_messuebersicht","Sensor08", 0)}
er gibt als fehlermeldung dann
Error evaluating myuvr_messuebersicht userReading Energiemenge: Can't use string ("74.6") as an ARRAY ref while "strict refs" in use at ./FHEM/99_myUtils.pm line 170
Gruß Josty
Hallo
hab es selbst rausgefunden.
in der fhem.cfg haben zwei klammern gefehlt
{CalcEnergiemenge ((ReadingsNum"myuvr_messuebersicht","Sensor01", 0) , (ReadingsVal"myuvr_messuebersicht","Sensor02", 0),(ReadingsVal"myuvr_messuebersicht","Sensor03", 0),(ReadingsVal"myuvr_messuebersicht","Sensor04", 0),(ReadingsVal"myuvr_messuebersicht","Sensor05", 0),(ReadingsVal"myuvr_messuebersicht","Sensor06", 0),(ReadingsVal"myuvr_messuebersicht","Sensor07", 0),(ReadingsVal"myuvr_messuebersicht","Sensor08", 0))}
und die 99_myUtils.pm hab ich so angepasst:
#Das ist die Berechnung der aktuell nutzbaren Energiemenge (Temperaturen >40°, 8 Fühler, Puffer 3200 l ).
sub CalcEnergiemenge(@)
{
my $Sum = 0;
foreach(@_)
{ $Sum += ($_ > 40 ? $_ : 40) }
return sprintf("%d", (($Sum - 180)/ 8 * 3200 * 0.001163));
}
Gruß Josty