FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: haneub am 18 April 2016, 21:53:27

Titel: Berechnungen in 99_Utils.pm
Beitrag von: haneub am 18 April 2016, 21:53:27
Hallo,
habs auch nach 5h nicht geschafft ein Beispiel zu finden, wie ein Wert in einer subroutine in 99_Utils.pm übergeben wird und wieder zurück kommt.
Ich habe ein Gerät "VSR" mit Readings (z.B. REG_HC_TEMP_Extract das wird z.B. mit dem Wert 18 angezeigt.
Ich hab in 99_Utils.pm
sub
Wirkungsgrad($$$)
{
my ($Zuluft,$Abluft,$Frischluft) = @_;
my $eta=($Zuluft-$Frischluft)/($Abluft-$Frischluft);
return $eta;
}

div bei Null muss ich da noch abfangen..
Versucht habe ich ein
attr VSR userReadings eta {Wirkungsgrad("REG_HC_TEMP_Overheat","REG_HC_TEMP_Extract","REG_HC_TEMP_Outdoor");}
bekomme da aber immer nur als eta 0
Ich habs auch schon mit Value bzw. ReadingsVal ohne Erfolg versucht.
Wie bekomme ich die Werte der Readings in die Subroutine und das Ergebnis wieder zurück?
Vielen Dank, Harald
Titel: Antw:Berechnungen in 99_Utils.pm
Beitrag von: JMW am 18 April 2016, 22:04:57
Z.B. so:


define di_Test DOIF ( "Trigger" ) ( {
                                     my $returnWert = Wirkungsgrad([Zuluftwert], [Abluftwert], [Frischluftwert]);
                                     fhem("set etaWert $returnWert");
                                   } )


Titel: Antw:Berechnungen in 99_Utils.pm
Beitrag von: haneub am 19 April 2016, 21:43:30
Hallo,
danke für den Code
Das funktioniert irgendwie auch nicht:
ERROR:

di_Test DOIF: no trigger in condition: "REG_HC_TEMP_Outdoor" Unknown command my, try help. Unknown command fhem("set, try help. Unknown command }, try help.
Harald
Titel: Antw:Berechnungen in 99_Utils.pm
Beitrag von: JoWiemann am 19 April 2016, 21:55:02
Zitat von: haneub am 18 April 2016, 21:53:27
Hallo,
habs auch nach 5h nicht geschafft ein Beispiel zu finden, wie ein Wert in einer subroutine in 99_Utils.pm übergeben wird und wieder zurück kommt.
Ich habe ein Gerät "VSR" mit Readings (z.B. REG_HC_TEMP_Extract das wird z.B. mit dem Wert 18 angezeigt.
Ich hab in 99_Utils.pm
sub
Wirkungsgrad($$$)
{
my ($Zuluft,$Abluft,$Frischluft) = @_;
my $eta=($Zuluft-$Frischluft)/($Abluft-$Frischluft);
return $eta;
}

div bei Null muss ich da noch abfangen..
Versucht habe ich ein
attr VSR userReadings eta {Wirkungsgrad("REG_HC_TEMP_Overheat","REG_HC_TEMP_Extract","REG_HC_TEMP_Outdoor");}
bekomme da aber immer nur als eta 0
Ich habs auch schon mit Value bzw. ReadingsVal ohne Erfolg versucht.
Wie bekomme ich die Werte der Readings in die Subroutine und das Ergebnis wieder zurück?
Vielen Dank, Harald

Ich denke, dass die Übergabewerte "REG_HC_TEMP_Overheat","REG_HC_TEMP_Extract","REG_HC_TEMP_Outdoor" keine Werte beinhalten. Ersetz doch mal durch ReadingsVal("devicename", "REG_HC_TEMP_Overheat",0) usw.

Grüße Jörg