HM-CC-TC und HM-CC-VD: Ventil schließt in AUTO nicht, in MANU jedoch schon

Begonnen von Arno, 15 November 2013, 21:00:30

Vorheriges Thema - Nächstes Thema

Arno

Hallo zusammen,

ich lese seit einiger Zeit mit und möchte mich zunächst einmal ganz herzlich für FHEM an sich und die vielen Hilfestellungen und Hinweise hier im Forum bedanken. Das ist echt klasse!

Kurz zu meinem Setup: Im Wohn-/Arbeitszimmer (2 Räume, verbunden durch einen großen, offenen Durchbruch; im Grunde also ein großer Raum) laufen ein HM-CC-TC und zwei HM-CC-VD (zwei Heizkörper). Vor rund drei Jahren habe ich dieses Setup standalone (also ohne CCU oder FHEM usw.) in Betrieb genommen. Das hat auch sehr gut funktioniert. Dann bin ich kurz vor dem Austausch der Heizungsanlage im Haus (Mietshaus mit fünf Stockwerken, die Wohnung liegt im Erdgeschoss) auf RWE SmartHome umgestiegen. War damit aber auch nicht zufrieden und bin jetzt seit Mitte des Jahres wieder bei HomeMatic, jetzt aber mit FHEM. Allerdings funktioniert die Heizungsregelung hier nicht mehr so gut wie früher. Seit der neuen Heizung ist die Vorlauftemperatur deutlich höher und die Heizkörper werden auch bei kleinen Stellwerten sehr schnell warm bzw. sogar so heiß, dass man sie nicht mehr länger anfassen möchte. Leider kann ich die Vorlauftemperatur nicht ohne Weiteres beeinflussen, da ich "nur" Mieter der Wohnung bin. Neben der höheren Vorlauftemperatur ist vermutlich auch der Druck in der Anlage höher, da ich ein deutliches Rauschen höre, wenn das Ventil offen ist. Das war vor dem Umbau der Anlage nicht der Fall.

Jetzt zum eigentlichen Problem: Im Automatikmodus sollte der Raum tagsüber auf 20 °C geregelt werden. Sobald der Raum unter diese Temperatur fällt (oder unterhalb den Grenzwert, den der HM-TC-CC dafür vorsieht), werden die Ventile geöffnet und es wird warm. So weit so gut. Jedoch oberhalb dieser Temperatur schließt das Ventil im Wohnzimmer nicht komplett (ich kann die Heizung rauschen hören) und der Raum heizt sich weiter auf. Im Logfile steht jedoch für beide Ventile
actuator: 0 %
und auf dem Ventil wird auch 0% angezeigt. Ebenso in der VST-Anzeige im HM-CC-TC.

Jetzt kommt das für mich Kuriose: Wenn ich den controlMode auf MANU stelle und OFF als Temperatur einstelle, schließt kurz darauf das Ventil, die Heizung hört auf zu rauschen und der Raum heizt sich nicht weiter auf. Dazu habe ich mehrere Fragen:

       
  • Wird im Falle von "OFF" ein anderer Wert vom HM-CC-TC an den HM-CC-VD geschickt, als wenn im AUTO-Modus 0% an den HM-CC-VD geschickt wird?
  • Ist das Ventil bei 0% im AUTO-Modus nicht wirklich zu oder gibt es evtl. einen "Rundungsfehler" in der Anzeige (sowohl am HM-CC-VD selbst, als auch im HM-CC-TC und FHEM)? Ist die Auflösung tatsächlich größer als in 1%-Schritten und reicht in meinem Fall ein Stellwert von unter 1%, um das Ventil weit genug zu öffnen, um das Aufheizen zu erklären?
Ihr seht, ich bin ziemlich ratlos und für jede Hilfe dankbar. :)

Hier noch ein paar Logfile-Auszüge (gegen 14 Uhr wurde es mir dann einfach zu warm und ich habe auf manuell umgestellt):

WZ.Thermostat-2013-46.log

2013-11-15_10:59:18 WZ.Thermostat T: 23.2 H: 56
2013-11-15_10:59:18 WZ.Thermostat measured-temp: 23.2
2013-11-15_10:59:18 WZ.Thermostat humidity: 56
2013-11-15_10:59:24 WZ.Thermostat desired-temp: 20.0
2013-11-15_10:59:24 WZ.Thermostat battery: ok
2013-11-15_10:59:38 WZ.Thermostat actuator: 0 %
2013-11-15_11:02:21 WZ.Thermostat T: 23.2 H: 56
2013-11-15_11:02:21 WZ.Thermostat measured-temp: 23.2
2013-11-15_11:02:21 WZ.Thermostat humidity: 56
2013-11-15_11:02:41 WZ.Thermostat actuator: 0 %
2013-11-15_11:05:09 WZ.Thermostat T: 23.2 H: 56
2013-11-15_11:05:09 WZ.Thermostat measured-temp: 23.2
2013-11-15_11:05:09 WZ.Thermostat humidity: 56
2013-11-15_11:05:29 WZ.Thermostat actuator: 0 %
2013-11-15_11:07:42 WZ.Thermostat T: 23.3 H: 56
2013-11-15_11:07:42 WZ.Thermostat measured-temp: 23.3
2013-11-15_11:07:42 WZ.Thermostat humidity: 56
2013-11-15_11:08:02 WZ.Thermostat actuator: 0 %
...
2013-11-15_13:57:03 WZ.Thermostat actuator: 0 %
2013-11-15_13:58:56 WZ.Thermostat T: 24.0 H: 57
2013-11-15_13:58:56 WZ.Thermostat measured-temp: 24.0
2013-11-15_13:58:56 WZ.Thermostat humidity: 57
2013-11-15_13:59:16 WZ.Thermostat actuator: 0 %
2013-11-15_14:01:59 WZ.Thermostat T: 24.0 H: 57
2013-11-15_14:01:59 WZ.Thermostat measured-temp: 24.0
2013-11-15_14:01:59 WZ.Thermostat humidity: 57
2013-11-15_14:02:19 WZ.Thermostat actuator: 0 %
2013-11-15_14:03:21 WZ.Thermostat displayMode: temp-hum
2013-11-15_14:03:21 WZ.Thermostat displayTemp: actual
2013-11-15_14:03:21 WZ.Thermostat controlMode: manual
2013-11-15_14:03:21 WZ.Thermostat decalcDay: Sat
2013-11-15_14:03:21 WZ.Thermostat displayTempUnit: celsius
2013-11-15_14:03:21 WZ.Thermostat day-temp: 21 C
2013-11-15_14:03:21 WZ.Thermostat night-temp: 17 C
2013-11-15_14:03:21 WZ.Thermostat party-temp: 20 C
2013-11-15_14:03:21 WZ.Thermostat desired-temp: off
2013-11-15_14:04:47 WZ.Thermostat T: 23.9 H: 57
2013-11-15_14:04:47 WZ.Thermostat measured-temp: 23.9
2013-11-15_14:04:47 WZ.Thermostat humidity: 57
2013-11-15_14:05:07 WZ.Thermostat actuator: 0 %
2013-11-15_14:07:20 WZ.Thermostat T: 24.0 H: 57
2013-11-15_14:07:20 WZ.Thermostat measured-temp: 24.0
2013-11-15_14:07:20 WZ.Thermostat humidity: 57
2013-11-15_14:07:40 WZ.Thermostat actuator: 0 %
2013-11-15_14:09:39 WZ.Thermostat T: 24.0 H: 57
2013-11-15_14:09:39 WZ.Thermostat measured-temp: 24.0
2013-11-15_14:09:39 WZ.Thermostat humidity: 57
2013-11-15_14:09:59 WZ.Thermostat actuator: 0 %
2013-11-15_14:12:28 WZ.Thermostat T: 23.9 H: 57
2013-11-15_14:12:28 WZ.Thermostat measured-temp: 23.9
2013-11-15_14:12:28 WZ.Thermostat humidity: 57
2013-11-15_14:12:48 WZ.Thermostat actuator: 0 %
2013-11-15_14:15:03 WZ.Thermostat T: 23.9 H: 57
2013-11-15_14:15:03 WZ.Thermostat measured-temp: 23.9
2013-11-15_14:15:03 WZ.Thermostat humidity: 57
2013-11-15_14:15:23 WZ.Thermostat actuator: 0 %
2013-11-15_14:17:23 WZ.Thermostat T: 23.9 H: 57
2013-11-15_14:17:23 WZ.Thermostat measured-temp: 23.9
2013-11-15_14:17:23 WZ.Thermostat humidity: 57
2013-11-15_14:17:43 WZ.Thermostat actuator: 0 %
2013-11-15_14:19:29 WZ.Thermostat T: 23.9 H: 57
2013-11-15_14:19:29 WZ.Thermostat measured-temp: 23.9
2013-11-15_14:19:29 WZ.Thermostat humidity: 57
2013-11-15_14:19:49 WZ.Thermostat actuator: 0 %


WZ.Thermostat.Weather-2013-46.log

2013-11-15_10:59:18 WZ.Thermostat.Weather T: 23.2 H: 56
2013-11-15_10:59:18 WZ.Thermostat.Weather measured-temp: 23.2
2013-11-15_10:59:18 WZ.Thermostat.Weather humidity: 56
2013-11-15_11:02:21 WZ.Thermostat.Weather T: 23.2 H: 56
2013-11-15_11:02:21 WZ.Thermostat.Weather measured-temp: 23.2
2013-11-15_11:02:21 WZ.Thermostat.Weather humidity: 56
2013-11-15_11:05:09 WZ.Thermostat.Weather T: 23.2 H: 56
2013-11-15_11:05:09 WZ.Thermostat.Weather measured-temp: 23.2
2013-11-15_11:05:09 WZ.Thermostat.Weather humidity: 56
2013-11-15_11:07:42 WZ.Thermostat.Weather T: 23.3 H: 56
2013-11-15_11:07:42 WZ.Thermostat.Weather measured-temp: 23.3
2013-11-15_11:07:42 WZ.Thermostat.Weather humidity: 56
...
2013-11-15_13:56:43 WZ.Thermostat.Weather T: 24.0 H: 57
2013-11-15_13:56:43 WZ.Thermostat.Weather measured-temp: 24.0
2013-11-15_13:56:43 WZ.Thermostat.Weather humidity: 57
2013-11-15_13:58:56 WZ.Thermostat.Weather T: 24.0 H: 57
2013-11-15_13:58:56 WZ.Thermostat.Weather measured-temp: 24.0
2013-11-15_13:58:56 WZ.Thermostat.Weather humidity: 57
2013-11-15_14:01:59 WZ.Thermostat.Weather T: 24.0 H: 57
2013-11-15_14:01:59 WZ.Thermostat.Weather measured-temp: 24.0
2013-11-15_14:01:59 WZ.Thermostat.Weather humidity: 57
2013-11-15_14:04:47 WZ.Thermostat.Weather T: 23.9 H: 57
2013-11-15_14:04:47 WZ.Thermostat.Weather measured-temp: 23.9
2013-11-15_14:04:47 WZ.Thermostat.Weather humidity: 57
2013-11-15_14:07:20 WZ.Thermostat.Weather T: 24.0 H: 57
2013-11-15_14:07:20 WZ.Thermostat.Weather measured-temp: 24.0
2013-11-15_14:07:20 WZ.Thermostat.Weather humidity: 57
2013-11-15_14:09:39 WZ.Thermostat.Weather T: 24.0 H: 57
2013-11-15_14:09:39 WZ.Thermostat.Weather measured-temp: 24.0
2013-11-15_14:09:39 WZ.Thermostat.Weather humidity: 57
2013-11-15_14:12:28 WZ.Thermostat.Weather T: 23.9 H: 57
2013-11-15_14:12:28 WZ.Thermostat.Weather measured-temp: 23.9
2013-11-15_14:12:28 WZ.Thermostat.Weather humidity: 57
2013-11-15_14:15:03 WZ.Thermostat.Weather T: 23.9 H: 57
2013-11-15_14:15:03 WZ.Thermostat.Weather measured-temp: 23.9
2013-11-15_14:15:03 WZ.Thermostat.Weather humidity: 57
2013-11-15_14:17:23 WZ.Thermostat.Weather T: 23.9 H: 57
2013-11-15_14:17:23 WZ.Thermostat.Weather measured-temp: 23.9
2013-11-15_14:17:23 WZ.Thermostat.Weather humidity: 57
2013-11-15_14:19:29 WZ.Thermostat.Weather T: 23.9 H: 57
2013-11-15_14:19:29 WZ.Thermostat.Weather measured-temp: 23.9
2013-11-15_14:19:29 WZ.Thermostat.Weather humidity: 57


AZ.Ventil-2013-46.log

2013-11-15_10:57:25 AZ.Ventil set_0 %
2013-11-15_10:57:25 AZ.Ventil ValveDesired: 0 %
2013-11-15_10:57:25 AZ.Ventil ValvePosition: 0 %
2013-11-15_10:57:25 AZ.Ventil 0 %
2013-11-15_10:57:25 AZ.Ventil battery: ok
2013-11-15_10:57:25 AZ.Ventil motorErr: ok
2013-11-15_10:57:25 AZ.Ventil motor: stop
2013-11-15_10:57:25 AZ.Ventil operState: onTarget
2013-11-15_11:02:41 AZ.Ventil set_0 %
2013-11-15_11:02:41 AZ.Ventil ValveDesired: 0 %
2013-11-15_11:02:41 AZ.Ventil ValvePosition: 0 %
2013-11-15_11:02:41 AZ.Ventil 0 %
2013-11-15_11:02:41 AZ.Ventil battery: ok
2013-11-15_11:02:41 AZ.Ventil motorErr: ok
2013-11-15_11:02:41 AZ.Ventil motor: stop
2013-11-15_11:02:41 AZ.Ventil operState: onTarget
2013-11-15_11:08:02 AZ.Ventil set_0 %
2013-11-15_11:08:02 AZ.Ventil ValveDesired: 0 %
2013-11-15_11:08:02 AZ.Ventil ValvePosition: 0 %
2013-11-15_11:08:02 AZ.Ventil 0 %
2013-11-15_11:08:02 AZ.Ventil battery: ok
2013-11-15_11:08:02 AZ.Ventil motorErr: ok
2013-11-15_11:08:02 AZ.Ventil motor: stop
2013-11-15_11:08:02 AZ.Ventil operState: onTarget
...
2013-11-15_13:59:16 AZ.Ventil set_0 %
2013-11-15_13:59:16 AZ.Ventil ValveDesired: 0 %
2013-11-15_13:59:16 AZ.Ventil ValvePosition: 0 %
2013-11-15_13:59:16 AZ.Ventil 0 %
2013-11-15_13:59:16 AZ.Ventil battery: ok
2013-11-15_13:59:16 AZ.Ventil motorErr: ok
2013-11-15_13:59:16 AZ.Ventil motor: stop
2013-11-15_13:59:16 AZ.Ventil operState: onTarget
2013-11-15_14:05:07 AZ.Ventil set_0 %
2013-11-15_14:05:07 AZ.Ventil ValveDesired: 0 %
2013-11-15_14:05:07 AZ.Ventil ValvePosition: 0 %
2013-11-15_14:05:07 AZ.Ventil 0 %
2013-11-15_14:05:07 AZ.Ventil battery: ok
2013-11-15_14:05:07 AZ.Ventil motorErr: ok
2013-11-15_14:05:07 AZ.Ventil motor: stop
2013-11-15_14:05:07 AZ.Ventil operState: onTarget
2013-11-15_14:09:59 AZ.Ventil set_0 %
2013-11-15_14:09:59 AZ.Ventil ValveDesired: 0 %
2013-11-15_14:09:59 AZ.Ventil ValvePosition: 0 %
2013-11-15_14:09:59 AZ.Ventil 0 %
2013-11-15_14:09:59 AZ.Ventil battery: ok
2013-11-15_14:09:59 AZ.Ventil motorErr: ok
2013-11-15_14:09:59 AZ.Ventil motor: stop
2013-11-15_14:09:59 AZ.Ventil operState: onTarget
2013-11-15_14:15:23 AZ.Ventil set_0 %
2013-11-15_14:15:23 AZ.Ventil ValveDesired: 0 %
2013-11-15_14:15:23 AZ.Ventil ValvePosition: 0 %
2013-11-15_14:15:23 AZ.Ventil 0 %
2013-11-15_14:15:23 AZ.Ventil battery: ok
2013-11-15_14:15:23 AZ.Ventil motorErr: ok
2013-11-15_14:15:23 AZ.Ventil motor: stop
2013-11-15_14:15:23 AZ.Ventil operState: onTarget
2013-11-15_14:19:49 AZ.Ventil set_0 %
2013-11-15_14:19:49 AZ.Ventil ValveDesired: 0 %
2013-11-15_14:19:49 AZ.Ventil ValvePosition: 0 %
2013-11-15_14:19:49 AZ.Ventil 0 %
2013-11-15_14:19:49 AZ.Ventil battery: ok
2013-11-15_14:19:49 AZ.Ventil motorErr: ok
2013-11-15_14:19:49 AZ.Ventil motor: stop
2013-11-15_14:19:49 AZ.Ventil operState: onTarget


WZ.Ventil-2013-46.log

2013-11-15_10:59:38 WZ.Ventil set_0 %
2013-11-15_10:59:38 WZ.Ventil ValveDesired: 0 %
2013-11-15_10:59:38 WZ.Ventil ValvePosition: 0 %
2013-11-15_10:59:38 WZ.Ventil 0 %
2013-11-15_10:59:38 WZ.Ventil battery: ok
2013-11-15_10:59:38 WZ.Ventil motorErr: ok
2013-11-15_10:59:38 WZ.Ventil motor: stop
2013-11-15_10:59:38 WZ.Ventil operState: onTarget
2013-11-15_11:05:29 WZ.Ventil set_0 %
2013-11-15_11:05:29 WZ.Ventil ValveDesired: 0 %
2013-11-15_11:05:29 WZ.Ventil ValvePosition: 0 %
2013-11-15_11:05:29 WZ.Ventil 0 %
2013-11-15_11:05:29 WZ.Ventil battery: ok
2013-11-15_11:05:29 WZ.Ventil motorErr: ok
2013-11-15_11:05:29 WZ.Ventil motor: stop
2013-11-15_11:05:29 WZ.Ventil operState: onTarget
2013-11-15_11:10:22 WZ.Ventil set_0 %
2013-11-15_11:10:22 WZ.Ventil ValveDesired: 0 %
2013-11-15_11:10:22 WZ.Ventil ValvePosition: 0 %
2013-11-15_11:10:22 WZ.Ventil 0 %
2013-11-15_11:10:22 WZ.Ventil battery: ok
2013-11-15_11:10:22 WZ.Ventil motorErr: ok
2013-11-15_11:10:22 WZ.Ventil motor: stop
2013-11-15_11:10:22 WZ.Ventil operState: onTarget
...
2013-11-15_13:57:03 WZ.Ventil set_0 %
2013-11-15_13:57:03 WZ.Ventil ValveDesired: 0 %
2013-11-15_13:57:03 WZ.Ventil ValvePosition: 0 %
2013-11-15_13:57:03 WZ.Ventil 0 %
2013-11-15_13:57:03 WZ.Ventil battery: ok
2013-11-15_13:57:03 WZ.Ventil motorErr: ok
2013-11-15_13:57:03 WZ.Ventil motor: stop
2013-11-15_13:57:03 WZ.Ventil operState: onTarget
2013-11-15_14:02:19 WZ.Ventil set_0 %
2013-11-15_14:02:19 WZ.Ventil ValveDesired: 0 %
2013-11-15_14:02:19 WZ.Ventil ValvePosition: 0 %
2013-11-15_14:02:19 WZ.Ventil 0 %
2013-11-15_14:02:19 WZ.Ventil battery: ok
2013-11-15_14:02:19 WZ.Ventil motorErr: ok
2013-11-15_14:02:19 WZ.Ventil motor: stop
2013-11-15_14:02:19 WZ.Ventil operState: onTarget
2013-11-15_14:07:40 WZ.Ventil set_0 %
2013-11-15_14:07:40 WZ.Ventil ValveDesired: 0 %
2013-11-15_14:07:40 WZ.Ventil ValvePosition: 0 %
2013-11-15_14:07:40 WZ.Ventil 0 %
2013-11-15_14:07:40 WZ.Ventil battery: ok
2013-11-15_14:07:40 WZ.Ventil motorErr: ok
2013-11-15_14:07:40 WZ.Ventil motor: stop
2013-11-15_14:07:40 WZ.Ventil operState: onTarget
2013-11-15_14:12:48 WZ.Ventil set_0 %
2013-11-15_14:12:48 WZ.Ventil ValveDesired: 0 %
2013-11-15_14:12:48 WZ.Ventil ValvePosition: 0 %
2013-11-15_14:12:48 WZ.Ventil 0 %
2013-11-15_14:12:48 WZ.Ventil battery: ok
2013-11-15_14:12:48 WZ.Ventil motorErr: ok
2013-11-15_14:12:48 WZ.Ventil motor: stop
2013-11-15_14:12:48 WZ.Ventil operState: onTarget
2013-11-15_14:17:43 WZ.Ventil set_0 %
2013-11-15_14:17:43 WZ.Ventil ValveDesired: 0 %
2013-11-15_14:17:43 WZ.Ventil ValvePosition: 0 %
2013-11-15_14:17:43 WZ.Ventil 0 %
2013-11-15_14:17:43 WZ.Ventil battery: ok
2013-11-15_14:17:43 WZ.Ventil motorErr: ok
2013-11-15_14:17:43 WZ.Ventil motor: stop
2013-11-15_14:17:43 WZ.Ventil operState: onTarget


Viele Grüße
Arno

P.S.: Die HomeMatic-Komponenten habe ich auf Werkseinstelllungen zurück gesetzt, bevor ich sie in diesem Jahr in Betrieb genommen habe.
P.P.S.: Ein weiterer Unterschied zwischen dem früheren Homematic-Setup zum aktuellen ist die FW-Version der HM-CC-VD. Diese habe ich diesen Sommer auf die Version 2.0 updaten lassen, da ich früher schonmal mit dem 4%-Hänger zu kämpfen hatte.

herrmannj

Hi Arno,

das ist wohl leider ein Bug in den HM-CC-VD, siehe http://www.elv.de/topic/hm-cc-vd-fw-2-0-0-bug.html

Bin vor kurzem auch darauf gestoßen (gleiche Symptome). Habe einen erneuten Kalibrierungslauf gemacht, seitdem ist es OK. Ob das von Dauer ist kann ich noch nicht sagen, in dem verlinkten Thread schreiben die Leute das es keine Dauerlösung ist.

Deinen Workaround "Manu", dann "Off" finde ich sehr hilfreich, hatte schon überlegt ein Script zu schreiben um das abzufangen. Mein Gedanke war das Ventil auf 100% hoch zunehmen und danach auf 0% zurück zu fahren. Deine Variante ist viele charmanter.

Jetzt stellt sich noch die Frage wie sich der "Fehler" sicher erkennen lässt, da gilt es ja noch externen Wärmeeintag und die Nachwärme bzw Trägheit der Regelung zu berücksichtigen.

Short fix; nimm mal die Batterien raus, warte kurz. Nach dem einlegen kalibriert er ja neu.

Das "Fehler-Abfang-Script" wollte ich eigentlich verdrängen ;-), aber ist schon doof wenn der Fehler Nachts bzw bei Abwesenheit eintritt. Muss also wohl gemacht werden ... Hast Du evtl Lust mit zumachen ?

vg
Jörg

ps, der 0% bug ist wohl der Vetter vom 4% bug .... angeblich nicht zu fixen ...

rtv

Dieser 0% Bug ist echt nervig. Ich hab' vor, mittels threshold zu prüfen, ob die Temperatur 2°C über der Frauen-Komfort-Temperatur liegt ;-)

Arno

Ich musste gerade herzhaft lachen, als ich die erste Antwort gelesen habe. Nicht wegen der Antwort an sich, sondern wegen meiner eigenen Naivität, zu glauben, dass nach dem Einsenden der Stellantriebe und dem Update auf FW 2.0 solche Probleme der Vergangenheit angehören würden. Ich bin doch tatsächlich nicht im Entferntesten auf die Idee gekommen, dass das ein weit verbreiteter Bug der Stellantriebe sein könnte. Danke an @hermannj für das Augenöffnen. :)

@herrmannj: Ich bin gerne dabei, ein Skript dafür zu entwickeln. Mein erster Ansatz wäre, bei einer Temperaturüberschreitung x für mehr als y Sekunden, den Modus auf "MANU" und die Solltemperatur auf "OFF" zu setzen. Nach z Sekunden wird der Modus wieder zurück auf "AUTO" gestellt.

@rtv: Könnte man auch machen. Allerdings wäre mir die obere Variante etwas lieber. Zum Einen könnte man sie durch geeignete Einstellung der Parameter auch an Dein Verfahren anpassen (x == 2 °C, y == 0). Zum Anderen könnte es etwas früher ein sicheres Erkennen der Überschreitung geben, wenn man beispielsweise x == 1 °C setzt und y = 15 * 60 (sprich 15 Minuten). Im Grunde würde ich nämlich dem Thermostat und dem Stellantrieb schon gerne die Chance geben, es selber hinzubekommen. Da kann man dann mit den Werten auch etwas rumspielen.

Das einzige, was ich jetzt mal herausfinden muss, ist, wie man in FHEM Variablen zwischenspeichern kann. Soweit ich das auf die Schnelle sehen konnte, geht das über Attribute eines Dummy Devices. Vielleicht kann da einer von den Profis etwas zu sagen ...

Viele Grüße
Arno

herrmannj

Hi Arno,

ja - so ist es :-)

Beim doing des scriptes bin ich dabei, die variable ist garnicht so das problem. Lässt sich ggf auch in ein Modul auslagern.

Ich hab noch kein richtiges "feeling" bzgl der Strategie den Fehlerfall zu catchen.

Die Tempüberschreitung bekommst Du halt auch nach dem Absenken. Bei mir dauert es bei den aktuellen Außentemperaturen > 2,5h um von 20° auf 17° zu fallen. In dieser Zeit würde eine einfache Differenzabfrage ja dauernd Alarm schlagen. Irgendwann kommt auch wieder der Frühling/Sommer und die Sonne erwärmt den Raum während der Absenkung am Tag vielleicht auf 19°+ ... Diff > 2° und Fehlalarm ....

Na klar kann man dann immer auf auf Manuell/Off schalten - aber irgendwie (sprich Zeitpunkt) muss das zurückschalten in den Automodus ja organisiert werden ...

Um das zu strukturieren:

zuerst müsste meiner Meinung nach fhem unterscheiden ob der Raum zu warm ist weil
* a: die Absenkung aktiv ist, der Raum aber noch Restwärme hat
* b: extern (Sonne, Kamin) Wärme dazukommt
* c: Ventil klemmt

Vielleicht ist das aber auch alles viel zu kompliziert und die rtv Variante erschlägt das Ding (grad während ich das schreibe kommt das oben, naja, eher akademisch vor ;-).

das gleiche rtv style ;-):

Threshold auf Daytemp + 1 bis 2°. Wenn der auslöst den vd auf "Manuell" und dann auf "off". Eine Stunde warten dann zurück auf "Auto" -> zack, fertig aus. Das schlimmste was dann passieren kann wäre wohl: 2 Wochen Ski Urlaub, Ventil hängt gerade so des eben nicht 17° (Absenkung) sonder 21,8° (knapp unter Daytemp + 2 = threshold) sind. Ok, wäre dann so.

Für den 4% Bug gabs mal ein Script, das ist aber wohl mit dem alten Wiki ins Walhalla gezogen, ich finds dort nicht mehr. Soweit ich mich erinnern kann hat das aber mit Ventil auf und zu gearbeitet, wie das ausgelöst wurde weiß ich nicht mehr :(

Spontane Entscheidung: bei mir wird es auch der threshold, Danke @rtv :-)-

vg
Jörg

rtv

Hehe, gern geschehen ;D
Vor dem Fehlalarm hätte ich jetzt auch nicht soviel Angst: da ja nach kurzer Zeit wieder auf Auto umgestellt wird, wird man das in der Praxis vermutlich nicht mal merken (wenn man nicht gerade auf die Plots schaut).


unimatrix

Du hast deine VDs für ein FW-Upgrade eingesendet? War der Grund ein anerkannter Bug? Was waren die KOsten usw? Hast du auch andere Geräte eingeschickt?

Danke für die Infos!

herrmannj

Hallo,

glücklicherweise hatte ich den besagten bug ja nur einmal, hab mich heute trotzdem mal an script gesetzt. Vorbeugen soll ja besser sein als auf die Schuhe ...

Konnte dann doch nicht widerstehen und hab das komplette Paket genommen.

Die Strategie ist:
* Prüfen ob am TC eingestellte Solltemperatur +/- Abweichung anliegt. Wenn ja, fine, fertig.
* Wenn die TC-Solltemperatur jünger als 15min ist, erstmal abwarten ...
* Immer noch zu hoch, aber stiegt nicht weiter ? abwarten ...
* Ansonsten Ventile auf "off". Abwarten ...
* Immer noch zu hoch ? Prüfen ob eine ungewöhnlich niedrige Solltemperatur eingestellt ist. (Wenn zB 8° vorgegeben sind können 12° in einem Mehrfamielienhaus ok sein). Wenn ja, fertig
* Prüfen ob hohe Außentemperaturen sind. Dann mag es drin ja auch ohne Heizung warm werden :-)

Wenn das Programm bis hier kommt sind alle Möglichkeiten erschöpft und ein Alarm sollte ausgelöst werden. Welcher muss jeder für sich entscheiden: Fritzbox Telefon klingeln lassen, Mail, SMS, Push ... whatever. (im Programm Zeilen: # cry for help ersetzen)

"Rückwärts" funktioniert das ganze analog. Wird bei geschlossenem Ventil die zwischengespeicherte Solltemperatur unterschritten dann wird sie im TC neu gesetzt.

Dadurch sollten im Idealfall der Fehler so ausgeglichen werden das er vom Rest der Familie möglichst erst gar nicht bemerkt wird ;-).

Gleichzeitig können bei Fehlfunktion oder auch Heizungsausfall gleich die Alarmmeldungen abgesetzt werden.

Den Zwischenschritt "auto auf manuell" habe ich ausgespart. Dummerweise lässt sich die Wirkung von "desired-temp: off" jetzt nur im echten Fehlerfall überprüfen, da würde ich mich über Rückmeldungen freuen.

vg
jörg


periodischer Prüfung zB mit:

define HeatDogLiving +*00:10:00 {myHmUtils_HeatDog('TCLiving', 1.5, ReadingsVal('THGR810_1', 'temperature', 15))


Parameter:
#1 der Name des TC Device (kein einzelner Channel, das Device).
#2 die erlaubte Abweichung von der Solltemperatur
#3 eine Außentemperatur (Sensor oder online Temp)

99_myHmUtils.pm:

##############################################
# $Id: 99_myHmUtils.pm 0 2013-11-18 00:00:00Z herrmannj $
package main;

use strict;
use warnings;
use POSIX;
use Time::HiRes qw(gettimeofday);

sub
myHmUtils_Initialize($$)
{
  my ($hash) = @_;
}

my $history;

sub
myHmUtils_HeatDog(@)
{
  my ($tcDevice, $deviation, $outsideTemp) = @_;

  my $desiredTemp = stripSet(ReadingsVal($tcDevice, "desired-temp", 17));
  $desiredTemp = 4 if ($desiredTemp eq 'off');
  $desiredTemp = $history -> {$tcDevice} -> {'wdDesiredTemp'} if (($history -> {$tcDevice} -> {'wdFlag'} || 0) == 1);
  my $desiredSetTime = time_str2num(ReadingsTimestamp($tcDevice, "desired-temp", 0));
  my $actualTemp = stripSet(ReadingsVal($tcDevice, "measured-temp", undef));

  # save temp for further reference
  $history -> {$tcDevice} -> {'lastTemp'} = ($history -> {$tcDevice} -> {'Temp'} || $actualTemp);
  $history -> {$tcDevice} -> {'Temp'} = $actualTemp;

  # return if we are fine
  return undef if ((($desiredTemp - $deviation) < $actualTemp) && ($actualTemp < ($desiredTemp + $deviation)));

  # allow 15 min to transmit and set valve
  return undef if ((gettimeofday() - $desiredSetTime) < 900);

  if ($actualTemp > ($desiredTemp + $deviation))
  {
    # we are still to high, but temp doesnt rise. Stay calm and wait !
    return undef if (($actualTemp - $history -> {$tcDevice} -> {'lastTemp'}) <= 0);
   
    # set heating off if not done anyway
    if (($history -> {$tcDevice} -> {'wdFlag'} || 0) == 0)
    {
      # first, set wd flag on to indicate that we manual adjusting
      $history -> {$tcDevice} -> {'wdFlag'} = 1;

      # save actual desired temp to be able to restore it later
      $history -> {$tcDevice} -> {'wdDesiredTemp'} = stripSet(ReadingsVal($tcDevice, "desired-temp", undef));
      fhem "set $tcDevice desired-temp off";
     
      return "shutting valve off.";
    }

    # heating is off and we are still to high:
   
    # dont panic if "to high" means below 16 degrees, thats what we expect in a normal room even with heating turned off
    return undef if ($actualTemp < 16);

    # lets see if there is environmental influence
    if (defined($outsideTemp))
    {
      return undef if (($actualTemp - $outsideTemp) < 8);
    }

    # we have shot all bolts, one last thing to do: CRY FOR HELP !!!
   
  }

  if ($actualTemp < ($desiredTemp - $deviation))
  {
    if (($history -> {$tcDevice} -> {'wdFlag'} || 0) == 1)
    {
      # first, clear wd flag
      $history -> {$tcDevice} -> {'wdFlag'} = 0;

      # restore desired temp
      fhem "set $tcDevice desired-temp $desiredTemp";
     
      return "return to normal operation. (now: $actualTemp, desired: $desiredTemp)";
    }
   
    return undef if ((gettimeofday() - $desiredSetTime) < 900);
    # we are still to low, but temp is rising. Stay calm and wait !
    return "undef if (($actualTemp - $history -> {$tcDevice} -> {'lastTemp'}) >= 0);
     
    # CRY FOR HELP !!!
  }
}

sub
stripSet($)
{
  my $str = shift || '';
  $str =~ s/'set_'//g;
  return $str;
}

1;

=pod
=begin html

<a name="myUtils"></a>
<h3>Utils</h3>

=end html
=cut