changed prev_temp from list to dict
parent
efe33c85b5
commit
52a9986c95
|
|
@ -1,3 +1,9 @@
|
||||||
|
config.json
|
||||||
|
ftpconfig.xml
|
||||||
|
arch/
|
||||||
|
locks/
|
||||||
|
logs/
|
||||||
|
records/
|
||||||
bin/
|
bin/
|
||||||
bin/*
|
bin/*
|
||||||
*~
|
*~
|
||||||
|
|
|
||||||
23
Logger.py
23
Logger.py
|
|
@ -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:
|
||||||
|
|
|
||||||
14
README.md
14
README.md
|
|
@ -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
|
||||||
|
|
|
||||||
9
Setup.py
9
Setup.py
|
|
@ -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
|
||||||
|
|
|
||||||
10
settings.py
10
settings.py
|
|
@ -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": {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue