diff --git a/.gitignore b/.gitignore index 097e0cf..170bede 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +config.json +ftpconfig.xml +arch/ +locks/ +logs/ +records/ bin/ bin/* *~ diff --git a/Logger.py b/Logger.py index 08af988..2e6690a 100644 --- a/Logger.py +++ b/Logger.py @@ -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: diff --git a/README.md b/README.md index d247b03..82a3399 100644 --- a/README.md +++ b/README.md @@ -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 \ No newline at end of file +* TODOS ausdenken diff --git a/Setup.py b/Setup.py index 3b439f8..65f2fd9 100644 --- a/Setup.py +++ b/Setup.py @@ -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 diff --git a/settings.py b/settings.py index 04f788d..dbdf46c 100644 --- a/settings.py +++ b/settings.py @@ -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": {