def testPeriodicCallback(self): del fake_periodics[:] temperature.PERIODICCALL = FakePeriodicCallback t = temperature.TemperatureSensor(name='TestTemp', sensor=MockSensor()) self.assertTrue(t.Enable) self.assertEqual(len(fake_periodics), 1) self.assertTrue(fake_periodics[0].start_called) self.assertFalse(fake_periodics[0].stop_called) self.assertEqual(fake_periodics[0].callback_time, 300) self.assertEqual(t.Status, 'Enabled') t.StartTransaction() t.Enable = False t.CommitTransaction() self.assertEqual(t.Status, 'Disabled') self.assertTrue(fake_periodics[0].stop_called) t.StartTransaction() t.Enable = True t.PollingInterval = 400 t.CommitTransaction() self.assertEqual(len(fake_periodics), 2) self.assertTrue(fake_periodics[1].start_called) self.assertFalse(fake_periodics[1].stop_called) self.assertEqual(fake_periodics[1].callback_time, 400) del fake_periodics[0:1]
def getvalues(boardType): import temperature import machine import dht import time import mainAppConstants if boardType == 'esp32': TSPIN = mainAppConstants.ESP32_TS_PIN DHTPIN = mainAppConstants.ESP32_DHT_PIN else: TSPIN = mainAppConstants.ESP8266_TS_PIN DHTPIN = mainAppConstants.ESP8266_DHT_PIN try: ts = temperature.TemperatureSensor(TSPIN) d = dht.DHT11(machine.Pin(DHTPIN)) d.measure() dh11_hum = d.humidity() dh11_tmp = d.temperature() dsTemp = ts.read_temp(False) time.sleep(1) return dsTemp, dh11_tmp, dh11_hum except: time.sleep(1) return 0, 0, 0
def testMinMax(self): temperature.TIMENOW = MockTime.MockTimeNow sensor = MockSensor() sensor.temperature = TR181_BAD_TEMPERATURE t = temperature.TemperatureSensor(name='TestTemp', sensor=sensor) t.Reset = True self.assertEqual(t.MaxTime, '0001-01-01T00:00:00Z') self.assertEqual(t.MaxValue, TR181_BAD_TEMPERATURE) self.assertEqual(t.MinTime, '0001-01-01T00:00:00Z') self.assertEqual(t.MinValue, TR181_BAD_TEMPERATURE) self.assertEqual(t.Value, TR181_BAD_TEMPERATURE) sensor.temperature = 90.0 MockTime.TIME = 1341359845.0 t.SampleTemperature() self.assertEqual(t.MaxTime, '2012-07-03T23:57:25Z') self.assertEqual(t.MaxValue, 90) self.assertEqual(t.MinTime, '2012-07-03T23:57:25Z') self.assertEqual(t.MinValue, 90) self.assertEqual(t.Value, 90) sensor.temperature = 110.0 MockTime.TIME = 1341359846 t.SampleTemperature() self.assertEqual(t.MaxTime, '2012-07-03T23:57:26Z') self.assertEqual(t.MaxValue, 110) self.assertEqual(t.MinTime, '2012-07-03T23:57:25Z') self.assertEqual(t.MinValue, 90) self.assertEqual(t.Value, 110) sensor.temperature = 80.0 MockTime.TIME = 1341359847 t.SampleTemperature() self.assertEqual(t.MaxTime, '2012-07-03T23:57:26Z') self.assertEqual(t.MaxValue, 110) self.assertEqual(t.MinTime, '2012-07-03T23:57:27Z') self.assertEqual(t.MinValue, 80) self.assertEqual(t.Value, 80) t.Reset = True self.assertEqual(t.MaxTime, '0001-01-01T00:00:00Z') self.assertEqual(t.MaxValue, TR181_BAD_TEMPERATURE) self.assertEqual(t.MinTime, '0001-01-01T00:00:00Z') self.assertEqual(t.MinValue, TR181_BAD_TEMPERATURE) self.assertEqual(t.Value, TR181_BAD_TEMPERATURE)
def testDefaults(self): sensor = MockSensor() sensor.temperature = TR181_BAD_TEMPERATURE t = temperature.TemperatureSensor(name='TestTemp', sensor=sensor) t.Reset = True self.assertTrue(t.Enable) self.assertEqual(t.HighAlarmValue, TR181_BAD_TEMPERATURE) self.assertEqual(t.HighAlarmTime, '0001-01-01T00:00:00Z') self.assertEqual(t.LowAlarmValue, TR181_BAD_TEMPERATURE) self.assertEqual(t.LowAlarmTime, '0001-01-01T00:00:00Z') self.assertEqual(t.MinValue, TR181_BAD_TEMPERATURE) self.assertEqual(t.MinTime, '0001-01-01T00:00:00Z') self.assertEqual(t.MaxValue, TR181_BAD_TEMPERATURE) self.assertEqual(t.MaxTime, '0001-01-01T00:00:00Z') self.assertEqual(t.LastUpdate, '0001-01-01T00:00:00Z') self.assertEqual(t.PollingInterval, 300) self.assertFalse(t.Reset) self.assertEqual(t.Status, 'Enabled') self.assertEqual(t.Value, TR181_BAD_TEMPERATURE)
def testAlarms(self): temperature.TIMENOW = MockTime.MockTimeNow sensor = MockSensor() t = temperature.TemperatureSensor(name='TestTemp', sensor=sensor) self.assertEqual(t.HighAlarmValue, TR181_BAD_TEMPERATURE) self.assertEqual(t.HighAlarmTime, '0001-01-01T00:00:00Z') self.assertEqual(t.LowAlarmValue, TR181_BAD_TEMPERATURE) self.assertEqual(t.LowAlarmTime, '0001-01-01T00:00:00Z') t.HighAlarmValue = 100 t.LowAlarmValue = 50 sensor.temperature = 90.0 t.SampleTemperature() self.assertEqual(t.HighAlarmValue, 100) self.assertEqual(t.HighAlarmTime, '0001-01-01T00:00:00Z') self.assertEqual(t.LowAlarmValue, 50) self.assertEqual(t.LowAlarmTime, '0001-01-01T00:00:00Z') sensor.temperature = 110.0 MockTime.TIME = 1341359848 t.SampleTemperature() self.assertEqual(t.HighAlarmTime, '2012-07-03T23:57:28Z') self.assertEqual(t.LowAlarmTime, '0001-01-01T00:00:00Z') sensor.temperature = 40.0 MockTime.TIME = 1341359849 t.SampleTemperature() self.assertEqual(t.HighAlarmTime, '2012-07-03T23:57:28Z') self.assertEqual(t.LowAlarmTime, '2012-07-03T23:57:29Z') t.Reset = True self.assertEqual(t.HighAlarmValue, 100) self.assertEqual(t.HighAlarmTime, '0001-01-01T00:00:00Z') self.assertEqual(t.LowAlarmValue, 50) self.assertEqual(t.LowAlarmTime, '0001-01-01T00:00:00Z')
def testValidateExports(self): t = temperature.TemperatureSensor(name='TestTemp', sensor=MockSensor()) t.ValidateExports() fan = temperature.FanReadFileRPS('Fan1', 'testdata/temperature/file1') fan.ValidateExports()
def main(): # Set up GPIO GPIO.setmode(GPIO.BCM) #GPIO.setwarnings(False) GPIO.setup(PIN.YELLOW_LED, GPIO.OUT) GPIO.setup(PIN.BLUE_LED, GPIO.OUT) GPIO.setup(PIN.MOTOR, GPIO.OUT) GPIO.setup(PIN.WATER_PUMP, GPIO.OUT) GPIO.setup(PIN.PUSH_BUTTON, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(PIN.WATER_LEVEL_SENSOR, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) ### initialize software modals of connected gpio hardwares ### settings = db.get_setting() #user settings # Lid lid = Lid(PIN.PUSH_BUTTON) GPIOController.add_component(lid) # Lights main_light = LED(PIN.YELLOW_LED) main_light.timer = LightTimer(main_light, settings["light_hour"], settings["light_duration"]) GPIOController.add_component(main_light) secondary_light = LED(PIN.BLUE_LED) GPIOController.add_component(secondary_light) # Temperature Sensor tsensor = temperature.TemperatureSensor(PIN.TEMPERATURE_SENSOR) GPIOController.add_component(tsensor) # Water Sensor wsensor = water.WaterSensor(PIN.WATER_LEVEL_SENSOR) GPIOController.add_component(wsensor) # Pump wpump = pump.WaterPump(PIN.WATER_PUMP) GPIOController.add_component(wpump) # Motor motr = motor.Motor(*PIN.MOTOR, enable_timer=True) GPIOController.add_component(motr) # Lid open/close event listen GPIO.add_event_detect(lid.pin, GPIO.BOTH, callback=lid.open_close) try: # start QT UI sargv = sys.argv + ['-style', 'material'] app = QGuiApplication(sargv) font = QFont() font.setFamily("Ariel") app.setFont(font) # manually detect lid open close event from the start lid.open_close() slots.syncdb() # Instantiate the UI UIController.MAIN_UI = ui.MainWindow() print("UI inited") UIController.MAIN_UI.root.show() if os.name == "posix" and os.uname().nodename.startswith( "raspberrypi"): UIController.MAIN_UI.root.showFullScreen() # Start threads and timers tsensor.start() slots.REFRESH_TIMER.activate() main_light.timer.activate() wpump.timer.activate() motr.timer.activate() # init UI data status for correct icon display UIController.MAIN_UI.root.setMainLightStatus(main_light.status) ret = app.exec_() # Teminate sys.exit(ret) finally: # cleanup and deactive timers slots.REFRESH_TIMER.deactivate() wpump.timer.deactivate() main_light.timer.deactivate() motr.timer.deactivate() motr.pwm.stop() GPIO.cleanup()