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/*
*~

View File

@ -13,18 +13,26 @@ from settings import settings
class Logger(object):
def __init__(self, log):
self.temp_sensors = settings.tempSensors
self.temp_prev_default = settings.prev_temps_default
self.prev_temps = []
for i in range(self.temp_sensors):
self.prev_temps.append(self.temp_prev_default)
self.prev_temps = self.__build_prev_temps__()
self.temp_max_diff = settings.tempmaxdiff
self.log = log
self.records = settings.records
self.dataecho = setup_data_echo()
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):
return True
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):
if type == SensorType.temp:
i = int(sensor[-1])-1 #sensor contains name, followed by int
if self.temp_rise(self.prev_temps[i], value, sensor):
if self.temp_rise(value, sensor):
self.write_value(value, sensor)
self.prev_temps[i] = value
self.prev_temps[sensor] = value
elif (type == SensorType.none):
return
else:

View File

@ -32,13 +32,17 @@ Python (2/3), Bash, Tinkerforge
* *dataecho*: Loglevel für Wiedergabe der Aufzeichnungen (warn, error,critical verhindern Wiedergabe)
2. Tinkerforge-python-bindings installieren
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
5. Cronjob für Upload mit ftp.sh einrichten
6. Cronjob für Upload mit `ftp.sh` einrichten
# TODOS
* TODOS ausdenken
* TODOS ausdenken

View File

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

View File

@ -60,7 +60,7 @@ class Settings(dict):
def __delattr__(self,name):
del self[name]
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"
if sensors_name in values:
for host in values[sensors_name]:
@ -111,14 +111,6 @@ def setup_data_echo():
return log
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: {
"host": {