Hauptmenü

Regelung für Warmwasser

Begonnen von Gumma, 27 Mai 2013, 15:20:55

Vorheriges Thema - Nächstes Thema

Gumma

Hallo zusammen,

nachdem meine Buderus-Regelung den Geist aufgegeben hat, steht nun mein nächstes FHEM-Projekt an.

Folgendes möchte ich grundsätzlich lösen:

Ich habe einen Warmwasserspeicher, der über Solarmodule (1. Kreislauf) aufgeheizt wird. Im Winter oder wenn, wie gerade, niemals die Sonne scheint, wird der Speicherkopf per Elektroheizpatrone (2. Kreislauf) aufgeheizt. Die Regelung des 2. Kreislaufs möchte ich mit FHEM FS20 realisieren. Hier ist zu beachten, dass ich erstens die Heizwendeln der Heizpatrone und die Umwälzpumpe des 2. Kreislaufs (Heizpatrone) wegen Pumpennachlauf separat ansteuern muss/möchte.

Nun zu den FHEM FS20 - Fragestellungen:

Ich habe mir das Thermostat FS20 Universal-Thermostat-Sender UTS ausgeschaut. Leider hab ich nun nachträglich festgestellt, dass hier keine Temperaturwerte ausgelesen werden können. Welches Gerät würdet ihr empfehlen, das folgende Bedingungen erfüllt:

- Temperaturwerte auslesbar
- mit FHEM FS20 in Verbindung mit vorhandener CUL steuerbar
- Code möglichst einfach umsetzbar (da immer noch Anfänger ohne größere Informatik-Kenntnisse)

Zum angedachten Code:

Ich möchte folgende Ideen umsetzen:

- Immer wenn Temperatur_Speicherkopf < 40° dann Aufheizen bis 40° (ich möchte immer Duschen können)
- Nachts wenn Temperatur_Speicherkopf < 55° dann Aufheizen bis 55° (Ausnutzung des Strom-Niedertarifs)
- Wenn Heizbetrieb beendet --> Umwälzpumpe 5 min nachlaufen lassen (Pumpennachlauf)
- Wenn "Urlaub" dann nix machen

So, den Code müsste ich eigentlich hinbekommen. Wenn nicht, dann hoffe ich auf eure Hilfe. Konkret bräuchte ich eine Empfehlung hinsichtlich eines Funk-Thermometers in Verbindung mit der vorhandenen CUL die am USB der FB hängt. Ach ja, die Heizwendel und die Umwälzpumpe würde ich mit einem FS20 SU-2 schalten.

Vielen Dank für eure Hilfe!
Gumma



Gumma

Ok, dann muss ich konkreter werden....

Kann ich einen HMS100 T über die selbe CUL (an FB) abfragen, mit der ich schon weitere FS20-Komponenten steuere bzw. abfrage?

Wenn ja, was muss ich in die fhem.cfg schreiben?

Viele Grüße,
Gumma

Damian

Hallo Gumma,

die HMS- und FS20-Komponenten kannst du gleichzeitig über die selbe CUL empfangen bzw. steuern - das würde schon mal funktionieren.

Bevor du anfängst viele If-Abfragen in Perl programmieren, würde ich dir für die Warmwasserregelung das THRESHOLD-Modul empfehlen. In Kombination mit dem Heating_Control-Modul kannst du auch relativ einfach deine zeitgesteuerten Temperatur-Vorgaben realisieren.  Die entsprechende Doku zu den Modulen findest du in der commandref.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Gumma

Guten Abend liebe Freunde des Automatismus....

@ Damian: erstmal vielen Dank für deine Antwort!

Ich hab jetzt in stundenlanger Arbeit (Rumprobiererei) folgenden Code, der auch halbwegs funtkioniert,  hinbekommen bzw. hinkopiert:

##
define Boilersteuerung THRESHOLD Temp_WWSpeicher:temperature:2 heizpatrone|set @ off|set @ on|2|off:on  
attr Boilersteuerung room HMS

define Schaltplan_Boiler Heating_Control Boilersteuerung 12345|04:00|55 12345|06:00|20 12345|12:00|40 12345|18:00|55 12345|20:00|40 12345|22:00|20 67|05:00|55 {fhem("set Boilersteuerung desired %")}
attr Schaltplan_Boiler room HMS
##

Leider haben sich mit der weitgehenden Lösung meines Problems neue aufgetan, sprich ich bräuchte eure Hilfe.

1. Problem: Die Funkbefehle an die Heizpatrone werden manchmal von dieser nicht "gehört".
Wie kann ich sicher sein, dass die Heizpatrone auch heizt? Befehl mehrfach senden? Status des Schalters abfragen? Geht glaub ich mit dem FS20 SU-2 nicht, oder? Mehrere Schaltpunkte im Heating-Control definieren? Wie würdet ihr das machen?

2. Problem: Mein FHEM V(gestern upgedated) kommt mit der Syntax aus der Commandref <<define HCW Heating_Control WZ_Heizung 07:00|16 Mo,Di,Mi|16:00|18.5 20:00|12 {fhem("set dummy on"); fhem("set @ desired-temp %");}>> nicht zurecht. Mit dem o.g. Befehl <<{fhem("set Boilersteuerung desired %")>> gehts. Warum? Fehler in der Commandref oder Fehler beim Anwender?

3. Problem, das sich nur ergibt, wenn Problem 1 gelöst ist:
Eigentlich würde ich gerne die Heizstäbe der Heizpatrone und die zugehörige Umwälzpumpe separat ansteuern, um einen Pumpennachlauf zu realisieren. Bisher ist das etwas gefährlich, da aufgrund der Funkaussetzer nicht gewährleistet ist, dass die Heizstäbe nicht verglühen, da die Umwälzpumpe sicher ihren Betrieb aufgenommen hat. (Bei obiger Lösung lasse ich beide Verbraucher mit einem Schalter schalten.) Gibts da eine praktikable Lösung, die ich als bekennender Code-Zusammenkopierer-und-dabei-viele-Fehler-Macher realisieren kann?

4. Problem, das sich aus dem 3. Problem ergibt:
Dieser Code funktioniert bei mir nicht:
##
define test_boilersteuerung THRESHOLD Temp_WWSpeicher:temperature:2 |set test_heizpatrone off;define a1 at +00:00:30 set test_umwaelzpumpe off;delete a1|set test_umwaelzpumpe on;define a2 at +00:00:30 set test_heizpatrone on;delete a2|2|off:on  
attr test_boilersteuerung room HMS

define test_schaltplanboiler Heating_Control test_boilersteuerung 12345|04:00|55 12345|06:00|20 12345|12:00|40 12345|18:00|55 12345|20:00|40 12345|22:00|20 67|05:00|55 {fhem("set test_boilersteuerung desired %")}
attr test_schaltplanboiler room HMS
##

Da kommt dann sowas:
- Please define a1|set test_umwaelzpumpe on first Please define a2|2|off:on first

In der Logdatei schauts so aus:
2013-06-03_23:24:11 test_TempWWSpeicher * 20
2013-06-03_23:25:35 test_boilersteuerung active 20.0
2013-06-03_23:25:35 test_boilersteuerung cmd: wait for next cmd
2013-06-03_23:26:47 test_schaltplanboiler nextUpdate: Heute, 23:27:17
2013-06-03_23:26:47 test_schaltplanboiler nextValue: ???
2013-06-03_23:26:47 test_schaltplanboiler waiting...
2013-06-03_23:27:17 test_boilersteuerung active 40.0
2013-06-03_23:27:17 test_boilersteuerung threshold_min: 38
2013-06-03_23:27:17 test_boilersteuerung cmd: wait for next cmd
2013-06-03_23:27:17 test_boilersteuerung desired_value: 40.0
2013-06-03_23:27:17 test_schaltplanboiler nextUpdate: 03.06.2013 23:28:00
2013-06-03_23:27:17 test_schaltplanboiler nextValue: 60
2013-06-03_23:27:17 test_schaltplanboiler 40.0
2013-06-03_23:28:00 test_boilersteuerung active 60.0
2013-06-03_23:28:00 test_boilersteuerung threshold_min: 58
2013-06-03_23:28:00 test_boilersteuerung cmd: wait for next cmd
2013-06-03_23:28:00 test_boilersteuerung desired_value: 60.0
2013-06-03_23:28:00 test_schaltplanboiler nextUpdate: 04.06.2013 04:00:00
2013-06-03_23:28:00 test_schaltplanboiler nextValue: 55
2013-06-03_23:28:00 test_schaltplanboiler 60.0


Die Heizpatrone und die Umwälzpumpe werden nicht geschaltet. Warum?

Vielleicht hat ja jemand Lust, sich auf meine Fragen einzulassen. Es würde mich freuen!
Danke im Voraus und viele Grüße,
Gumma

Damian

Hallo Gumma,

das sieht doch schon gar nicht so schlecht aus, was du bisher umgesetzt hast;)

Zitatdefine Schaltplan_Boiler Heating_Control Boilersteuerung 12345|04:00|55 12345|06:00|20 12345|12:00|40 12345|18:00|55 12345|20:00|40 12345|22:00|20 67|05:00|55 {fhem("set Boilersteuerung desired %")}
attr Schaltplan_Boiler room HMS

geht etwas einfacher mit:

define Schaltplan_Boiler Heating_Control Boilersteuerung 12345|04:00|55 12345|06:00|20 12345|12:00|40 12345|18:00|55 12345|20:00|40 12345|22:00|20 67|05:00|55 set @ desired %


Zitat1. Problem: Die Funkbefehle an die Heizpatrone werden manchmal von dieser nicht "gehört".
Wie kann ich sicher sein, dass die Heizpatrone auch heizt? Befehl mehrfach senden? Status des Schalters abfragen? Geht glaub ich mit dem FS20 SU-2 nicht, oder? Mehrere Schaltpunkte im Heating-Control definieren? Wie würdet ihr das machen?

Eine einigermaßen sichere Funkverbindung ist sicherlich entscheidend. Ich schalte meine Heizung über FS20 und CUL, allerdings ist nur eine Wand dazwischen und 2 m Entfernung. Ich hatte noch nie einen einzigen Aussetzer. Bevor du das Problem mit FHEM versucht zu umgehen, würde ich die Sendeleistung der CUL auf Maximum stellen (set myCUL raw x09), dann würde ich versuchen die Funkstrecke zu verkleinern. Ich habe mittlerweile meine CUL im Treppenhaus hängen (USB-Verlängerung) und erreiche damit jede Ecke des Hauses. Alternativ neue FS20-St4 Schaltersteckdosen kaufen (haben besseren Superhet Empfänger, als die alten ) oder auf HM umsteigen - ist zwar mit zusätzlichen Kosten verbunden, dann aber sicherer.

Zitat2. Problem: Mein FHEM V(gestern upgedated) kommt mit der Syntax aus der Commandref <<define HCW Heating_Control WZ_Heizung 07:00|16 Mo,Di,Mi|16:00|18.5 20:00|12 {fhem("set dummy on"); fhem("set @ desired-temp %");}>> nicht zurecht. Mit dem o.g. Befehl <<{fhem("set Boilersteuerung desired %")>> gehts. Warum? Fehler in der Commandref oder Fehler beim Anwender?

Heating_Control ist ursprünglich für "echte" Thermostate programmiert worden und die werden mit desired-temp angesteuert, das THRSHOLD-Modul wird über set desired Wert angesteuert, weil es nicht nur für Temperaturen programmiert wurde.

Zitat3. Problem, das sich nur ergibt, wenn Problem 1 gelöst ist:
Eigentlich würde ich gerne die Heizstäbe der Heizpatrone und die zugehörige Umwälzpumpe separat ansteuern, um einen Pumpennachlauf zu realisieren. Bisher ist das etwas gefährlich, da aufgrund der Funkaussetzer nicht gewährleistet ist, dass die Heizstäbe nicht verglühen, da die Umwälzpumpe sicher ihren Betrieb aufgenommen hat. (Bei obiger Lösung lasse ich beide Verbraucher mit einem Schalter schalten.) Gibts da eine praktikable Lösung, die ich als bekennender Code-Zusammenkopierer-und-dabei-viele-Fehler-Macher realisieren kann?

Wenn dein Problem 1 gelöst, brauchst du natürlich zwei Schaltaktoren und dann einfach

define Boilersteuerung THRESHOLD Temp_WWSpeicher:temperature:2 heizpatrone|set @ off; sleep 30; set umwaelzpumpe off|set umwaelzpumpe on;sleep 30;set set @ on|2|off:on  


sleep ist hier ungefährlich - das System läuft noch weiter;)


ZitatDieser Code funktioniert bei mir nicht:
##
define test_boilersteuerung THRESHOLD Temp_WWSpeicher:temperature:2 |set test_heizpatrone off;define a1 at +00:00:30 set test_umwaelzpumpe off;delete a1|set test_umwaelzpumpe on;define a2 at +00:00:30 set test_heizpatrone on;delete a2|2|off:on  
attr test_boilersteuerung room HMS

klar, zum Zeitpunkt der Definition gibt es a1 noch nicht, daher meinen Lösungsvorschlag oben verwenden, danach sollte es auch keine Fehler im Log geben;)

Gruß

Damian


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

define test_boilersteuerung THRESHOLD Temp_WWSpeicher:temperature:2 |set test_heizpatrone off;define a1 at +00:00:30 set test_umwaelzpumpe off;delete a1|set test_umwaelzpumpe on;define a2 at +00:00:30 set test_heizpatrone on;delete a2|2|off:on  
attr test_boilersteuerung room HMS
[/quote]

Edit: Den Fehler müsste ich bei mir erst mal nachstellen - sehe bisher keinen

Gruß

Damian


[/quote]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Zrrronggg!

Zitat1. Problem: Die Funkbefehle an die Heizpatrone werden manchmal von dieser nicht "gehört".
Wie kann ich sicher sein, dass die Heizpatrone auch heizt? Befehl mehrfach senden? Status des Schalters abfragen? Geht glaub ich mit dem FS20 SU-2 nicht, oder? Mehrere Schaltpunkte im Heating-Control definieren? Wie würdet ihr das machen?

Zusätzlich zu dem was damian gesagt hat:
- mehrfach senden bringt nichts, je der FS20 Befehl wird sowieso 3x gesendet. Wenn das nicht geht, geht auch 6x nicht. Was es aber ab und na bringt um kurzfristige Störungen (Elektromotor läuft an oder so) abzufangen ist, den Befehlt 30 Sekunden später noch mal abzusetzen.
- FS20 RPT bringt bei einfachen FS20 Schaltvorgängen Linderung (Repeater) den du auf halber Strecke in eine Steckdose steckst.
- oder CUL RFR (siehe Wiki)
- wenn deine Heizung eine LED oder so hat die man auswerten kann: Es gibt für FS20 so einen kleinen Sender, der auf Licht reagiert, ist so gross wie ne Streichholzschachtel. Den kann man auf die LED kleben und sich so einen Rückkanal basteln (Steht irgendwo im Wiki, hab genauen Namen vergessen)
- Ich selbst sende an meinen Brenner nu noch "off-for-timer" befehle. Denn wenn dieser Befehl zum abschalten ankommt und der Brenner aus geht, geht er auch garantiert wieder an, Erhöht den WAF ungemein.
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

Damian

Hallo Gumma,

in der Eingabezeile musst du zwei Semikolons angeben, damit die Verkettung der Befehle funktioniert. Daher auch die Fehlermeldung in deiner Definition. In der Definition eines einmal definierten Moduls in der DEF-Zeile braucht man das dagegen nicht.

Mein Vorschlag sieht dann so aus, wenn du es über die Eingabezeile eingibst:

define Boilersteuerung THRESHOLD Temp_WWSpeicher:temperature:2 heizpatrone|set @ off;; sleep 30;; set umwaelzpumpe off|set umwaelzpumpe on;;sleep 30;;set set @ on|2|off:on

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Gumma

Hallo zusammen!

Erstmal herzlichen Dank für eure Unterstützung, insbesondere an Damian und Zrrronggg!.

Mein Code ist nun fertig (für meine Ansprüche) und ich möchte ihn für die Mitleser und Interessierten oder andere Code-Kopierer - wie ich - hier zur Verfügung stellen. Viele hier im Forum wird das langweilen, allerdings werden vielleicht auch einige - wieder wie ich - an die Grenzen ihres Informatikverständnisses geführt, obwohl der Code jetzt im Nachhinein zugegebenermaßen irgendwie ganz einfach wirkt. Ich fands schwer....

define Schalter_Heizeinheit dummy
attr Schalter_Heizeinheit room HMS

define heizung_kplWW structure room heizpatrone umwaelzpumpe
attr heizung_kplWW room HMS

define Boilersteuerung THRESHOLD Temp_WWSpeicher:temperature:2 Schalter_Heizeinheit|set @ off|set @ on|2|off:on
attr Boilersteuerung room HMS

define Schaltplan_Boiler Heating_Control Boilersteuerung 12345|05:30|40 12345|08:00|20 12345|12:00|40 12345|22:00|20 67|05:00|40 set @ desired %
attr Schaltplan_Boiler room HMS

define Pumpennachlauf_WWSpeicher notify Schalter_Heizeinheit {\
   if(Value("Schalter_Heizeinheit") eq "on") {\
      fhem ("set umwaelzpumpe on;; sleep 30;; set heizung_kplWW on") }\
   else {\
      fhem ("set heizpatrone off;; sleep 300;; set heizung_kplWW off") }\
}
attr Pumpennachlauf_WWSpeicher room HMS



Die Problematik mit den Funkaussetzern konnte ich beheben, indem ich meine CUL von 868.30 MHz auf 868.35 MHz umstellte und die Sendeleistung der CUL auf Maximum stellte. Die Schaltbefehle für die FS20 SU-2 kommen nun sicher an.

Der HMS 100T wollte anfangs nur sporadisch seine Messwerte senden. Eine Umstellung  des CUL-Parameters "sens" von  4dB auf 8dB brachte eine signifikante Verbesserung der Empfangsqualität. Derzeit empfängt die CUL 100% der vom HMS 100T abgesetzten Meldungen. Die Änderung der CUL-Frequenz auf 868.35 MHz brachte keine Verschlechterung des Empfanges der Messwerte mit sich.

Das Abschalten der Heizeinheit bzw. den Pumpennachlauf habe ich nun doch etwas anders gelöst, da ich schon einen dummy-Schalter zum Probieren definiert hatte. Eine Sicherheitsstufe zum Vermeiden von Heizphasen ohne Umwälzpumpenbetrieb konnte ich noch einbauen, indem ich erst die Umwälzpumpe bzw. Heizpatrone schalte und nach dem Pumpenvor- bzw. Nachlauf die Struktur (Heizpatrone und Umwälzpumpe) schalte. Sollte es bei der ersten Schaltung zu Funkproblemen kommen, hat das System noch eine zweite Chance, allerdings dann ohne Pumpennachlauf bzw. Pumpenvorlauf.

Ich finds dank eurer Hilfe recht gelungen.
Insbesondere freut mich, dass ich für ca. 50,- € eine Warmwasserregelung mit Temperaturverlaufsanzeige, freie Definitionsmöglichkeit von Pumpenvorlauf und Pumpennachlauf, freie Definitionsmöglichkeit von Schaltzeiten bzw. Wunschtemperatur habe.
Im Gegensatz dazu kostet die Buderus-Regeleinheit ca. 200,- €. Diese besteht aus einem großen Plastikkasten mit Platine. Einstellen kann man hier eine fixe Wunschtemperatur (ohne Zeitangaben) und dazu muss ich noch in den Keller laufen.
 
Meinen Zeitaufwand für die Programmierung lege ich mal lieber nicht in die Waagschale. Dann würde die Buderus-Regelung wieder gut ausschaun... ;-)  

Danke nochmal!

Viele Grüße,
Gumma

Damian

Hallo Gumma,

zur Verbesserung der Empfangsqualität habe ich bereits im Dezember etwas geschrieben.

http://forum.fhem.de/index.php?t=msg&goto=50679&rid=69&srch=erhebliche+steigerung#msg_50679

Die bisherige Resonanz bei der Umstellung von 4 auf 8 dB war nur positiv - man könnte langsam an eine Anpassung des voreingestellten Wertes in der Firmware nachdenken.

Warum hast du das so umständlich mit dem notify gelöst?

Wenn deine Schalter_Heizeinheit nur ein Dummy ist dann brauchst du nur zu definieren:

define Boilersteuerung THRESHOLD Temp_WWSpeicher:temperature:2 umwaelzpumpe|set @ off;; sleep 30;; set heizung_kplWW off|set @ on;; sleep 30;; set heizung_kplWW on



Wenn du unbedingt einen Dummy für die Anzeige haben willst, dann kannst du auch definieren:

define Boilersteuerung THRESHOLD Temp_WWSpeicher:temperature:2 Schalter_Heizeinheit|set @ off;;set heizpatrone off;;sleep 300;;set heizung_kplWW off|set @ on;;set umwaelzpumpe on;;sleep 30;;set heizung_kplWW on|2|off:on


in beiden Fällen brauchst keinen zusätzlichen notify.

Gruß

Damian



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Gumma

Hallo Damian und alle anderen,

du hast recht, ist komplizierter als es sein momentan sein müsste. Ich hatte den Dummy-Schalter eingerichtet, um die Ein- und Ausschaltvorgänge der Pumpe bzw. der Heizwendeln hinsichtlich einer stabilen Funkverbindung zu testen. Damit konnte ich das THRESHOLD-Modul umgehen. Danach ist mir noch eingefallen, dass es vielleicht Sinn macht, im Bad einen Taster anzubringen, mit dem man das Heating-Control-Modul und das THRESHOLD-Modul übersteuert kann, um temporär eine höhere Speichertemperatur, z.B. für ein Vollbad anzufordern.
Ich dachte mir, dass THRESHOLD und der Taster den dummy-Schalter ansprechen, der wiederum die Heizpatrone und die Umwälzpumpe anspricht.
Oder gibts da auch eine elegantere Lösung?

Bei mir ist da noch eine Frage aufgetaucht:

Ich habe in der Diele eine zeitabhängige Lichtsteuerung (Link).

define notify_EG_Diele notify 1_2112:on.* {\
my $hm = sprintf("%%02d:%%02d", $hour, $min);;\
   if($hm ge "00:00" && $hm lt "06:45") {\
   fhem ("set 1_2111 dim25%%;; delete wieder_aus;; define wieder_aus at +00:02:10 set 1_2111 off") }\
   if($hm ge "06:45" && $hm lt "20:00") {\
   fhem ("set 1_2111 dim100%%;; delete wieder_aus;; define wieder_aus at +00:02:10 set 1_2111 off") }\
   if($hm ge "20:00" && $hm le "23:59") {\
   fhem ("set 1_2111 dim50%%;; delete wieder_aus;; define wieder_aus at +00:02:10 set 1_2111 off") }\


Ich dachte mir, dass man diese vielleicht mit dem Heating-Control-Modul die aufwendigen if-else-Abfragen loswerden könnte.
Vielleicht irgendwie so:

define Licht_Diele FS20 0000 01
define Schaltplan_Diele Heating_Control Dimmer 1234567|00:00|25 1234567|06:00|100 1234567|20:00|50 set variable = %
define notify_EG_Diele notify Bewegungsmelder:on.* set Licht_Diele dim (variable)%;  sleep 300; set Licht_Diele off

Ich hab den "Code" nicht in ein extra Kästchen gepackt, da dieser so sicherlich nicht funktioniert...
Kann man irgendwie den dim-Befehl mit einer Variablen kombinieren? Wenn ja, wie?
Wenn ich zu dieser Frage lieber einen neuen Beitrag machen soll, bitte bescheid geben.

Danke!
Viele Grüße,
Gumma

Damian

Hallo Gumma,

wenn du noch einen separaten Taster nutzen willst, dann macht dein Konstrukt schon mehr Sinn.

Ich sehe die lange Nachlaufzeit von 300 Sekunden eher kritisch, gerade wenn du mit dem Taster dazwischen funkst. Denn, wenn du in dieser Sleepphase per Taster das Heizen übersteuerst, kann es dir passieren, dass deine Pumpe kurz danach ausgeht, weil dein noch laufender sleep von 300 Sekunden ausläuft und die Pumpe abschaltet, obwohl dein Heizstab durch den Taster gerade angegangen ist.

2. Eine globale Variable kannst du über einen Dummy realisieren:

define Dim_Wert dummy

define Schaltplan_Diele Heating_Control Dimmer 1234567|00:00|25 1234567|06:00|100 1234567|20:00|50 set Dim_Wert %

define notify_EG_Diele notify Bewegungsmelder:on.* {fhem "set Licht_Diele dim ".Value("Dim_Wert")} ; sleep 300; set Licht_Diele off


Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Gumma

Hallo Damian,

ihr seit echt gut hier! Danke für die guten Tipps.

Was meinst du, soll ich den vereinfachten Code zu den Codeschnipseln stellen bzw. an meinen alten Beitrag anhängen, wenn er funktioniert?


Zu der Sache mit meinem Zusatztaster und dem Sleep-Problem:

Die Problematik kann ich mit

delete a1; define a1 at +00:03:00 set umwaelzpumpe off

statt

sleep 300

und

einem weiteren delete a1 - Befehl nach dem Betätigen des Zusatztasters im Bad umgehen, oder?

Viele Grüße,
Gumma

Damian

Zitat von: Gumma schrieb am Mi, 05 Juni 2013 22:44Was meinst du, soll ich den vereinfachten Code zu den Codeschnipseln stellen bzw. an meinen alten Beitrag anhängen, wenn er funktioniert?

Ich würde erst mal längere Zeit die Sache laufen lassen, denn es ergeben sich oft immer wieder Randprobleme, wie mit dem Sleep, die man erst mal nicht bedacht hat.

Ich will auch meine umfangreiche Heizungs-Steuerung in Wiki stellen, werde aber noch die nächste Heizungsperiode abwarten, um evtl. Randerscheinungen noch auszubügeln.

ZitatZu der Sache mit meinem Zusatztaster und dem Sleep-Problem:

Die Problematik kann ich mit

delete a1; define a1 at +00:03:00 set umwaelzpumpe off

statt

sleep 300

und

einem weiteren delete a1 - Befehl nach dem Betätigen des Zusatztasters im Bad umgehen, oder?

Könnte klappen - aber wie oben schon erwähnt - am besten alle Kombinationen gedanklich durchspielen und natürlich über einen längeren Zeitraum austesten.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Gumma

Hallo nochmal!

Ich reiß immer mehr Baustellen auf....

define Dim_Wert dummy

define Schaltplan_Diele Heating_Control Dimmer 1234567|00:00|25 1234567|06:00|100 1234567|20:00|50 set Dim_Wert %

define notify_EG_Diele notify Bewegungsmelder:on.* {fhem "set Licht_Diele dim ".Value("Dim_Wert")} ; sleep 300; set Licht_Diele off



geht nicht, da Heating-Control eine Dezimalzahl ausgibt (z.B. 50.0) mit der der dim-Befehl nichts anfangen kann. Wie bekomme ich denn aus einer Dezimalzahl eine Ganzzahl hin?

In Perl braucht eine Variable ja ein $-Zeichen, in fhem darf kein $-Zeichen stehen, sprich ich komme hier mit dem sprintf-Befehl nicht weiter..... Wie kann ich Variablen-Werte zwischen fhem und Perl übergeben?

Oder kann man (man.... ich vermutlich nicht....) das Heating-Modul dahingehend bearbeiten?

Ideen? Bestimmt, oder? ;-)

Viele Grüße,
Gumma