Fussbodenheizung mit PWM steuern

Begonnen von jamesgo, 24 September 2015, 08:28:49

Vorheriges Thema - Nächstes Thema

wowogiengen

Hallo Andy und Tom,
mir ist das mit dem Aktor durchaus bewusst. Was mich halt gewundert hat, dass bei manuellem "Verbiegen" des Aktors (also set off, wenn er on ist und set on, wenn er off ist), trotzdem dazu geführt hat, dass PWM(R?) dann wieder den eigentlichen Zustand hergestellt hat, und zwar egal wie oft ich das Verbiegen gemacht habe. Ich würde es vom PWM-Modul besser finden, wenn geprüft wird, ob der gewünschte Zustand erreicht wurde oder nicht, und solange eben der Zustand nicht erreicht wurde, in jedem Zyklus versucht würde diesen Zustand herzustellen.

Im Normalfall würde es gleich funktionieren wie bisher, und im Fehlerfall (der ja eigentlich nie vorkommen sollte), wird eben mehrfach versucht den Aktor umzustellen...

Viele Grüße
Wolfgang

sledge

Hi Wolfgang,

das von Dir gewünschte Verhalten würde ich dann über ein Dummy + Notify erwirken, aber nicht im Modul sehen.

Alle Module schalten ihre Aktoren mW nur "einfach" - und ich persönlich halte das auch für richtig.

Abweichendes Verhalten kannst Du leicht selber realisieren - im Wiki gibt es hierzu das Beispiel der PCA301-Steckdosen bei Empfangsproblemen. Vielleicht hier eine Anleihe machen? Alternativ überprüfst Du regelmäßig den Wunsch und Sollzustand Deines Aktors und korrigierst entsprechend - oder blockst Schaltvorgänge ab, wenn Du das so haben möchtest.

Deinem Vorschlag folgend müssten ja alle Module, welche Aktoren steuern, entsprechende Ausnahmeregeln einbauen - sehr unelegant.

Gruß,

Tom
FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

Frini

#707
Hallo,
Ich habe in unserem Häusschen eine Fußbodenheizung im EG. Da das komplette EG quasi ein Raum ist werden alle Heizschleifen über ein Thermostat gesteuert. Soweit so gut. Ich wollte dies nun über das PWM Modul abfangen. Habe mir also einmal einen PWM Device angelegt und einmal einen PWMR Device. Das PWMR Device steuert aktuell noch einen dummy. Weil ich noch in der Erprobung bin.

Komischerweise wird mein Logfile richtig zu gemüllt.

2019.01.17 07:04:00 3: PWM_Calculate PW.eg.wz.FBH: F0 stay unchanged off: (99 < 180 sec)
2019.01.17 07:04:26 3: PWM_Calculate PWM.FussbodenHeizung
2019.01.17 07:04:26 3: PWM_CalcRoom PW.eg.wz.FBH: F11 stay off (0)
2019.01.17 07:05:03 3: PWM_Calculate PWM.FussbodenHeizung
2019.01.17 07:05:03 3: PWM_CalcRoom PW.eg.wz.FBH: F11 stay off (0)
2019.01.17 07:05:03 3: PWM_Calculate PWM.FussbodenHeizung
2019.01.17 07:05:03 3: PWM_CalcRoom PW.eg.wz.FBH: F11 stay off (0)

Das Intervall für die Berechnung habe ich auf 60 stehen. Ich verstehe die doppelt Einträge nicht.

Hier das list des PWM Devices

Internals:
   CYCLETIME  900
   DEF        60 900 180 1
   INTERVAL   60
   MINONOFFTIME 180
   MaxPulse   1
   MaxSwitchOffPerCycle 99
   MaxSwitchOnPerCycle 99
   NAME       PWM.FussbodenHeizung
   NR         377
   NoRoomsToStayOff 0
   NoRoomsToStayOn 0
   NoRoomsToStayOnThreshold 0
   OverallHeatingSwitch
   OverallHeatingSwitch_delayTimeOn
   OverallHeatingSwitch_followUpTime
   OverallHeatingSwitch_regexp_on
   OverallHeatingSwitch_roomBased
   OverallHeatingSwitch_threshold
   STATE      lastrun: 2019-01-17 07:11:27
   TYPE       PWM
   p_cycletime 900
   p_interval 60
   p_maxPulse 1
   p_minOnOffThreshold
   p_minOnOfftime 180
   p_overallHeatingSwitch
   READINGS:
     2019-01-17 06:49:08   OverallHeatingSwitch
     2019-01-17 06:49:08   OverallHeatingSwitchWaitBeforeOn
     2019-01-17 06:49:08   OverallHeatingSwitchWaitUntilOff
     2019-01-17 07:11:27   avgPulseRoomsOff 0.00
     2019-01-17 07:11:27   avgPulseRoomsOn 0
     2019-01-17 07:11:27   lastrun         calculating
     2019-01-17 07:11:27   pulseAvg        0.00
     2019-01-17 07:11:27   pulseAvg2       0.00
     2019-01-17 07:11:27   pulseAvg3       0.00
     2019-01-17 07:11:27   pulseMax        0
     2019-01-17 07:11:27   pulseSum        0
     2019-01-17 07:11:27   roomsActive     1
     2019-01-17 07:11:27   roomsOff        1
     2019-01-17 07:11:27   roomsOn         0
     2019-01-17 07:11:27   roomsToStayOn   0
     2019-01-17 07:11:27   roomsToStayOnList
     2019-01-17 07:11:27   state           lastrun: 2019-01-17 07:11:27
   helper:
     pulses:
       PW.eg.wz.FBH 0.00 / 0
Attributes:
   event-on-change-reading .*
   group      EG_Klima
   room       ,Klima



Hier das list vom PWMR device

Internals:
   ACTOR      dum.FBH
   CHANGED   
   DEF        PWM.FussbodenHeizung 1,0 TF.eg.wz.FBH_Climate:measured-temp dum.FBH
   INTERVAL   300
   IODev      PWM.FussbodenHeizung
   NAME       PW.eg.wz.FBH
   NR         378
   STATE      From TF.eg.wz.FBH_Climate
   TEMPSENSOR TF.eg.wz.FBH_Climate:measured-temp
   TYPE       PWMR
   WINDOW     
   a_regexp_on on
   actor      dum.FBH
   c_PID_useit 0
   c_autoCalcTemp 1
   c_desiredTempFrom TF.eg.wz.FBH_Climate:desired-temp
   c_factor   1
   c_foffset  0
   c_frostProtect 0
   c_tempC    22
   c_tempD    20
   c_tempE    19
   c_tempFrostProtect 6
   c_tempN    16
   c_tempRule1 1-5 0600,D 2200,N
   c_tempRule2 6-0 0800,D 2200,N
   c_tempRule3
   c_tempRule4
   c_tempRule5
   d_name     TF.eg.wz.FBH_Climate
   d_reading  desired-temp
   d_regexpTemp (\d[\d\.]+)
   p_actor    dum.FBH
   p_factor   1,0
   p_pid     
   p_tsensor  TF.eg.wz.FBH_Climate:measured-temp
   p_window   
   t_reading  measured-temp
   t_regexp   ([\d\.]+)
   t_sensor   TF.eg.wz.FBH_Climate
   w_regexp   .*Open.*
   windows   
   Helper:
     DBLOG:
       desired-temp:
         DbLog:
           TIME       1547701257.93926
           VALUE      21.0
       desired-temp-used:
         DbLog:
           TIME       1547704536.0547
           VALUE      21.0
       temperature:
         DbLog:
           TIME       1547705482.36953
           VALUE      21.9
   READINGS:
     2019-01-17 07:13:28   PWMOnTime       00:00
     2019-01-17 07:13:28   PWMPulse        0
     2019-01-17 07:04:26   actorState      unknown
     2019-01-17 07:10:59   desired-temp    21.0
     2019-01-02 20:45:33   desired-temp-until no
     2019-01-17 07:13:28   desired-temp-used 21.0
     2019-01-17 07:13:28   energyused      000000000000000000000000000000
     2019-01-17 07:13:28   energyusedp     0.0
     2019-01-14 08:05:31   lastswitch      1547449531.38472
     2019-01-08 08:48:58   manualTempDuration 60
     2019-01-17 07:13:28   oldpulse        0
     2019-01-17 07:10:59   state           From TF.eg.wz.FBH_Climate
     2019-01-17 07:13:28   temperature     21.9
   helper:
Attributes:
   desiredTempFrom TF.eg.wz.FBH_Climate:desired-temp
   event-on-change-reading .*
   group      EG_Klima
   room       ,Klima
   verbose    3



Die LogEinträge sind eine Sache, aber ich habe das Gefühl, dass durch die doppelte Berechnung die Ausöadtung des Pi3 unnötig zunimmt.

jamesgo

Hallo, es sieht tatsächlich so aus als ob die Berechnung doppelt läuft. Hast du schon einen Restart von FHEM  versucht?
Grüße Andy

Gesendet von meinem BTV-DL09 mit Tapatalk


RaspiLED

Hi,
Room mit , sieht komisch aus.
Event-on-change-Reading .* ist okay, aber kann man das nicht noch eingrenzen? Auf welche Readings steuerst Du denn wirklich? Zeig mal den Eventmonitorauszug.
Gruß Arnd


Gesendet von iPhone mit Tapatalk
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Frini

#710
Aktuell steuere ich darüber gar nichts. Ich logge den Zustand des dummys dum.FHB ob on oder off in Verbindung mit der Temperatur von Thermostaten TF.eg.wz.FBH_Climate.

Restart habe ich durchgeführt.

Das , habe ich entfernt. Hatte aber keinen Einfluss

jamesgo

Hallo,

Wenn ich mir das genauer anschaue hast du vermutlich "set PWM.FussbodenHeizung recalc" mehrfach ausgeführt ... dann wird öfters als alle 60 Sekunden gerechnet.

Grüße
Andy

Frini

Wie kann ich das denn mehrfach ausführen? Macht der das nicht automatisch?

jamesgo

Das ist ein Button im GUI ...

Gesendet von meinem BTV-DL09 mit Tapatalk


jamesgo

Hast du die doppelten Einträge im Log immer noch?

Gesendet von meinem BTV-DL09 mit Tapatalk


Frini

Ja.
Ich hab das verbose jetzt umgestellt, jetzt sind se im Log nicht mehr zu sehen, aber ich sehe es ab der CPU.
Also set PWM recalc 0?

Morgennebel

Hi James,


ich hab heute meine 1-Wire Lösung von Raspberry Aufsteckplatinen auf den ESERA-Controller2 umgestellt.
Diese betreibe ich mit dem https://forum.fhem.de/index.php/topic,91764.msg842693.html#msg842693 Modul von pizmus.

Überraschenderweise für mich arbeitet das Modul mit Bitmasken und kann Ausgänge des DS2408 Chips in Gruppen zusammenfassen. Große Magie. Die Ausgänge können jedoch auch einzeln definiert werden und sehen dann so aus:


Internals:
   BITCOUNT   1
   BITPOS     1
   DEF        EC_HWRHeizung SYS2 SYS2 1 1
   DEVICE_TYPE SYS2
   EC_HWRHeizung_MSGCNT 1044
   EC_HWRHeizung_TIME 2019-02-05 16:26:58
   ESERAID    SYS2
   FUUID      5c5942b5-f33f-9a7b-4df3-b7608fd1bac23ecd
   IODev      EC_HWRHeizung
   LASTInputDev EC_HWRHeizung
   LAST_OUT   0
   MSGCNT     1044
   NAME       1W_HWR.ECOut_Sw2
   NR         27
   ONEWIREID  SYS2
   STATE      Initialized
   TYPE       EseraDigitalInOut
   READINGS:
     2019-02-05 16:26:58   out             0
Attributes:
   comment    Controller OUT2 - Heizungspumpe
   room       R_HWR,SYS_1Wire


Wie Du siehst, hat dieser Relaisausgang kein STATE/state on oder off, sondern nur ein Reading out - welches zwischen 0 oder 1 wechselt.

Das harmoniert nun gar nicht mit meiner PWM-Definition:

defmod PWM.FussbodenHeizung PWM 60 900 180 1 4,4 2,1,0 1W_HWR.ECOut_Sw2,0,915,on,300
attr PWM.FussbodenHeizung disable 0
attr PWM.FussbodenHeizung overallHeatingSwitchThresholdTemp 1W_HWR.FussbodenMischer_Vorlauf,41
attr PWM.FussbodenHeizung room R_HWR
attr PWM.FussbodenHeizung valveProtectIdlePeriod 14
attr PWM.FussbodenHeizung verbose 5


da diese von einem on als aktivem Zustand ausgeht. Laut Doku ist das eine RegExp - aber wie kann die auf ein Reading prüfen?

Danke für die Hilfe,

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

stromer-12

Für sowas gibt es doch readingsProxy.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Morgennebel

Jep, Danke fuer die Erinnerung... Laeuft...

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Morgennebel

Hi James,


ich habe mein Logging auf DbLog umgestellt, meine RegExp-Definition ist:

./db.conf .*:(temperature|desired-temp|measured-temp|humidity|ValvePosition|dewpoint|on|off|position|cond|hmTraffic|motion|motionCount|motionDuration|noMotion|energy|energyCalc|energyOffset|power|gasCnt|gasCntCalc|gasPower|Diesel|SuperE5|AVG\sT|Temperature|FussbodenMischer_VorlaufMED).*

d.h. beliebige Geräte/DEVICES und eine Reihe von Zuständen, incl. on und off.

Im PWM-Modul (meines heißt PWM.FussbodenHeizung) gibt es das Reading OverallHeatingSwitch, das jedoch leider nicht geloggt wird. Nach einer Woche mit dieser Definition findet meine DB keine Einträge, obwohl der OverallHeatingSwitch mehrfach geschaltet wurde:

MariaDB [DB_FHEMLOG]> select * from current where DEVICE LIKE '%PWM%';
Empty set (0.00 sec)

MariaDB [DB_FHEMLOG]> select * from history where DEVICE LIKE '%PWM%';
Empty set (1.53 sec)

MariaDB [DB_FHEMLOG]>


Irgendwelche Ideen, warum dies nicht klappt?

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA