Dr. Arne JachensDr. Arne Jachens

Heating and Ventilation Control

HvcOneWire

Keine Erläuterungen gefunden.

class HvcOneWire_DS1820:
    def  __init__(self):
        self.sensors = {}
        self.sensors["Toven"] = "28-3c01b556c01a"
        self.sensors["Tfolu"] = "28-3c01b55605f9"
        self.sensors["Terde"] = "28-3c01b5566967"
        self.sensors["Twalu"] = "28-3c01b5566647"
        self.sensors["Thaus1"] = "28-012111fb3ff8"
        self.sensors["Thaus2"] = "28-012111ff6f31"
        self.sensors["Thaus3"] = "28-012111e8d0a5"

        for  s in self.sensors:
            HvcOneWire_DS1820.T[s] = -999
            
        return

    def  look4sensors(self):
        """
        Initially, check for  the 1-wire slaves available
        """
        file = open('/sys/devices/w1_bus_master1/w1_master_slaves')
        w1_slaves = file.readlines()
        file.close()
        sensNames = []
        for  line in w1_slaves:
            thisSensorName = line.split("\n")[0]
            sensNames.append(thisSensorName)
            
        return sensNames

    def  read(self,s="all"):
        """
        For each of the DS1820 sensors, return the temperature.
        """
        message = ""
            
        if s=="all":
            for  s in self.sensors:
                try:
                    file = open('/sys/bus/w1/devices/' + str(self.sensors[s]) + '/w1_slave')
                    filecontent = file.read()
                    file.close()
                    
                    # find and convert the temperature
                    tempVal = filecontent.split("\n")[1].split(" ")[9]
                    temperature = float(tempVal[2:]) / 1000.0
                    if temperature == -0.1:
                        temperature = -999
                    HvcOneWire_DS1820.T[s] = temperature
                except:
                    message = message + "Temperature read failed: " + str(s) +"\n"
                    HvcOneWire_DS1820.T[s] = -999
                    continue
        else:
            try:
                file = open('/sys/bus/w1/devices/' + str(self.sensors[s]) + '/w1_slave')
                filecontent = file.read()
                file.close()
                
                # find and convert the temperature
                tempVal = filecontent.split("\n")[1].split(" ")[9]
                temperature = float(tempVal[2:]) / 1000.0
                if temperature == -0.1:
                    temperature = -999
                HvcOneWire_DS1820.T[s] = temperature
            except:
                message = message + "Temperature read failed: " + str(s) +"\n"
                HvcOneWire_DS1820.T[s] = -999
                
        if self.init:
            self.init = False
            
        return HvcOneWire_DS1820.T, message

    #persistant values:
    T = {}
    init = True


if __name__ == "__main__":
    import   time, threading
    
    w1 = HvcOneWire_DS1820()
    sensNames = w1.look4sensors()
    print("Sensor identifiers found:")
    print(sensNames)
    
    # align sensor identifiers to your naming, put this to init()
    sensors = {}
    sensors["oven"] = "28-3c01b5568a59"
    print("Sensor association")
    print(w1.sensors)



    next_call = time.time()
    while True:
        #read temperatures
        T,msg = w1.read()
        print(msg)
    
        # show Temperaturs
        for  s in T:
            print(str(s) + ':\t {0:4.2f}'.format( T[s] )+" °C")
        print("---------")

        next_call = next_call+10;
        time.sleep(next_call - time.time())

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.