gate: Improvement
Signed-off-by: Thomas Klaehn <thomas.klaehn@u-blox.com>
This commit is contained in:
parent
16931c50ba
commit
a5205cfbcb
@ -25,7 +25,7 @@ STATE_CLOSING = "closing"
|
|||||||
|
|
||||||
LIGHT_READ_DELAY_S = 30
|
LIGHT_READ_DELAY_S = 30
|
||||||
LIGHT_CONSECUTIVE_READS = 10
|
LIGHT_CONSECUTIVE_READS = 10
|
||||||
LIGHT_LX_THRESHOLD = {"open":1, "close":0}
|
LIGHT_LX_THRESHOLD = 0
|
||||||
|
|
||||||
MQTT_HOST = "mqtt.blackfinn.de"
|
MQTT_HOST = "mqtt.blackfinn.de"
|
||||||
MQTT_PORT = 8883
|
MQTT_PORT = 8883
|
||||||
@ -42,7 +42,7 @@ POWER_CONSECUTIVE_READS = 10
|
|||||||
|
|
||||||
SLOPE_COUNT = 10
|
SLOPE_COUNT = 10
|
||||||
SLOPE_CNT_MIN = 2
|
SLOPE_CNT_MIN = 2
|
||||||
MAX_POWER = 400.0
|
MAX_POWER = 500.0
|
||||||
|
|
||||||
class Gate(object):
|
class Gate(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -106,7 +106,7 @@ class Gate(object):
|
|||||||
except (ValueError, TypeError, socket.error, ssl.CertificateError):
|
except (ValueError, TypeError, socket.error, ssl.CertificateError):
|
||||||
logging.info('unable to publish to mqtt')
|
logging.info('unable to publish to mqtt')
|
||||||
pwr = self.__power_sensor.power_mw()
|
pwr = self.__power_sensor.power_mw()
|
||||||
logging.info('pwr: ' + str(pwr) + ' mW')
|
logging.debug('pwr: ' + str(pwr) + ' mW')
|
||||||
if pwr > MAX_POWER:
|
if pwr > MAX_POWER:
|
||||||
next_state = STATE_INIT_2
|
next_state = STATE_INIT_2
|
||||||
self.__update_state(next_state)
|
self.__update_state(next_state)
|
||||||
@ -117,7 +117,7 @@ class Gate(object):
|
|||||||
self.__engine.up()
|
self.__engine.up()
|
||||||
self.__down_run_time = time.time()
|
self.__down_run_time = time.time()
|
||||||
pwr = self.__power_sensor.power_mw()
|
pwr = self.__power_sensor.power_mw()
|
||||||
logging.info('pwr: ' + str(pwr) + ' mW')
|
logging.debug('pwr: ' + str(pwr) + ' mW')
|
||||||
|
|
||||||
if pwr > MAX_POWER:
|
if pwr > MAX_POWER:
|
||||||
self.__down_run_time = (time.time() - self.__down_run_time) / 2
|
self.__down_run_time = (time.time() - self.__down_run_time) / 2
|
||||||
@ -131,16 +131,17 @@ class Gate(object):
|
|||||||
|
|
||||||
def __check_to_open(self, light_avg):
|
def __check_to_open(self, light_avg):
|
||||||
ret = False
|
ret = False
|
||||||
if (light_avg != None) and (light_avg > LIGHT_LX_THRESHOLD["open"]):
|
|
||||||
ret = True
|
|
||||||
current_date = datetime.datetime.now()
|
current_date = datetime.datetime.now()
|
||||||
if (current_date.hour <= 12) and (current_date.hour >= 8):
|
try:
|
||||||
ret = True
|
if (current_date.hour >= 8) and (light_avg > LIGHT_LX_THRESHOLD):
|
||||||
|
ret = True
|
||||||
|
except Exception as e:
|
||||||
|
logging.error("{}".format(e))
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def __check_to_close(self, light_avg):
|
def __check_to_close(self, light_avg):
|
||||||
ret = False
|
ret = False
|
||||||
if (light_avg != None) and (light_avg <= LIGHT_LX_THRESHOLD["close"]):
|
if (light_avg != None) and (light_avg <= LIGHT_LX_THRESHOLD):
|
||||||
current_date = datetime.datetime.now()
|
current_date = datetime.datetime.now()
|
||||||
if (current_date.hour >= 16) and (current_date.minute >= 0):
|
if (current_date.hour >= 16) and (current_date.minute >= 0):
|
||||||
ret = True
|
ret = True
|
||||||
@ -167,8 +168,6 @@ class Gate(object):
|
|||||||
def __closed_handler(self, light_avg):
|
def __closed_handler(self, light_avg):
|
||||||
next_state = self.__next_state
|
next_state = self.__next_state
|
||||||
if self.__is_transition():
|
if self.__is_transition():
|
||||||
self.__engine.up()
|
|
||||||
time.sleep(0.5)
|
|
||||||
self.__engine.stop()
|
self.__engine.stop()
|
||||||
msg = str(time.time()) + " Closed"
|
msg = str(time.time()) + " Closed"
|
||||||
try:
|
try:
|
||||||
@ -200,15 +199,11 @@ class Gate(object):
|
|||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
pwr = self.__power_sensor.power_mw()
|
pwr = self.__power_sensor.power_mw()
|
||||||
logging.info('pwr - abs: ' + str(pwr) + ' mW\tavg: ' + str(self.__power_data.average()) + ' mW')
|
logging.debug('pwr - abs: ' + str(pwr) + ' mW\tavg: ' + str(self.__power_data.average()) + ' mW')
|
||||||
if pwr > MAX_POWER:
|
if pwr > MAX_POWER:
|
||||||
deviation = abs(time.time() - self.__gate_run_time - self.__down_run_time)
|
deviation = abs(time.time() - self.__gate_run_time - self.__down_run_time)
|
||||||
logging.info('runtime deviation: ' + str(deviation))
|
logging.info('runtime deviation: ' + str(deviation))
|
||||||
if deviation > (self.__down_run_time / 10):
|
next_state = STATE_OPENED
|
||||||
logging.info('Deviation too big. Re-initializing...')
|
|
||||||
next_state = STATE_INIT_1
|
|
||||||
else:
|
|
||||||
next_state = STATE_OPENED
|
|
||||||
self.__update_state(next_state)
|
self.__update_state(next_state)
|
||||||
|
|
||||||
def __closing_handler(self, light_avg):
|
def __closing_handler(self, light_avg):
|
||||||
@ -229,7 +224,7 @@ class Gate(object):
|
|||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
pwr = self.__power_sensor.power_mw()
|
pwr = self.__power_sensor.power_mw()
|
||||||
logging.info('pwr: ' + str(pwr) + ' mW')
|
logging.debug('pwr: ' + str(pwr) + ' mW')
|
||||||
opening_time = time.time() - self.__gate_run_time
|
opening_time = time.time() - self.__gate_run_time
|
||||||
if opening_time > self.__down_run_time:
|
if opening_time > self.__down_run_time:
|
||||||
logging.info("actual running time bigger than calculated (" + str(opening_time) + " vs. " + str(self.__down_run_time) + ").")
|
logging.info("actual running time bigger than calculated (" + str(opening_time) + " vs. " + str(self.__down_run_time) + ").")
|
||||||
|
Loading…
Reference in New Issue
Block a user