FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: oniT am 23 Juni 2013, 18:16:52

Titel: at Befehl mit einem dummy ein- und ausschalten
Beitrag von: oniT am 23 Juni 2013, 18:16:52
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
Titel: Aw: at Befehl mit einem dummy ein- und ausschalten
Beitrag von: fhainz am 23 Juni 2013, 18:29:44
Hallo!

Versuchs mal so

define timer_test at +*00:02:00 {\
 if(Value("Test_Dummy" eq "Aktiv")) {\
   Test_Daten();;\
   Test_Filter ("Wert");;\
 }\
}


Grüße

Titel: Aw: at Befehl mit einem dummy ein- und ausschalten
Beitrag von: oniT am 23 Juni 2013, 19:46:44
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
Titel: Aw: at Befehl mit einem dummy ein- und ausschalten
Beitrag von: Puschel74 am 23 Juni 2013, 20:31:16
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
Titel: Aw: at Befehl mit einem dummy ein- und ausschalten
Beitrag von: fhainz am 23 Juni 2013, 20:32:51
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!
Titel: Aw: at Befehl mit einem dummy ein- und ausschalten
Beitrag von: oniT am 23 Juni 2013, 21:18:49
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
Titel: Aw: at Befehl mit einem dummy ein- und ausschalten
Beitrag von: Puschel74 am 23 Juni 2013, 21:32:27
Hallo,

mach mal ein update und dann ein shutdown restart.
Manchmal bewirkt das Wunder ;-)

Grüße
Titel: [gelöst] at Befehl mit einem dummy ein- und ausschalten
Beitrag von: oniT am 23 Juni 2013, 21:41:19
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
Titel: Aw: at Befehl mit einem dummy ein- und ausschalten
Beitrag von: Puschel74 am 23 Juni 2013, 21:54:23
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
Titel: Aw: at Befehl mit einem dummy ein- und ausschalten
Beitrag von: oniT am 23 Juni 2013, 22:11:58
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