Autor Thema: Syntax error at  (Gelesen 2865 mal)

arko20

  • Gast
Syntax error at
« am: 10 März 2013, 16:30:14 »
Hallo zusammen ,

ich bitte euch um eine Hilfestellung zu folgendem Problem,
ich versuche eine Zeitschaltung duchzuführen mit dem Türkontakt (D4) als Auslöser
in Abhängigkeit von Zeit und Wochentag , das Objekt ist eine Lampe (I1).


(siehe Anhang / see attachement)


bekomme leider diese Fehlermeldung nicht weg
WeckenFD....


(siehe Anhang / see attachement)


Könnt ihr mir bitte helfen bin langsam am verzweifeln,
habe versucht Klammern zu ändern , Punkte zu setzen alles ohne Erfolg.
Vielen Dank

Offline MisterEltako

  • Sr. Member
  • ****
  • Beiträge: 524
Aw: Syntax error at
« Antwort #1 am: 10 März 2013, 20:21:12 »
Versuche es zunächst mit Änderung der Vergleiche:
($now gt "07:00" || $now lt "08:00")
sollte hier stehen.

Bitte den Code nicht als Bild sondern als Text posten, sonst muss man beim Testen deines Konstructs alles abschreiben. ;o)

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

arko20

  • Gast
Aw: Syntax error at
« Antwort #2 am: 10 März 2013, 21:31:16 »
Hallo ,

tschuldigung,

an die einfachsten Dinge denkt man vor
lauter Gesuche nicht mehr.

Danke erstmal für deinen Tipp leider
kam immer noch eine Fehlermeldung.

Grüsse
TRX_ARC_D4:on.* {my $now=sprintf("%%02d:%%02d",$hour,$min);{if( $now gt "07:00" || $now lt "08:00")};{fhem ("define LampAn at *04:48:00");{fhem ("set TRX_ARC_I1 on")}};{fhem ("define LampAuss at *04:50:00");{fhem ("set TRX_ARC_I1 off")}}}







2013.03.10 20:44:30 3: WeckenFD return value: syntax error at (eval 72) line 1, at EOF

Offline MisterEltako

  • Sr. Member
  • ****
  • Beiträge: 524
Aw: Syntax error at
« Antwort #3 am: 10 März 2013, 23:09:24 »
define WeckenFD notify TRX_ARC_D4:on.* {\
my $now=sprintf("%%02d:%%02d",$hour,$min);;\
if( $now gt "07:00" || $now lt "08:00") {\
     if (defined($defs{LampAn} {fhem('delete LampAn')}
     if (defined($defs{LampAuss} {fhem('delete LampAuss')}
     fhem ("define LampAn at *04:48:00 set TRX_ARC_I1 on;; define LampAuss at *04:50:00 set TRX_ARC_I1 off")}
}


Der Sinn erschließt sich mir nicht ganz. So müssten die beiden "at's" angelegt werden, wenn die aktuelle Uhrzeit zw. 7 und 8 Uhr ist???? Ist das so gewollt? Zumindestens solltest du noch Abfragen, ob die "at's" schon existieren:

if (defined($defs{LampAn})) {fhem('delete LampAn')}
if (defined($defs{LampAuss})) {fhem('delete LampAuss')}

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Offline Rohan

  • Hero Member
  • *****
  • Beiträge: 1060
  • Bin kein Hero, bin Anwender
    • http://keine
Aw: Syntax error at
« Antwort #4 am: 11 März 2013, 14:51:19 »
Hallo zusammen,

eine Frage zum Code:

if( $now gt "07:00" || $now lt "08:00") {\

1. Es soll eine Aktion zwischen 07:00 und 08:00 Uhr erfolgen, oder?

2. "||" ist der oder-Operator, oder?

3. Um 05:00 Uhr ist der linke Teil der Bedingung (später ("gt") als 07:00 Uhr) nicht erfüllt, der rechte (früher ("lt") als 08:00 Uhr) erfüllt, also ist doch auch um 05:00 Uhr die Bedingung für "if" erfüllt, oder?

4. Um 09:00 Uhr ist der linke Teil der Bedingung (später ("gt") als 07:00 Uhr) erfüllt, der rechte (früher ("lt") als 08:00 Uhr) nicht erfüllt, also ist doch auch um 09:00 Uhr die Bedingung für "if" erfüllt, oder?

5. Also wird die Bedingung 24 Stunden am Tag erfüllt, oder?

Ergo müsste "||" doch durch "&&" ersetzt werden, oder?

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

arko20

  • Gast
Aw: Syntax error at
« Antwort #5 am: 11 März 2013, 19:47:45 »
Hallo,

erst mal danke für das rege Interesse .
Ich erkläre mal kurz den Hintergrund der Schaltung.
Die Schaltung ist eine Art Notwecker falls mein normaler Wecker
versagt.

Ich möchte folgendes bewirken,
wenn ich in der Zeit von 7 Uhr bis 8 Uhr die Wohnungstür öffne (habe Spätdienst)
erkennt das der Funkschalter D4 und am nächsten Tag soll 04.48 Uhr - 04.50 Uhr der
Funkschalter  I1 die Lampe einschalten und mich zum Frühdienst aus dem Bett werfen ;-),am nächsten Tag dann nicht da Spätdienst.
Das wechselt bei mir jeden Tag FD -- SD-- FD....bis zum WOE ,wenn Fr. SD dann Mo. FD bzw. Fr. FD dann am Mo. SD,
Problem wäre  das WOE ,wenn Fr. Spätdienst ist ,darf am WOE nichts schalten ;-) erst dann wieder am
Mo. zum FD.

Ich hoffe ich habe mich verständlich ausgedrückt.

Vielen Dank
Grüße

 

decade-submarginal