FHEM Forum

FHEM - Anwendungen => Heizungssteuerung/Raumklima => Thema gestartet von: MrStonedfire am 20 August 2015, 15:54:20

Titel: Pool Heizung Solarthermie
Beitrag von: MrStonedfire am 20 August 2015, 15:54:20
Hallo
ich habe für meinen Nachbarn einen Rpi aufgesetzt mit FHEM.
Damit will er seine Pool Pumpe steuern.
Er hat aber 2 Solarkollektoren auf dem Dach wo das Wasser zu ca. 30% durchgejagt wird.
Jetzt haben wir uns überlegt das FHEM die Pumpe so steuern kann das wir die größtmögliche ausbeute haben.
Nur wie am besten ?
Hat jemand so was in der Art schon mal gemacht?

Als Hardware haben wir aktuell nur einen Schaltaktor (HM-ES-PMSw1-Pl) und eine Wetterstation (HM-WDS100-C6-O).
Erweitern wollen wir es noch mit 2 Temp Fühlern.
Was könnt ihr uns vorschlagen wir das am besten umsetzen.

Ich habe mir gedacht eine Kombination aus 3 Werten zunehmen.

Sonnenschein Stärke (Kann die Wetterstation mit einen Wert 0-255)
Temperatur
Betriebsminuten (Sollte nicht länger als x Std am Tag laufen da Strom bekanntermaßen Teuer ist).

Dann sollte die Pumpe für 2 min angeschaltet werden und danach wieder 7 min Pause.
Dieses Skript wollte ich dafür umschreiben: http://www.fhemwiki.de/wiki/Schalten_mit_mehreren_Bedingungen
Titel: Antw:Pool Heizung Solarthermie
Beitrag von: igami am 20 August 2015, 16:25:12
Wenn ich es richtig verstehe möchtest du folgende Bedingungen:

Pool Temperatur <= angenehm
Sonnenschein >= bringt was
Einschaltzeit < maximallaufzeit

Oder fehlt noch etwas?
Titel: Antw:Pool Heizung Solarthermie
Beitrag von: MrStonedfire am 20 August 2015, 16:29:28
Nein eig nicht nur die Pooltemperatur können wir nich nicht messen. Zur zeit haben wir nur die daten der Wetterstadion.

Titel: Antw:Pool Heizung Solarthermie
Beitrag von: igami am 20 August 2015, 18:19:28
Kannst ja mal folgendes probieren:

Ein Dummy in dem Variablen gesetzt werden:

define PoolPumpe_controlUnit dummy

setreading PoolPumpe_controlUnit R-onForTimer 2
setreading PoolPumpe_controlUnit R-poolTempMax 19
setreading PoolPumpe_controlUnit R-reset 24:00
setreading PoolPumpe_controlUnit R-runtimeMax 2
setreading PoolPumpe_controlUnit R-sunshineMin 200
setreading PoolPumpe_controlUnit R-wait 7
setreading PoolPumpe_controlUnit runtime 0
setreading PoolPumpe_controlUnit state off

attr PoolPumpe_controlUnit readingList R-onForTimer R-poolTempMax R-reset R-runtimeMax R-sunshineMin R-wait runtime
attr PoolPumpe_controlUnit room Pool Pumpe
attr PoolPumpe_controlUnit setList R-onForTimer R-poolTempMax R-reset R-runtimeMax R-sunshineMin R-wait runtime state
attr PoolPumpe_controlUnit webCmd on:off

Zum Testen noch zwei Dummys

define pooltemp dummy
set pooltemp 17
attr pooltemp room Pool Pumpe
attr pooltemp webCmd 17:20

define sunshine dummy
set sunshine 255
attr sunshine room Pool Pumpe
attr sunshine webCmd 100:255

Dann das eigentliche DOIF

define PoolPumpe_controlUnit_DOIF DOIF
  (
    [PoolPumpe_controlUnit:?R-wait]
  )(
    attr PoolPumpe_controlUnit_DOIF wait 0:{([PoolPumpe_controlUnit:R-wait]*60)}:0:0
  )DOELSEIF(
    [PoolPumpe_controlUnit:state] eq "off" and
    [PoolPumpe_controlUnit:runtime] < {([PoolPumpe_controlUnit:R-runtimeMax]*60*60)} and
    [pooltemp] < [PoolPumpe_controlUnit:R-poolTempMax] and
    [sunshine] >= [PoolPumpe_controlUnit:R-sunshineMin]
  )(
    set PoolPumpe_controlUnit on, sleep {([PoolPumpe_controlUnit:R-onForTimer]*60)}; set PoolPumpe_controlUnit off,
    set PoolPumpe_controlUnit runtime {([PoolPumpe_controlUnit:runtime]+[PoolPumpe_controlUnit:R-onForTimer]*60)}
  )DOELSEIF(
    [[PoolPumpe_controlUnit:R-reset]]
  )(
    set PoolPumpe_controlUnit runtime 0
  )DOELSE

attr  PoolPumpe_controlUnit_DOIF cmdState set wait|processing|reset|waiting
attr  PoolPumpe_controlUnit_DOIF do always
attr  PoolPumpe_controlUnit_DOIF room Pool Pumpe
attr  PoolPumpe_controlUnit_DOIF wait 0:420:0:0

Habe ich noch nicht ausführlich getestet, aber ich habe auch keinen Pool ;P

Grüße
igami
Titel: Antw:Pool Heizung Solarthermie
Beitrag von: MrStonedfire am 24 August 2015, 18:06:22
Hallo,
habe nun fast alles am laufen bekommen nur leider den teil mit der Pause will nicht so ganz.
Soll heissen wenn die bedinungen erfühlt sind schaltet er nur für ca 3 sec ab.

DEF

(
    [PoolPumpe_controlUnit:?R-wait]
  )(
    attr PoolPumpe_controlUnit_DOIF wait {([PoolPumpe_controlUnit:R-wait]*60)}
  )DOELSEIF(
    [HM_2DBBD4_Sw:state] eq "off" and
    [PoolPumpe_controlUnit:state] eq "on" and
    [PoolPumpe_controlUnit:runtime] < {([PoolPumpe_controlUnit:R-runtimeMax]*60*60)} and
    [HM_374848:temperature] >= [PoolPumpe_controlUnit:R-poolTempMax] and
    [HM_374848:brightness] >= [PoolPumpe_controlUnit:R-sunshineMin]
  )(
    set HM_2DBBD4_Sw on-for-timer {([PoolPumpe_controlUnit:R-onForTimer]*60)};
    set PoolPumpe_controlUnit runtime {([PoolPumpe_controlUnit:runtime]+[PoolPumpe_controlUnit:R-onForTimer]*60)}
  )DOELSEIF(
    [[PoolPumpe_controlUnit:R-reset]]
  )(
    set PoolPumpe_controlUnit runtime 0
  )DOELSE


Readings
R-onForTimer 1
R-poolTempMax 19
R-reset 24:00
R-runtimeMax 2
R-sunshineMin 5
R-wait 7
runtime 2340
state off


Sieht jemand was ich übersehen habe ?
Titel: Antw:Pool Heizung Solarthermie
Beitrag von: igami am 24 August 2015, 18:26:19

attr PoolPumpe_controlUnit_DOIF wait {([PoolPumpe_controlUnit:R-wait]*60)}
!=
attr PoolPumpe_controlUnit_DOIF wait 0:{([PoolPumpe_controlUnit:R-wait]*60)}:0:0


Schön, dass es sonst funktioniert :D