def canBeTurnedOffByAdjacentZone(self): ''' Returns True if this light can be turned off when the light of an adjacent zone is turned on. A False value might be desired if movement in the adjacent zone causes the light to be turned off unexpectedly too often. :rtype: bool ''' if self.noPrematureTurnOffTimeRange == None: return True elif time_utilities.isInTimeRange(self.noPrematureTurnOffTimeRange): return False else: return True
def turnOn(self, events): ''' Turn on this light if it is not on yet. If the light is dimmable, and if the current time falls into the specified time ranges, it will be dimmed; otherwise it is turned on at 100%. The associated timer item is also turned on. @override ''' if OnOffType.ON != self.getItem().getState(): if time_utilities.isInTimeRange(self.timeRanges): events.sendCommand(self.getItemName(), str(self.dimLevel)) else: events.sendCommand(self.getItemName(), "100") self._handleCommonOnAction(events)
def _isInTimeRange(self, key, epochSeconds): if key not in self.timeRangeMap.keys(): return False timeRangeString = self.timeRangeMap[key] return time_utilities.isInTimeRange(timeRangeString, epochSeconds)
def testIsInTimeRange_singleRangeCurrentMinuteLessThanStartMinute_returnTrue( self): dt = datetime.datetime(2019, 3, 15, 22, 30) self.assertTrue( time_utilities.isInTimeRange('18:45 - 23:00', time.mktime(dt.timetuple())))
def testIsInTimeRange_multipleRanges_returnTrue(self): dt = datetime.datetime(2018, 12, 25, 7, 58) self.assertTrue( time_utilities.isInTimeRange('4-5, 7- 8', time.mktime(dt.timetuple())))
def testIsInTimeRange_negativeMultipleRanges_returnTrue(self): dt = datetime.datetime(2018, 12, 25, 10, 58) self.assertFalse( time_utilities.isInTimeRange('4-5, 8', time.mktime(dt.timetuple())))
def testIsInTimeRange_wrapAround2_returnTrue(self): dt = datetime.datetime(2018, 12, 25, 18, 22) self.assertTrue( time_utilities.isInTimeRange('18 - 7', time.mktime(dt.timetuple())))
def testIsInTimeRange_negativeWrapAround2_returnFalse(self): dt = datetime.datetime(2018, 12, 25, 20, 58) self.assertFalse( time_utilities.isInTimeRange('21 - 9', time.mktime(dt.timetuple())))
def testIsInTimeRange_negativeNoEndMinute_returnFalse(self): dt = datetime.datetime(2018, 12, 25, 8, 58) self.assertFalse( time_utilities.isInTimeRange('7-8', time.mktime(dt.timetuple())))
def testIsInTimeRange_noEndMinute_returnTrue(self): dt = datetime.datetime(2018, 12, 25, 7, 58) self.assertTrue( time_utilities.isInTimeRange('7 - 8', time.mktime(dt.timetuple())))
def testIsInTimeRange_negativeLargerThanEndMinute_returnFalse(self): dt = datetime.datetime(2018, 12, 25, 7, 58) self.assertFalse( time_utilities.isInTimeRange('8 - 8:30', time.mktime(dt.timetuple())))
def testIsInTimeRange_negativeSameHour_returnFalse(self): dt = datetime.datetime(2018, 12, 25, 7, 58) self.assertFalse( time_utilities.isInTimeRange('8', time.mktime(dt.timetuple())))
def testIsInTimeRange_sameHour_returnTrue(self): dt = datetime.datetime(2018, 12, 25, 7, 58) self.assertTrue( time_utilities.isInTimeRange('7', time.mktime(dt.timetuple())))