Pool Heizung Solarthermie

Begonnen von MrStonedfire, 20 August 2015, 15:54:20

Vorheriges Thema - Nächstes Thema

MrStonedfire

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

igami

Wenn ich es richtig verstehe möchtest du folgende Bedingungen:

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

Oder fehlt noch etwas?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

MrStonedfire

#2
Nein eig nicht nur die Pooltemperatur können wir nich nicht messen. Zur zeit haben wir nur die daten der Wetterstadion.


igami

#3
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
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

MrStonedfire

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 ?

igami


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
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED