changed prev_temp from list to dict

master
agp8x 2015-08-30 16:04:24 +02:00
parent efe33c85b5
commit 52a9986c95
5 changed files with 37 additions and 25 deletions

6
.gitignore vendored
View File

@ -1,3 +1,9 @@
config.json
ftpconfig.xml
arch/
locks/
logs/
records/
bin/ bin/
bin/* bin/*
*~ *~

View File

@ -13,18 +13,26 @@ from settings import settings
class Logger(object): class Logger(object):
def __init__(self, log): def __init__(self, log):
self.temp_sensors = settings.tempSensors
self.temp_prev_default = settings.prev_temps_default self.temp_prev_default = settings.prev_temps_default
self.prev_temps = [] self.prev_temps = self.__build_prev_temps__()
for i in range(self.temp_sensors):
self.prev_temps.append(self.temp_prev_default)
self.temp_max_diff = settings.tempmaxdiff self.temp_max_diff = settings.tempmaxdiff
self.log = log self.log = log
self.records = settings.records self.records = settings.records
self.dataecho = setup_data_echo() self.dataecho = setup_data_echo()
self.datalog = setup_data_log() self.datalog = setup_data_log()
def temp_rise(self, old, new,sensor): def __build_prev_temps__(self):
prev_temps={}
hosts_name = "hosts"
if hosts_name in settings:
for i in settings[hosts_name]:
for j in settings[hosts_name][i]['sensors']:
if settings[hosts_name][i]['sensors'][j][1] == SensorType.temp:
prev_temps[j]=self.temp_prev_default
return prev_temps
def temp_rise(self, new, sensor):
old = self.prev_temps[sensor]
if(old == self.temp_prev_default): if(old == self.temp_prev_default):
return True return True
if(((old-new) > self.temp_max_diff) or ((new-old) > self.temp_max_diff)): if(((old-new) > self.temp_max_diff) or ((new-old) > self.temp_max_diff)):
@ -49,10 +57,9 @@ class Logger(object):
########################################## ##########################################
def cb_generic(self,value, sensor, type, supress = False): def cb_generic(self,value, sensor, type, supress = False):
if type == SensorType.temp: if type == SensorType.temp:
i = int(sensor[-1])-1 #sensor contains name, followed by int if self.temp_rise(value, sensor):
if self.temp_rise(self.prev_temps[i], value, sensor):
self.write_value(value, sensor) self.write_value(value, sensor)
self.prev_temps[i] = value self.prev_temps[sensor] = value
elif (type == SensorType.none): elif (type == SensorType.none):
return return
else: else:

View File

@ -32,13 +32,17 @@ Python (2/3), Bash, Tinkerforge
* *dataecho*: Loglevel für Wiedergabe der Aufzeichnungen (warn, error,critical verhindern Wiedergabe) * *dataecho*: Loglevel für Wiedergabe der Aufzeichnungen (warn, error,critical verhindern Wiedergabe)
2. Tinkerforge-python-bindings installieren 2. Tinkerforge-python-bindings installieren
3. `main.py` starten, um Aufzeichnung zu starten 3. `main.py` starten, um Aufzeichnung zu starten
* Aufzeichnung des aktuellen Tages werden in `records` gespeichert * Aufzeichnung des aktuellen Tages werden in *records* gespeichert
Optional: Upload der Aufzeichnungen mit SFTP an einem Server: Optional: Verschieben der Aufzeichnungen in ein Archiv:
4. Pfade, Urls und Benutzer in `ftpconfig.xml` anpassen (Vorlage: `ftpconfig.sample.xml`) 4. `move.py` z.B. als Cronjob starten
Optional: Upload der Aufzeichnungen mit SFTP an einem Server (beinhaltet Archivierung mit `move.py`):
5. Pfade, Urls und Benutzer in `ftpconfig.xml` anpassen (Vorlage: `ftpconfig.sample.xml`)
* (ftp.sh bzw move.py) Nach dem Upload und dem Tagesende werden die Aufzeichnungen nach `arch` verschoben * (ftp.sh bzw move.py) Nach dem Upload und dem Tagesende werden die Aufzeichnungen nach `arch` verschoben
5. Cronjob für Upload mit ftp.sh einrichten 6. Cronjob für Upload mit `ftp.sh` einrichten
# TODOS # TODOS
* TODOS ausdenken * TODOS ausdenken

View File

@ -1,6 +1,9 @@
#!/usr/bin/python3 #!/usr/bin/python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from functools import partial
import traceback
try: try:
from tinkerforge.ip_connection import IPConnection from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_temperature import Temperature from tinkerforge.bricklet_temperature import Temperature
@ -10,9 +13,8 @@ try:
from tinkerforge.bricklet_temperature_ir import BrickletTemperatureIR from tinkerforge.bricklet_temperature_ir import BrickletTemperatureIR
except ImportError: except ImportError:
print("package 'tinkerforge' not installed, canceling") print("package 'tinkerforge' not installed, canceling")
raise raise Exception("package 'tinkerforge' not installed, canceling")
from functools import partial
import traceback
from settings import SensorType from settings import SensorType
from settings import settings from settings import settings
@ -40,6 +42,7 @@ class ConnectionSetup(object):
connection.disconnect() connection.disconnect()
class SensorSetup(object): class SensorSetup(object):
#TODO: port "getTYPE" to dict
def __init__(self, connection, sensors, cb_generic, log): def __init__(self, connection, sensors, cb_generic, log):
self.connection = connection self.connection = connection

View File

@ -60,7 +60,7 @@ class Settings(dict):
def __delattr__(self,name): def __delattr__(self,name):
del self[name] del self[name]
def load_json(filename="config.json"): def load_json(filename="config.json"):
values=json.load(open('set.json'), object_hook=Settings) values=json.load(open(filename), object_hook=Settings)
sensors_name="hosts" sensors_name="hosts"
if sensors_name in values: if sensors_name in values:
for host in values[sensors_name]: for host in values[sensors_name]:
@ -111,14 +111,6 @@ def setup_data_echo():
return log return log
settings=load_json() settings=load_json()
hosts_name = "hosts"
if hosts_name in settings:
tempSensors=0
for i in settings[hosts_name]:
for j in settings[hosts_name][i]['sensors']:
if settings[hosts_name][i]['sensors'][j][1] == SensorType.temp:
tempSensors+=1
settings.tempSensors=tempSensors
""" """
0: { 0: {
"host": { "host": {