FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: slukeyyy am 14 September 2022, 09:58:02

Titel: Solarregler Notify Perl
Beitrag von: slukeyyy am 14 September 2022, 09:58:02
Hallo, ich scheitere gerade an meinen ganz wenigen Perl-Kentnissen.
Ich habe ein Notify geschrieben für eine Solarregler-Funktion.
Ich habe 10 Variablen mit Stufen, die einen PWM-Wert enthalten.
Diesen PWM Wert möchte ich an meinen Tasmota senden, um einen Dimmer anzusteuern:
n_batterieladen {
my $Dimmerstufe0=0;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe0
my $Dimmerstufe1=22;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe1
my $Dimmerstufe2=24;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe2
my $Dimmerstufe3=37;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe3
my $Dimmerstufe4=47;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe4
my $Dimmerstufe5=52;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe5
my $Dimmerstufe6=58;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe6
my $Dimmerstufe7=64;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe7
my $Dimmerstufe8=66;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe8
my $Dimmerstufe9=70;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe9
my $Dimmerstufe10=74;; #Setzen der Variable für die Festlegung des PCT Wertes bei Dimmerstufe10
my $aktStromverbrauch=0;; #Setzen der Variable für den aktuellen Stromverbrauch am Zähler
$aktStromverbrauch=ReadingsVal("Strom","power","0");; #Auslesen des aktuellen Stromverbrauchs vom Zähler
my $aktDimmerstufe=0;; #Setzen der Variable für aktuelle Dimmerstufe
my $pct=ReadingsVal("MQTT2_PWM_Solarregler","pct","0");; #Auslesen des Solarreglerwertes

if ($aktStromverbrauch < -30) { #Überprüfen ob Stromzähler eingestellten Wert enthält
if ($aktDimmerstufe < 10) {
$aktDimmerstufe=($aktDimmerstufe+1);;
$pct='$Dimmerstufe'.$aktDimmerstufe;;
}
}

}

In der folgenden Zeile liegt der Fehler

$pct='$Dimmerstufe'.$aktDimmerstufe;;

Ich möchte quasi, dass sich die aktuelle Dimmerstufe an die "$Dimmerstufe" ranhängt und mir den Wert der jeweiligen Dimmerstufe in $PCT reinschreibt.
Ich hoffe jedmand kann mir helfen, da ich schon hunderte Webseiten bzgl. Perl gelesen habe und immernoch keine Lösung gefunden habe.
Titel: Antw:Solarregler Notify Perl
Beitrag von: Beta-User am 14 September 2022, 10:44:09
Vorab mal willkommen im Forum.

Variablennamen kann man afaik nicht auf diese Weise zusammensetzen. Eleganter ist es, sowas über einen Hash zu lösen.

Die dort dargestellte Syntax ist zwar suboptimal, aber vielleicht hilft es vom Verständnis her weiter: http://www.mathe2.uni-bayreuth.de/perl/GK/hashes.htm
Titel: Antw:Solarregler Notify Perl
Beitrag von: DetlefR am 14 September 2022, 12:39:29
Bei doppeltem Hochkomma werden Variablen Werte ersetzt
$pct="$Dimmerstufe".$aktDimmerstufe;;
bei einfachem bleibt dir $Dimmerstufe so erhalten
$pct='$Dimmerstufe'.$aktDimmerstufe;;
Aber eigentlich kannst du sie auch ganz weglassen, da kein konstanter Text vorkommt
$pct=$Dimmerstufe.$aktDimmerstufe;;
Titel: Antw:Solarregler Notify Perl
Beitrag von: Beta-User am 14 September 2022, 13:36:46
Zitat von: DetlefR am 14 September 2022, 12:39:29
Bei doppeltem Hochkomma werden Variablen Werte ersetzt
$pct="$Dimmerstufe".$aktDimmerstufe;;
bei einfachem bleibt dir $Dimmerstufe so erhalten
$pct='$Dimmerstufe'.$aktDimmerstufe;;
Aber eigentlich kannst du sie auch ganz weglassen, da kein konstanter Text vorkommt
$pct=$Dimmerstufe.$aktDimmerstufe;;
Du hast dir aber schon Gedanken dazu gemacht, was der TE erreichen will, oder?
Titel: Antw:Solarregler Notify Perl
Beitrag von: DetlefR am 14 September 2022, 13:41:22
ZitatDu hast dir aber schon Gedanken dazu gemacht, was der TE erreichen will, oder?

Wenn er mit Variablen arbeitet bin ich mal davon ausgegangen, dass ihn der Inhalt interessiert.
Titel: Antw:Solarregler Notify Perl
Beitrag von: Beta-User am 14 September 2022, 13:45:21
Zitat von: DetlefR am 14 September 2022, 13:41:22
Wenn er mit Variablen arbeitet bin ich mal davon ausgegangen, dass ihn der Inhalt interessiert.
Er will erst den Variablennamen zusammenbasteln, um dann dessen Inhalt zu ermitteln. Also tu mir den Gefallen und quatsch nicht ständig unüberlegt dazwischen, DANKE.