Beispiel #1
0
    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]
Beispiel #2
0
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
Beispiel #3
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)
Beispiel #4
0
    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)
Beispiel #5
0
    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')
Beispiel #6
0
 def testValidateExports(self):
     t = temperature.TemperatureSensor(name='TestTemp', sensor=MockSensor())
     t.ValidateExports()
     fan = temperature.FanReadFileRPS('Fan1', 'testdata/temperature/file1')
     fan.ValidateExports()
Beispiel #7
0
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()