Hauptmenü

$we - Syntaxfehler ?

Begonnen von WotSefak, 20 März 2013, 14:59:10

Vorheriges Thema - Nächstes Thema

Groby

Hast Du evtl. Holiday2WE aktiviert und Urlaub eingetragen?

WotSefak

Ich habe holiday2we aktiviert, allerdings im holiday-file die fraglichen Tage nicht als Urlaub eingetragen.
Das Problem (Events werden im at angekündigt, aber nicht ausgeführt) tritt unabhängig vom we-Status auf:
keine Schalte, egal ob if(!$we) oder if($we).

Groby

Was passiert wenn Du u.g. Zeile über die cmdline eingibst?


define Test at +00:00:10 {fhem("set FS20_Warmwasser on") if(!$we)};


Poste doch mal ein Log-Auszug...

Michael

Moin

Bei mir läuft es so:
define Licht_Morgens at *05:14 { if (!$we) {fhem("set Licht on")}}

Gruß, Michael
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

Groby

Martin, das hatten wir schon: Vorwärts, Rückwärts, mit Semikolon & mit oder ohne Klammern...

MisterEltako

Hi!

Also definitiv sind die im 1.Post von dir aufgeführten Definitionen richtig
define M_WW_AN at *05:00:00 {if(!$we) {fhem("set FS20_Warmwasser on")}}
define M_WW_ANwe at *07:00:00 {if($we) {fhem("set FS20_Warmwasser on")}}
define M_WW_AUS at *09:30:00 {if(!$we) {fhem("set FS20_Warmwasser off")}}
define A_WW_AUS at *22:00:45 set FS20_Warmwasser off


Ich habe es so bei mir getestet und der Dimmer wurde exakt zur eingestellten Zeit abgeschalten:
define M_WW_AN at *22:59:00 {if(!$we) {fhem("set Dimmer_Wozi off")}}

D.h. das Problem liegt bei dir eher am an FS20 direkt.

Hast du FS20_Warmwasser richtig definiert?
Hast du eventuell das on / off Kommando gemappt auf An / Aus?
Passiert etwas wenn du "set FS20_Warmwasser on" in die Kommandozeile eingibst und mit der Entertaste bestätigst???

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

WotSefak

MisterEltako & Groby,

Ich habe das mal (modifiziert) über die Kommandozeile eingegeben, und siehe: abhängig vom $we-Status wird geschaltet bzw. korrekt nicht geschaltet.
Beispiel 1: define TEST1 at +00:00:05 {if (!$we) {fhem {"set FS20_Warmwasser on")}} = Zirk-Pumpe springt an (ist Freitag)
Beispiel 2: define TEST2 at +00:00:05 {if ($we) {fhem {"set FS20_Warmwasser off")}} = Zirk-Pumpe geht nicht aus (ist Freitag)

Aber:
Beispiel 3: define TEST3 at *05:55:00 {if (!$we) {fhem {"set FS20_Warmwasser on")}} = heute früh um 10 vor 6 über die Kommandozeile gegeben bewirkte keine Schaltung, obwohl der Befehl selbst sofort im at auftauchte.

FS20_Warmwasser ist richtig definiert; es gibt auch kein eventMap, sondern schlichtes on/off (Zeitsteuerung klappt ja auch ganz normal, solange ich nicht an's $we rangehe).
Irgendwas an der Sache ist und bleibt faul. Hoffentlich nicht ich.

Michael




Groby

Ich hoffe die geschweifte Klammer vor dem "set in Bsp 3 ist ein Typo und war rund...

Steht irgendetwas im log-file?

Adhoc fällt mir nichts ein, ausser die Uhrzeit zu überprüfen:


{FmtDateTime(time())}



WotSefak

Ja, die geschweifte Klammer war ein typo (kam aus dem Kopf, nicht aus copy&paste)

Datum und Uhrzeit in fhem überprüft: korrekt (alle anderen Events laufen auch korrekt).

Logfile meldet
Can't find string terminator '"' anywhere before EOF at (eval 862) line 1.
Diese Meldung erscheint zu jeder Zeile zum jeweils richtigen Termin (ich hab aktuell 3 lines mit $we in der .cfg).

Welcher string terminator wird hier erwartet ? Noch ein " und wenn ja, wohin damit ?

Michael

Groby

ok.

Leg bitte nochmal den Timer für *05:55:00 über die cmd line an

poste die Deine Eingabe mit copy  & paste!!!

Modifiziere den so angelegten Timer über DEF im GUI und poste den "übersetzten" String (copy  & paste)

WotSefak

Über die Kommandozeile habe ich abgesetzt
define M_WW_AUS_TEST at *18:07:00 {if(!($we)) {fhem("set FS20_Warmwasser off")}}
und Logfile meldet
2013.03.22 18:07:00 3: Can't find string terminator '"' anywhere before EOF at (eval 971) line 1.
und dann gleich nochmal hinterher
define M_WW_AUS_TEST2 at *18:10:00 {if(!($we)) {fhem("set FS20_Warmwasser off");;}}
worauf Logfile sagt
2013.03.22 18:10:00 3: Can't find string terminator '"' anywhere before EOF at (eval 972) line 1.
(Letzteres nur, um die Sache mit den Semikola abzuprüfen)

Groby

Kopiere mal diesen code in die cmd line


define M_WW_AUS_TEST at *18:30:00 {fhem("set FS20_Warmwasser off") if(!$we)}


Kopiere in jedem Fall den konvertierten String über die GUI mit DEF - für den Fall das wieder nicht geschaltet wird...

WotSefak

Zu "Kopiere in jedem Fall den konvertierten String über die GUI mit DEF"
Nicht schlagen : ich weiss nicht, wie...

WotSefak

Das Ding hat geschaltet ! Ich fass es nicht...

Groby

na also ;)

Fazit: too many {()} verderben den Brei ;)