Created
April 1, 2015 19:45
-
-
Save smerschjohann/6cbc81dcf1d24eb944cd to your computer and use it in GitHub Desktop.
Example rule using generated triggers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class JalousienStateRule(Rule): | |
def __init__(self): | |
alle= ItemRegistry.getItem("JalousienState") | |
self.__eventTrigger = [StartupTrigger(), TimerTrigger("0 0/2 * * * ?")] | |
for jal in alle.getMembers(): | |
self.__eventTrigger.append(ChangedEventTrigger(jal.getName(), None, None)) | |
self.logger = oh.getLogger("JalousienState") | |
def updateState(self, item): | |
if not item: | |
alle = ItemRegistry.getItem("JalousienState") | |
for jal in alle.getMembers(): | |
if jal: | |
self.updateState(jal) | |
else: | |
curState = unicode(item.state) | |
newState = -1 | |
if curState.endswith("ffnet"): | |
newState = 0 | |
elif curState == "Jalousie auf dem Weg nach unten": | |
newState = 30 | |
elif curState == "Jalousien sind geschlossen": | |
newState = 100 | |
elif curState == "Jalousien sind angehalten": | |
newState = 50 | |
elif curState == "Jalousie auf dem Weg nach oben": | |
newState = 70 | |
else: | |
print curState, "could not be converted" | |
if newState > -1: | |
stateItem = ItemRegistry.getItem(item.getName()[:-6]) | |
if not stateItem: | |
print "what? this should not happen, item:", item | |
else: | |
equal = False | |
try: | |
equal = int(str(stateItem.state)) == newState | |
except Exception, e: | |
pass | |
if not equal: | |
oh.postUpdate(stateItem.name, str(newState)) | |
def getEventTrigger(self): | |
return self.__eventTrigger | |
def execute(self, event): | |
if event.triggerType == TriggerType.STARTUP or event.triggerType == TriggerType.TIMER: | |
self.updateState(None) | |
elif event.triggerType == TriggerType.CHANGE: | |
self.updateState(event.item) | |
def getRules(): | |
return RuleSet([ | |
JalousienStateRule() | |
]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment