From 1e20420ce5196579b4588081512b5cc584934487 Mon Sep 17 00:00:00 2001 From: Dima Gerasimov Date: Tue, 12 Feb 2019 21:53:05 +0000 Subject: [PATCH] initial impl --- bluemaestro/__init__.py | 68 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100755 bluemaestro/__init__.py diff --git a/bluemaestro/__init__.py b/bluemaestro/__init__.py new file mode 100755 index 0000000..cc3a88e --- /dev/null +++ b/bluemaestro/__init__.py @@ -0,0 +1,68 @@ +#!/usr/bin/python3 +import sqlite3 +# ugh, dataset stumpled over date format + +from datetime import datetime +import logging +from kython import setup_logzero +from pathlib import Path +DIR = Path("/L/zzz_syncthing_backups/bluemaestro/") + +def get_logger(): + return logging.getLogger('bluemaestro') + + +def get_data(): + logger = get_logger() + merged = {} + # TODO could get pretty big ? + + for f in sorted(DIR.glob('*.db')): + def reg(dt: datetime, value): + v = merged.get(dt, None) + if v is None: + merged[dt] = value + return + if value == v or (isinstance(v, set) and value in v): + return + if isinstance(v, set): + v.add(value) + else: + merged[dt] = {v, value} + # err = f'{f}: mismatch: {v} vs {value}' + # if abs(v - value) > 0.4: + # logger.warning(err) + # # TODO mm. dunno how to mark errors properly.. + # # raise AssertionError(err) + # else: + # pass + + db = sqlite3.connect(str(f)) + + datas = list(db.execute('select * from data')) + + for _, tss, temp, hum, pres, dew in datas: + # TODO is that utc??? + tss = tss.replace('Juli', 'Jul').replace('Aug.', 'Aug') + + + dt = datetime.strptime(tss, '%Y-%b-%d %H:%M') + reg(dt, temp) + + db.close() + + logger.info('total items: %d', len(merged)) + # TODO assert frequency? + for k, v in merged.items(): + # TODO shit. quite a few of them have varying values... how is that freaking possible???? + # most of them are withing 0.5 degree though... so just ignore? + if isinstance(v, set) and len(v) > 1: + print(k, v) + +def main(): + setup_logzero(get_logger(), level=logging.DEBUG) + get_data() + + +if __name__ == '__main__': + main()