Heizungssteuerung -Vorstellung-

Begonnen von Mitch, 20 Mai 2014, 09:27:15

Vorheriges Thema - Nächstes Thema

Mitch

Hallo Zusammen,

da seit dem Wochende nun endlich meine Heizungssteuerung komplett und ohne Fehler funktioniert, wollte ich dies hier einmal der Gemeinschaft vorstellen (vielleicht kann ja der Eine oder Andere etwas davon gebrauchen).

Grundsätzlich nutzte ich FHZ1300, FHT8b mit Fensterkontakten an FHEM.
Die Steuerung der Heizung erfolgt komplett über FHEM, die FHTs laufen alle auf manuell.

Den Code zum definieren der FHTs spare ich mir jetzt, das sollte Grundverständnis sein.

Als erstes Modul meiner Steuerung nutze ich das Modul Heating_Control für jedes Zimmer/jeden FHT:
define HCB Heating_Control FHT_Bad 12345|06:00|22 12345|07:30|19 67|08:30|22 67|10:00|19 18:00|21 22:00|14 (ReadingsVal("HCAutomatik", "state", "") eq "on")
attr HCB alias Bad
attr HCB group Heizplan
attr HCB room Heizung


Den Heizplan kann ich über einen Dummy ein- und ausschalten:
define HCAutomatik dummy
attr HCAutomatik alias Heizungsautomatik
attr HCAutomatik devStateIcon on:general_an off:general_aus
attr HCAutomatik group Automatik
attr HCAutomatik icon sani_heating_automatic
attr HCAutomatik room Heizung
attr HCAutomatik sortby 1
attr HCAutomatik webCmd on:off


define act_on_HCAutomatikAn notify HCAutomatik:on {\
     Heating_Control_SetAllTemps();;\
     fhem("set HCS_System on");;\
}

define act_on_HCAutomatikAus notify HCAutomatik:off {\
    fhem("set FHT_.* desired-temp 14.0 ;; set HCS_System off");;\
    system ("curl -s -F 'token=xxxx' -F 'user=xxxx' -F 'message=Heizungsplan ausgeschaltet' https://api.pushover.net/1/messages.json");;\
}

Bei einer Deaktivierung werden alle FHTs auf 14 Grad eingestellt und es wird mir zu Info eine Pushnachricht geschickt.

Als nächstes habe ich das Modul HCS intergiert:
define HCS_System HCS Vaillant
attr HCS_System alias Vaillant Steuerung
attr HCS_System devStateIcon demand:sani_heating_temp idle:sani_heating_manual off:general_aus
attr HCS_System deviceCmdOff off
attr HCS_System deviceCmdOn on
attr HCS_System event-on-change-reading state,devicestate,eco,overdrive
attr HCS_System icon sani_heating_manual
attr HCS_System idleperiod 5
attr HCS_System interval 5
attr HCS_System loglevel 5
attr HCS_System mode thermostat
attr HCS_System room Heizung
attr HCS_System thermostatThresholdOff 0.5
attr HCS_System thermostatThresholdOn 0.5
attr HCS_System valveThresholdOff 40
attr HCS_System valveThresholdOn 35

define Heizkessel FS20 xxxx xx
attr Heizkessel IODev FHZ
attr Heizkessel alias Vaillant Heizkessel (ON = Kessel AUS)
attr Heizkessel comment Wenn ON ist Kessel aus
attr Heizkessel devStateIcon on:general_an off:general_aus
attr Heizkessel group HCS
attr Heizkessel icon sani_boiler_temp
attr Heizkessel model fs20st

Hiermit steuere ich meine Vaillant Heizung potentialfrei über einen FS20 Einkanalempfänger an.
Das Relais ist so angeschlossen, dass die Heizung an ist, wenn das Relais abegfallen ist (dies hat den Vorteil, dass auch bei einem Defekt des Empfängers die Heizung funktioniert).
Ich habe dazu noch einen Dummy angelegt, damit ich abfragen kann, ob schon geschalten wurde, damit nicht alle 5 Minuten (der Abfrageinterval von HCS) der FS20 geschalten wird:
define Vaillant dummy
attr Vaillant alias Vaillant Heizsystem
attr Vaillant devStateIcon on:general_an off:general_aus
attr Vaillant group HCS
attr Vaillant icon sani_boiler_temp
attr Vaillant room Heizung
attr Vaillant webCmd on:off

define act_on_Vaillant notify Vaillant:.* {\
  if (ReadingsVal("Vaillant", "state", "on") eq "on" && ReadingsVal("Heizkessel", "state", "off") eq "on") {\
    fhem("set Heizkessel off");;\
  }\
  else {\
    if (ReadingsVal("Vaillant", "state", "off") eq "off" && ReadingsVal("Heizkessel", "state", "off") eq "off") {\
  fhem("set Heizkessel  on");;\
}\
   }\
}


Des weiteren habe ich mir einen "ECO-Script" angelegt (vielen Dank an das Forum für die Hilfe), welcher alle FHTs um 2 Grad runter setzt und zwar von dem im Moment anliegenden Wert:
define HZ.Absenkung dummy
attr HZ.Absenkung alias ECO Mode - Heizungsabsenkung 2 Grad
attr HZ.Absenkung devStateIcon on:general_an off:general_aus
attr HZ.Absenkung group Automatik
attr HZ.Absenkung icon time_eco_mode
attr HZ.Absenkung room Heizung
attr HZ.Absenkung webCmd on:off

define act_on_HZ.Absenkung_An notify HZ.Absenkung:on {\
my @@FHT=devspec2array("TYPE=FHT");;\
        foreach(@@FHT) {\
my $t = ReadingsVal("$_", "desired-temp", "")-2;;\
fhem("set $_ desired-temp ".$t);;\
}\
}

define act_on_HZ.Absenkung_Aus notify HZ.Absenkung:off set HCAutomatik on

define ECOMode.Aus notify Anwesenheit:Zuhause {\
  if (ReadingsVal("HZ.Absenkung", "state", "") eq "on") {\
    fhem ("set HZ.Absenkung off");;\
  }\
}


Diese ECO-Schalter triggere ich auch über das Modul Precense und Geofancy mit einem watchdog an. Der watchdog wird bei Abwesenheit aktiviert und läuft 30 Minuten. Wenn bis dahin niemand zurück hin, wird ECO aktiviert:
define ECOMode watchdog Anwesenheit:Unterwegs 00:30 Anwesenheit:Zuhause set HZ.Absenkung on
attr ECOMode regexp1WontReactivate 1


Zusätzlich trigger ich ECO über die Aussentemperatur. Wird 22 Grad erreicht oder überschritten, wird ECO aktiviert. Unterhalb 22 Grad wieder deaktiviert:
define act_on_Aussentemperatur notify Wetterstation:temperature:.* {\
  if (ReadingsVal("Wetterstation", "temperature", "") >= "22" && ReadingsVal("Sonnenindikator", "state", "off") eq "off") {\
    fhem("set Sonnenindikator on");;\
  }\
  else {\
    if (ReadingsVal("Wetterstation", "temperature", "") < "22" && ReadingsVal("Sonnenindikator", "state", "off") eq "on") {\
  fhem("set Sonnenindikator  off");;\
}\
   }\
}

define Sonnenindikator dummy
attr Sonnenindikator devStateIcon on:sun27 off:sun7
attr Sonnenindikator group HCS
attr Sonnenindikator icon clear3

define act_on_Sonnenindikator notify Sonnenindikator:on set HZ.Absenkung on
define act_on_Sonnenindikator.Aus notify Sonnenindikator:off set HZ.Absenkung off


Dies soll als "Denkanstoss" dienen. Ich habe mir auch alles zu FHEM aus diesem Forum "gezogen".
Nachbau erlaubt und erwünscht.

Gerne Beantworte ich Frage und nehme Anregungen und Verbesserungsvorschläge danked an  ;)
FHEM im Proxmox Container

Elektrolurch

Hallo,

ich habe auch eine Heizungssteuerung realisiert, die aber in zwei Punkten wohl von Deiner abweicht:
1. Die Steuerung der einzelnen Räume überlasse icfh den FHTs (auto). Da ich 10 Stück im Einsatz habe, verringere ich so den Funkverkehr. Die Programmierung, bzw. Abwesenheitsshaltung mache ich per fhem. Für die Programmierung habe ich einen dummy mit Raumauswahl, tag- und Absenktemperatur, Wochentag und den 4 möglichen Uhrzeiten.
Die Abwesenheit erfolgt sogar personenbezogen (einzelne Räume gehen dann aus dem Standardprogramm heraus).
2. Die benötigte Vorlauftemperatur für den Heizkreislauf wird aus den Temperaturdifferenzen zwischen Soll- und Isttemperatur der Thermostate und der Ventilstellung berechnet. Bei einer Ventilstellung von 80 % ist die Vorlauftemperatur optimal. Diese wird von fhem an der Heizungsanlage eingestellt. Die Witterungsführung ist völlig deaktiviert.
Bei Unterschreiten einer bestimmten Ventilstellung (Absenkbetrieb) swird die Pumpe für den Heizkreis zur Stromersparnis ganz ausgeschaltet.
Somit erfolgt auch automatisch eine Umschaltung in den Sonmerbetrieb.

Ferner hängt da noch eine Solaranlage mit dran, die Priorität beim Berechnen eines Heizbedarfs (Gas) hat. (Rückstellung der Gasaufheizung zugunsten Solar, da geht die Wetterprognose mit ein).
Da ich an der Hz das Einschalten des Brenners und den Gasfluß abfragen kann, berechne ich auch noch den Gasverbrauch und den Gesamtenergiebedarf (Gas + Solar) und erhalte so die Energiebilanz je Tag und Monat.

Gruß


Elektrolurch

configDB und Windows befreite Zone!

svenson08

Mal ein dickes Lob für deine Ausführung. Einen Wunsch hätte ich aber, pack das ganze doch auch ins Wiki.

Mitch

Danke.
Login für WIKI habe ich gerade beantragt. Sobald der da ist, mach ich einen Eintrag.
FHEM im Proxmox Container

Thorsten Pferdekaemper

Zitat von: Elektrolurch am 20 Mai 2014, 10:57:142. Die benötigte Vorlauftemperatur für den Heizkreislauf wird aus den Temperaturdifferenzen zwischen Soll- und Isttemperatur der Thermostate und der Ventilstellung berechnet.
Hi,
wie übergibst Du die Vorlauftemperatur dann an Deine Heizungsanlage?
Gruß,
    Thorsten
FUIP

ph1959de

Zitat von: Mitch am 20 Mai 2014, 12:21:52
Login für WIKI habe ich gerade beantragt. Sobald der da ist, mach ich einen Eintrag.
Ich habe heute bereits die Wiki-Seiten für http://www.fhemwiki.de/wiki/Heating_Control und http://www.fhemwiki.de/wiki/HCS angelegt (und jeweils hierher auf diesen Thread verlinkt).

Wenn es aus Deiner Sicht Sinn macht, kannst Du Deine Informationen auf die beiden Seiten "verteilen". Falls nicht, und Du lieber eine eigene Seite anlegst, dann verknüpfe (mit [[...]]) doch bitte auf die beiden Modulseiten und trage Deine neue Seite in die Liste der http://www.fhemwiki.de/wiki/Anwendungsszenarien ein.

Danke, Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Mitch

FHEM im Proxmox Container

Elektrolurch

Hallo,

hier die Antwort zur Frage der Vorlauftemperatur:
Ich habe an der Weishaupt-Anlage ein Webinterface.Da kann ich alle Werte für den Gasbrenner, die Heizkreise und die Solaranlage auslesen und auch setzen. Damit ist die Anlage komplett von fhem steuerbar.
Aus Öko-Sicht macht es meiner Meinung nach erst richtig Sinn, den Heizbedarrf nicht von der Außentemperatur, sondern von den gewünschten Temperaturen in den Räumen abhängig zu machen. Damit fällt auch eine Einstellung der Heizkurve (Steilheit,Offset) weg und die Vorlauftemperatur ist immer gerade so hoch, wie tatsächlich benötigt wird.
Die Temperatur im Heizkreis wird über einen Mischer eingestellt, der den Rücklauf in den Vorlauf einmischt, um so die gewünschte Heizkreistemperatur zu erhalten.
Somit reagiert die Heizkreisregelung sofort, d.h. nach ca. 10 Minuten habe ich die eingestellte Temperatur  auch am Heizkörper.

Gruß

Elektrolurch
configDB und Windows befreite Zone!

Thorsten Pferdekaemper

Zitat von: Elektrolurch am 21 Mai 2014, 09:34:11Ich habe an der Weishaupt-Anlage ein Webinterface.
Könntest Du mir die genaue Bezeichnung von dem Ding verraten?
ZitatAus Öko-Sicht macht es meiner Meinung nach erst richtig Sinn, den Heizbedarrf nicht von der Außentemperatur, sondern von den gewünschten Temperaturen in den Räumen abhängig zu machen.
Denke ich auch, deshalb mache ich's genauso. Meine Regelung hat aber kein Interface, so dass ich sie ein bisschen austricksen muss.
ZitatDie Temperatur im Heizkreis wird über einen Mischer eingestellt, der den Rücklauf in den Vorlauf einmischt, um so die gewünschte Heizkreistemperatur zu erhalten.
Ich habe keinen Mischer und soweit ich das verstehe ist das bei meinem Brennwertkessel auch ganz gut so. Möglicherweise verstehe ich hier was falsch, aber wird durch einen Mischer nicht auch die Rücklauftemperatur u.U. höher? Das ist dann für den Brennwert-Effekt nicht gerade zuträglich.
Zitatd.h. nach ca. 10 Minuten habe ich die eingestellte Temperatur  auch am Heizkörper.
Da ich keinen Mischer habe, schwankt bei mir auch die Temperatur im Heizkörper. Das scheinen die Regelventile (Homematic RTs) aber im Griff zu haben. Die Raumtemperatur schwankt nur im Zehntel Grad Bereich.
Außerdem habe ich das kleine Problemchen, dass mein ("offizieller") Heizkesselregler glaubt, dass er außentemperaturgeführt ist und daher einen Mittelwert berechnet. Daher dauert es manchmal eine Weile, bis das ganze reagiert. Das will ich demnächst versuchen umzubauen.

Gruß,
    Thorsten
FUIP

Elektrolurch

Hallo,

das Interface für die Weishaupt gibt es in zwei Ausführungen: Wcmcom Home und Professionell. Es hängt am internen Bus der Anlage.

Das Brennwertgerät holt sein Wasser aus dem Pufferbehälter und nicht aus dem Heizkreislauf. Damit ist die Effizienz sichergestellt.
Bei den meisten Heizungsanlagen müsste der Regeltyp einstellbar sein.
BEi  mir gibt es Witterungsführung, Konstantvorlauf, Raumführung und Witterungs/Raumführung.
Ich setze das per fhem auf Konstantvorlauf und setze die Heizkreistemperatur dann manuell.
So ein elektrischer Mischer müsste sich aber eleicht  nachrüsten lassen und auch an die Steuerung der Hz anschließbar sein.

Gruß

Elektrolurch
configDB und Windows befreite Zone!

epsrw1

Zitatelektrischer Mischer

ich habe ein fhem-modul zur steuerung eines mischers über relais für einen standard-motor mit r/l lauf gerade in erprobung, kommt hier online sobald es sicher funktioniert.
so ein alter 4-wege-mischer nebst motor findet sich i.d.r. auf dem schrott, einfach die alte steuerung abklemmen und fertig.
grüße, florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

maseb

Hallo Mitch,
ich bin mit großm Interesse auf dein Modul HCS und deine Einbindung mit Heating Control gestoßen.

Heating Control nutze ich schon seit letztem Jahr für die Einbindung meiner FHT`s in fhem.

HCS ist daher total super zum integrieren der FHT`s in die Steuerung von Mischer und Heizungspumpe. Dies erledigt meine Centra Steuerung.

Nun zum Problem.
Beim definieren von HCS mit

define HCS_System HCS Vaillant

bekomme ich eine Fehlermeldung das es das device Vaillant nicht gibt.

mit
define Vaillant structure room FHT......

kommt die Meldung das es das device schon gibt.

Wie komme ich da weiter?
Ich habe schon viel gelesen aber noch nichts gefunden das mich weiterbringt.

Viele Grüße
Rudi



CUL mit EM 1000 S/IR und EM 1000 HSM

Mitch

Halo Rudi,

Vaillant ist das Device, bei mir ein HM Autor, welcher den Brenner schaltet.

Einfach gesprochen, wenn HCS feststellt, dass keine Wärme benötigt wird, schaltet es "Vailant", welches den brenner an meiner Therme ausschaltet.

Die Definition lautet: define <NAME> HCS <DEVICE>

Du brauchst also etwas, um deine Heizung ein- und aus zuschalten.
Welche Heizung hast Du denn?
Kannst du diese Ansteuern?
Bei meiner Vailant gibt es extra eine Klemme für den Brenner, um diesen extern anzusteuern. An dieser hängt ein Relais und das wird über den HM-Aktor geschalten.
FHEM im Proxmox Container

maseb

Hallo Mitch,
vielen Dank für deine Antwort.

Vorweg, HCS ist ein tolles Modul.

Ich habe deine Konfiguration für das geänderte Modul übernommen und auf meine Bedürfnisse hin angepasst.
Heute  Abend hat es schon mal im Probelauf funktioniert.

Wir haben eine Pelleltheizung mit Puffer. Dieser stellt unser Brauch und Heizungswasser zur Verfügung.
Eine alte Centra Steuerung mit Außentemperaturfühler steuert den 3Wege Mischer und die Heizungspumpe. Diese Steuerung hat einen Eingang für eine Fernbedienung. An diese möchte ich mit einem FS20 Funkschalter mit potentialfreiem Ausgang gehen.

Dein Modul schaltet schon mal den FS20 Funkschalter.
Nun muss ich noch richtig anschliessen und gut.



Vielen Dank
Rudi
CUL mit EM 1000 S/IR und EM 1000 HSM

Ascos

#14
Hallo alle miteinander,

zunächst einmal ein dickes Lob an euch. Das Forum ist echt super und hat mir schon sehr geholfen.
Ich habe heute das Skript bei mir eingerichtet und angepasst. Es läuft soweit auch alles einwandfrei.

Mir ist nur aufgefallen, das wenn ich das Fenster geöffnet habe und mein Thermostat (Beide Homematic, gepeert via FHEM) die Temperatur auf 5° abgesenkt wurde, die Temperatur trotzdem geändert wird, wenn eine neue laut Programm eingestellt werden soll. Somit würde die Heizung anfangen zu heizen, obwohl das Fenster offen ist. Kann man das irgendwie vermeiden?

Zudem eine Frage zum Eco-Modus. Wenn ich die Wohnung verlasse und die aktuelle Temperatur abgesenkt wird, wie verhält sich das, wenn nun für FHEM eine neue Temperatur eingestellt werden soll. Wird die auch abgesenkt, oder ist die dann normal?

Leider bin ich noch sehr neu in Sachen FHEM, sodass ich für jede Hilfe dankbar bin.

Viele Grüße
Ascos

Edit:

Frage 2 habe ich nun getestet und es ist wie vermutet. Wenn bei Abwesenheit die Temperatur lauf FHEM geändert wird, wird die programmierte Temperatur verwendet, nicht die abgesenkte. Wie kann ich das ändern?
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Mitch

Du musst die "Heizschaltungen" mit Bedingungen verknüpfen.
Hier z.B. Mit meinem Schalter:

DEF   
HZ_Bad_Clima 12345|06:00|22 12345|07:00|20 67|08:30|21.5 67|10:00|20 12347|19:30|21 12347|20:00|20 56|20:30|21 22:00|16 (ReadingsVal("HCAutomatik", "state", "") eq "on")
FHEM im Proxmox Container

Ascos

Zitat von: Mitch am 08 Februar 2015, 21:15:25
Du musst die "Heizschaltungen" mit Bedingungen verknüpfen.
Hier z.B. Mit meinem Schalter:

DEF   
HZ_Bad_Clima 12345|06:00|22 12345|07:00|20 67|08:30|21.5 67|10:00|20 12347|19:30|21 12347|20:00|20 56|20:30|21 22:00|16 (ReadingsVal("HCAutomatik", "state", "") eq "on")

Hey,

danke für die schnelle Antwort.
Das habe ich getan. Nur ist die Sache ja so, das wenn ich abwesend bin, die Heizautomatik ja trotzdem an ist. Somit wird zwar die aktuelle Temperatur abgesenkt, die nächst eingestellte, aber nicht, sondern ab dann normal weiter geheizt.

Zudem habe ich bemerkt, das wenn ich das Heizprogramm komplett ausschalten will, weg gehe und wieder zurück komme, es dann automatisch durch den Watchdog wieder aktiviert wird.

Ich weiß, das deine Vorlage nur ein Beispiel ist und auf die Wünsche angepasst werden muss, leider bin ich, wie gesagt, noch sehr neu in der Materie.
Wenn du einen Tip hättest, wie ich das umsetzen kann, wäre ich dir sehr dankbar.

Viele Grüße
Ascos
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Mitch

Wie gesagt, mit Bedingungen verknüpfen!

Wie mein Beispeil mit dem Schalter, einfach die Abwesenheit rein, dann sollte der Schaltvorgang auf disable gehen, bis Bedingung erfüllt.

Genaus so könnte man es auch mit dem Fenster machen, wobei bei mir immer wieder auf Fenstertemp zurück geschalten, wird.
FHEM im Proxmox Container

Ascos

Zitat von: Mitch am 08 Februar 2015, 22:41:36
Wie gesagt, mit Bedingungen verknüpfen!

Wie mein Beispeil mit dem Schalter, einfach die Abwesenheit rein, dann sollte der Schaltvorgang auf disable gehen, bis Bedingung erfüllt.

Genaus so könnte man es auch mit dem Fenster machen, wobei bei mir immer wieder auf Fenstertemp zurück geschalten, wird.

Ja, das war es. Nun behält er die letzte abgesenkte Temperatur. Werde in die Notifys noch ein paar IF einbauen, hoffe dann klappt das alles. :)
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Mitch

Aber wozu?
Ich will ja auch, dass die Heizung geschalten wird, wenn niemand Zuhause ist.

z.B. am Freitag kommt erst jemand ab 14 Uhr nach Huase, die Heizung soll aber schon ab 12 Uhr angehen, damit es dann warm ist.
Wenn ich das von der Anwesenheit abhängig mache, würde ja nicht geschalten werden.

BTW: Wenn Du dann "zurück" schalten willst, einfach die Temoeraturen neu einlesen.
Heating_Control_SetAllTemps()
FHEM im Proxmox Container

Mitch

Kleiner Update, habe jetzt ein bischen umgebaut.

Nutze jetzt DOIF und myUtils:

define ECOmode DOIF ([Anwesenheit] eq "Unterwegs") ({ecomode},{ecomodeHM}) DOELSEIF ([HZ.Absenkung] eq "on" or [Sonnenindikator] eq "on") ({ecomode},{ecomodeHM}) DOELSE ({Heating_Control_SetAllTemps()})
attr ECOmode do always
attr ECOmode wait 3600


In der 99_myUtils.pm:
sub ecomode {
my @FHT=devspec2array("TYPE=FHT");
foreach(@FHT)
{
  my $tp = ReadingsVal("$_", "desired-temp", "")-2;
  fhem("set $_ desired-temp ".$tp)
}
}

sub ecomodeHM {
my @HM_HT=devspec2array("HZ_.*._Clima");
foreach(@HM_HT)
{
  my $tpHM = ReadingsVal("$_", "desired-temp", "")-2;
  fhem("set $_ desired-temp ".$tpHM)
}
}
FHEM im Proxmox Container

Ascos

Zitat von: Mitch am 09 Februar 2015, 08:27:08
Aber wozu?
Ich will ja auch, dass die Heizung geschalten wird, wenn niemand Zuhause ist.

z.B. am Freitag kommt erst jemand ab 14 Uhr nach Huase, die Heizung soll aber schon ab 12 Uhr angehen, damit es dann warm ist.
Wenn ich das von der Anwesenheit abhängig mache, würde ja nicht geschalten werden.

BTW: Wenn Du dann "zurück" schalten willst, einfach die Temoeraturen neu einlesen.
Heating_Control_SetAllTemps()

Hey,

sorry, das ich erst heute antworte, war die letzten 3 Tage nur noch arbeiten.
Du hast natürlich Recht. Allerdings ist es bei mir so, das ich sehr unregelmäßige Arbeitszeiten habe. Somit habe ich meinen Heizplan so gestaltet, das die Wunschtemperaturen da drin sind, die ich gern hätte, wenn ich zu Hause bin.
Wenn ich nun aber arbeiten bin, muss ja nicht so hoch geheizt werden. Manchmal bin ich dann schon am Nachmittag zu Hause, manchmal komme ich erst nachts zurück. In diesem Fall muss ja nicht den ganzen Nachmittag geheizt werden, wenn ich eh nicht da bin.
Aber das ist halt ein spezieller Fall von mir, der sicherlich nicht so die Regel ist. Auf jeden Fall funktioniert es bisher so einwandfrei, das ich den Heizplan nur aufrufe, wenn ich auch zu Hause bin und ansonsten die Temperaturen absenke.

Zudem möchte ich hier nur noch kurz teilen, wie ich es gelöst habe, das die Absenkung nicht aktiviert wird, wenn ich das Heizprogramm ab abgeschaltet habe.
Ich habe in dem notify, welches die Heizungsautomatik ausschaltet noch einen Codeschnipsel hinzugefügt:
fhem("setstate ECOMode triggered");

Damit setze ich den Watchdog auf triggered und er ist somit inaktiv, solange das Heizprogramm aus ist.
Ebenso setze ich ihn wieder auf "defined", wenn ich es aktiviere.

@ Mitch:
Auf jeden Fall vielen Dank für deine Hilfe.

VG
Ascos
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Mitch

Zitat von: Ascos am 12 Februar 2015, 13:08:53
Zudem möchte ich hier nur noch kurz teilen, wie ich es gelöst habe, das die Absenkung nicht aktiviert wird, wenn ich das Heizprogramm ab abgeschaltet habe.
Ich habe in dem notify, welches die Heizungsautomatik ausschaltet noch einen Codeschnipsel hinzugefügt:
fhem("setstate ECOMode triggered");

Damit setze ich den Watchdog auf triggered und er ist somit inaktiv, solange das Heizprogramm aus ist.
Ebenso setze ich ihn wieder auf "defined", wenn ich es aktiviere.

@ Mitch:
Auf jeden Fall vielen Dank für deine Hilfe.

VG
Ascos

Dafür kannst Du wunderbar den Code aus meiner my_Utils nutzen, den habe ich auch nochmal umbegaut:

sub ecomode {
my @FHT=devspec2array("TYPE=FHT");
foreach(@FHT)
{
  my $tp = ReadingsVal("$_", "desired-temp", "")-2;
  if (ReadingsVal("$_", "desired-temp", "") > "16") {
   fhem("set $_ desired-temp ".$tp)
  }
}
}

sub ecomodeHM {
my @HM_HT=devspec2array("HZ_.*._Clima");
foreach(@HM_HT)
{
  my $tpHM = ReadingsVal("$_", "desired-temp", "")-2;
  if (ReadingsVal("$_", "desired-temp", "") > "16") {
   fhem("set $_ desired-temp ".$tpHM)
  }
}
}


Sobald aufgrund manuel oder Abwesenheit der ECOmode aktiviert wird, wird geschaut, ob schon die Absenktemperatur (bei mir 16 Grad) eingestellt ist. Wenn nicht, wird alles um 2 Grad gesenkt.
Bei Rückkehr, oder deaktivierung wird wieder alles auf Heizplan gebracht.

Du kannst den Code dann noch soweit nötig an Deine Gegebenheiten anpassen.
FHEM im Proxmox Container

Mitch

Nachdem ich gerade Stück für Stück von FHT nach HM migriere, haben sich da auch ein paar "Herausforderungen" ergeben, die ein Anpassung erfordern.

Gerade das Fensterthema hat mich etwas "genervt", da fhem beim setzten der Temeratur das Thermostat übersteuert.
Somit kann es z.B. vorkommen, dass ein Fenster noch offen ist, wenn fhem eine neue Temperatur schickt und die Heizung hoch heizt, obwohl das fenster noch offen ist.

Um das zu umgehen, habe ich eine einfach Abfrage eingebaut:
define Fenster.Status.Bad DOIF ([Fenster_Bad] eq "open") (set HCB disbale) DOELSE (set HCB enable)

Wobei HCB die Steuerung von Bad über das HCS Modul ist.

Was passiert? Wenn das Fenster aufgeht, wird das HCS Modul für den entsprechenden Raum deaktiviert und die winOpnTemp bleibt eingestellt.
Sobald das Fenster zu gemacht wird, wird HCS wieder aktiviert und die zu dieser zeit gültige Temperatur eingestellt.
FHEM im Proxmox Container

Ascos

Zitat von: Mitch am 16 Februar 2015, 12:36:08
Nachdem ich gerade Stück für Stück von FHT nach HM migriere, haben sich da auch ein paar "Herausforderungen" ergeben, die ein Anpassung erfordern.

Gerade das Fensterthema hat mich etwas "genervt", da fhem beim setzten der Temeratur das Thermostat übersteuert.
Somit kann es z.B. vorkommen, dass ein Fenster noch offen ist, wenn fhem eine neue Temperatur schickt und die Heizung hoch heizt, obwohl das fenster noch offen ist.

Um das zu umgehen, habe ich eine einfach Abfrage eingebaut:
define Fenster.Status.Bad DOIF ([Fenster_Bad] eq "open") (set HCB disbale) DOELSE (set HCB enable)

Wobei HCB die Steuerung von Bad über das HCS Modul ist.

Was passiert? Wenn das Fenster aufgeht, wird das HCS Modul für den entsprechenden Raum deaktiviert und die winOpnTemp bleibt eingestellt.
Sobald das Fenster zu gemacht wird, wird HCS wieder aktiviert und die zu dieser zeit gültige Temperatur eingestellt.

Super Sache, da hab ich mir letztes Wochenende auch die Zähne ausgebissen. Vielen Dank
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Ascos

Hey,

ich habe heute versucht deine DOIF beim Übersteuern der Fenster einzubauen.
Leider wird weiterhin mein Thermostat überschrieben.

Im Log wird es richtig protokolliert:
2015.02.22 19:11:58 3: [HCWZ] set HCWZ disbale
2015.02.22 19:13:00 3: CUL_HM set WZ.Wandthermostat_Climate desired-temp 19.0
2015.02.22 19:13:30 3: [HCWZ] set HCWZ enable


In meiner DEF des DOIF hab ich es auch so übernommen, wie bei dir:
([WZ.Fenster] eq "open") (set HCWZ disbale) DOELSE (set HCWZ enable)

Wenn ich in die Readings der Herting Control gucke, wird disable nicht auf 1 gesetzt. Es aktualisiert sich nichts, erst wenn ich das Fenster wieder schließe, wird disable auf 0 gesetzt, wobei es ja schon so stand, somit wird der Status da nur überschrieben.

Hast du einen Tip, was ich falsch gemacht habe?

VG
Ascos
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Mitch

Du hast auch meinen Rechtschreibfehler übernommen ;-)

Es heisst: disable im DOIF
FHEM im Proxmox Container

Ascos

Zitat von: Mitch am 22 Februar 2015, 19:35:16
Du hast auch meinen Rechtschreibfehler übernommen ;-)

Es heisst: disable im DOIF

Hihi, manchmal ist es so einfach.
Das Abschalten geht nun, es wird nichts überschrieben. Allerdings wird nun nach dem Fenster schließen nicht mehr die neue Temperatur eingestellt, sondern die Alte wieder aufgerufen, auch wenn in der Heating Control nun die neue steht. Ich müsste so etwas, wie ein Update machen. So etwas, wie "Heating_Control_SetAllTemps()", nur jetzt für nur einen Heizplan.
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Mitch

Hm, bin mir jetzt nichts sicher, ob dies bei mir funktioniert.
Muss ich heute Abend mal testen, aber eigentlich sollte bei einem Enable der zu dieser Zeit richtige Wert wieder eingestellt werden.

Ansonsten kannst Du ja einfach nach dem Enable ein Heating_Control_SetAllTemps() machen.
Werden dann halt alle Temps neu eingelesen.
FHEM im Proxmox Container

Ascos

Hey Mitch,

hast du es zufällig getestet?
Ich bin leider eben erst wieder nach Hause gekommen, habe aber mal kurz probiert, ob Heating_Control_SetAllTemps() auch für Heizprogramme mit disable gillt. Das tut es nicht, die werden also nicht beachtet.
Das ist gut, hatte nämlich bedenken, das ich somit Thermostate aus anderen Räumen überschreibe, wo das Fenster womöglich noch geöffnet ist.
Hieße das für den Code der DOIFs dann einfach Folgendes?

DOIF ([WZ.Fenster] eq "open") (set HCWZ disable) DOELSE (set HCWZ enable, Heating_Control_SetAllTemps())
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Mitch

#30
So, heute früh konnte ich testen.
Tatsächlich wird nach einem enable der alte Wert eingestellt, was natürlich nicht gewollt ist.

Als Workaround werde ich einen Update nach enable schicken (dein Code hat einen Fehler, die Routine muss in geschweifte Klammern):

{Heating_Control_SetAllTemps()}

Als Lösung werde ich einen Script für die myUtils schreiben bzw. {Heating_Control_SetAllTemps()} umschreiben, dass nur die eine Heizung upgrdated wird.
Vielleicht schreib ich auch konplett dafür eine Routine.
FHEM im Proxmox Container

Ascos

Hey Mitch,

du schreibst "eckige Klammern", in deinem Code sind es aber geschweifte. Hab es mit geschweiften probiert und nun geht es einwandfrei.
Vielen Dank!

VG
AScos
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Mitch

Ja, war natürlich falsch, ich meinte geschweifte Klammern ;D
FHEM im Proxmox Container

Mitch

So, wollte heute mal das HCS modifizieren und habe im Code einen neuen Punkt window gefunden. Darauf hin im commandref nachgesehen und siehe da, das Thema sit schon implementiert.

Somit braucht man keinen DOIF oder ähnliches aufs Fenster machen und HCS aus disable setzten.

Toll, Danke!
FHEM im Proxmox Container

richberry22

Hi Mitch,

kannst Du bitte erklären warum jetzt kein disable auf das Thermostat mehr sein muss? Bei mir funktioniert es bisher nur mit einem DOIF und disable.

Ascos

Zitat von: richberry22 am 02 Oktober 2015, 21:35:36
Hi Mitch,

kannst Du bitte erklären warum jetzt kein disable auf das Thermostat mehr sein muss? Bei mir funktioniert es bisher nur mit einem DOIF und disable.

Hey,

Es gibt in dem Modul ein Attribut das nennt sich WindowSensor. Da trägst du deinen Fensterkontakt ein. Sobald dein Fester geöffnet wird, schaltet dein Heizungsmodul nicht mehr, sondern wartet, bis das Fenster wieder geschlossen wurden.

VG
Tino
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Mitch

Genau so ist es.

Ich habe das Modul dann noch modifiziert, dass ich einen Dummy als Fenster einsetzten kann. Somit kann ich nochmal Einfluß auf die Heizung nehmen.
Bei mir ist das die ECO Schaltung, die einen Dummy auf den state "open" setzt und dieser wiederum die HCs auf Window open.
FHEM im Proxmox Container

richberry22

Hi Mitch & Ascos,

vielen Dank für die Aufklärung.

Schönen Abend.

VG

AnonymousHolger

Hallo Mitch,

nachdem meine FHTs ja schon lange mit deinem HeatControl super laufen, habe ich immer das "Problem", wenn ich mal wieder an der Config Bastle und "rereadcfgs" machen, dass die Sollwerte dann wild gesetzt werden.

Gibt es dafür auch eine "set all temps" Möglichkeit ?
Ich steig aus den Infos aus diesem Threat irgendwie nicht durch ... :-( ... als Zusatz in der Wiki würd ich es ggf. besser verstehen.

Habe jetzt auch meine ersten HM-TC-IT-WM und HM-CC-RT-DN mit in mein System eingebunden, mit temporärer ganz gutem Erfolg auch mit Heizungs Control , aber nun meldet sich das System immer wieder ab.

Stellst du deine FHTs anders dar wie deine HM Regler ? Würde das ganze für ein Frauenakzeptables Interface gerne so aufsetzen, dass der FHEM User garnicht erkennt ob FHT oder HM Regler.

Gerne auch dein cfg zur Kopie (PN) dann kann ich damit ggf versuchen, den Syntax zu knacken ... ist für mich immer etwas schwierig, da ich nur zu Winterzeiten dazu komme, die Heizung mal wieder zu optimieren.

Danke

Gruss

Holger

Mitch

Hi Holger

Zitat von: AnonymousHolger am 02 November 2015, 21:27:38nachdem meine FHTs ja schon lange mit deinem HeatControl super laufen, habe ich immer das "Problem", wenn ich mal wieder an der Config Bastle und "rereadcfgs" machen, dass die Sollwerte dann wild gesetzt werden.

Das sollte man auch nicht machen. Warum machst du einen rereadcfg? Du kannst doch alles über im Frontend editieren und verändern, dann hast Du auch keine Probleme mehr  ;)

Zitat von: AnonymousHolger am 02 November 2015, 21:27:38Gibt es dafür auch eine "set all temps" Möglichkeit ?
Ich steig aus den Infos aus diesem Threat irgendwie nicht durch ... :-( ... als Zusatz in der Wiki würd ich es ggf. besser verstehen.

Entweder du nutzt dafür einen Structur, oder einen Script.
ich habe beides, eine Structur (diese aber über alle Ventile, FHT & HM) und zum schalten der FHTs den Script FHTnominal (siehe unten).
Um alle Ventile auf die Sollwerte zu stellen, die ich in den einzelnen Heating_Control Instanzen definiert habe, verwende ich {Heating_Control_SetAllTemps()}.

Zitat von: AnonymousHolger am 02 November 2015, 21:27:38Habe jetzt auch meine ersten HM-TC-IT-WM und HM-CC-RT-DN mit in mein System eingebunden, mit temporärer ganz gutem Erfolg auch mit Heizungs Control , aber nun meldet sich das System immer wieder ab.

Was meinst Du mit abmelden?

Zitat von: AnonymousHolger am 02 November 2015, 21:27:38Stellst du deine FHTs anders dar wie deine HM Regler ? Würde das ganze für ein Frauenakzeptables Interface gerne so aufsetzen, dass der FHEM User garnicht erkennt ob FHT oder HM Regler.

Also es ist eigentlich egal, was im Hintergrund läuft, HM, FHT; Max, etc. im Frontend ist bei mir immer alles gleich.
Habe auch noch eine ReadingGroup über alle Ventile, auch da merkt man keinen Unterschied.

Zitat von: AnonymousHolger am 02 November 2015, 21:27:38Gerne auch dein cfg zur Kopie (PN) dann kann ich damit ggf versuchen, den Syntax zu knacken ... ist für mich immer etwas schwierig, da ich nur zu Winterzeiten dazu komme, die Heizung mal wieder zu optimieren.

Hier mal ein paar Codezeilen von FHTnominal als Idee:

FHTnominal in der 99_myUtils.pm
sub FHTnominal($) {
# Solltemperatur (auto) eines FHT zur aktuellen Uhrzeit ermitteln
  my($fht) = @_;
  my $jetzt = strftime("%R", localtime(time));
  my @wdays = qw(sun mon tue wed thu fri sat);
  my $tag = $wdays[strftime("%w", localtime(time))];
  my $f1 = ReadingsVal($fht,$tag . "-from1","00:00");
  my $f2 = ReadingsVal($fht,$tag . "-from2","00:00");
  my $t1 = ReadingsVal($fht,$tag . "-to1","24:00");
  my $t2 = ReadingsVal($fht,$tag . "-to2","24:00");

  if(($jetzt ge $f1 && $jetzt le $t1) || ($jetzt ge $f2 && $jetzt le $t2)){
     if (ReadingsVal("d_ECOMode_counter", "state", "0") eq "1") {
       fhem("set $fht desired-temp " .
ReadingsVal($fht,"day-temp","21.0")-2)
  } else {
  fhem("set $fht desired-temp " .
ReadingsVal($fht,"day-temp","21.0"))
  }} else {
    fhem("set $fht desired-temp " .
ReadingsVal($fht,"night-temp","14.0"))
  }
}




Danke

Gruss

Holger
[/quote]
FHEM im Proxmox Container

AnonymousHolger

Hallo Mitch,
super danke für die schnelle Antwort.
Dein {Heating_Control_SetAllTemps()} hab ich in der cfg eingebaut und scheint zu funktionieren.

Meine "manuelle" Anpassung der cfg kommt daher, dass ich meine ganze Config umgebaut hab (alle Regler umbenannt, etc). Ja .. das geht auch via Interface, war mir aber "zu aufwändig" und zu "riskant".

Jetzt werde ich aber mal in den "sauren Apfel" beissen und es endlich so machen wie alle empfehlen ;-).
Alle manuellen Einträge raus, Autocreate an, HM Devices anschliessend wie beschrieben einbinden und anschliessend mit SaveConfig alle Einträge speichern (und dann ggf. umsortieren in eine HomeMatic CFG für die Übersichtlichkeit)
Wenn man aber alle Einträge von Hand mit Group/Room etc umzieht dauert das etwas ;-)

Sobald ich das stabil habe melde ich mich noch mal. Deine "Structur" interessiert mich brennend ;-) ....

Wird noch ein langer Abend ;-) ....

Mitch

Gerne Hoger  ;)

ABER, es ist nich mein {Heating_Control_SetAllTemps()}, sondern ein Teil des Heating_Control & WeekdayTimer Modul von Dietmar63 => http://forum.fhem.de/index.php?action=profile;u=405
Und es ist auch nicht meine structure, sondern ein Helper Modul von fhem => http://fhem.de/commandref.html#structure

Nicht das hier falsche Dinge aufkommen, will mich ja nicht mit fremden Feder schmücken  ;)

Ich habe hier nur meine Heizungssteuerung auf Basis von einigen Modulen vorgestellt.
FHEM im Proxmox Container

Mitch

#42
Nachdem ich mittlerweile noch etwas umgebaut habe und einen Mischbetrieb mit FHT und HM habe, hier ein Update:

Nach wie vor benutze ich die Module Heating_Control und HCS, sowie den Script FHTnominal und ein paar selbst geschriebene Scripte.

Mit Heating_Control habe ich jeden Raum definiert
Beispiel eines FHT:
define HCWK Heating_Control FHT_Waschkeller 1234|12:30|18 57|09:00|18 19:00|14 (ReadingsVal("HCAutomatik", "state", "off") eq "on")
attr HCWK alias Waschkeller
attr HCWK group Heizplan
attr HCWK room Heizung
attr HCWK verbose 3
attr HCWK windowSensor CUL_FHTTK_Waschkeller  d_ECOMode

und eines HM:
define HCO Heating_Control HZ_Buero_Clima 1234|12:00|21.5 5|08:00|21.5 7|09:00|21.5 19:00|16 (ReadingsVal("HCAutomatik", "state", "off") eq "on")
attr HCO alias Büro
attr HCO comment (ReadingsVal("HCAutomatik", "state", "") eq "on")
attr HCO group Heizplan
attr HCO room Heizung
attr HCO verbose 3
attr HCO windowSensor Fenster_Buero  d_ECOMode


Den Heizplan schalte ich nach wie vor mit einem Dummy:
define HCAutomatik dummy
attr HCAutomatik alias Heizungsautomatik
attr HCAutomatik devStateIcon on:general_an off:general_aus
attr HCAutomatik group Automatik
attr HCAutomatik icon sani_heating_automatic
attr HCAutomatik room Heizung
attr HCAutomatik sortby 1
attr HCAutomatik webCmd on:off


Den notify auf die Automatik habe ich mittlerweile auf einen DOIF umgebaut:
define HeatingControl.Aktivator DOIF ([HCAutomatik] eq "on") (set HCS_System on,{Heating_Control_SetAllTemps()})\
DOELSE (set FHT_.* desired-temp 8.0,set Heizungsventile desired-temp 8.0,set HCS_System off,set Pushover msg 'FHEM' 'Heizplan ausgeschalten')
attr HeatingControl.Aktivator cmdState on|off
attr HeatingControl.Aktivator devStateIcon on:keines off:keines


Bei Deaktivierung werden alle Thermostate (FHT und HM - diese über eine structure) auf 8 Grad eingestellt. Das ist auch die "Fenster offen" Temperatur, damit bei Fenster auf und zu nicht immer das Ventil "geschalten" wird.
Ansonsten schicken ich mir immer noch eine Pushover, allerdings nun mit dem Pushover Modul.

Das HCS Modul ist noch genauso:
define HCS_System HCS Vaillant
attr HCS_System alias Vaillant Steuerung
attr HCS_System devStateIcon demand:sani_heating_temp idle:sani_heating_manual off:general_aus
attr HCS_System deviceCmdOff off
attr HCS_System deviceCmdOn on
attr HCS_System event-on-change-reading state,devicestate,eco,overdrive
attr HCS_System icon sani_heating_manual
attr HCS_System idleperiod 5
attr HCS_System interval 5
attr HCS_System mode valve
attr HCS_System room Heizung
attr HCS_System thermostatThresholdOff 0.1
attr HCS_System thermostatThresholdOn 0.2
attr HCS_System valveThresholdOff 40
attr HCS_System valveThresholdOn 35
attr HCS_System verbose 2


Die Ansteuerung meiner Heizung ist nun auch ein HM Empfänger:
define Vaillant CUL_HM 39212B
attr Vaillant IODev HMLan
attr Vaillant IOgrp VCCU
attr Vaillant alias Vaillant Therme
attr Vaillant autoReadReg 4_reqStatus
attr Vaillant devStateIcon on:ios-on-green off:ios-off
attr Vaillant event-on-change-reading state
attr Vaillant expert 2_full
attr Vaillant firmware 1.6
attr Vaillant group HCS
attr Vaillant icon sani_boiler_temp
attr Vaillant model HM-LC-SW1-BA-PCB
attr Vaillant msgRepeat 1
attr Vaillant peerIDs 00000000,
attr Vaillant room Heizung
attr Vaillant subType switch
attr Vaillant webCmd on:off


Meine ECO Script habe ich auch um einige Parameter ergänzt und auf DOIF umgebaut:
define ECOMode DOIF ([Anwesenheit] eq "Unterwegs" and [HCAutomatik] eq "on") (set HZ.Absenkung unterwegs,{ecomode})\
DOELSEIF ([Mitch.Homestatus.whereis] eq "faraway" and [Person.Homestatus.whereis] eq "faraway" and [HCAutomatik] eq "on") (set HZ.Absenkung unterwegs,{ecomode})\
DOELSEIF ([HZ.Absenkung] eq "on" and [HCAutomatik] eq "on") ({ecomode})\
DOELSEIF ([Sonnenindikator] eq "on" and [HCAutomatik] eq "on") (set HZ.Absenkung sonne,set d_ECOMode open,{ecomode})\
DOELSEIF ([Anwesenheit] eq "Zuhause" and [Sonnenindikator] eq "off" and [HCAutomatik] eq "on") (set HZ.Absenkung nein,set d_ECOMode closed,set d_ECOMode_counter 0,{Heating_Control_SetAllTemps()})\
DOELSEIF ([Mitch.Homestatus.whereis] eq "coming_home" and [HCAutomatik] eq "on") (set HCKurztrip off,set HZ.Absenkung nein,set d_ECOMode closed,set d_ECOMode_counter 0,{Heating_Control_SetAllTemps()})\
DOELSEIF ([Person.Homestatus.whereis] eq "coming_home" and [HCAutomatik] eq "on") (set HCKurztrip off,set HZ.Absenkung nein,set d_ECOMode closed,set d_ECOMode_counter 0,{Heating_Control_SetAllTemps()})\
DOELSEIF ([HZ.Absenkung] eq "off" and [HCAutomatik] eq "on") (set d_ECOMode closed,set d_ECOMode_counter 0,{Heating_Control_SetAllTemps()})
attr ECOMode cmdState unterwegs|weitweitweg|on|sonne|zuhause|coming_home–mitch|coming_home_person|off
attr ECOMode devStateIcon on:keines off:keines
attr ECOMode do always
attr ECOMode wait 3600:1800:0:0:0:0:0:0


Das ganze ist ein Zusammenspiel aus Dummys, Außentemperatur, Innentemperatur und Geofancy Daten.
Im Prinzip ist die Funktion folgende:
Niemand Zuhause für 1 Stunde, Außen- und Innentemperatur über einen bestimmten Wert (Sonnenindikator) oder Kurztrip an, dann Heizung wird 2 Grad gesenkt.
Kommt jemand in einen Umkreis von 10km oder kleiner wird wieder auf Solltemperatur geschalten.

Damit Heating_Control dabei nicht einfach schaltet, wird über ein virtuelles Fenster "d_ECOMode" das WindowOpen an HC gemeldet und das ganze mit einem Dummy "d_ECOMode_counter" gegen gecheckt. (Damit dies funktioniert, muss das Modul 98_WeekdayTimer.pm gepachted werden!

Hier noch die ECOMode Dummys:
define d_ECOMode dummy
attr d_ECOMode setList open closed

define d_ECOMode_counter dummy


Zusätzlich diese Scripte in der 99_myUtils.pm:
sub ecomode {
    if (ReadingsVal("d_ECOMode_counter", "state", "0") eq "0") {
        {
        my @FHT=devspec2array("TYPE=FHT");
        foreach(@FHT) {
            my $tp = ReadingsVal("$_", "desired-temp", "")-2;
            if (ReadingsVal("$_", "desired-temp", "") > "16") {
                fhem("set $_ desired-temp ".$tp)
                }
            }
        }
        {
        my @HM_HT=devspec2array("HZ_.*._Clima");
        foreach(@HM_HT) {
            my $tpHM = ReadingsVal("$_", "desired-temp", "")-2;
            if (ReadingsVal("$_", "desired-temp", "") > "16") {
                fhem("set $_ desired-temp ".$tpHM)
                }
            }
        }
        {
        my @HM_WT=devspec2array("HZ_.*._WT_Climate");
        foreach(@HM_WT) {
            my $tpWT = ReadingsVal("$_", "desired-temp", "")-2;
            if (ReadingsVal("$_", "desired-temp", "") > "16") {
                fhem("set $_ desired-temp ".$tpWT)
                }
            }
        }
    }
    fhem("set d_ECOMode_counter 1")
}


Des weiteren habe ich ein paar virtuelle Türen und Fenster, die verschiedene Thermostate nach bestimmten Bedingungen auf WindowOpen schalten.
z.B. wenn die Haustür länger wie 5 Minuten auf ist.

Viel Spaß beim Nachbauen  ;)
FHEM im Proxmox Container

AnonymousHolger

Hallo Mitch ... automatischer gehts nicht mehr  :D :D

Also ich hab jetzt die HM eingebunden und sieht auch schon besser aus ;-).
In meiner Liste der HCS Profile sieht es auch schon gut aus ;-).
Allerdings bekomme ich in meinen Plot den Aktor nicht angezeigt (wie krieg ich den ? Der ist doch im Heizungsregler, muss ich noch einen Kanal pairen ? Oder den Logfile aus Raumregler und Heizungsregler basteln ?)

Hast du ein paar Screenshots wie es bei dir aussieht bzgl. der Mischung der HM und FHT Regler ?

Mitch

Klar, anbei ein paar Screenshots

1. HCS und Heating_Control
2. ReadingGroup aller Thermostate
3. HM Wandthermostat und Heizkörperthermostat
4. Der Plot dazu
5. FHT Thermostate
6. Der Plot dazu
FHEM im Proxmox Container

AnonymousHolger

Sehr cool !!
Habe jetzt noch ein paar Fehler korrigiert. Vielleicht muss ich mich doch daran gewöhnen, mehr über das Interface zu machen anstatt händisch in den files zu editieren. Die Korrektur des Gplot Files funktioniert super über das Interface.

Bleiben noch ein paar "dummyfragen" ;-).
Wie stellst du den Aktuatorwert im Plot dar ? Ich logge die Werte aus dem Climate Kanal der HM-TC, da ich ja die Raumtemperatur und nicht die Temperatur direkt am Regler haben will ? Kombinierst du das über Logfile, oder ziehst du im Plotfile mehrere Logfiles an ? Oder logst du die Daten am Regler und stellst die im Plot dar ?

Ein paar Schönheitsfehler (siehe Screenshots von Gestern) würde ich noch gerne fixen.
Mir gefällt deine Darstellung deiner Automatik"knöpfe" besser als meine.
Auch weiss ich nicht, wie du deine Readinggroup zusammengestellt hast ... ein bissle Code für FHT und HM wäre super.
In meiner Readinggroup zeigt er mir immer auch den "desired" Wert an  und ich würde es gerne einheitlich haben und auch mit der Batterieinfo. Fensterkontakte hab ich keine ... die haben aufgrund der Grösse immer noch keinen "WAF" ;-).
--> Auch da wäre ein Codebeispiel super !
Als letztes weiss ich nicht, wie du immer nur die aktiven Solltemperaturen darstellst.
Bei mir werden aktuell alle Profile mit "inaktiv" oder bei aktiven mit der Temperatur dargestellt. Deine Darstellung vom Heizplan finde ich auch viel schöner, dann braucht man auch weniger zeilen. Hast du das als Readinggroup zusammengestellt ?

Bin total happy, dass ich nach viel vergeblicher Mühe jetzt in 2 Tagen den HM so gut am  Laufen habe !! Super !!! Vielen DAnk
--> der Rest ist nur noch "optik".

Gruss

Holger

Mitch

Also ich plotte immer beides (wenn vorhanden), einmal das Wandthermo un einmal das Heizungsthermo.
Kann man aber auch in ein File packen, nur waren es mir dann zu viele Infos (Linien).
Logfile habe ich keine, ich logge über eine MySQL db und ziehe die Werte für die Plots daraus.

Ich weiß nicht, was Du mit den Automatikknöpfen meinst, aber ich nutze die in fhem inkludierten Icons und zur Darstellung der "Rubriken" das Attribut Group.
Wenn Du den Text meinst, das geht mit stateFormat:

attr HZ_Bad_WT_Climate stateFormat Ist: measured-temp °C - Soll: desired-temp °C - Luftfeuchte: humidity % - controlMode - Bat: battery

Die ReadingGroups sind im Wiki super beschrieben: http://www.fhemwiki.de/wiki/ReadingsGroup#Heizungswerte_inklusive_Batterie-_und_Fensterstatus
FHEM im Proxmox Container

AnonymousHolger

Hallo Mitch,
wollte mich noch für deine Hilfe bedanken. Hab es jetzt erst mal mehr oder weniger Akzeptabel mit Hilfe von "Readingsgroup" formatiert bekommen.

War das ganze WE mit FHEM unterwegs.

Irgendwann bringen mich die dauernden CUNO Verbindungsproblem noch um >:( >:( >:( >:(

Gerade die CUNO mit der neuesten Firmware macht aktuell tierisch zicken ... da sucht man sich echt einen Wolf ....

Für dieses Wochenende hab ich genug vor dem Laptop gehangen ... werde das Verhalten vom Heizungsmodul in den nächsten Tagen erst mal verfolgen um zu sehen, ob aktuell stabil läuft.

Danke

Christian72D

Ich habe eine Frage zu den beiden ValveTresholds: laut CommandRef sehen die so aus:

- valveThresholdOn (Required by operational mode valve)
   defines threshold of valve-position upon which device is switched on (heating required).
   Default value: 40
- valveThresholdOff (Required by operational mode valve)
   defines threshold of valve-position upon which device is switched off (idle).
   Default value: 35

Lege ich das Modul an, dann sind die Werte vertauscht.

Dann kann die ganze Sache so doch nicht sauber funktionieren, oder?

dirkbn

Genau das Verhalten ist mir gestern auch aufgefallen, sowohl bei Temperatur- als auch bei Ventilwerten. Ich nutze einmal hcs für den Heizkreis (Ventilstellung) und einmal für die Warmwasserbereitung (Temperaturüberwachung). Ich habe die on/off Werte getauscht und es scheint zu funktionieren. Ist natürlich keine Dauerlösung, aber für den Moment ausreichend.


Gesendet von meinem iPad mit Tapatalk
2 x FHEM auf Raspberry Pi
HM-CC-RT-DN über HM-USB
CCU3
1-Wire über USB to One Wire interface (denkovi.com)
...und weitere Sensoren und Aktoren ...

Mitch

Also bei mir läuft es mit den Standardwerten ohne Probleme
FHEM im Proxmox Container

Christian72D

Wann hast du es denn zuletzt neu eingerichtet? Bei mir ist es gerade mal 2 Wochen her.

Aber dann würde es ja die Heizung (oder was auch immer) bei über 35% ein und bei unter 40% ausschalten?
Oder ist die CommandRef falsch formuliert?

dirkbn

HCS läuft bei mir im Heizkreis schon seit letztem Winter. Allerdings waren die Schwellwerte bei 20-25 Prozent Ventilöffnung, sodass eine Fehlfunktion (mir zumindest) nicht auffiel. Seit wenigen Wochen lief HCS für die Warmwasserbereitung "virtuell", soll heißen, dass in FHEM alles eingerichtet war und auch das entsprechende Relais schaltete. Lediglich die Speicherladepumpe war bis gestern noch nicht umgeklemmt. Beim Umklemmen habe ich dann festgestellt, dass die Pumpe bei 45 Grad abschaltet und nicht bei 53 Grad, wie eigendlich vorgesehen. Durch vertauschen der on/off Werte heizte der Warmwasserspeicher jetzt mal auf 53 Grad auf.
Heizkreis
define hcs_Heizbedarf HCS Heizbedarf_auto
attr hcs_Heizbedarf deviceCmdOff off
attr hcs_Heizbedarf deviceCmdOn on
attr hcs_Heizbedarf event-on-change-reading state,devicestate,eco,overdrive
attr hcs_Heizbedarf icon sani_heating_temp
attr hcs_Heizbedarf idleperiod 10
attr hcs_Heizbedarf interval 5
attr hcs_Heizbedarf mode valve
attr hcs_Heizbedarf room Heizkoerper,Heizung
attr hcs_Heizbedarf sensorThresholdOff 25
attr hcs_Heizbedarf sensorThresholdOn 20
attr hcs_Heizbedarf valveThresholdOff 25
attr hcs_Heizbedarf valveThresholdOn 20
attr hcs_Heizbedarf verbose 0

Warmwasser (Die Ventilstellungen werden hier nicht berücksichtigt)
define hcs_Warmwasserbedarf HCS Warmwasserbedarf_auto
attr hcs_Warmwasserbedarf deviceCmdOff off
attr hcs_Warmwasserbedarf deviceCmdOn on
attr hcs_Warmwasserbedarf ecoTemperatureOn 48
attr hcs_Warmwasserbedarf event-on-change-reading state,devicestate,eco,overdrive
attr hcs_Warmwasserbedarf exclude RAUM1,RAUM2,RAUM3,RAUM4
attr hcs_Warmwasserbedarf icon sani_water_hot
attr hcs_Warmwasserbedarf idleperiod 10
attr hcs_Warmwasserbedarf interval 5
attr hcs_Warmwasserbedarf mode thermostat
attr hcs_Warmwasserbedarf room Heizung
attr hcs_Warmwasserbedarf sensor t_WW_Speicher
attr hcs_Warmwasserbedarf sensorReading temperature
attr hcs_Warmwasserbedarf sensorThresholdOff 45
attr hcs_Warmwasserbedarf sensorThresholdOn 53
attr hcs_Warmwasserbedarf thermostatThresholdOff 0.5
attr hcs_Warmwasserbedarf thermostatThresholdOn 0.5
2 x FHEM auf Raspberry Pi
HM-CC-RT-DN über HM-USB
CCU3
1-Wire über USB to One Wire interface (denkovi.com)
...und weitere Sensoren und Aktoren ...

Christian72D

Zitat von: dirkbn am 06 Dezember 2015, 13:28:03
Beim Umklemmen habe ich dann festgestellt, dass die Pumpe bei 45 Grad abschaltet und nicht bei 53 Grad, wie eigendlich vorgesehen. Durch vertauschen der on/off Werte heizte der Warmwasserspeicher jetzt mal auf 53 Grad auf.
Heizkreis
Wenn du jetzt noch Grad durch % ersetzt stimme ich dir zu. :)

dirkbn

#54
Stimmt so schon. HCS soll in dem Fall die Warmwasserspeicher regeln.
Wasser kalt = Pumpe an
Wasser warm = Pumpe aus

Beim Heizkreis wird die Pumpe über die Ventilöffnung gesteuert und die wird in Prozent angegeben.

Im LOG wird auch mehrfach die Stunde folgendes geschrieben:
2015.12.07 18:05:29 1: PERL WARNING: Argument "n/a" isn't numeric in subtraction (-) at ./FHEM/59_HCS.pm line 666, <GEN22> line 164.

Wobei "line" wechselt, von 43 bis 164.

Von welchem HCS-Modul die Meldungen kommen, habe ich nocht nicht ausfindig machen können.
2 x FHEM auf Raspberry Pi
HM-CC-RT-DN über HM-USB
CCU3
1-Wire über USB to One Wire interface (denkovi.com)
...und weitere Sensoren und Aktoren ...

stromer-12

Eines deiner Devices hat nicht die gewünschten Readings bzw Werte.

Mit "get <HCS-Device> value" kannst du die Werte dir als Tabelle ansehen.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Hermann

Hallo,

Habe das Modul mit Begeisterung umgesetzt und es funktioniert auch toll mit 8 Homematic Heizventilen.
Ich bekomme im Logfile immer diese Meldung und finde trotz mehrfachen drüberschauen nicht raus woran es liegt.

[HCA] TYPE 'dummy' of d_ECOMode not yet supported, d_ECOMode ignored - inform maintainer

Ich bin mir sicher das die dummy Definition in der fhem.cfg stimmt. Kann es mit 99_myUtils zu tun haben ?

Hermann

Ascos

Zitat von: Hermann am 05 Februar 2016, 10:46:32
Hallo,

Habe das Modul mit Begeisterung umgesetzt und es funktioniert auch toll mit 8 Homematic Heizventilen.
Ich bekomme im Logfile immer diese Meldung und finde trotz mehrfachen drüberschauen nicht raus woran es liegt.

[HCA] TYPE 'dummy' of d_ECOMode not yet supported, d_ECOMode ignored - inform maintainer

Ich bin mir sicher das die dummy Definition in der fhem.cfg stimmt. Kann es mit 99_myUtils zu tun haben ?

Hermann

Hey,

Poste doch mal bitte deine Definition von deiner HCA. Ließt sich irgendwie, als wenn die den Dummy nicht erkennen will.

VG
Tino
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Hermann

Hier meine Definition:

define HCA Heating_Control HZ_MA_Clima Mo-Fr|05:30|23 Mo-Fr|09:30|20 Mo-Fr|23:00|20 Sa-So|10:00|22 Sa-So|23:00|18 (ReadingsVal("HCAutomatik", "state", "off") eq "on")
attr HCA alias Kind Zimmer
attr HCA comment (ReadingsVal("HCAutomatik", "state", "") eq "on")
attr HCA group Heizplan
attr HCA room Heizung
attr HCA verbose 3
attr HCA windowSensor MA.F d_ECOMode

der dummy wurde vorher so definiert:

define d_ECOMode dummy
attr d_ECOMode setList open closed
define d_ECOMode_counter dummy

Hermann


Ascos

Oh, da bin ich dann doch überfragt. Habe bei mir noch eine ältere Version laufen, wo nicht diese ganzen DOIFs sind und keine myUtility.  :o

Ein Tipp, da das so nicht im Wiki steht, hier im Forum aber erwähnt wurde.
Du musst keine DOIF-Abfrage für den Fensterstatus benutzen.
Das Heating_Control Modul hat selbst einen Fensterstatus, mit dem du den nächsten Schaltvorgang verzögern kannst.

VG
Tino
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Jamo

Zitat von: Elektrolurch am 20 Mai 2014, 10:57:14
Hallo,

ich habe auch eine Heizungssteuerung realisiert, die aber in zwei Punkten wohl von Deiner abweicht:
1. Die Steuerung der einzelnen Räume überlasse icfh den FHTs (auto). Da ich 10 Stück im Einsatz habe, verringere ich so den Funkverkehr. Die Programmierung, bzw. Abwesenheitsshaltung mache ich per fhem. Für die Programmierung habe ich einen dummy mit Raumauswahl, tag- und Absenktemperatur, Wochentag und den 4 möglichen Uhrzeiten.
Die Abwesenheit erfolgt sogar personenbezogen (einzelne Räume gehen dann aus dem Standardprogramm heraus).

....

Gruß


Elektrolurch

Hallo Elektrolurch,
magst Du deine Lösung mal posten? Ich suche eine Lösung für die Steuerung der Räume, die mit 'Auto' funktioniert, um den Funkverkehr zu verrringern. Ich habe aber hier im Forum noch nichts passendes gefunden. Wenn Du da was schlaues hast, würde ich das gerne als Vorlage verwenden. Vor allem würde ich gerne verstehen, wie Du das mit EINEM Dummy realisiert hast, ich habe bisher immer für jeden Wert wie die Uhrzeiten, Tagtemperatur, Absenktemperatur, etc) jeweils einen eigenen Dummy  :-(

Beste Grüsse, Ingolf
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Elektrolurch

Ok, aber ohne Gewähr. Es kann sein, das ev. einige subs fehlen, da die von verschiedenen Modulen verwendet werden.

Diese readingsGroup dient zur Übersicht über alle Räume und deren Thermostate. Sie hat drei umschaltbare Ansichtsmodi. Die benötigten Routinen stecken in der ThermostatControl.pm

define Alle_Thermostate_rg readingsGroup ThermostatSelektor:Ansicht,Filter HzAnlage:Hk2-Betriebsart,!KOMFORT,Hk2-Normal-VL-Soll,<Außentemperatur>,Temperatur@WetterPuchheim <Raum>,<Ist-Temp>,<Soll-Temp>,<Batterie> [A-Z][a-z]_Thermostat:measured-temp,desired-temp,battery
attr Alle_Thermostate_rg alias Alle Thermostate
attr Alle_Thermostate_rg commands {'desired-temp.12.0' => 'undef', 'desired-temp' => 'desired-temp:-,off,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0', 'Hk2-Betriebsart' => 'Hk2-Betriebsart:','Hk2-Normal-VL-Soll' => 'Hk2-Normal-VL-Soll:', 'Ansicht' => 'Ansicht:', 'Filter' => 'Filter:', 'day-temp' => 'day-temp:','night-temp' => 'night-temp:', 'Leitraum' => 'Leitraum:ja,nein,0.5,0.75,1.0,1.25,1.5',  'KMINUS' => 'trigger PID KOMFORT MINUS', 'KPLUS' => 'trigger PID KOMFORT PLUS', 'AMINUS' => 'trigger PID ABSENK MINUS', 'APLUS' => 'trigger PID ABSENK PLUS' }
attr Alle_Thermostate_rg mapping {($DEVICE ne 'ThermostatSelektor')?"<a href='fhem?room=%ALIAS'>%ALIAS</a>":"Ansicht"}
attr Alle_Thermostate_rg noheading 0
attr Alle_Thermostate_rg nolinks 1
attr Alle_Thermostate_rg nostate 0
attr Alle_Thermostate_rg notime 1
attr Alle_Thermostate_rg room Thermostate
attr Alle_Thermostate_rg valueColumn {'day-temp' => '3', 'night-temp' => '6'}
attr Alle_Thermostate_rg valueColumns {'KMINUS' => 'width="50" align="center"', 'KPLUS' => 'width="50" align="center"', 'AMINUS' => 'width="50" align="center"', 'APLUS' => 'width="50" align="center"'}
attr Alle_Thermostate_rg valueFormat {'Temperatur' => '%.1d °C', 'desired-temp' => '{ThermostatValue("$DEVICE","$READING","$VALUE")}', 'measured-temp' => '{ThermostatValue("$DEVICE","$READING","$VALUE")}', 'battery' => '{ThermostatValue("$DEVICE","$READING","$VALUE")}', 'actuator' => '{Thermostat_GetActuator("$DEVICE")}',  'mode' => '{Thermostat_getMode("$DEVICE",1)}', 'mintemp' => '{GetMinMaxTemp("$DEVICE")}', 'day-temp' => '{ThermostatValue("$DEVICE","$READING","$VALUE")}', 'night-temp' => '{ThermostatValue("$DEVICE","$READING","$VALUE")}', 'Leitraum' => '{ThermostatValue("$DEVICE","$READING","$VALUE")}'  }
attr Alle_Thermostate_rg valueIcon {'HZ' => 'HZ@red', 'KOMFORT' => 'KOMFORT@red', 'ABSENK' => 'ABSENK@blue','battery.low' => 'batterie@red', 'battery.ok' => '{undef()}', 'KMINUS' => 'control_minus', 'AMINUS' => 'control_minus', 'KPLUS' => 'control_plus', 'APLUS' => 'control_plus', 'mode.Urlaub' => 'scene_summerhouse', 'mode.Party' => 'scene_party','desired-temp.12.0' => 'signal_Fenster_Offen.on@red', 'mode.(N)' => 'ABSENK@blue', 'mode.(D)' => 'KOMFORT@red' }
attr Alle_Thermostate_rg valuePrefix {'day-temp' => 'Konfort ', 'night-temp'=> 'Absenk '}
attr Alle_Thermostate_rg valueStyle {'measured-temp' =>"{(ReadingsVal(\"$DEVICE\",'mode','?')eq'(D)')?'style=\"color:red\"':'style=\"color:blue\"'}", 'day-temp' => 'style="color:red"', 'night-temp' => 'style="color:blue"' }
attr Alle_Thermostate_rg valueSuffix {'measured-temp' => ' °C','desired-temp' => '{($VALUE=~m/^(12.0|on|off)/)?"":" °C"}','Hk2-Normal-VL-Soll' =>' °C', 'day-temp' => ' °C', 'night-temp' => ' °C', 'HZ' => ' Programm', 'KOMFORT' => ' Normal', 'ABSENK' => 'Absenk', 'mode' => ' %VALUE' }


Um die Thermostate zu überwahten, gibt es ein notify:

define Thermostat_notify notify [A-Z][a-z]_Thermostat:.* {Thermostat_notify($NAME,$EVENT);;}



Die sub ist in 99_myUtilsThermostat.pm defiiniert. Sie checked bspw. Batterie, Fehlfunktionen (Funktkontakt verloren gegangen) und einiges mehr.


Und jetzt die eigentliche Programmierung, alles in einer readingsGroup


define ThermostatSelektor_rg readingsGroup ThermostatSelektor:Thermostat,mode,Soll-Temp,ändern ThermostatSelektor:!KOMFORT,Tag-Temp,!ABSENK,Nacht-Temp,set,read WochentagSelektor:Wochentag WochentagSelektor:<Komfort1>,Hvon1,Mvon1,Hbis1,Mbis1 WochentagSelektor:<Komfort2>,Hvon2,Mvon2,Hbis2,Mbis2,set,read RolladenAutomatik:!FENSTERALARM,FensterTemp
attr ThermostatSelektor_rg alias Thermostatsteuerung
attr ThermostatSelektor_rg commands {'mode' => 'mode:', 'ThermostatSelektor.Soll-Temp' => 'Soll-Temp:', 'ThermostatSelektor.Thermostat' => 'Thermostat:-,Alle,Arbeitszimmer,Bad,Büro,Diele,Gästebad,Hobbyraum,MarinasZimmer,Schlafzimmer,WC,Wohnzimmer', 'ThermostatSelektor.Tag-Temp' => 'Tag-Temp:', 'ThermostatSelektor.Nacht-Temp' => 'Nacht-Temp:', 'RolladenAutomatik.FensterTemp' => 'FensterTemp:', 'WochentagSelektor.Wochentag' => 'Wochentag:', 'set' => 'trigger $DEVICE set', 'read' => 'trigger $DEVICE read', 'ändern' => 'trigger $DEVICE modify', 'WochentagSelektor.Mvon1' => 'Mvon1:-,00,05,10,15,20,25,30,35,40,45,50,55','WochentagSelektor.Mvon2' => 'Mvon2:-,00,05,10,15,20,25,30,35,40,45,50,55', 'WochentagSelektor.Mbis1' => 'Mbis1:-,00,05,10,15,20,25,30,35,40,45,50,55', 'WochentagSelektor.Mbis2' => 'Mbis2:-,00,05,10,15,20,25,30,35,40,45,50,55','WochentagSelektor.Hvon1' => 'Hvon1:-,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24', 'WochentagSelektor.Hbis1' => 'Hbis1:-,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24', 'WochentagSelektor.Hvon2' => 'Hvon2:-,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24', 'WochentagSelektor.Hbis2' => 'Hbis2:-,19,20,21,22,23,24'}
attr ThermostatSelektor_rg group Thermostat - Programmierung
attr ThermostatSelektor_rg noheading 1
attr ThermostatSelektor_rg nolinks 1
attr ThermostatSelektor_rg nonames 1
attr ThermostatSelektor_rg nostate 1
attr ThermostatSelektor_rg notime 1
attr ThermostatSelektor_rg room Automation
attr ThermostatSelektor_rg valueIcon {'ändern' => 'general_ok', 'KOMFORT' => 'KOMFORT', 'ABSENK' => 'ABSENK', 'set' => 'general_ok', 'FENSTERALARM' => 'icoAlarm', 'read' => 'edit_open'}
attr ThermostatSelektor_rg valuePrefix {'Thermostat' => 'Raum ', 'ThermostatSelektor.mode' => 'Mode ', 'ThermostatSelektor.Soll-Temp' => 'Soll Temp. ', 'WochentagSelektor.Wochentag' => 'Wochentag ', 'WochentagSelektor.Hvon1' => 'von Stunde ', 'WochentagSelektor.Mvon1' => 'Minute ', 'WochentagSelektor.Hbis1' => 'bis Stunde ', 'WochentagSelektor.Mbis1' => 'Minute ',  'WochentagSelektor.Hvon2' => 'von Stunde ', 'WochentagSelektor.Mvon2' => 'Minute ', 'WochentagSelektor.Hbis2' => 'bis Stunde ', 'WochentagSelektor.Mbis2' => 'Minute '}
attr ThermostatSelektor_rg valueSuffix {'ThermostatSelektor.Soll-Temp' => '°C', 'ThermostatSelektor.Tag-Temp' => '°C', 'ThermostatSelektor.Nacht-Temp' => '°C', 'RolladenAutomatik.FensterTemp' => '°C', 'KOMFORT' => ' Komfort', 'ABSENK' => ' Absenk', 'FENSTERALARM' => 'Alarm bei offenem Fenster unter ', 'set' => ' set', 'read' => ' read'}

Das ganze wird in zwei dummys hinterlegt, an die dann auch ein notify gehängt wird:

# Programmierung der Thermostate, Tag- und Nachttemp.
# Wochenprogramme



define ThermostatSelektor dummy
attr ThermostatSelektor alias Raum
attr ThermostatSelektor event-on-change-reading .*
attr ThermostatSelektor group Fenster und Heizung
attr ThermostatSelektor setList mode:-,auto,manual Soll-Temp:-,off,12.0,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0 Thermostat:-,Alle,Arbeitszimmer,Bad,Büro,Diele,Gästebad,Hobbyraum,MarinasZimmer,Schlafzimmer,WC,Wohnzimmer Tag-Temp:-,off,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0 Nacht-Temp:-,off,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0 Ansicht:kurz,normal,konfig Filter:Alle,Komfort,Absenk
attr ThermostatSelektor verbose 1
define WochentagSelektor dummy
attr WochentagSelektor alias Wochentag
attr WochentagSelektor event-on-change-reading .*
attr WochentagSelektor group Fenster und Heizung
attr WochentagSelektor setList Wochentag:-,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag,Alle,Werktage,Wochenende  von1:textField bis1:textField von2:textField bis2:textField
attr WochentagSelektor verbose 2
attr WochentagSelektor webCmd Wochentag:von1:bis1:von2:bis2:set:read
define ThermostatSelektor_notify notify ThermostatSelektor:.* {ThermostatSelektor_not($NAME,$EVENT);;}

#########################################

Die ganze Steuerlogik steckt in 99_myUtilsThermostatControl.pm

Elektrolurch
configDB und Windows befreite Zone!

kleinerDrache

Hallo Elektrolurch

Ich versuche gerade deine Steuerung nachzubauen. Leider bekomme ich es anscheinend nicht mal hin die Readingsgroup die alle Thermostate anzeigt zum funktionieren zu bekommen. Gehe ich recht in der Annahme das du FHT's verwendest ?

Leider ist mein Verständnis von Perl NOCH fast null. Kannst du mir sagen über welche Sub du die Thermostate aus den Räumen filterst ?? hab auch was von PID gelesen verwendest du das Modul PID oder fehlt da eine Sub ?

Ich selber will das ganze auf HM-Geräte (Raumthermostate und Ventilsteuerungen) umbauen ohne Zugang zum Heizkessel (ist ne Mietwohnung). Wäre dir für Tips und Hilfen extrem dankbar.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

Kopterframe

Hallo,
auch ich möchte mich für die lobenswerte Arbeit bedanken.
Habe die Module heating Control, Automatik und HCS aus Posting1seit ein paar Tagen laufen.
Die Version aus dem Wiki habe ich nicht zum laufen gebracht.
Wenn bei den MAX Thermostaten Wärme benötigt wird, schaltet der FS20 Schalter den Brenner ein und auch wieder aus.
Nur bei mein Comet Dect nicht???
heating Control, und Automatik gehen. HCS nicht??
Gibt es eine Lösung die ich übersehen habe?
Heiko
internals:
   CFGFN
   CHANGED
   DEF        Vaillant
   NAME       HCS_System
   NEXTCHECK  12:42:47
   NR         227
   STATE      idle
   TYPE       HCS
   Readings:
     2017-02-10 12:37:47   MAX_009084      idle
     2017-02-10 12:37:47   MAX_00a695      idle
     2017-02-10 12:37:47   MAX_0109dd      idle
     2017-02-10 09:45:08   device          Vaillant
     2017-02-10 11:00:09   devicestate     off
     2017-02-10 12:37:47   eco             off
     2017-02-10 12:37:47   locked          00:00:00
     2017-02-10 12:37:47   overdrive       off
     2017-02-10 12:37:47   state           idle
   Helper:
     lastSentDeviceCmdOn 1486720509
     Device:
       Max_009084:
         actuator   0
         demand     0
         excluded   0
         ignored    0
         tempDesired 10.0
         tempMeasured 15.6
         type       MAX
       Max_00a695:
         actuator   16
         demand     0
         excluded   0
         ignored    0
         tempDesired 10.0
         tempMeasured 11.3
         type       MAX
       Max_0109dd:
         actuator   0
         demand     0
         excluded   0
         ignored    0
         tempDesired 10.0
         tempMeasured 15.4
         type       MAX
Attributes:
   alias      Vaillant Steuerung
   deviceCmdOff off
   deviceCmdOn on
   event-on-change-reading state,devicestate,eco,overdrive
   idleperiod 10
   interval   5
   mode       thermostat
   thermostatThresholdOff 0.5
   thermostatThresholdOn 0.5
   valveThresholdOff 40
   valveThresholdOn 35


FHEM aufRaspberry/ Cube_Max mit Culfw/  Cul_FS20
Max Thermostate/ Wandthemostat/Eib KNX

Mitch

Ich glaube Comet wird (noch) nicht unterstützt.

Aus dem commandref: Defines a virtual device for monitoring thermostats (FHT, HM-CC-TC, MAX) to control a central heating unit.
FHEM im Proxmox Container

Kopterframe

Danke für die schnelle Antwort.
Schade, da muss ich wohl noch ein wenig warten......
Eine Frage, wie kann ich das rumdrehen ?
Vaillant Heizkessel (ON = Kessel AUS)
Das Kessel on = ein ist?
Heiko
FHEM aufRaspberry/ Cube_Max mit Culfw/  Cul_FS20
Max Thermostate/ Wandthemostat/Eib KNX

Kopterframe

wollte mal nachfragen, ob es inzwischen jemand zum laufen gebracht hat?
Heiko
FHEM aufRaspberry/ Cube_Max mit Culfw/  Cul_FS20
Max Thermostate/ Wandthemostat/Eib KNX

Steffen

Hallo!

Ist es auch möglich Homematic Ip mit dem Modul HCS zu nutzen, denn der Thermostat wird leider nicht von Hcs gefunden?!


Internals:
   DEF        000A97099CE8BA defaults
   IODev      d_ccu
   NAME       Thermostat
   NR         27
   STATE      21.9
   TYPE       HMCCUDEV
   ccuaddr    000A97099CE8BA
   ccudevstate active
   ccuif      HmIP-RF
   ccuname    HmIP-WTH-2 000A97099CE8BA
   ccutype    HmIP-WTH-2
   channels   8
   firmware   1.4.4
   statevals  devstate
   READINGS:
     2018-01-06 06:38:14   0.CONFIG_PENDING false
     2018-01-08 15:46:46   0.DUTY_CYCLE    0
     2018-01-08 15:46:46   0.LOW_BAT       0
     2018-01-08 15:46:46   0.OPERATING_VOLTAGE 3.0
     2018-01-08 15:46:46   0.RSSI_DEVICE   -63
     2018-01-08 10:29:07   0.RSSI_PEER     -60
     2018-01-08 15:46:46   0.UNREACH       0
     2018-01-06 06:38:14   0.UPDATE_PENDING false
     2018-01-08 15:46:46   1.ACTIVE_PROFILE 1
     2018-01-08 15:46:46   1.ACTUAL_TEMPERATURE 21.9
     2018-01-08 15:46:46   1.BOOST_MODE    0
     2018-01-08 15:46:46   1.BOOST_TIME    0
     2018-01-08 15:46:46   1.FROST_PROTECTION 0
     2018-01-08 15:46:46   1.HEATING_COOLING 0
     2018-01-08 15:46:46   1.HUMIDITY      45
     2018-01-08 15:46:46   1.PARTY_MODE    0
     2018-01-06 06:38:14   1.PARTY_SET_POINT_TEMPERATURE 0.0
     2018-01-06 06:38:14   1.PARTY_TIME_END
     2018-01-06 06:38:14   1.PARTY_TIME_START
     2018-01-08 15:46:46   1.SET_POINT_MODE 1
     2018-01-08 15:46:46   1.SET_POINT_TEMPERATURE 5.0
     2018-01-08 15:46:46   1.SWITCH_POINT_OCCURED 0
     2018-01-08 15:46:46   1.WINDOW_STATE  closed
     2018-01-08 15:46:46   control         5.0
     2018-01-08 15:46:46   hmstate         21.9
     2018-01-08 15:46:46   state           21.9
   hmccu:
     dp:
       0.CONFIG_PENDING:
         OSVAL      false
         OVAL       false
         SVAL       false
         VAL        false
       0.DUTY_CYCLE:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       0.LOW_BAT:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       0.OPERATING_VOLTAGE:
         OSVAL      3.0
         OVAL       3.0
         SVAL       3.0
         VAL        3.0
       0.RSSI_DEVICE:
         OSVAL      -63
         OVAL       -63
         SVAL       -63
         VAL        -63
       0.RSSI_PEER:
         OSVAL      206
         OVAL       206
         SVAL       -60
         VAL        -60
       0.UNREACH:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       0.UPDATE_PENDING:
         OSVAL      false
         OVAL       false
         SVAL       false
         VAL        false
       1.ACTIVE_PROFILE:
         OSVAL      1
         OVAL       1
         SVAL       1
         VAL        1
       1.ACTUAL_TEMPERATURE:
         OSVAL      22.0
         OVAL       22.0
         SVAL       21.9
         VAL        21.9
       1.BOOST_MODE:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       1.BOOST_TIME:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       1.FROST_PROTECTION:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       1.HEATING_COOLING:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       1.HUMIDITY:
         OSVAL      45
         OVAL       45
         SVAL       45
         VAL        45
       1.PARTY_MODE:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       1.PARTY_SET_POINT_TEMPERATURE:
         OSVAL      0.0
         OVAL       0.000000
         SVAL       0.0
         VAL        0.000000
       1.PARTY_TIME_END:
         OSVAL     
         OVAL       
         SVAL       
         VAL       
       1.PARTY_TIME_START:
         OSVAL     
         OVAL       
         SVAL       
         VAL       
       1.SET_POINT_MODE:
         OSVAL      1
         OVAL       1
         SVAL       1
         VAL        1
       1.SET_POINT_TEMPERATURE:
         OSVAL      5.0
         OVAL       5.0
         SVAL       5.0
         VAL        5.0
       1.SWITCH_POINT_OCCURED:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       1.WINDOW_STATE:
         OSVAL      closed
         OVAL       0
         SVAL       closed
         VAL        0
Attributes:
   IODev      d_ccu
   alexaName  Heizung Office Box
   controldatapoint 1.SET_POINT_TEMPERATURE
   eventMap   /datapoint 1.BOOST_MODE true:Boost/datapoint 1.CONTROL_MODE 0:Auto/datapoint 1.CONTROL_MODE 1:Manual/datapoint 1.CONTROL_MODE 2:Holiday/datapoint 1.SET_POINT_TEMPERATURE 4.5:off/datapoint 1.SET_POINT_TEMPERATURE 30.5:on/
   genericDeviceType thermostat
   room       Heizung,alexa
   statedatapoint 1.ACTUAL_TEMPERATURE
   stripnumber 1
   substexcl  control
   substitute SET_POINT_TEMPERATURE!#0-4.5:off,#30.5-40:on;WINDOW_STATE!(0|false):closed,(1|true):open
   webCmd     control:Boost:Auto:Manual:Holiday:on:off
   widgetOverride control:slider,4.5,0.5,30.5,1


Mfg Steffen

alex13

Ich bin dabei diese Anleitung bei mir zum laufen zubekommen. Da ich DECT thermostate habe, die über die fritzBox laufen, muss ich die Parameter anpassen. Leider ist mir eine Lösung im "ECO Mode" nicht gelungen.


Wie muss der PERL Code lauten, damit er mit FBDECT zusammen arbeitet?

Christian72D

Die Wiki Seite ist leider ganz schön leer.

Ich kann bei mir leider nur die Heizung komplett abschalten lassen, möchte dies natürlich nicht pausenlos machen lassen.

Was muß ich einstellen, damit die Heizung erst dann ausgeschaltet wird, wenn drei Tage lang die Ventile nicht die nötige Öffnung erfahren?
Gleichzeitig soll sie aber auch nicht drei Tage zu Beginn der Heiz Periode warten.

Beetle2003

Moin,

Ich steuere das Heizung an / aus über das headdemand Modul.

Ist die Summe der Ventilöffnung erreicht, schalte icH die Heizung ein, bei unterschreiten aus.