linkqaulity added for zigbee devices
This commit is contained in:
parent
a0327db258
commit
a9e9ac1974
@ -7,7 +7,7 @@ import time
|
|||||||
from z_server import config
|
from z_server import config
|
||||||
from z_server import tcp_socket
|
from z_server import tcp_socket
|
||||||
from z_server.z_protocol import server as client_prot
|
from z_server.z_protocol import server as client_prot
|
||||||
from z_server.z_protocol import DID_FOLLOWS_SETPOINT, DID_BATTERY_LEVEL, DID_HEARTBEAT
|
from z_server.z_protocol import DID_FOLLOWS_SETPOINT, DID_BATTERY_LEVEL, DID_HEARTBEAT, DID_LINKQUALITY
|
||||||
from z_server import socket_protocol
|
from z_server import socket_protocol
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@ -38,6 +38,9 @@ if __name__ == '__main__':
|
|||||||
elif sys.argv[0].endswith('check_z_battery'):
|
elif sys.argv[0].endswith('check_z_battery'):
|
||||||
sp.send(socket_protocol.SID_READ_REQUEST, DID_BATTERY_LEVEL, data)
|
sp.send(socket_protocol.SID_READ_REQUEST, DID_BATTERY_LEVEL, data)
|
||||||
sp_data = sp.receive(socket_protocol.SID_READ_RESPONSE, DID_BATTERY_LEVEL).get_data()
|
sp_data = sp.receive(socket_protocol.SID_READ_RESPONSE, DID_BATTERY_LEVEL).get_data()
|
||||||
|
elif sys.argv[0].endswith('check_z_linkquality'):
|
||||||
|
sp.send(socket_protocol.SID_READ_REQUEST, DID_LINKQUALITY, data)
|
||||||
|
sp_data = sp.receive(socket_protocol.SID_READ_RESPONSE, DID_LINKQUALITY).get_data()
|
||||||
elif sys.argv[0].endswith('check_z_follow'):
|
elif sys.argv[0].endswith('check_z_follow'):
|
||||||
sp.send(socket_protocol.SID_READ_REQUEST, DID_FOLLOWS_SETPOINT, data)
|
sp.send(socket_protocol.SID_READ_REQUEST, DID_FOLLOWS_SETPOINT, data)
|
||||||
sp_data = sp.receive(socket_protocol.SID_READ_RESPONSE, DID_FOLLOWS_SETPOINT).get_data()
|
sp_data = sp.receive(socket_protocol.SID_READ_RESPONSE, DID_FOLLOWS_SETPOINT).get_data()
|
||||||
|
1
check_z_linkquality
Symbolic link
1
check_z_linkquality
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
check_z_follow
|
@ -15,6 +15,7 @@ class base(object):
|
|||||||
MONITORING_HEARTBEAT = "heartbeat"
|
MONITORING_HEARTBEAT = "heartbeat"
|
||||||
MONITORING_BATTERY = "battery"
|
MONITORING_BATTERY = "battery"
|
||||||
MONITORING_FOLLOW_SETPOINT = "follow_setpoint"
|
MONITORING_FOLLOW_SETPOINT = "follow_setpoint"
|
||||||
|
MONITORING_LINKQUALITY = "linkquality"
|
||||||
#
|
#
|
||||||
FOLLOW_REQUEST_WARNING = 5 # Seconds, till warning comes up, if device does not follow the command
|
FOLLOW_REQUEST_WARNING = 5 # Seconds, till warning comes up, if device does not follow the command
|
||||||
FOLLOW_REQUEST_ERROR = 60 # Seconds, till error comes up, if device does not follow the command
|
FOLLOW_REQUEST_ERROR = 60 # Seconds, till error comes up, if device does not follow the command
|
||||||
@ -23,6 +24,9 @@ class base(object):
|
|||||||
BATTERY_LVL_WARNING = 15
|
BATTERY_LVL_WARNING = 15
|
||||||
BATTERY_LVL_ERROR = 5
|
BATTERY_LVL_ERROR = 5
|
||||||
#
|
#
|
||||||
|
LINKQUALITY_WARNING = 50
|
||||||
|
LINKQUALITY_ERROR = 25
|
||||||
|
#
|
||||||
LAST_MSG_WARNING = 6 * 60 * 60
|
LAST_MSG_WARNING = 6 * 60 * 60
|
||||||
LAST_MSG_ERROR = 24 * 60 * 60
|
LAST_MSG_ERROR = 24 * 60 * 60
|
||||||
|
|
||||||
@ -40,6 +44,7 @@ class base(object):
|
|||||||
self.__state_storage__ = {}
|
self.__state_storage__ = {}
|
||||||
#
|
#
|
||||||
self.battery = None
|
self.battery = None
|
||||||
|
self.linkquality = None
|
||||||
|
|
||||||
def __rx__(self, client, userdata, message):
|
def __rx__(self, client, userdata, message):
|
||||||
try:
|
try:
|
||||||
@ -66,6 +71,11 @@ class base(object):
|
|||||||
#
|
#
|
||||||
if self.MONITORING_BATTERY in payload and message.topic == self.topic:
|
if self.MONITORING_BATTERY in payload and message.topic == self.topic:
|
||||||
self.battery = payload[self.MONITORING_BATTERY]
|
self.battery = payload[self.MONITORING_BATTERY]
|
||||||
|
#
|
||||||
|
# linkquality
|
||||||
|
#
|
||||||
|
if self.MONITORING_LINKQUALITY in payload and message.topic == self.topic:
|
||||||
|
self.linkquality = payload[self.MONITORING_LINKQUALITY]
|
||||||
|
|
||||||
def target(self, key, value):
|
def target(self, key, value):
|
||||||
tm_t, value_t = self.__target_storage__.get(key, (0, None))
|
tm_t, value_t = self.__target_storage__.get(key, (0, None))
|
||||||
@ -126,6 +136,18 @@ class base(object):
|
|||||||
return self.__nagios_return__(self.MONITORING_BATTERY, nagios.Nagios.WARNING, "Battery level low (%.1f%%)" % self.battery)
|
return self.__nagios_return__(self.MONITORING_BATTERY, nagios.Nagios.WARNING, "Battery level low (%.1f%%)" % self.battery)
|
||||||
else:
|
else:
|
||||||
return self.__nagios_return__(self.MONITORING_BATTERY, nagios.Nagios.OK, "Battery okay (%.1f%%)" % self.battery)
|
return self.__nagios_return__(self.MONITORING_BATTERY, nagios.Nagios.OK, "Battery okay (%.1f%%)" % self.battery)
|
||||||
|
#
|
||||||
|
# LINKQUALITY
|
||||||
|
#
|
||||||
|
elif key == self.MONITORING_LINKQUALITY:
|
||||||
|
if self.linkquality is None:
|
||||||
|
return self.__nagios_return__(self.MONITORING_LINKQUALITY, nagios.Nagios.UNKNOWN, "Device exists, but no data received or unknown monitoring")
|
||||||
|
elif self.linkquality <= self.LINKQUALITY_ERROR:
|
||||||
|
return self.__nagios_return__(self.MONITORING_LINKQUALITY, nagios.Nagios.ERROR, "Linkquality critical low (%d)" % self.linkquality)
|
||||||
|
elif self.linkquality <= self.LINKQUALITY_WARNING:
|
||||||
|
return self.__nagios_return__(self.MONITORING_LINKQUALITY, nagios.Nagios.WARNING, "Linkquality level low (%d)" % self.linkquality)
|
||||||
|
else:
|
||||||
|
return self.__nagios_return__(self.MONITORING_LINKQUALITY, nagios.Nagios.OK, "Linkquality okay (%d)" % self.linkquality)
|
||||||
|
|
||||||
def __nagios_return__(self, monitoring_name, status, msg, force=False):
|
def __nagios_return__(self, monitoring_name, status, msg, force=False):
|
||||||
tm = time.time()
|
tm = time.time()
|
||||||
|
@ -5,6 +5,7 @@ import socket_protocol
|
|||||||
DID_FOLLOWS_SETPOINT = 'follow_setpoint'
|
DID_FOLLOWS_SETPOINT = 'follow_setpoint'
|
||||||
DID_BATTERY_LEVEL = 'battery'
|
DID_BATTERY_LEVEL = 'battery'
|
||||||
DID_HEARTBEAT = 'heartbeat'
|
DID_HEARTBEAT = 'heartbeat'
|
||||||
|
DID_LINKQUALITY = 'linkquality'
|
||||||
|
|
||||||
|
|
||||||
class server(socket_protocol.pure_json_protocol):
|
class server(socket_protocol.pure_json_protocol):
|
||||||
@ -16,6 +17,7 @@ class server(socket_protocol.pure_json_protocol):
|
|||||||
if not self.__comm_inst__.IS_CLIENT:
|
if not self.__comm_inst__.IS_CLIENT:
|
||||||
self.register_callback(socket_protocol.SID_READ_REQUEST, DID_FOLLOWS_SETPOINT, self.device_status)
|
self.register_callback(socket_protocol.SID_READ_REQUEST, DID_FOLLOWS_SETPOINT, self.device_status)
|
||||||
self.register_callback(socket_protocol.SID_READ_REQUEST, DID_BATTERY_LEVEL, self.device_status)
|
self.register_callback(socket_protocol.SID_READ_REQUEST, DID_BATTERY_LEVEL, self.device_status)
|
||||||
|
self.register_callback(socket_protocol.SID_READ_REQUEST, DID_LINKQUALITY, self.device_status)
|
||||||
self.register_callback(socket_protocol.SID_READ_REQUEST, DID_HEARTBEAT, self.device_status)
|
self.register_callback(socket_protocol.SID_READ_REQUEST, DID_HEARTBEAT, self.device_status)
|
||||||
|
|
||||||
def device_status(self, msg):
|
def device_status(self, msg):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user