Skip to content

Logik Zirkulation Anwesend Warmwasser Pulsweite

Mirko Hirsch edited this page Oct 3, 2013 · 1 revision

Ziel

Bei Abwesenheit keine Zirkulation. Bei Warmwasserbereitung durchgängig Zirkulation, sonst in der Basiszeit für x Minuten (hier 10% in der Stunde an).

Logik

#/logics/zirkulation.py
#!/usr/bin/env python
#trigger logic by ww_item, zirk_item oder anything else

### config ###
zirk_item = sh.zirk             #item Zirkulationspumpe (bool)
praesenz_item = sh.ow.praesenz  #item Praesenz (bool)
ww_item = sh.ebus.status_wp     #item Status Warmwasserbereitung
ww_values = [62,7,8]            #Werte von Status Warmwasserbereitung bei denen Zirkulation laufen soll als Liste!

base_time = 60                 #Basis-Zeit Minuten
on_perc = 10                      #PWM in %
### end config ###

on = int(base_time * 60 * on_perc / 100)
off = int(base_time * 60 - on)

if not praesenz_item():  # niemand da
    zirk_item(False)

elif ww_item() in ww_values:  # Waermepumpe laeuft
    zirk_item(True)

else:
    if not zirk_item() and zirk_item.age() >= off:  # Zirkpumpe aus und das schon laenger als 'off' Sekunden
        zirk_item(True)
        zirk_item.timer(on, False)

logic.conf

Folgender Eintrag wird in /etc/logics.conf benötigt.

[zirkulation]
    filename = zirkulation.py
    crontab = init
    watch_item = ebus.status_wp,ow.praesenz
    cycle = 60

Items

Folgende Items werden in der items.conf benötigt.

[ow]
    [[praesenz]]
        name = globale_praesenz
        type = bool
        value = True
	knx_dpt = 1
	knx_send = 0/7/0
	knx_reply = 0/7/0

[ebus]
    [[status_wp]]
        type = num
        knx_dpt = 6
        knx_listen = 8/6/1
        knx_reply = 8/6/1
        ebus_cmd = "amu wp_stat"
        ebus_type = "get"
        comment = Warmepumpenstatus

Zusammenfassung

Kurze Erklärung der Logik folgt.