Brenner anschalten mit FHT

Begonnen von Sonic, 24 März 2013, 13:58:30

Vorheriges Thema - Nächstes Thema

Sonic

Hallo, ich habe mir ein einfaches notify gemacht, worin der Heizungs Benner einschalten soll, wenn der FHT eine Temperatur von < 22 Grad meldet. Leider funktioniert dieses Codeschnipsel nicht. Was habe ich übersehen ?


define BrennerAN notify thermostat:measured-temp.* { \
if (ReadingsVal("thermostat","measured-temp",20) < 22) { \


Weiter hätte ich gerne, das der Brenner ausschaltet, wenn die vom Thermostat gemeldete Temperatur von 26 Grad überschritten wird.

define BrennerAUS notify thermostat:measured-temp.* { \
if (ReadingsVal("thermostat","measured-temp",20) > 26) { \

dies funktioniert leider auch nicht.

freue mich auf eure Hilfe

gruss
KLAUS


danke
KLAUS

Puschel74

Hallo,

ZitatWas habe ich übersehen ?

Entweder hast du nur die Anfänge deiner Defines gepostet oder du hast das wirklich so in der Konfig stehen.

Auch wenn beides zutrifft kann dir hier niemand helfen da der Code einfach nicht vollständig ist.

So wie von dir gepostet wird es nie etwas schalten da einfach ein set <Device> on oder off fehlt.

Grüße

P.S.: Genau genommen arbeitet der Code sogar wie von Dir beschrieben.
ZitatLeider funktioniert dieses Codeschnipsel nicht.
;-)
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.

Sonic


Hallo Puschel74,

erst einmal vielen Dank für deine Nachricht und Hilfe.
Ich habe dir unten stehend den kompletten Code einkopiert.

Ich glaube schon das ich nicht weit weg von der Lösung bin.
Im Logfile steht unbekanntes Commando BrennerAUS
Vermutlich habe ich da einen Denkfehler in der Definition.
Siehst du das auch so ?
Den Schalter Heizung_Brenner habe ich als Device configuriert. Manuell funktioniert das gut.


gruss
KLAUS



define BrennerAUS notify thermostat:measured-temp.* { \
 if (ReadingsVal("thermostat","measured-temp",20) > 26) { \
notify BrennerAUS set Heizung_Brenner off

 
define BrennerAN notify thermostat:measured-temp.* { \
 if (ReadingsVal("thermostat","measured-temp",20) < 23,5) { \
define BrennerLOWON notify BrennerAN set Heizung_Brenner on



Sonic

Hier noch das Logfile



2013.03.24 15:50:23 3: BrennerAN return value: Unknown command {, try help
2013.03.24 15:50:23 3: BrennerAUS return value: Unknown command {, try help
2013.03.24 16:01:53 3: BrennerAN return value: Unknown command {, try help
2013.03.24 16:01:53 3: BrennerAUS return value: Unknown command {, try help
2013.03.24 16:21:03 3: BrennerAN return value: Unknown command {, try help
2013.03.24 16:21:03 3: BrennerAUS return value: Unknown command {, try help
2013.03.24 16:33:25 3: BrennerAN return value: Unknown command {, try help
2013.03.24 16:33:25 3: BrennerAUS return value: Unknown command {, try help
2013.03.24 16:49:48 3: BrennerAN return value: Unknown command {, try help
2013.03.24 16:49:48 3: BrennerAUS return value: Unknown command {, try help


Ach ja noch eine Frage hätte ich. Um die Funklast zu reduzieren würde ich gerne den Befehl einbauen,

"attr event on reading update"
Kann ich das damit erreichen ?
Wäre Klasse wenn du mir sagst wie ich das eintragen muss.

Nochmal herzlichen Dank

kLAUS


broadway

Deine Syntax ist falsch. "notify BrennerAUS" und "define BrennerLOWON notify BrennerAN" haben in den geschweiften Klammern nichts zu suchen. Und geöffnete Klammern müssen wieder geschlossen werden!

(Du kannst es bei deiner Schreibweise auch zusammenfassen)

define BrennerSteuerung notify thermostat:measured-temp.* { \
 if (ReadingsVal("thermostat","measured-temp",20) < 22) { fhem "set brenner on" } \
 elsif (ReadingsVal("thermostat","measured-temp",20) > 26) { fhem "set brenner off" } \
}



Bei diesem notify braucht man nicht unbedingt Readingsval. Versuche auch mal:

define BrennerSteuerung notify thermostat:measured-temp.* { \
 if (% < 22) {...}
...
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

Sonic

Guten Abend Broadway,

nochmal vielen Dank für deine Hilfe. Es scheint tatsächlich alles zu funktionieren wie du es gesagt hast.
Darf ich dir dazu noch Verständnissfragen stellen ?

Es würde mich folgendes interessieren:

-Wenn die Temperatur von 26 auf 25 Grad herunterfällt, wird dann der Brenner wieder einschalten ? (Ich vermute eher nicht, da ich ja erst ab <22 wieder einschalten lasse). Sehe ich das richtig ?
 
Nach meinem Verständniss wird FHEM ständig bei >26 den Befehl set Brenner OFF senden. Umgekehrt ständig bei <22 den Befehl On.
Um die Funklast zu verringern würde ich gerne den Befehl "event-on-update-reading" einbauen.
Würde das funktionieren ?

Wäre sehr nett und würde mich freuen wenn sie mir nochmal dazu helfen.
vielen DANK
KLaus Kirstein


Diese Beschreibung habe bei Fischer.net gefunden:

Funklast verringern
Hat das Modul HCS in der vorherigen Version noch bei jedem Lauf immer den Befehl zum Ein- oder Ausschalten gesendet, kann in der überarbeiteten Version dieses Verhalten über das Attribut "event-on-update-reading" beeinflußt werden. Dieses Attribute ist nun als Voreinstellung gesetzt. Das heißt, HCS steuert das definierte Gerät nur dann, wenn sich der Befehl auch tatsächlich geändert hat (also z.B. von "on" nach "off" oder von "off" nach "on").


Zrrronggg!

Du könntest auch einfach testen, ob der Brenner aktuell OFF ist und nur dann ON senden und umgekehrt.



if (ReadingsVal("thermostat","measured-temp",20) < 22 && (Value("brenner") eq "off" ) { fhem "set brenner on" }...
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Sonic


Guten Abend ZRRRONGGG!
Klasse Idee, vielen Dank.
ich habs gleich so umgebaut.
Könnte das so funktionieren ?
Ich teste gleich morgen !
Gute Nacht



define BrennerSteuerung notify thermostat:measured-temp.* { \
if (ReadingsVal("thermostat","measured-temp",20) < 22 && (Value("Heizung_Brenner") eq "off" ) { fhem "set Heizung_Brenner on" } \
 elsif (ReadingsVal("thermostat","measured-temp",20) > 25 && (Value("Heizung_Brenner") eq "on" ) { fhem "set Heizung_Brenner off" } \
}

Zrrronggg!

Fast.

Ich war unachtsam und habe eine Klammer vergessen: ich glaube, es muss so heissen:

define BrennerSteuerung notify thermostat:measured-temp.* { \
if (ReadingsVal("thermostat","measured-temp",20) < 22 && (Value("Heizung_Brenner") eq "off" ) { fhem ("set Heizung_Brenner on") } \
elsif (ReadingsVal("thermostat","measured-temp",20) > 25 && (Value("Heizung_Brenner") eq "on" ) { fhem ("set Heizung_Brenner off")  } \
}


Ausserdem habe ich gelernt, das man bei if ...elsif ... immer 2x überlegen sollte, welche logischen Zustände das annehmen kann, bin ich aber jetzt zu müde zu.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Sonic


Hallo Zrrronggg!

danke für deine Info. Ja, du hast Recht. Im Logfile habe ich diese Meldung gefunden.
Wärst du so nett und würdest nochmal kurz drüberschauen ?
Irgendwo fehlt noch eine Kleinigkeit. Ich kann es nicht finden.

danke im voraus
KLAUS




2013.03.26 09:52:45 3: BrennerSteuerung return value: syntax error at (eval 332) line 1, near ") {"

2013.03.26 10:04:15 3: BrennerSteuerung return value: syntax error at (eval 337) line 1, near ") {"

2013.03.26 10:17:40 3: BrennerSteuerung return value: syntax error at (eval 340) line 1, near ") {"

2013.03.26 10:34:55 3: BrennerSteuerung return value: syntax error at (eval 343) line 1, near ") {"

2013.03.26 10:42:35 3: BrennerSteuerung return value: syntax error at (eval 346) line 1, near ") {"

2013.03.26 10:50:15 3: BrennerSteuerung return value: syntax error at (eval 349) line 1, near ") {"

2013.03.26 11:01:45 3: BrennerSteuerung return value: syntax error at (eval 356) line 1, near ") {"

Puschel74

Hallo,

poste doch nochmal deinen Code bitte.

Dir fehlt irgendwo eine )

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.

Sonic


Hallo,
hier ist nochmal der Code
danke für jede Hilfe


define BrennerSteuerung notify thermostat:measured-temp.* { \
if (ReadingsVal("thermostat","measured-temp",20) < 22 && (Value("Heizung_Brenner") eq "off" ) { fhem ("set Heizung_Brenner on") } \
elsif (ReadingsVal("thermostat","measured-temp",20) > 25 && (Value("Heizung_Brenner") eq "on" ) { fhem ("set Heizung_Brenner off")  } \
}

Zrrronggg!

Ich glaube, alles nach elsif muss auch in geschweite Klammern, bn mir aber offen gestanden nicht sicher.

define BrennerSteuerung notify thermostat:measured-temp.* {if (ReadingsVal("thermostat","measured-temp",20) < 22 && (Value("Heizung_Brenner") eq "off" ) { fhem ("set Heizung_Brenner on") } elsif { (ReadingsVal("thermostat","measured-temp",20) > 25 && (Value("Heizung_Brenner") eq "on" ) { fhem ("set Heizung_Brenner off") } } }

Ich selbe habe noch nie mit elseif gearbeitet, sondern würde das in zwei defines aufspalten. Ich finde das leichter zu warten, weil mehrfachverschachtelte "if"s echt Konzentration erfordern (hier gibt's einige Threads, wo Leute sich super die Karten gelegt haben, weil sie die logischen Implikationen ihrer Konstrukte nicht mehr durchdringen. Gut, das Problem hast du nicht, ist nur ne allgemeine Anmerkung)

define BrennerSteuerung22 notify thermostat:measured-temp.* {if (ReadingsVal("thermostat","measured-temp",20) < 22 && (Value("Heizung_Brenner") eq "off" ) { fhem ("set Heizung_Brenner on") } }
define BrennerSteuerung25 notify thermostat:measured-temp.* {if (ReadingsVal("thermostat","measured-temp",20) > 25 && (Value("Heizung_Brenner") eq "on" ) { fhem ("set Heizung_Brenner off") } }
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Puschel74

Hallo,

sorry aber wenn ich nachzähle fehlt immer noch eine ).

{if (ReadingsVal("thermostat","measured-temp",20) < 22)

Versuch mal das - ungetestet.

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.

Zrrronggg!

Äh nee, zwar auch ungetestet, aber ich glaub das Ganze ist mein Fehler:

define BrennerSteuerung22 notify thermostat:measured-temp.* {if (ReadingsVal("thermostat","measured-temp",20) < 22 && Value("Heizung_Brenner") eq "off" ) { fhem ("...

D.H. da war eine öffnende Klammer zu viel. Vor

Value("Heizung_Brenner") eq "off"

muss keine Klammer.


FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL