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.
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
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 ?
Versuch mal
if (("%" eq "on") && (Value("HeizungWinter") eq "on")) {\
Grüße
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");;\
}\
}
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");;\
}\
}\
}
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
Zitat von: Puschel74 schrieb am Mi, 09 Januar 2013 19:20Dir fehlt ein } am Schluss
petze! ;-)
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.
@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.
@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 ?
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
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
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...
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.
Ähem, ja stimmt ja.
Auf auf manual fährt ja das Ventil auf wenns kälter wird.
Was schreib ich den für einen Blödsinn.
Danke noch mal euch beiden
Hier nun für weitere Interessierte der komplette Code:
Bitte beachten, je nachdem muss das FileLog-Verzeichnis angepasst werden, das Verzeichnis aus dem Beispiel gilt für eine FHEM-Installation auf einer Synology-NAS.
Im Code wird wie erwähnt beim Öffnen des Fensters und eingeschalteter Heizung (Wintermodus) der Heizkörper solange auf 10C und manuell gesetzt, bis das Fenster wieder geschlossen ist.
Da im Sommer die Heizung im Normalfall aus ist und demnach der Heizungsmodus "off", wird also FHEM / der FHT dann nichts beim Öffnen/Schliessen des Fensters unternehmen.
Hier der Code zum Ein/Ausschalten der Heizung (Sommer/Winter). Ebenso ist jeweils etwas Zeitversatz (von je 3 Minuten) eingebaut, damit das Senden nicht das Funknetzwerk völlig überfordert.
Code: [alles markieren] [anzeigen/verstecken]
# ********************************* WinterSommerschaltung ***** Anfang ****
define HeizungWinterSommer dummy
attr HeizungWinterSommer alias Heizung ein (Winter)
attr HeizungWinterSommer room Tools
attr HeizungWinterSommer setList on off
define FileLog_HeizungWinterSommer FileLog /usr/local/FHEM/var/log/HeizungWinterSommer-%Y.log HeizungWinterSommer
attr FileLog_HeizungWinterSommer logtype text
attr FileLog_HeizungWinterSommer room Logfiles
define WinterChecker notify HeizungWinterSommer {\
if ("%" eq "on") {\
fhem ("define HeizWS1 at +00:03:00 set Raum1,Raum2 mode auto");;\
fhem ("define HeizWS2 at +00:03:00 set Raum3,Raum4,Raum5 mode auto");;\
}\
else {\
fhem ("define HeizWS6 at +00:03:00 set Raum1,Raum2 mode manual");;\
fhem ("define HeizWS7 at +00:03:00 set Raum3,Raum4,Raum5 mode manual");;\
fhem ("define HeizWS8 at +00:03:00 set Raum1,Raum2 desired-temp 5.5");;\
fhem ("define HeizWS9 at +00:03:00 set Raum3,Raum4,Raum5 desired-temp 5.5");;\
}\
}
# ********************************* WinterSommerschaltung ***** Ende ****
Hier der Code Fenster:
Code: [alles markieren] [anzeigen/verstecken]
# Testzimmer
define Testzimmer FHT xxxx
attr Testzimmer group Test
attr Testzimmer icon icoTemp
attr Testzimmer retrycount 3
attr Testzimmer room Test
define FileLog_Testzimmer FileLog /usr/local/FHEM/var/log/Testzimmer-%Y.log Testzimmer
attr FileLog_Testzimmer logtype fht:Temp/Act,text
attr FileLog_Testzimmer room Logfiles
define weblink_Testzimmer weblink fileplot FileLog_Testzimmer:fht:CURRENT
attr weblink_Testzimmer label "Testzimmer Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_Testzimmer room Graphen
# Tenstfenster
define Tenstfenster FS20 xxxx 00
attr Tenstfenster room Test
define FileLog_Tenstfenster FileLog /usr/local/FHEM/var/log/Tenstfenster-%Y.log Tenstfenster
attr FileLog_Tenstfenster logtype text
attr FileLog_Tenstfenster room Test
define TenstfensterChecker notify Tenstfenster {\
if ((Value("Tenstfenster") eq "on") && (Value("HeizungWinterSommer") eq "on")) {\
fhem ("set Testzimmer desired-temp 10.0");;\
fhem ("define TZF1 at +00:01:00 set Testzimmer mode manual");;\
}\
else {\
if ((Value("Tenstfenster") eq "off") && (Value("HeizungWinterSommer") eq "on")) {\
fhem ("set Testzimmer desired-temp 16.0");;\
fhem ("define TZF2 at +00:01:00 set Testzimmer mode auto");;\
}\
} }