Hauptmenü

Solarregler Notify Perl

Begonnen von slukeyyy, 14 September 2022, 09:58:02

Vorheriges Thema - Nächstes Thema

slukeyyy

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.

Beta-User

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
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

DetlefR

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;;

Beta-User

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?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

DetlefR

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.

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors