Hauptmenü

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

Puschel74

Hallo,

so stimmt die Anzahl der ( und ) natürlich auch wieder ;-)

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 Puschel74
Hallo Zrrronggg!,

wenn ich Euch richtig verstanden habe muss das Endergebnis dann so wie unten aussehen.
Ich habe das soeben in die .cfg eingetragen.
Werde es dann heute Abend testen.

Seht Ihr das so jetzt richtig ?
Wenn du damit Recht hast, das alles nach elsif in geschweifte Klammern muss, dann sollte der Code hier Final doch funktionieren ?

Ich werde Euch berichten.
danke
gruss




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!

Nope. Bitte lies meinen Post vorher:

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

Value("Heizung_Brenner") eq "off"


muss keine Klammer.

In beiden Fällen natürlich.
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

o.k, vielen Dank.
So jetzt o.k. ?

gruss
KLAUS

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") } } }


Puschel74

Hallo,

nicht ganz.
Im elseif-Zweig muss die ( natürlich auch weg so wie im if-Zweig.

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.

broadway

Hallo Klaus,

noch ein Tipp am Rande: schau dir mal ConText oder Notepad++ , diese Editoren helfen beim zuordnen von Klammern.
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

Sonic


Hallo,
ich finde den Fehler nicht.
Habe es nochmal umgebaut {elsif genauso wie {if.
Ich bekomme im Log trotzdem Fehlermeldung   :(


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!

Gegencheck, geht dies:



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

broadway

die roten Klammern müssen weg:

(siehe Anhang / see attachement)


so sollte es stimmen:
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") }
 
 
 }
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

Zrrronggg!

Zitatdie roten Klammern müssen weg:

Klar müssen die weg... seit wann sind die denn drin? Die waren doch in all unseren Beispiel nicht drin, oder?

Ah ich sehe gerade, die hast du selber als neue Fehlerquelle reingemacht. Seufz.

Aber na gut, vielleicht haben wir's ja jetzt.
Ich hoffe auf Erfolgsmeldungen!


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 Broadway,
Hallo Zrrronggg!


Jetzt packt mich der Ehrgeiz. Folgendes ist der aktuelle Stand.

Broadway, diese Lösung funktioniert nicht. Ich bekomme beim speichern in der .cfg gleich eine Fehlermeldung.
Ich verstehe nicht warum das nicht o.k ist. Sind da zu viele Leerstellen ?

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
Diese Version scheint zu funktionieren. Ich bekomme keine Fehlermeldung. Werde es heute Abend nochmal genauer testen.

Interessieren würde mich, warum die obige Lösung nicht funktoniert.
Jedenfalls, danke für Euer Interesse.
Ich lerne dabei.....

diese Lösung scheint zu funktionieren:


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") } }

Sonic

Ohh, jetzt habe ich noch eine Besonderheit entdeckt.

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

Mit der Nachtabsenkung wird der Brenner um 22 Uhr abgeschaltet. Alles gut !
Nun würde aber mein BrennerSteuerung22 in der Nacht den Brenner wieder einschalten, weil die Temperatur ja unter 22 abfallen wird.

Könnt Ihr mir helfen, daß das BrennerSteuerung22 Uhrzeitgesteuert in der Nacht nicht aktiv ist ?
Oder andest herunm nur Am Tag von 4 Uhr - 22 Uhr aktiv ist ?


Wäre Klasse wenn Ihr mir da noch mal helfen könnt.

danke
KLAUS

Zrrronggg!

An sich würde man das mit etwas der Art

if($hour < 4 || $hour >= 22)

machen, aber zumindest ich bin nicht gut genug vorherzusagen, was passiert, wenn man die bisherigen && (und)  Bedingungen mit || (oder) kombiniert.  Einfach aneinanderreihen geht nicht.
Man müsste die Uhrzeitbedingung kapseln und komplett negieren... das geht bestimmt, ich weiss aber nicht wie, kenn PERL nicht gut genug.

Ich würde also vermutlich eine Hilfsvariable basteln, die z.b. "TagNacht" heisst.

define dummy TagNacht

Diese befüllst du dann jeweils mit einem passenden Wert:

define set_TagNacht_nacht at *22:00:00 set TagNacht Nacht
define set_TagNacht_tag at *04:00:00 set TagNacht Tag


Und gegen den Wert testest du dann zusätzlich ab.

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


Es gibt in FHEM auch noch die Funktion "isday". Diese wird automatisch an deie Dämerung angepasst, d.g. isday ist "True", wenn es laut der aktuelen Dämerung hell ist. Das wird dr bei der Heizung aber vermutlich nicht helfen.

Das Dummy TagNacht könntest du auch noch für mehr verwenden, z.b. im Urlaub mit "Urlaub" füllen, dann geht der Brenner nicht mehr an.

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,

das klappt aber nur

ZitatDas Dummy TagNacht könntest du auch noch für mehr verwenden, z.b. im Urlaub mit "Urlaub" füllen, dann geht der Brenner nicht mehr an.

wenn das

define set_TagNacht_nacht at *22:00:00 set TagNacht Nacht
define set_TagNacht_tag at *04:00:00 set TagNacht Tag


im Urlaub nicht brav jeden Tag aufs neue ausgeführt wird.

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!

Selbstverständlich. Ich will und kann Klaus aber nun nicht alles vorkauen. und habe die Möglichkeit daher nur angedeutet.
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 Ihr beiden.
Ich danke vielmals. Um meine Lernbereitschaft zu zeigen, ich habe es wie folgt umgesetzt.

define TagNacht dummy
define set_TagNacht_nacht at *22:00:00 set TagNacht Nacht
define set_TagNacht_tag at *04:00:00 set TagNacht Tag
attr TagNacht room Heizung
attr TagNacht setList state:Nacht,Tag
attr TagNacht webCmd state

define BrennerSteuerung23 notify thermostat:measured-temp.* {if (ReadingsVal("thermostat","measured-temp",20) < 23 && Value("Heizung_Brenner") eq "off" && Value("TagNacht") eq "Tag" ) { 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") } }

TEST kommt heute Abend, sieht aber schon jetzt sehr gut aus.

Schönen Abend
und nochmal danke

KLAUS

broadway

Für die Lesbarkeit, zum besseren Verständnis und zur einfacheren Fehlersuche kann man es auch so anlegen:
define BrennerSteuerung23 notify thermostat:measured-temp.* {
  my $Bedingung1 = ReadingsVal("thermostat","measured-temp",20) < 23;
  my $Bedingung2 = Value("Heizung_Brenner") eq "off";
  my $Bedingung3 = Value("TagNacht") eq "Tag";

  if ( $Bedingung1 && $Bedingung2 && $Bedingung3 ) { fhem ("set Heizung_Brenner on") }}


Bei der Fehlersuche baut man dann z.B. noch diesen Befehl ein:
fhem ("set irgendeinDummy $Bedingung1")
und kann so die Einzelergebnisse sehen.
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

Sonic

Hallo Broadway,

vielen Dank nochmal.
Das ist eine sehr gute Hilfe.

Ich werde das gleich mal testen.

Bin begeistert  :)

gruss
KLAUS

Sonic

Hallo Broadway,

folgende Frage.
Bei speichern deiner Verbesserbung bekomme ich folgende Fehlermeldung

Unknown command my, try help Unknown command my, try help Unknown command my, try help Unknown command if, try help


Was ist falsch ?
danke
gruss
KLAUS



Puschel74

Hallo,

mal so ins blaue geraten fehlt dir evtl. eine {

Poste mal deinen Code, dann gehts leichter ;-)

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 Puschel74

hier der Code von Broadway:

define BrennerSteuerung23 notify thermostat:measured-temp.* {
  my $Bedingung1 = ReadingsVal("thermostat","measured-temp",20) < 23;
  my $Bedingung2 = Value("Heizung_Brenner") eq "off";
  my $Bedingung3 = Value("TagNacht") eq "Tag"

  if ( $Bedingung1 && $Bedingung2 && $Bedingung3 ) { fhem ("set Heizung_Brenner on") }}

Fehlermeldung dazu: Unknown command my, try help Unknown command my, try help Unknown command my, try help Unknown command if, try help


gruss

broadway

Wo fügst du den code ein?

In der fhem.cfg müssen Zeilenumbrüche mit \ gekennzeichnet werden.

define BrennerSteuerung23 notify thermostat:measured-temp.* {\
  my $Bedingung1 = ReadingsVal("thermostat","measured-temp",20) < 23;;\
  my $Bedingung2 = Value("Heizung_Brenner") eq "off";;\
  my $Bedingung3 = Value("TagNacht") eq "Tag";;\
  if ( $Bedingung1 && $Bedingung2 && $Bedingung3 ) { fhem ("set Heizung_Brenner on") }}
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

Sonic

o,k, Super. Habs verstanden und eingebaut.
Scheint zu funktionieren.

Ich teste das heute noch

Freu mich....


gruss und schöne Ostern
KLaus