FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hardy1204 am 30 Juli 2023, 16:00:41

Titel: Steckdose nach Temperatur schalten
Beitrag von: hardy1204 am 30 Juli 2023, 16:00:41
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?
Titel: Aw: Steckdose nach Temperatur schalten
Beitrag von: JoWiemann am 30 Juli 2023, 18:03:56
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
Titel: Aw: Steckdose nach Temperatur schalten
Beitrag von: hardy1204 am 31 Juli 2023, 07:51:04
Danke für die schnelle Analyse,
es war das eine @,
Nun funktioniert es.
Titel: Aw: Steckdose nach Temperatur schalten
Beitrag von: Beta-User am 31 Juli 2023, 08:06:58
Bitte an den TE: Thread verschieben, das gehört in den Anfängerbereich, aber jedenfalls nicht in den für (fertige) Schnipsel!