예제 #1
0
    def testTestTempAndLog_withMultipleProviders(self):
        tempProvider1 = TempProvider("sensorid1")
        tempProvider1.getTemp = mock.Mock(return_value=18.0)
        tempProvider2 = TempProvider("sensorid2")
        tempProvider2.getTemp = mock.Mock(return_value=22.0)
        tempProvider3 = TempProvider("sensorid3")
        tempProvider3.getTemp = mock.Mock(return_value=21.0)

        heatingElement = HeatingElement()
        tempLogger = TempLogger()
        tempLogger._write = mock.Mock()
        time.time = mock.Mock(return_value=1234)

        beerTemp = BeerTemp([tempProvider1, tempProvider2, tempProvider3], heatingElement, tempLogger)
        beerTemp.testTempAndLog()
        self.assertFalse(heatingElement.isActive())
        calls = [call.write(json.dumps({"active": False, "sensorId": "sensorid1", "temp": 18.0, "time": 1234})),
                 call.write(json.dumps({"active": False, "sensorId": "sensorid2", "temp": 22.0, "time": 1234})),
                 call.write(json.dumps({"active": False, "sensorId": "sensorid3", "temp": 21.0, "time": 1234}))]
        tempLogger._write.assert_has_calls(calls)

        tempProvider3.getTemp = mock.Mock(return_value=19.8)
        time.time = mock.Mock(return_value=5678)
        beerTemp.testTempAndLog()
        self.assertTrue(heatingElement.isActive())
        calls = [call.write(json.dumps({"active": True, "sensorId": "sensorid1", "temp": 18.0, "time": 5678})),
                 call.write(json.dumps({"active": True, "sensorId": "sensorid2", "temp": 22.0, "time": 5678})),
                 call.write(json.dumps({"active": True, "sensorId": "sensorid3", "temp": 19.8, "time": 5678}))]
        tempLogger._write.assert_has_calls(calls)
예제 #2
0
    def testTestTempAndLog_withSingleProvider_withNoneReturns(self):
        tempProvider = TempProvider("sensorid")
        tempProvider.getTemp = mock.Mock(return_value=None)
        heatingElement = HeatingElement()
        tempLogger = TempLogger()
        tempLogger._write = mock.Mock()
        time.time = mock.Mock(return_value=1234)

        beerTemp = BeerTemp([tempProvider], heatingElement, tempLogger)
        beerTemp.testTempAndLog()
        self.assertFalse(heatingElement.isActive())
        self.assertNotIn(call(json.dumps({"active": True, "sensorId": "sensorid", "temp": 18.0, "time": 5678})),
            tempLogger._write.mock_calls)

        tempProvider.getTemp = mock.Mock(return_value=22.0)
        time.time = mock.Mock(return_value=5678)
        beerTemp.testTempAndLog()
        self.assertFalse(heatingElement.isActive())
        tempLogger._write.assert_called_with(
            json.dumps({"active": False, "sensorId": "sensorid", "temp": 22.0, "time": 5678}))
예제 #3
0
    def testTempAndLog_withMultipleProviders_oneAmbient(self):
        tempProvider1 = TempProvider("28-000004a2bb68")
        tempProvider1.getTemp = mock.Mock(return_value=18.0)
        tempProvider2 = TempProvider("sensorid2")
        tempProvider2.getTemp = mock.Mock(return_value=180.0)
        tempProvider3 = TempProvider("sensorid3")
        tempProvider3.getTemp = mock.Mock(return_value=18.0)

        heatingElement = HeatingElement()
        tempLogger = TempLogger()
        tempLogger._write = mock.Mock()
        time.time = mock.Mock(return_value=1234)

        beerTemp = BeerTemp([tempProvider1, tempProvider2, tempProvider3], heatingElement, tempLogger)
        beerTemp.testTempAndLog()
        self.assertFalse(heatingElement.isActive())
예제 #4
0
 def testGetTemp(self):
     self._setupRawTempExpectation("29 00 4b 46 ff ff 08 10 eb : crc=eb YES\n29 00 4b 46 ff ff 08 10 eb t=20250")
     tempProvider = TempProvider("test_serial")
     self.assertEqual(20.25, tempProvider.getTemp())
     TempProvider._rawTempHandle.assert_called_once_with("/sys/bus/w1/devices/test_serial/w1_slave")
예제 #5
0
 def testCreate_withException(self):
     self.assertEqual([], TempProvider.create())
예제 #6
0
 def testCreate_emptyList(self):
     self.assertEqual([], TempProvider.create())
예제 #7
0
 def testCreate_multipleProviders(self):
     self.assertEqual([TempProvider("test_serial1"), TempProvider("test_serial2"), TempProvider("test_serial3")],
         TempProvider.create())
예제 #8
0
 def testCreate_singleProvider_excludes_busMaster(self):
     self.assertEqual([TempProvider("test_serial")], TempProvider.create())
예제 #9
0
            self._heatingElement.activate()
        else:
            self._heatingElement.deactivate()

        currentTime = int(time.time())

        for temps in temps:
            self._tempLogger.log(currentTime, temps[0], temps[1], self._heatingElement.isActive())

    def publishLog(self):
        #noinspection PyStatementEffect
        Popen(["sh", "/root/publishLog.sh"]).pid

    def schedule(self):
        while True:
            try:
                self.testTempAndLog()
                self.publishLog()
            except Exception as e:
                self.LOG.error(e)
            time.sleep(60)


if __name__ == '__main__':
    logging.basicConfig(filename=tempfile.gettempdir() + "/" + 'beerTemp.log', level=logging.INFO)
    ch = logging.StreamHandler()
    ch.setLevel(logging.ERROR)
    logging.getLogger().addHandler(ch)

    BeerTemp(TempProvider.create(), HeatingElement(), TempLogger()).schedule()