Hamburger Hamburger

Heating and Ventilation Control

HvcOperationMode

Keine Erläuterungen gefunden.

import  os
from stat import  * 
import  json

class HvcOperationMode:
    
    def  __init__(self):
        """
        Initialization, specify the configuration file.
        """
        self.opModFile = "./ConfDir/operationMode.yml"
        self.paramFile = "./ConfDir/parameters.yml"

    def  read(self):
        """
        Check for  changes of the configuration fles,
        and load it on change.
        """
        try:
            st = os.stat(self.opModFile)
        except IOError:
            print("failed to get information about", self.opModFile)
        else:
            lastModo = st[ST_MTIME]

        changed = 0
        if HvcOperationMode.lastModo != lastModo:
            changed = 1
            HvcOperationMode.lastModo = lastModo
            with open(self.opModFile) as  json_file:
                HvcOperationMode.operationMode = json.load(json_file)

        try:
            st = os.stat(self.paramFile)
        except IOError:
            print("failed to get information about", self.paramFile)
        else:
            lastModp = st[ST_MTIME]

        changed = 0
        if HvcOperationMode.lastModp != lastModp:
            changed = 1
            HvcOperationMode.lastModp = lastModp
            with open(self.paramFile) as  json_file:
                parTmp = json.load(json_file)
            for  p in parTmp:
                if p.find("Time")>0:
                    HvcOperationMode.parameters[p] = self.time2float(parTmp[p])
                else:
                    HvcOperationMode.parameters[p] = parTmp[p]
        
        return HvcOperationMode.operationMode,HvcOperationMode.parameters,changed
            
    def  time2float(self,ot):
        otH = ot[:ot.find(":")]
        otM = ot[ot.find(":")+1:]
        time = float(otH) + float(otM) / 60.0
        return time
    
    def  write(self,operationMode):
        """
        Typically, the configuration file is edited via the web-frontend,
        use this to initially create an yaml file.
        """
        with open(self.opModFile, 'w') as  outfile:
            json.dump(operationMode, outfile)

    def   log(self,operationMode,today,hour,minute):
        """
        To have a protocol, when what was changed
        """
        myOpMode = operationMode
        myOpMode["date"] = today+"_"+hour+":"+minute
        pNames = self.parameters.keys()
        for  p in pNames:
            myOpMode[p] = self.parameters[p]

        with open("LogDir/settings.log", 'a') as   outfile:
            outfile.write("\n")
            json.dump(myOpMode, outfile)

#persistant values:
HvcOperationMode.lastModo = 0
HvcOperationMode.lastModp = 0
HvcOperationMode.operationMode = {}
HvcOperationMode.parameters    = {}


"""
for  testing
"""
if __name__ == "__main__":
    import  time, threading
    om = HvcOperationMode()

    operationMode = {}
    operationMode['solar']= "auto"    # {on / off / auto}
    operationMode['oven'] = "off"     # {on / off / auto}
	operationMode['extLight'] = "off"     # {on / off / auto}
    operationMode['pump'] = "off"     # {on / off / auto}
    operationMode['vent'] = "minimal" # {minimal/normal/maximal/auto}
    operationMode['byPs'] = "shut"    # {open/shut}
    operationMode['opMod'] = "summer" # {winter/summer/vacation}
    om.write(operationMode)
    
    next_call = time.time()
    while True:
        newOm,params,changed = om.read()
        if changed:
            print(newOm)
        
        next_call = next_call+1;
        time.sleep(next_call - time.time())

python

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

php

1/HV_colorMap.php
2/HV_Admin_Login.php
3/HV_readOperationState.php
4/HV_setParameters.php
5/HV_config.php
6/EM_handleJSON.php
7/index.php
8/readFilenames.php
9/HV_restart.php
10/HV_moveGate.php
11/HV_showLog.php
12/HV_RollerShutter.php
13/EM_editParameter.php
14/HV_serviceLog.php
15/HV_H2Olevel.php
16/HV_TempCal.php
17/HV_Fronius.php
18/EM_plot.php
19/readNamedData.php
20/HV_composeH2Oplot.php
21/HVdoc.php
22/HV_showWeatherForecast.php
23/HV_showHouse.php

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