warning mechanisms removed
This commit is contained in:
parent
da402db1ef
commit
d93c9548c8
@ -6,8 +6,6 @@ from base import videv_base
|
|||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
|
|
||||||
BATTERY_WARN_LEVEL = 10
|
|
||||||
|
|
||||||
|
|
||||||
def is_json(data):
|
def is_json(data):
|
||||||
try:
|
try:
|
||||||
@ -29,11 +27,9 @@ class base(mqtt_base):
|
|||||||
RX_IGNORE_TOPICS = []
|
RX_IGNORE_TOPICS = []
|
||||||
RX_IGNORE_KEYS = []
|
RX_IGNORE_KEYS = []
|
||||||
RX_FILTER_DATA_KEYS = []
|
RX_FILTER_DATA_KEYS = []
|
||||||
#
|
|
||||||
KEY_WARNING = '__WARNING__'
|
|
||||||
|
|
||||||
def __init__(self, mqtt_client, topic):
|
def __init__(self, mqtt_client, topic):
|
||||||
super().__init__(mqtt_client, topic, default_values=dict.fromkeys(self.RX_KEYS + [self.KEY_WARNING]))
|
super().__init__(mqtt_client, topic, default_values=dict.fromkeys(self.RX_KEYS))
|
||||||
# data storage
|
# data storage
|
||||||
# initialisations
|
# initialisations
|
||||||
mqtt_client.add_callback(topic=self.topic, callback=self.receive_callback)
|
mqtt_client.add_callback(topic=self.topic, callback=self.receive_callback)
|
||||||
@ -44,7 +40,7 @@ class base(mqtt_base):
|
|||||||
def set(self, key, data, block_callback=[]):
|
def set(self, key, data, block_callback=[]):
|
||||||
if key in self.RX_IGNORE_KEYS:
|
if key in self.RX_IGNORE_KEYS:
|
||||||
pass # ignore these keys
|
pass # ignore these keys
|
||||||
elif key in self.RX_KEYS or key == self.KEY_WARNING:
|
elif key in self.RX_KEYS:
|
||||||
return super().set(key, data, block_callback)
|
return super().set(key, data, block_callback)
|
||||||
else:
|
else:
|
||||||
self.logger.warning("Unexpected key %s", key)
|
self.logger.warning("Unexpected key %s", key)
|
||||||
@ -105,24 +101,3 @@ class base(mqtt_base):
|
|||||||
self.mqtt_client.send('/'.join([self.topic, key, self.TX_TOPIC] if len(self.TX_TOPIC) > 0 else [self.topic, key]), data)
|
self.mqtt_client.send('/'.join([self.topic, key, self.TX_TOPIC] if len(self.TX_TOPIC) > 0 else [self.topic, key]), data)
|
||||||
else:
|
else:
|
||||||
self.logger.error("Unknown tx toptic. Set TX_TOPIC of class to a known value")
|
self.logger.error("Unknown tx toptic. Set TX_TOPIC of class to a known value")
|
||||||
|
|
||||||
|
|
||||||
class warning(dict):
|
|
||||||
TYPE_BATTERY_LOW = 1
|
|
||||||
TYPE_OVERTEMPERATURE = 2
|
|
||||||
#
|
|
||||||
KEY_ID = 'id'
|
|
||||||
KEY_TYPE = 'type'
|
|
||||||
KEY_TEXT = 'text'
|
|
||||||
KEY_TM = 'tm'
|
|
||||||
|
|
||||||
def __init__(self, identification, type, text, args):
|
|
||||||
super().__init__({
|
|
||||||
self.KEY_ID: identification,
|
|
||||||
self.KEY_TYPE: type,
|
|
||||||
self.KEY_TEXT: text % args,
|
|
||||||
self.KEY_TM: time.localtime(),
|
|
||||||
})
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return time.asctime(self.get(self.KEY_TM)) + ": " + self[self.KEY_TEXT] + " - " + self[self.KEY_ID]
|
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
from devices.base import base
|
from devices.base import base
|
||||||
from devices.base import BATTERY_WARN_LEVEL
|
|
||||||
from devices.base import warning
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
|
||||||
@ -53,27 +51,11 @@ class brennenstuhl_heatingvalve(base):
|
|||||||
super().__init__(mqtt_client, topic)
|
super().__init__(mqtt_client, topic)
|
||||||
self.mqtt_client.send(self.topic + '/' + self.TX_TOPIC, json.dumps({self.KEY_WINDOW_DETECTION: "ON",
|
self.mqtt_client.send(self.topic + '/' + self.TX_TOPIC, json.dumps({self.KEY_WINDOW_DETECTION: "ON",
|
||||||
self.KEY_CHILD_LOCK: "UNLOCK", self.KEY_VALVE_DETECTION: "ON", self.KEY_SYSTEM_MODE: "heat", self.KEY_PRESET: "manual"}))
|
self.KEY_CHILD_LOCK: "UNLOCK", self.KEY_VALVE_DETECTION: "ON", self.KEY_SYSTEM_MODE: "heat", self.KEY_PRESET: "manual"}))
|
||||||
#
|
|
||||||
self.add_callback(self.KEY_BATTERY, None, self.__warning__, True)
|
|
||||||
self.__battery_warning__ = False
|
|
||||||
|
|
||||||
def __state_logging__(self, inst, key, data):
|
def __state_logging__(self, inst, key, data):
|
||||||
if key in [self.KEY_HEATING_SETPOINT, self.KEY_CHILD_LOCK, self.KEY_WINDOW_DETECTION, self.KEY_VALVE_DETECTION]:
|
if key in [self.KEY_HEATING_SETPOINT, self.KEY_CHILD_LOCK, self.KEY_WINDOW_DETECTION, self.KEY_VALVE_DETECTION]:
|
||||||
self.logger.info("State change of '%s' to '%s'", key, repr(data))
|
self.logger.info("State change of '%s' to '%s'", key, repr(data))
|
||||||
|
|
||||||
#
|
|
||||||
# WARNING CALL
|
|
||||||
#
|
|
||||||
def __warning__(self, client, key, data):
|
|
||||||
if data <= BATTERY_WARN_LEVEL:
|
|
||||||
if not self.__battery_warning__:
|
|
||||||
self.__battery_warning__ = True
|
|
||||||
w = warning(self.topic, warning.TYPE_BATTERY_LOW, "Battery low (%.1f%%)", data)
|
|
||||||
self.logger.warning(w)
|
|
||||||
self.set(self.KEY_WARNING, w)
|
|
||||||
else:
|
|
||||||
self.__battery_warning__ = False
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# RX
|
# RX
|
||||||
#
|
#
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
from devices.base import base
|
from devices.base import base
|
||||||
from devices.base import warning
|
|
||||||
import logging
|
import logging
|
||||||
import task
|
import task
|
||||||
|
|
||||||
@ -69,8 +68,6 @@ class shelly(base):
|
|||||||
self.delayed_flash_task = task.delayed(0.3, self.flash_task)
|
self.delayed_flash_task = task.delayed(0.3, self.flash_task)
|
||||||
self.delayed_off_task = task.delayed(0.3, self.off_task)
|
self.delayed_off_task = task.delayed(0.3, self.off_task)
|
||||||
#
|
#
|
||||||
self.add_callback(self.KEY_OVERTEMPERATURE, True, self.__warning__, True)
|
|
||||||
#
|
|
||||||
self.all_off_requested = False
|
self.all_off_requested = False
|
||||||
|
|
||||||
def __state_logging__(self, inst, key, data):
|
def __state_logging__(self, inst, key, data):
|
||||||
@ -93,14 +90,6 @@ class shelly(base):
|
|||||||
def flash_active(self):
|
def flash_active(self):
|
||||||
return self.output_key_delayed is not None
|
return self.output_key_delayed is not None
|
||||||
|
|
||||||
#
|
|
||||||
# WARNING CALL
|
|
||||||
#
|
|
||||||
def __warning__(self, client, key, data):
|
|
||||||
w = warning(self.topic, warning.TYPE_OVERTEMPERATURE, "Temperature to high (%.1f°C)", self.get(self.KEY_TEMPERATURE) or math.nan)
|
|
||||||
self.logger.warning(w)
|
|
||||||
self.set(self.KEY_WARNING, w)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# RX
|
# RX
|
||||||
#
|
#
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
from devices.base import base
|
from devices.base import base
|
||||||
from devices.base import warning
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
@ -89,21 +88,11 @@ class silvercrest_motion_sensor(base):
|
|||||||
|
|
||||||
def __init__(self, mqtt_client, topic):
|
def __init__(self, mqtt_client, topic):
|
||||||
super().__init__(mqtt_client, topic)
|
super().__init__(mqtt_client, topic)
|
||||||
#
|
|
||||||
self.add_callback(self.KEY_BATTERY_LOW, True, self.__warning__, True)
|
|
||||||
|
|
||||||
def __state_logging__(self, inst, key, data):
|
def __state_logging__(self, inst, key, data):
|
||||||
if key in [self.KEY_OCCUPANCY, self.KEY_UNMOUNTED]:
|
if key in [self.KEY_OCCUPANCY, self.KEY_UNMOUNTED]:
|
||||||
self.logger.info("State change of '%s' to '%s'", key, repr(data))
|
self.logger.info("State change of '%s' to '%s'", key, repr(data))
|
||||||
|
|
||||||
#
|
|
||||||
# WARNING CALL
|
|
||||||
#
|
|
||||||
def __warning__(self, client, key, data):
|
|
||||||
w = warning(self.topic, warning.TYPE_BATTERY_LOW, "Battery low (%.1f%%)", self.get(self.KEY_BATTERY) or math.nan)
|
|
||||||
self.logger.warning(w)
|
|
||||||
self.set(self.KEY_WARNING, w)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# RX
|
# RX
|
||||||
#
|
#
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
from devices.base import base
|
from devices.base import base
|
||||||
from devices.base import BATTERY_WARN_LEVEL
|
|
||||||
from devices.base import warning
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
@ -180,26 +178,11 @@ class tradfri_button(base):
|
|||||||
|
|
||||||
def __init__(self, mqtt_client, topic):
|
def __init__(self, mqtt_client, topic):
|
||||||
super().__init__(mqtt_client, topic)
|
super().__init__(mqtt_client, topic)
|
||||||
#
|
|
||||||
self.add_callback(self.KEY_BATTERY, None, self.__warning__, True)
|
|
||||||
self.__battery_warning__ = False
|
|
||||||
|
|
||||||
def __state_logging__(self, inst, key, data):
|
def __state_logging__(self, inst, key, data):
|
||||||
if key in [self.KEY_ACTION]:
|
if key in [self.KEY_ACTION]:
|
||||||
self.logger.info("Input '%s' with '%s'", key, repr(data))
|
self.logger.info("Input '%s' with '%s'", key, repr(data))
|
||||||
|
|
||||||
#
|
|
||||||
# WARNING CALL
|
|
||||||
#
|
|
||||||
def __warning__(self, client, key, data):
|
|
||||||
if data <= BATTERY_WARN_LEVEL:
|
|
||||||
if not self.__battery_warning__:
|
|
||||||
w = warning(self.topic, warning.TYPE_BATTERY_LOW, "Battery low (%.1f%%)", data)
|
|
||||||
self.logger.warning(w)
|
|
||||||
self.set(self.KEY_WARNING, w)
|
|
||||||
else:
|
|
||||||
self.__battery_warning__ = False
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# RX
|
# RX
|
||||||
#
|
#
|
||||||
|
Loading…
x
Reference in New Issue
Block a user