Hallo Leute,
ich verzweifle eben an etwas, wo ich dachte es ist ganz einfach da es ja eine vielzahl von Beispielen gibt. Allerdings habe ich keines mit der Ausführung des
Folgende Abfrage:
define timer_test at +*00:02:00 {Test_Daten()};;\
{Test_Filter ("Wert");;\
}
(wobei Test ein Code in der 99_myUtils.pm)
wollte ich so erweitern:
define timer_test at +*00:02:00 {\
if(Value("Test_Dummy" eq "Aktiv"));;\
{Test_Daten()};;\
{Test_Filter ("Wert");;\
}\
}
dass die Ausführung mit einem Schalter aktiv oder inaktiv gesetzt werden kann. Allerdings geht es nicht. Es wird nichts ausgeführt. Würde bitte mal jemand drüber schauen wo das Problem ist?
Danke
Gruß,
TinoB
Hallo!
Versuchs mal so
define timer_test at +*00:02:00 {\
if(Value("Test_Dummy" eq "Aktiv")) {\
Test_Daten();;\
Test_Filter ("Wert");;\
}\
}
Grüße
Hallo,
geht leider auch nicht. Ich habe zur Vorsicht auch den Value auf ne "Inaktiv" gesetzt, nicht das der Wert vom Dummy falsch gesetzt ist. Hilft auch nichts.
Gruß,
TinoB
Hallo,
dann versuch doch mal das:
+*00:02:00 {
my $wert = Value("Test_Dummy");
Log 3,("Dummy hat ".$wert);
if(Value($wert eq "Aktiv")) {
Log 3,("If wurde geprüft");
Test_Daten();
Test_Filter ("Wert");
}
}
Es genügt wenn du das in das DEF des at kopierst - ich bearbeite nur das DEF und kümmer mich nicht um Zeilenabschlüsse.
Grüße
Zitat von: Puschel74 schrieb am So, 23 Juni 2013 20:31Es genügt wenn du das in das DEF des at kopierst - ich bearbeite nur das DEF und kümmer mich nicht um Zeilenabschlüsse
Guter Tipp Danke!
Hi Puschel,
ja es wird
3: Dummy hat Aktiv
zurück gegeben. Allerdings nicht der 2.Log mit der Prüfung. Jetzt versteh ich nichts mehr. Zumindest der 2.Log muss doch noch zurück gegeben werden. Das ist doch ein ganz einfache Abfrage.
Gruß,
TinoB
Hallo,
mach mal ein update und dann ein shutdown restart.
Manchmal bewirkt das Wunder ;-)
Grüße
Hallo Puschel,
ich habe eben bemerkt, dass das nicht gehen kann. Ich habe den Code so gändert:
+*00:02:00 {
my $wert = Value("Test_Dummy");
Log 3,("Dummy hat ".$wert);
if($wert eq "Aktiv") {
Log 3,("If wurde geprüft");
Test_Daten();
Test_Filter ("Wert");
}
}
und jetzt kommen auch die Logeinträge als auch der Wert wird übergeben. Getestet mit "Aktiv" und "Inaktiv".
Allerdings was ich nicht verstehe, es ist doch bis auf die Abfrage des Value
if(Value("Test_Dummy" eq "Aktiv"))
nichts anders. Oder aber muss es so heißen?
if(Value("Test_Dummy") eq "Aktiv")))
Das wäre die Erklärung.
Edit: Ja korrekt, so ist es richtig:
if(Value("Test_Dummy") eq "Aktiv")
Danke
Gruß,
TinoB
Hallo,
Fehler von mir - sorry.
Mit
Zitatmy $wert = Value("Test_Dummy");
wird der Wert ja schon in $wert geschrieben
Damit
if(Value($wert eq "Aktiv")) {
kann die Abfrage natürlich nicht klappen sondern
if ($wert eq "Aktiv") {
ist natürlich richtig.
Sorry nochmal.
Grüße
kein Problem, ich hätte doch nur am Anfang die if Abfrage:
define timer_test at +*00:02:00 {\
if(Value("Test_Dummy" eq "Aktiv"));;\
{Test_Daten()};;\
{Test_Filter ("Wert");;\
}\
}
richtig setzen müssen ;-) Aber manchmal sieht man man einfach nicht.
Danke
Gruß,
TinoB