Perl erkennt Zahl nicht als Zahl

Begonnen von Bastian0302, 17 Februar 2017, 10:37:45

Vorheriges Thema - Nächstes Thema

Bastian0302

Wieso den Namen. Ich übernehme doch den Wert des Dummys Heizung... oder etwa nicht...
Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos

digiart

Versuche einmal, auf Papier die Zeilen deiner Routine aufzuschreiben und die Variablen mit den Inhalten zu ersetzen.
Dann kommt heraus, dass da steht:
$wert="Heizung" + 3

Deine Routine könnte so aussehen:
sub Heizungssteuerung($$$$) {
my ($temp_ist,$temp_soll,$heizung,$stat_fenster) = @_;
my $wert=0;
  if (Value($stat_fenster) eq "closed"){
    $wert=Value($heizung) + 3;
   }
   fhem("set $heizung ".$wert);
Anfragen ausserhalb der Threads (PN, Mail o.ä.) werden ignoriert!

marvin78

Warum sollte das so sein? Du übergibst ausschließlich Strings an die Funktion.

Die fehlen einige ganz tiefe Grundlagen.

marvin78

Den Wert eines STATES eines Devices bekommst du mit Value(), den Wert eines Readings mit ReadingsVal. Du kannst natürlich an die Funktion nur Namen übergeben und dir die Werte dann innerhalb der Funktion holen.

Bastian0302

Also es funktioniert jetzt.
Danke an alle und für die Geduld.

Lösung war das von marvin78.
Value($heizung)

Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos