Hauptmenü

Fussbodenheizung via FHEM

Begonnen von en-trust, 05 September 2017, 07:51:44

Vorheriges Thema - Nächstes Thema

Eisix

Ich nehme an du braust das Template für das Raumthermostat.


<header>par01</header>
<div class="container">
<div data-type="label"
data-device="par03"
data-get="temperature"
data-limits='["par24","par25","par26"]'
data-colors='["#6699FF","#21a000","#bb6242"]'
data-unit=" °C"
data-part="1"
class="great bold inline"
></div>
<br>
        <div data-type="popup" data-width="450px" data-height="380px" class="inline">
<div data-type="symbol" data-icon="oa-edit_settings" class="inline"></div>
                <div class="dialog" style="background-color:#112026">
                        <header class="large">Handbetrieb</header>
<br>
                        <div data-type="spinner"
                                data-device="par04"
                                data-get="par02"
                                data-set="par02"
                                data-icon-left-color="blue"
                                data-icon-right-color="red"
                                data-step="0.5"
                                data-min="10"
                                data-max="30"
                                data-unit="°"
                                class="valueonly center"
                        ></div>
<br>
<br>
                        <header class="large">Heizungs-Automatik</header>
<br>
<div class="">
<div class="left">
                <div data-type="spinner"
                        data-device="par04"
                        data-get="par05"
                        data-set="par05"
                        data-icon-left-color="blue"
                        data-icon-right-color="red"
                        data-step="0.5"
                        data-min="10"
                        data-max="30"
                        data-unit="°"
                        class="valueonly"
                ></div>
<br>
    <div data-type="label" class="inline bigger" >Tag:</div>
    <div data-type="datetimepicker"
data-device="par04"
data-get="par06"
data-set="par06"
data-step="5"
          data-datepicker="false"
data-format="H:i"
          class="inline bigger orange"
></div>
</div>
                        <div class="right">
                                <div data-type="spinner"
data-device="par04"
data-get="par07"
data-set="par07"
                                        data-icon-left-color="blue"
                                        data-icon-right-color="red"
                                        data-step="0.5"
                                        data-min="10"
                                        data-max="30"
                                        data-unit="°"
                                        class="valueonly"
                                ></div>
                                <br>
                                        <div data-type="label" class="inline bigger" >Nacht:</div>
                                        <div data-type="datetimepicker"
data-device="par04"
data-get="par08"
data-set="par08"
                                                data-step="5"
                                                data-datepicker="false"
                                                data-format="H:i"
                                                class="inline bigger orange"
                                        ></div>
                                </div>
                      </div>
<div class="">
<div class="inline">
<br>
<br>
        <div data-type="checkbox"
                                              data-device="par04"
                                                data-get="par09"
                                                data-set="par09"
class=""
        ></div>
      <div data-type="label" class="" >Party</div>
                                </div>
                                <div class="inline">
                                        <div data-type="checkbox"
                                                data-device="par04"
                                                data-get="par10"
                                                data-set="par10"
                                                class=""
                                        ></div>
                                        <div data-type="label" class="" >Sommer</div>
                                </div>

<div class="inline">
        <div data-type="checkbox"
                                                data-device="par04"
                                                data-get="par11"
                                                data-set="par11"
class=""
        ></div>
      <div data-type="label" class="" >abwesend</div>
                                </div>
                                <div class="inline">
        <div data-type="checkbox"
                                                data-device="par04"
                                                data-get="par12"
                                                data-set="par12"
class=""
        ></div>
      <div data-type="label" class="" >Urlaub</div>
                                </div>
                                <div class="inline">
        <div data-type="checkbox"
                                                data-device="par04"
                                                data-get="par13"
                                                data-set="par13"
class=""
        ></div>
      <div data-type="label" class="" >Frost</div>
                        </div>
                                <div class="inline">
                                        <div data-type="checkbox"
                                                data-device="par04"
                                                data-get="par14"
                                                data-set="par14"
                                                class=""
                                        ></div>
                                        <div data-type="label" class="" >Boost</div>
                                </div>

                        </div>
</div>
</div>
        <div data-type="popup" data-width="750px" data-height="350px" class="inline">
<div data-type="symbol" data-icon="fa-area-chart" class="inline"></div>
                <div class="dialog">
                        <header>TEMPERATURE</header>
                        <div data-type="chart"
data-logdevice='["par16","par17","par18"]'
                                data-columnspec='["par19","3:par20:1:$fld[2]=~\\x22off\\x22?0:1","par21"]'
                                data-style='["ftui l4","ftui l6","ftui l0fill"]'
                                data-ptype='["lines","cubic","lines"]'
                                data-uaxis='["primary","secondary","primary"]'
                                data-legend='["Soll-Temp","Stellantrieb","Ist-Temp"]'
                                data-yunit="°C"
                                data-yunit_sec="on"
                                data-ytext="Temperature"
                                data-ytext_sec="on-off"
                                data-minvalue="auto"
                                data-maxvalue="auto"
                                data-minvalue_sec="0"
                                data-maxvalue_sec="1"
                                data-height="300"
                                data-daysago_start="3"
                                data-daysago_end="-1"
                                data-crosshair="true"
                                data-cursorgroup="1"
                                data-scrollgroup="1"
                                data-showlegend="false"
                                data-yticks="auto"
                                data-yticks_sec='[[0,"off"],[1,"on"]]'
                                data-xticks="auto">
                        </div>
</div>
</div>
<div data-type="switch"
data-device="par04"
data-cmd="setreading"
data-get="par22"
data-set="par22"
data-states='["manuell","automatic","boost","off"]'
data-set-states='["automatic","boost","off","manuell"]'
data-icons='["oa-sani_heating_manual","oa-sani_heating_automatic","fs-sani_heating_boost","fs-general_aus"]'
data-colors='["#5EDAFF","#21a000","#FF5E5E","grey"]'
data-background-color="par23"
class="inline"
></div>
</li>
</div>


en-trust

Wie muss ich das dann in der cfg einbinden bzw kann ich auch bei Urlaub ein Datum.mitgeben wo dem wieder auf Auto umspringt?

Eisix

Hallo,

so werden die einzelnen Templates aufgerufen.

        <li data-row="1" data-col="2" data-sizex="3" data-sizey="3"
                 data-template="templates/Thermostat.htm"      data-parameter='{"par01":"WOHNZIMMER",
                                                                                "par02":"TempMan",
                                                                                "par03":"EnO_4BS_XXXXXXXX",
                                                                                "par04":"Heizung.Status_WZ",
                                                                                "par05":"TempTag",
                                                                                "par06":"Tag",
                                                                                "par07":"TempNacht",
                                                                                "par08":"Nacht",
                                                                                "par09":"Party",
                                                                                "par10":"Sommer",
                                                                                "par11":"abwesend",
                                                                                "par12":"Urlaub",
                                                                                "par13":"Frost",
                                                                                "par14":"Boost",
                                                                                "par15":"Heizung_WZ",
                                                                                "par16":"FileLog_EinschaltTemp_WZ",
                                                                                "par17":"FileLog_Heizung_WZ",
                                                                                "par18":"FileLog_EnO_4BS_XXXXXXXX",
                                                                                "par19":"3:EinschaltTemp_WZ",
                                                                                "par20":"Heizung_WZ",
                                                                                "par21":"4:temperature",
                                                                                "par22":"Heizung",
                                                                                "par23":"Heizung_WZ:stateColor",
                                                                                "par24":"19",
                                                                                "par25":"21",
                                                                                "par26":"24"
                                                                                }'
        ></li>

Zum besseren Verständnis, die jeweiligen checkboxen ( Frost, Sommer, Urlaub,...) stellen den gewünschten Zustand bei der jeweiligen globalen Einstellung dar. Also bei z.B. Frost an oder Urlaub aus.

Mit datetimepicker kannst du auch eine Auswahl für Datum erstellen. Habe ich bis jetzt noch nicht  implementiert.

https://wiki.fhem.de/wiki/FTUI_Beispiel_Datetimepicker_f%C3%BCr_Timer

Gruß
Eisix

schka17

Ich glaube nicht dass du eine FBH über ein TRESHOLD modul oder über Raumtemperatur steuern kannst. Dafür ist diese viel zu träge. Ein und Ausschalten ja, aber nicht die Raumtemperatur. Dafür benötigst du eine PID Regelung. Das Modul PWM/PWMR z.b. Ist dafür hervorragend geeignet.


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

Eisix

Hallo schka17,

ich glaube meine FBH ist auch für PWM/PWMR zu träge. Grundsätzlich sind die Systeme zu individuell um eine globale Aussage über FBH zu treffen.
Kurz mal die Eckdaten meiner FBH: 14 Jahre, Erdwärme ohne Zuheizer, Außenfühler, Drehthermostat in jedem Raum.
Steuerung bisher:

Frau: "Das Wohnzimmer wird nicht richtig warm" (Drehthermostat steht eh schon auf max)
Ich: gehe in den Keller und drehe die Vorlauftemperatur um 1C hoch
Bedeutet ich reguliere das ganze Haus direkt an der Heizung.

Steuerung jetzt:
Frau: "Das Wohnzimmer wird nicht richtig warm" (Drehthermostat steht immer noch auf max)
Ich: Mache das Tablet an und stelle in Fhem 0,5C hoch

Dauert dann natürlich trotzdem Stunden bis das ganze fühlbar ist.
Vielleicht schaffe ich es noch das Sie selbst das ganze hoch regelt :)

Außerdem kann ich jetzt die Nachtabsenkung pro Raum einzeln einstellen. Wobei bei der Trägheit eine Nachtabsenkung für die Haupträume fast keinen Sinn macht. Das sehe ich aber auch erst seit ich das ganze in Fhem mache.

Gruß
Eisix

Ingo298

Hallo Eisix,

kannst du eine komplette define für deine Bad-Heizungssteuerung bereit stellen incl.
Sensor und Schalter  ??
RPi4 8GB: Bookworm FHEM 6.4, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT;PiVCCU3

schka17

Zitat von: Eisix am 10 Oktober 2017, 11:32:43
Hallo schka17,

ich glaube meine FBH ist auch für PWM/PWMR zu träge. Grundsätzlich sind die Systeme zu individuell um eine globale Aussage über FBH zu treffen.
Kurz mal die Eckdaten meiner FBH: 14 Jahre, Erdwärme ohne Zuheizer, Außenfühler, Drehthermostat in jedem Raum.
Steuerung bisher:

Frau: "Das Wohnzimmer wird nicht richtig warm" (Drehthermostat steht eh schon auf max)
Ich: gehe in den Keller und drehe die Vorlauftemperatur um 1C hoch
Bedeutet ich reguliere das ganze Haus direkt an der Heizung.

Steuerung jetzt:
Frau: "Das Wohnzimmer wird nicht richtig warm" (Drehthermostat steht immer noch auf max)
Ich: Mache das Tablet an und stelle in Fhem 0,5C hoch

Dauert dann natürlich trotzdem Stunden bis das ganze fühlbar ist.
Vielleicht schaffe ich es noch das Sie selbst das ganze hoch regelt :)

Außerdem kann ich jetzt die Nachtabsenkung pro Raum einzeln einstellen. Wobei bei der Trägheit eine Nachtabsenkung für die Haupträume fast keinen Sinn macht. Das sehe ich aber auch erst seit ich das ganze in Fhem mache.

Gruß
Eisix
Hallo Eisix,

Klar ist jede Anlage individuell, das schöne an PWMR ist ja das man die PID parameter individuell anpassen kann. Mein FBH ist 20 Jahre alt, letztes Jahr ein neues Brennwert Gerät und die Steuerung auf Einzelraumsteuerung mit Homematic, PWMR und Steuerventile für meine Kreise installiert. Funktioniert perfekt, jetzt kann ich das erste Mal in der Früh ins warme Badezimmer das dann bis abends wieder abgesenkt wird. Zur Unterstützung bei der Einstellung der PID parameter habe ich noch ein paar 1-wire sensoren für VL und RL der einzelnen Kreise montiert, ich hab da gar nicht viel herumprobieren müssen, nach zwei Wochen lief es und seither habe ich da nicht mehr hingegriffen.


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

Eisix

@Ingo298
Die ganzen Steuerungssachen und FTUI stehen auf der 1 Seite. Verstehe nicht ganz was die meine Sensoren und Schalter bringen sollen wenn du nicht zufällig die gleichen nutzt. Meine Heizungsventile steuere ich über NodOn EnOcean und die Sensoren sind Eltako EnOcean oder Fibaro Zwave.
Wo genau kann ich dir helfen?

@schka17
Mit dem Brennwert Gerät sollte das perfekt funktionieren da stimme ich dir zu. Du hast dadurch sozusagen immer bei Bedarf Dampf auf dem Kessel. Da sollte das PWM Modul gut optimieren. Bei mir ist durch die Erdbohrung die Verfügbarkeit der Energie wesentlich geringer was ich über die Laufzeit dann ausgleichen muss. Das geht bei extremen Minustemperaturen soweit das meine WP praktisch permanent läuft (abgesehen von Abtauzyklen). Bis jetzt wurde es aber immer noch warm genug und ich bin sehr zufrieden mit der Heizung. Man bastelt halt gerne und man ist bequem, Fhem abhängig wie wir alle!

Gruß
Eisix

Ingo298

@Ingo298
Die ganzen Steuerungssachen und FTUI stehen auf der 1 Seite. Verstehe nicht ganz was die meine Sensoren und Schalter bringen sollen wenn du nicht zufällig die gleichen nutzt. Meine Heizungsventile steuere ich über NodOn EnOcean und die Sensoren sind Eltako EnOcean oder Fibaro Zwave.


Du benutzt pro Raum einen Aktor (NodOn EnOcean) um das Stellventil ein und aus zuschalten, ein Wandthermostat (was für eins) um die Raumthemeratur zu messen?
Steuerung wie auf Seite 1 beschrieben und das für jeden Raum das wars?

RPi4 8GB: Bookworm FHEM 6.4, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT;PiVCCU3

Eisix

Hallo,

pro Raum nutze ich einen Kanal von einem NodOn - EnOcean In-Wall Module 2*1kW mit dem ich das Stellventil ein/aus schalte. War bei meinen Gegebenheiten für mich die billigste Variante. Im Forum findest du aber diverse andere auch billigere Arten sowas zu realisieren. Das Wandthermostat ist bei mir sozusagen historisch vorhanden(simples Drehthermostat), habe ich aber auch auf den Eingang des Aktors gelegt.
Bei der Messung der Raumtemperatur war ich bis jetzt nicht besonders wählerisch z.B. Fibaro Rauchmelder haben ein Thermometer, Fibaro Motion Sensor, Eltako FBH65TFB oder Eltako FIFT63AP. Du kannst auch ein Wandthermostat nehmen je nachdem welche Protokolle du über Fhem empfangen kannst und wieviel Geld du ausgeben willst.

Die einfachste Variante ist pro Raum

        ( [RaumTemp:temperature:d] < Wunschtemperatur) (set Heizung on) DOELSE (set Heizung off)

alles andere ist mehr Komfort.

Ob das für deine Gegebenheiten reicht weiss ich nicht. Mein System ist so träge das es funktioniert. Eine Heizung mit einer Gastherme oder eine Ölheizung würde ich so nicht betreiben. Auch solltest du die Elektroarbeiten von jemandem machen lassen der sich damit auskennt.

Gruß
Eisix

Ingo298

Genau den Komfort möchte ich gern haben, ich habe es ersteinmal soweit wi du übernommen entsprechnet eben mit meinen Aktor bzw. Temp-Sensor.
Im log habe ich jetzt folgende Meldung

Bad_temp return value: Unknown argument 22.9, choose one of Boost:on,off Frost:in,off Heizung:automatic,manuell Nacht Party Sommer Tag TempMan TempNacht TempTag Urlaub abwesend

für was ist das ":d"

[RaumTemp:temperature:d]
RPi4 8GB: Bookworm FHEM 6.4, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT;PiVCCU3

Eisix

Hallo,

mein Sensor hat z.B. 22.9 °C im reading. :d nimmt dann nur die Zahl 22.9 sonst funktioniert "[RaumTemp:temperature:d] < Wunschtemperatur" nicht. Wenn bei dir nur die Zahl drin steht brauchst du es nicht.
Bzgl. deines Log Eintrags ist das nur damit schwierig zu sagen. Sieht so aus als wolltest die die Temperatur in den Status der Heizung setzen aber wie gesagt mit nur dem Log Eintrag schwer zu sagen.

Gruß
Eisix

Ingo298

Fehler gefunden, richtig ich wollte die die Temperatur in den Status der Heizung setzen geht aber nicht

habe den dummy noch erweitert um in mit dem HomeKit zu steueren

define Heizung.Status_BAD_EG dummy
attr Heizung.Status_BAD_EG genericDeviceType thermostat
attr Heizung.Status_BAD_EG group Bad
attr Heizung.Status_BAD_EG homebridgeMapping TargetTemperature=TempMan::TempMan,minValue=5,maxValue=30,minStep=0.5,nocache=1\
                     CurrentTemperature=Temp_Bad:temperature,nocache=1
attr Heizung.Status_BAD_EG readingList Boost Frost Heizung Nacht Party Sommer Tag TempMan TempNacht TempTag Urlaub abwesend
attr Heizung.Status_BAD_EG room Heizung_Test,Homekit
attr Heizung.Status_BAD_EG setList Boost Frost Heizung Nacht Party Sommer Tag TempMan TempNacht TempTag Urlaub abwesend
attr Heizung.Status_BAD_EG useSetExtensions 1


evtl kann einer noch das Ein- und Ausschalten der automatic dazu machen
RPi4 8GB: Bookworm FHEM 6.4, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT;PiVCCU3

Ingo298

#28
Guten Morgen,

ich habe jetzt mal alles wie Eisix übernommen, leider bleibt immer der Tag Modus aktiv.

Internals:
   CHANGED
   DEF        ([Heizung.Status_BAD_EG:Heizung] eq "automatic" and [[Heizung.Status_BAD_EG:Tag]-[ Heizung.Status_BAD_EG:Nacht]]) (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempTag]) DOELSEIF ([Heizung.Status_BAD_EG:Heizung] eq "automatic") (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempNacht]) DOELSEIF ([Heizung.Status_BAD_EG:Heizung] eq "manuell") (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempMan])
   NAME       Steuerung.Heizung.BAD_EG
   NR         278
   NTFY_ORDER 50-Steuerung.Heizung.BAD_EG
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-10-26 06:09:46   Device          Heizung.Status_BAD_EG
     2017-10-26 06:15:00   cmd             1
     2017-10-26 06:15:00   cmd_event       timer_1
     2017-10-26 06:15:00   cmd_nr          1
     2017-10-26 06:09:46   e_Heizung.Status_BAD_EG_Heizung automatic
     2017-10-25 19:37:01   mode            enable
     2017-10-26 06:15:00   state           cmd_1
     2017-10-26 06:09:46   timer_01_c01    26.10.2017 06:15:00
     2017-10-25 23:36:26   timer_02_c01    26.10.2017 16:00:00
     2017-10-25 23:36:24   wait_timer      no timer
   condition:
     0          ReadingValDoIf($hash,'Heizung.Status_BAD_EG','Heizung') eq "automatic" and DOIF_time($hash,0,1,$wday,$hms)
     1          ReadingValDoIf($hash,'Heizung.Status_BAD_EG','Heizung') eq "automatic"
     2          ReadingValDoIf($hash,'Heizung.Status_BAD_EG','Heizung') eq "manuell"
   days:
   devices:
     0           Heizung.Status_BAD_EG
     1           Heizung.Status_BAD_EG
     2           Heizung.Status_BAD_EG
     all         Heizung.Status_BAD_EG
   do:
     0:
       0          set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempTag]
     1:
       0          set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempNacht]
     2:
       0          set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempMan]
     3:
   helper:
     event      timer_1
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev
     timerevent timer_1
     triggerDev
     timerevents:
       timer_1
     timereventsState:
       Tag: 06:15
     triggerEvents:
       timer_1
     triggerEventsState:
       Tag: 06:15
   internals:
   interval:
     0          -1
     1          0
   itimer:
     all         Heizung.Status_BAD_EG
   localtime:
     0          1508991300
     1          1509026400
   readings:
     0           Heizung.Status_BAD_EG:Heizung
     1           Heizung.Status_BAD_EG:Heizung
     2           Heizung.Status_BAD_EG:Heizung
     all         Heizung.Status_BAD_EG:Heizung
   realtime:
     0          06:15:00
     1          16:00:00
   regexp:
     0:
     1:
     all:
   state:
     STATE:
   time:
     0          [Heizung.Status_BAD_EG:Tag]
     1          [Heizung.Status_BAD_EG:Nacht]
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1509026400:
       localtime  1509026400
       hash:
Attributes:
   DbLogExclude .*
   group      Bad
   room       Heizung_Test
   wait       3:3:3


müsste er nicht jetzt den timer_01_c01 schon auf morgen setzen, was habe ich falsch gemacht?
RPi4 8GB: Bookworm FHEM 6.4, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT;PiVCCU3

Eisix

Hallo,

ist mir gestern auch aufgefallen. Liegt am DOIF.


([Heizung.Status_BAD_EG:Heizung] eq "automatic" and [[Heizung.Status_BAD_EG:Tag]-[ Heizung.Status_BAD_EG:Nacht]]) (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempTag]) DOELSEIF ([Heizung.Status_BAD_EG:Heizung] eq "manuell") (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempMan]) DOELSE (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempNacht])

So funktioniert es.

Gruß
Eisix