|
- # -*- coding: utf-8 -*-
- import subprocess
- import time
-
- from modules import cbpi, socketio
- from modules.core.hardware import SensorActive
- from modules import cbpi
- from modules.core.props import Property
-
-
- @cbpi.sensor
- class DummyTempSensor(SensorActive):
-
- temp = Property.Number("Temperature", configurable=True, default_value=5, description="Dummy Temperature as decimal value")
- inc = Property.Number("Auto increase", configurable=True, default_value=0.5, description="Dummy Temperature increase as decimal value")
- max_temp = Property.Number("Max temperature", configurable=True, default_value='100', description="Dummy Max. Temperature as decimal value")
- min_temp = Property.Number("Min temperature", configurable=True, default_value='0', description="Dummy Min. Temperature as decimal value")
- current_temp = None
-
- @cbpi.action("Reset")
- def reset(self):
- self.current_temp = None
-
- @cbpi.action("Toogle Up/Down")
- def toogle(self):
- self.inc *= -1
-
- def stop(self):
- SensorActive.stop(self)
-
- def execute(self):
- '''
- Active sensor has to handle his own loop
- :return:
- '''
- while self.is_running() is True:
- if not self.current_temp:
- self.current_temp = self.temp
- self.data_received(self.current_temp)
- new_temp = float(self.current_temp) + float(self.inc)
- if float(self.min_temp) <= new_temp <= float(self.max_temp):
- self.current_temp = '%.2f' % new_temp
- self.sleep(5)
-
- @classmethod
- def init_global(cls):
- '''
- Called one at the startup for all sensors
- :return:
- '''
|