introduced service class

This commit is contained in:
Marcel Otte 2017-10-15 22:45:17 +02:00
parent 70e2b0dc72
commit 6ae519f78e
3 changed files with 91 additions and 1 deletions

View File

@ -1,12 +1,14 @@
{ {
"sensors": { "sensors": {
"0":{ "0":{
"name": "inside",
"BCM": 20, "BCM": 20,
"GPIO": 20, "GPIO": 20,
"header-pin": 38, "header-pin": 38,
"pre-resistance": 9770.0 "pre-resistance": 9770.0
}, },
"1":{ "1":{
"name": "outside",
"BCM": 26, "BCM": 26,
"GPIO": 26, "GPIO": 26,
"header-pin": 37, "header-pin": 37,
@ -82,5 +84,43 @@
}, },
"pwm-defaults":{ "pwm-defaults":{
"frequency": 25000 "frequency": 25000
},
"activated-channels": [ 0, 1],
"interval": 1.0,
"use_difference": false,
"thresholds-for": "inside",
"thresholds": {
"off":{
"temp": 25,
"diff": 5,
"fan-up": false,
"fan-low": false,
"pwm-up": 0.0,
"pwm-low": 0.0
},
"33%": {
"temp": 35,
"diff": 15,
"fan-up": false,
"fan-low": true,
"pwm-up": 33.0,
"pwm-low": 33.0
},
"66%": {
"temp": 45,
"diff": 25,
"fan-up": true,
"fan-low": true,
"pwm-up": 100.0,
"pwm-low": 66.0
},
"100%": {
"temp": 100,
"diff": 50,
"fan-up": true,
"fan-low": true,
"pwm-up": 100.0,
"pwm-low": 100.0
}
} }
} }

49
src/service.py Normal file
View File

@ -0,0 +1,49 @@
from config import Config
import time
from threading import Thread
from temperature import Temperature
import graphitesend
from lowlevel import LowLevel
class Service(object):
def __init__(self):
self.__cfg = Config()
pass
def run(self):
interval = self.__cfg.get_data()["interval"]
t = time.time()
while True:
t = time.time()
time.sleep(t + interval - time.time())
thread = Thread(self.work)
thread.start()
pass
def work(self):
# get sensor data
channels = self.__cfg.get_data()["activated-channels"]
results = []
for c in channels:
results.append(Temperature(c).read())
# check thresholds
thresholds = self.__cfg.get_data()["thresholds"]
sensors = self.__cfg.get_sensors_dict()
channel = -1
for k in sensors:
if sensors[k]["name"] == self.__cfg.get_data()["thresholds-for"]:
channel = int(k)
if k < 0:
raise RuntimeError("fuck.")
for threshold in thresholds:
if results[channel] < threshold["temp"]:
LowLevel().lower_fan(threshold["fan-low"])
LowLevel().lower_fan_pwm(threshold["pwm-low"])
LowLevel().upper_fan(threshold["fan-up"])
LowLevel().upper_fan_pwm(threshold["pwm-up"])
break
pass

View File

@ -4,7 +4,8 @@ from decimal import *
from lowlevel import LowLevel from lowlevel import LowLevel
from config import Config from config import Config
class Temperature:
class Temperature(object):
def __init__(self, channel): def __init__(self, channel):
self.__channel = channel self.__channel = channel
self.__cfg = Config() self.__cfg = Config()