Da ich nichts besseres gefunden habe, möchte hier https://forum.fhem.de/index.php?topic=5973.msg23690#msg23690 noch mal anknüpfen.
Würde auch gern eine Steckdose nach Temperatur schalten, mache das bisher über die Alarmfunktion des Temperaturfühlers.
zB so, define n_Heizstab_Speicher_off notify Speicher_Oben:alarm:.*1 set Heizstab_Speicher off
define n_Heizstab_Speicher_on notify Speicher_Oben:alarm:.*0 set Heizstab_Speicher on
würde das aber gern anders lösen, so wie dort beschrieben.
Wenn ich das jetzt so für mich ändere
define Heizstab_Speicher.n1 notify Speicher_Oben:.*temperature.* { my @@tf =
split(" ", $value{"Speicher_Oben"});; if ($tf[1] < 55.0) { fhem "set
Heizstab_Speicher on-for-timer 960" };; }
bekomme ich die Fehlermeldung
Can't use global @@ in "my" at (eval 239715) line 1, near "my @@"
syntax error at (eval 239715) line 1, near "@@tf "
Global symbol "@tf" requires explicit package name (did you forget to declare "my @tf"?) at (eval 239715) line 1.
syntax error at (eval 239715) line 1, near "}}"
Kann mir jemand erklären was ich da Falsch mache?
Hallo,
@@ ist auch bei "RAW defintion" ein Fehler. Also auf ein @ reduzieren:
my @tf = split(" ", $value{"Speicher_Oben"})
Mir ist nur nicht klar, wie Du auf copy/paste kommst.
Die Perl Funktion split überführt einen Text/Auflistung in ein Array, basierend auf dem mitgegebenen Trenner.
Beispiel:
my $Text = "150 24 300";
my @Array = split(" ", $Text);
$Array[0] == 150
$Array[1] == 24
$Array[2] == 300
Enthält denn Dein $value{"Speicher_Oben"} eine durch Leerzeichen getrennte Werteliste, so dass $tf[1] die Temperatur beinhaltet.
Grüße Jörg
Danke für die schnelle Analyse,
es war das eine @,
Nun funktioniert es.
Bitte an den TE: Thread verschieben, das gehört in den Anfängerbereich, aber jedenfalls nicht in den für (fertige) Schnipsel!