From 2649fb579bf7d494bdb6d3a8f924279b3befa7f0 Mon Sep 17 00:00:00 2001 From: Joerg Lehmann Date: Thu, 16 Nov 2017 16:13:48 +0100 Subject: [PATCH] Dummy Waage - initial value from last one --- bin/beielimon-config.yaml | 2 +- bin/beielimon.py | 31 ++++++++++++++++++- install-files/etc/network/interfaces.d/wlan0 | 1 + .../etc/systemd/system/beielimon.service | 1 - .../etc/systemd/system/fakedns.service | 2 ++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/bin/beielimon-config.yaml b/bin/beielimon-config.yaml index 247dd64..f0da00b 100644 --- a/bin/beielimon-config.yaml +++ b/bin/beielimon-config.yaml @@ -10,7 +10,7 @@ scales: scale_uuid: "46335715-8454-483b-a17b-571619c5015e" interface_type: dummy sms_alert_phonenumbers: - - "+41765006124" + - "+41765006123" read_scale_interval_sec: 300 number_of_samples: 5 swarm_alarm_threshold_gram: 500 diff --git a/bin/beielimon.py b/bin/beielimon.py index a45941c..7c3497d 100755 --- a/bin/beielimon.py +++ b/bin/beielimon.py @@ -17,6 +17,8 @@ import time import yaml import random import string +import glob +import re # Root Path APP_ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) @@ -31,6 +33,27 @@ with open("%s/bin/beielimon-config.yaml" % (APP_ROOT), 'r') as stream: # Constants INVALID_VALUE = -999 +# Wegen der Dummy-Waage moechten wir den letzten Messwert holen koennen +def GetLastStoredValue(scale_uuid): + files = glob.glob("%s/data/weight-%s-????????.log" % (APP_ROOT,scale_uuid)) + if len(files) > 0: + with open(sorted(files)[-1], "r") as f: + for line in f: pass + result = line + + + # Beispiel: 2017-11-07 08:23,0 + m = re.match("(\d{4})-(\d{2})-(\d{2}) (\d\d:\d\d),(\d+)", result) + if m: + return int("%s" % (m.group(5))) + else: + return INVALID_VALUE + + else: + return INVALID_VALUE + + + class Scale(object): def __init__(self, scale_config): self.last_values = [] @@ -110,7 +133,13 @@ class ScaleUSB_PCE(Scale): class ScaleDummy(Scale): def __init__(self,scale_config): Scale.__init__(self, scale_config) - self.last_values = [ random.randint(500,1000) ] + # Wir versuchen, den letzten Wert wieder zu holen + last_value = GetLastStoredValue(self.scale_config['scale_uuid']) + if last_value != INVALID_VALUE: + self.last_values = [ last_value ] + else: + self.last_values = [ random.randint(500,1000) ] + def Read(self): # Gewichts- Zu/Abnahme ist Random, manchmal gibt es einen diff --git a/install-files/etc/network/interfaces.d/wlan0 b/install-files/etc/network/interfaces.d/wlan0 index b871bd2..972190b 100644 --- a/install-files/etc/network/interfaces.d/wlan0 +++ b/install-files/etc/network/interfaces.d/wlan0 @@ -1,3 +1,4 @@ iface wlan0 inet static address 192.168.255.1 netmask 255.255.255.0 + wireless-power off diff --git a/install-files/etc/systemd/system/beielimon.service b/install-files/etc/systemd/system/beielimon.service index 625d7c2..58207d7 100644 --- a/install-files/etc/systemd/system/beielimon.service +++ b/install-files/etc/systemd/system/beielimon.service @@ -8,7 +8,6 @@ Type=simple User=beieli Group=beieli WorkingDirectory=/home/beieli/bin -ExecStartPre=/bin/sleep 60 ExecStart=/home/beieli/bin/beielimon.py Restart=always diff --git a/install-files/etc/systemd/system/fakedns.service b/install-files/etc/systemd/system/fakedns.service index c953de0..83b7841 100644 --- a/install-files/etc/systemd/system/fakedns.service +++ b/install-files/etc/systemd/system/fakedns.service @@ -10,6 +10,8 @@ ExecStart=/usr/bin/python /home/beieli/root-bin/fakedns.py ExecStop=/usr/bin/pkill -f '/usr/bin/python /home/beieli/root-bin/fakedns.py' WorkingDirectory=/home/beieli/root-bin Restart=always +StandardOutput=/var/log/fakedns +StandardError=/var/log/fakedns User=root Group=root