Array mit userreadings übergeben

Begonnen von jostmario, 19 März 2015, 23:03:36

Vorheriges Thema - Nächstes Thema

jostmario

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

Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611

jostmario

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

Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611