Sommer / Winter - Fenster offen

Begonnen von sun1907, 09 Januar 2013, 11:34:28

Vorheriges Thema - Nächstes Thema

sun1907

Folgende Situation bin ich gerade am tüfteln, bräuchte hier nur einen Tip, ob es so klappt und der Bitte, dass man auch über den Code mal drüberschaut und ggf. Fehler ausbessert.
Die Fensterkontakte Fs20TFK lassen sich ja nicht an die FHT80 verbinden, so dass die FS20TFK ja über die FHEM laufen und FHEM die Arbeit erledigt, wenn z.B. ein Fenster geöffnet wird und entsprechend die Heizung reagieren soll.
Das klappt bisher auch ohne Probleme.

Nun möchte ich aber sehr gerne noch eine Zusatzfunktion. Im Sommer wird ja natürlich das Fenster auch geöffnet, hier aber soll natürlich die Heizung nichts mehr machen.
Im Sommer habe ich dann eine Sommerfunktion in FHEM eingebaut, die die Heizung auf manuell und 5,5C setzt, also im Grunde sind die FHTs ja dann OFF.

Jetzt soll aber (nachdem das Fenster geöffnet wurde) zuerst geprüft werden, ob die Sommefunktion, bzw. Winterfunktion aktiv ist und entsprechend dann was tun, bzw. nichts tun.

Ist der Code hier soweit richtig oder was kann ich noch verbessern ?.


# ********************************* Winterschaltung ***** Anfang ****
define HeizungWinter dummy
attr HeizungWinter room Tools
attr HeizungWinter setList on off
define FileLog_HeizungWinter FileLog /usr/local/FHEM/var/log/HeizungWinter-%Y.log HeizungWinter
attr FileLog_HeizungWinter logtype text
attr FileLog_HeizungWinter room Logfiles
define WinterChecker notify HeizungWinter {\
  if ("%" eq "on") {\
   fhem ("set Sommerschaltung off");;\  
  }\
  else {\
   fhem ("define Zimmer41 at +00:03:00 set Wohnzimmer,Schlafzimmer mode manual");;\
   fhem ("define Zimmer42 at +00:03:00 set Arbeitszimmer mode manual");;\
   fhem ("define Zimmer43 at +00:03:00 set Badezimmer,Kueche desired-temp 5.5");;\
   fhem ("define Zimmer44 at +00:03:00 set Wohnzimmer,Schlafzimmer desired-temp 5.5");;\
   fhem ("define Zimmer45 at +00:03:00 set Arbeitszimmer desired-temp 5.5");;\
  }\
}
# ********************************* Winterschaltung ***** Ende ****

# Badfenster
define Badfenster FS20 f405 05
attr Badfenster fm_order 5
attr Badfenster fm_type none
attr Badfenster model fs20tfk
attr Badfenster room Raumuebersicht
define FileLog_Badfenster FileLog /usr/local/FHEM/var/log/Badfenster-%Y.log Badfenster
attr FileLog_Badfenster logtype text
attr FileLog_Badfenster room Logfiles
define BadfensterChecker notify HeizungSommer {\
  if ("HeizungWinter off") && ("Badfenster on"){\
  }\
  else {\
  if ("HeizungWinter on") && ("Badfenster on"){\
  fhem ("set Badezimmer desired-temp 10.0");;\
  fhem ("set Badezimmer mode manual");;\
  }\
  else {\
  if ("HeizungWinter on") && ("Badfenster off"){\
  fhem ("set Badezimmer desired-temp 18.0");;\
  fhem ("set Badezimmer mode auto");;\
  }\
}}}




Vielen Dank für jede Hilfe.

Puschel74

Hallo,

ob das

if ("HeizungWinter on") && ("Badfenster on"){

so funktioniert kann ich dir nicht sagen.

Ich denke

if (Value("HeizungWinter") eq  "on") && (Value("Badfenster") eq "on"){

sollte besser passen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

sun1907

Danke wie immer :-)

Jedoch habe ich diese Fehlermeldung im Log:
2013.01.09 14:30:45 2: FS20 Badezimmerfenster on
2013.01.09 14:30:45 3: BadezimmerfensterChecker return value: syntax error at (eval 2390) line 1, near ") &&"
syntax error at (eval 2390) line 1, near "}   else"
syntax error at (eval 2390) line 1, near ";   }"
Missing right curly or square bracket at (eval 2390) line 2, at end of line

wenn ich diesen Code nun ausführe:


# define BadfensterChecker notify Badfenster {\
#  if ("%" eq "on") && (Value("HeizungWinter") eq "on") {\
#  fhem ("set Badezimmer desired-temp 10.0");;\
#  fhem ("define BZF1 at +00:01:00 set Badezimmer mode manual");;\
#  }\
#  else {\
#  if ("%" eq "off") && (Value("HeizungWinter") eq "on") {\
#  fhem ("set Badezimmer desired-temp 18.0");;\
#  fhem ("define BZF2 at +00:01:00 set Badezimmer mode auto");;\
#  }\
#}


Ne Idee ?

Puschel74

Versuch mal

if (("%" eq "on") && (Value("HeizungWinter") eq "on")) {\

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

sun1907

Leider noch nicht ganz. Nun habe ich:

BadezimmerfensterChecker return value: Missing right curly or square bracket at (eval 2663) line 2, at end of linesyntax error at (eval 2663) line 2, at EOF

bei diesem Code:
define BadfensterChecker notify Badfenster {\
  if (("%" eq "on") && (Value("HeizungWinter") eq "on")) {\
  fhem ("set Badezimmer desired-temp 10.0");;\
  fhem ("define BZF1 at +00:01:00 set Badezimmer mode manual");;\
  }\
  else {\
  if (("%" eq "on") && (Value("HeizungWinter") eq "on")) {\
  fhem ("set Badezimmer desired-temp 18.0");;\
  fhem ("define BZF2 at +00:01:00 set Badezimmer mode auto");;\
  }\
}

Puschel74

Dir fehlt ein } am Schluss

if (("%" eq "on") && (Value("HeizungWinter") eq "on")) {\
  fhem ("set Badezimmer desired-temp 18.0");;\
  fhem ("define BZF2 at +00:01:00 set Badezimmer mode auto");;\
  }\
}\
}
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Martin Fischer

Zitat von: sun1907 schrieb am Mi, 09 Januar 2013 19:15BadezimmerfensterChecker return value: Missing right curly or square bracket at (eval 2663) line 2, at end of linesyntax error at (eval 2663) line 2, at EOF

die fehlermeldung ist doch aber eindeutig: dir fehlt eine rechte "geschweifte" oder "eckige" klammer. in deinem fall ersteres.

versuche es doch mal selber aufzulösen. wenn man eine klammer öffnet, muss man sie auch wieder schliessen. es bringt dich doch für künftige sachen persönlich nicht weiter, wenn dir das komplett vorgegeben wird. viel hilfreicher ist es, zu verstehen, was da definiert wurde.

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Martin Fischer

Zitat von: Puschel74 schrieb am Mi, 09 Januar 2013 19:20Dir fehlt ein } am Schluss

petze! ;-)
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Puschel74

Tante Edith *schniefff*

Du prüfst zweimal das selbe in 2 if-Abfragen?
Die letzte sollte wohl
if (("%" eq "off") && (Value("HeizungWinter") eq "on")) {\
  fhem ("set Badezimmer desired-temp 18.0");;\
  fhem ("define BZF2 at +00:01:00 set Badezimmer mode auto");;\
  }\
}\
}


@Martin
ich weiß ;-)
Aber ich kann nicht anders - so lern ich wenigstens was dabei.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

sun1907

@puschel74: DANKE

@Martin: auch dir DANKE und ja ich weiß, du hast recht. Aber ich lerne genauso dadurch, weil ich durch einen ggf. zwar durch andere Hilfe behobenen Fehler es nicht selbst gemacht habe, aber beim nächsten Mal mehr und mehr auf solche Fehler selbst achte, bzw. mir dann selbst einen Code mit größeren JObs selbst bauen kann.

sun1907

@Puschel: Jein. Nicht 2mal dasselbe.
Es soll geprüft werden:
1) wenn Fenster OFFEN und Status HeizungWinter EIN, dann setze Heizung auf 10.0C und manuell
2) wenn Fenster GESCHLOSSEN und HeizungWinter EIN dann setze Heizung auf 18.0C und auto
3) demnach: wenn Fenster OFFEN oder GESCHLOSSEN und HeizungWinter ist AUS dann macht er nix, weil Sommer und keine Heizung aktiv ist.
 

define BadezimmerfensterChecker notify Badezimmerfenster {\
if (("%" eq "on") && (Value("HeizungWinter") eq "on")) {\
  fhem ("set Badezimmer desired-temp 10.0");;\
  fhem ("define BZF1 at +00:01:00 set Badezimmer mode manual");;\
  }\
}\
}
else {\
if (("%" eq "off") && (Value("HeizungWinter") eq "on")) {\
  fhem ("set Badezimmer desired-temp 18.0");;\
  fhem ("define BZF2 at +00:01:00 set Badezimmer mode auto");;\
  }\
}\
}


Oder hat jemand ne bessere, einfachere Lösung ?

Puschel74

Ja.
In dem Code prüfst du oben auf on und unten auf off - das passt auch so.

Warum setzt du den FHT (nehm ich mal an??) auf mode manual bei offenem Fenster?
Wenn du die desired-temp auf 10 °C runter fährst brauchst du eigentlich keinen mode manual mehr da die Ventile sowieso zu sein werden.

Ganz im Gegenteil.
Bevor mir der Heizkörper durchfriert und platzt lass ich die desired-temp unten aber den FHT auf auto um unter, wie bei dir 10.0 °C, das Ventil öffnen zu können
und lass mich dann lieber vorher schon per Mail benachrichtigen das was nicht passt oder schalte das Licht ein oder irgendwas.

Und wenn du keinen mode manual setzt brauchst du auch nicht auto machen.
Funktelegramme ohne Ende gespart ;-)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Puschel74

Ups (Tante Edith *seufz*

In dem Post oben kann man Missverstehen das ich mit Ja auf deine Frage geantwortet habe

ZitatOder hat jemand ne bessere, einfachere Lösung ?
ZitatJa.
In dem Code prüfst du oben auf on und unten auf off - das passt auch so.

Das soll so nicht rüber kommen.
Ich habe weder ne einfachere noch eine besser Lösung.
Hier kommen sich die Sätze grad etwas durcheinander ;-)
Das sollte sich eigentlich auf den, von Dir, geposteten Code beziehen.
In einem Posting drüber habe ich nur gesehen das zweimal auf on geprüft wird und nicht on und off aber hat sich ja erledigt.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

sun1907

Ich stelle den FHT auf manuell, weil wenn ich es nicht mache und der FHT auf AUTO stehen bleibt und ich NUR die Temp auf z.B. setze, kann der FHT ja jederzeit auf eine TEMP selbstständig schalten, wenn ich das Fenster "vergesse" wieder zu schließen und z.B. zum selben Zeitpunkt (als Beispiel abends) um 19.00 Uhr dann die Temp auf 19C vom FHT an die Stellantriebe gesendet wird. Dann würde die Heizung ins Leere heizen...

sun1907

Neee, keine Sorge. Habe ich nicht falsch verstanden. Ich bin dir / euch über jede Hilfe und jeden Voschlag sehr dankbar.
ICH bin derjenige, der noch viel lernen muss. Bisher bin ich in Sachen FHEM noch extrem neu und ungebildet.