Dr. Arne JachensDr. Arne Jachens

Heating and Ventilation Control

HvcLightControl

Keine Erläuterungen gefunden.

import  datetime
from suntime import  Sun

class HvcLightControl:
    def  __init__(self, debug=False):
        self.debug = debug
        self.latitude  = 53 + 10.0/60.0 +  7.0/3600.0
        self.longitude =  8 + 37.0/60.0 + 30.0/3600.0


    def  getSunSet(self):
        timeZone = datetime.datetime.now()
        sun = Sun(self.latitude, self.longitude)
        sunRise = sun.get_local_sunrise_time(timeZone)
        sunSet = sun.get_local_sunset_time(timeZone)
        srH = sunRise.strftime('%H')
        srM = sunRise.strftime('%M')
        self.sunRise = sunRise.strftime('%H:%M')
        ssH = sunSet.strftime('%H')
        ssM = sunSet.strftime('%M')
        self.sunSet = sunSet.strftime('%H:%M')
        self.sunRiseTime = float(srH) + float(srM)/60.0
        self.sunSetTime  = float(ssH) + float(ssM)/60.0
        if self.debug:
            print("timeZone", timeZone)
            print("sunRise", sunRise)
            print("sunSet", sunSet)
            print("sunRiseTime", self.sunRiseTime)
            print("sunSetTime", self.sunSetTime)

            
        return
        
    def  exteriorLight(self, parameter, switches, myTime=-1):
        now   = datetime.datetime.now()
        #year  = now.strftime("%Y")
        #mon   = now.strftime("%m")
        #day   = now.strftime("%d")
        hour   = now.strftime("%H")
        minute = now.strftime("%M")
        if myTime < 0:
            myTime = float(hour) + float(minute)/60.0
            
        ot = parameter['extLightOffTime'] 
        otH = ot[:ot.find(":")]
        otM = ot[ot.find(":")+1:]
        offTime = float(otH) + float(otM) / 60.0
        anyChange = False
        switchOld = switches['LC1']
        if self.debug:
            print("times", myTime, self.sunSetTime)
            print(ot,offTime,parameter['sunSetOffset'])
            print("switch old", switchOld  )
            
        if myTime > self.sunSetTime + parameter['sunSetOffset']:
            switches['LC1'] = 1
            
        if myTime < self.sunSetTime and myTime > offTime:
            switches['LC1'] = 0

        if abs(switches['LC1']-switchOld)>0:
            anyChange = True

        if self.debug:
            print("switch new", switches['LC1'] )
            
        return switches, anyChange


if __name__ == "__main__":
    from HvcOperationMode import   HvcOperationMode
    #parameter = {}
    #OM.parameter['sunSetOffset'] = 0.5 #h
    #OM.parameter['extLightOffTime'] = "01:00"
    
    OM = HvcOperationMode()
    newOm,parameter,changed = OM.read()
    
    myWRactual = {}
    myWRactual['LC1'] = 0
    
    myEL = HvcLightControl(True)
    myEL.getSunSet()
    myWRactual, anyChange = myEL.exteriorLight(parameter,myWRactual)
    print(myWRactual)
    myWRactual, anyChange = myEL.exteriorLight(parameter,myWRactual,23.5)
    print(myWRactual)
    myWRactual, anyChange = myEL.exteriorLight(parameter,myWRactual,0.5)
    print(myWRactual)
    myWRactual, anyChange = myEL.exteriorLight(parameter,myWRactual,12.5)
    print(myWRactual)

Index of Library

1EnergyManager.py
2HvcControl.py
3HvcHCSR04ultrasonic.py
4HvcLightControl.py
5HvcMain.py
6HvcMotorDriver.py
7HvcMqtt.py
8HvcOneWire.py
9HvcOperationMode.py
10HvcRaw2phys.py
11HvcReadSPI.py
12HvcSendI2C.py
13HvcSetGPIO.py
14HvcTables.py
15HvcWeather.py
16HvcWifiRelay.py
17makeDoc.py

Der gesamte Sourcecode darf gemäß GNU General Public License weiterverbreitet werden.