rules: add rule condition to test whether a device is active

This commit is contained in:
Peter F. Patel-Schneider 2022-08-22 15:14:45 -04:00
parent f6764fcc87
commit 9f8882acd8
1 changed files with 22 additions and 1 deletions

View File

@ -579,6 +579,7 @@ class Report(Condition):
if warn:
_log.warn('rule Report argument not an integer: %s', report)
self.report = -1
else:
self.report = report
def __str__(self):
@ -832,6 +833,25 @@ class MouseGesture(Condition):
return {'MouseGesture': [str(m) for m in self.movements]}
class Active(Condition):
def __init__(self, devID, warn=True):
if not (isinstance(devID, str)):
if warn:
_log.warn('rule Active argument not a string: %s', devID)
self.devID = ''
self.devID = devID
def __str__(self):
return 'Active: ' + str(self.devID)
def evaluate(self, feature, notification, device, status, last_result):
dev = _Device.find(self.devID)
return bool(dev and dev.ping())
def data(self):
return {'Active': self.devID}
class Action(RuleComponent):
def __init__(self, *args):
pass
@ -1089,6 +1109,7 @@ COMPONENTS = {
'Test': Test,
'TestBytes': TestBytes,
'MouseGesture': MouseGesture,
'Active': Active,
'KeyPress': KeyPress,
'MouseScroll': MouseScroll,
'MouseClick': MouseClick,