コード例 #1
0
class Extender:
    def __init__(self, thermostatName, target):
        logger.info("Initializing extender")
        self.sensor = Sensor()
        self.thermostat = Thermostat(thermostatName)
        self.reporter = Reporter()
        self.target = target

    def startPoller(self, interval):
        logger.info("Starting poller")
        while True:
            try:
                self.poll()
            except Exception as e:
                logger.error("Could not complete run: {}".format(e.message))
            logger.info("Sleeping for {} seconds".format(interval))
            sleep(interval)

    def poll(self):
        temperature = self.sensor.getCurrentTemp()
        thermostatTarget = self.thermostat.thermostat.target
        thermostatTemp = self.thermostat.thermostat.temperature
        self.reporter.send('thermostat_target', thermostatTarget)
        self.reporter.send('thermostat_temp', thermostatTemp)
        self.reporter.send('sensor_temp', temperature)
        if temperature == -1:
            logger.info("Got a bad reading from the sensor, try again later")
            pass
        elif temperature >= self.target:
            logger.info("Temperature was hot enough")
            self.thermostat.heatOff()
        else:
            logger.info("Temperature was too cold")
            self.thermostat.heatOn()
コード例 #2
0
class TestThermostat(unittest.TestCase):
    def setUp(self):
        self.thermostat = Thermostat("Upstairs")

    def test_heatOn(self):
        self.thermostat.heatOn()
        sleep(10)
        self.assertEqual(self.thermostat.getThermostatByName("Upstairs").hvac_state, 'heating')

    def test_heatOff(self):
        self.thermostat.heatOff()
        sleep(10)
        self.assertEqual(self.thermostat.getThermostatByName("Upstairs").hvac_state, 'off')