| @@ -1,53 +1,78 @@ | |||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||
| """ | |||||
| Dummy sensors | |||||
| """ | |||||
| import subprocess | import subprocess | ||||
| import time | import time | ||||
| from modules import cbpi, socketio | from modules import cbpi, socketio | ||||
| from modules.core.hardware import SensorActive | |||||
| from modules import cbpi | |||||
| from modules.core.hardware import SensorActive | |||||
| from modules.core.props import Property | from modules.core.props import Property | ||||
| @cbpi.sensor | @cbpi.sensor | ||||
| class DummyTempSensor(SensorActive): | class DummyTempSensor(SensorActive): | ||||
| temp = Property.Number("Temperature", configurable=True, default_value=5, description="Dummy Temperature as decimal value") | |||||
| @cbpi.action("My Custom Action") | |||||
| def my_action(self): | |||||
| print("HELLO WORLD") | |||||
| pass | |||||
| def get_unit(self): | |||||
| ''' | |||||
| :return: Unit of the sensor as string. Should not be longer than 3 characters | |||||
| ''' | |||||
| return "°C" if self.get_config_parameter("unit", "C") == "C" else "°F" | |||||
| """ | |||||
| Dummy temperature sensor | |||||
| """ | |||||
| 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): | |||||
| """ | |||||
| reset to default temp | |||||
| """ | |||||
| self.current_temp = None | |||||
| @cbpi.action("Toogle Up/Down") | |||||
| def toogle(self): | |||||
| """ | |||||
| toogle inc from up/down | |||||
| """ | |||||
| self.inc *= -1 | |||||
| def stop(self): | def stop(self): | ||||
| """ | |||||
| stop sensor | |||||
| """ | |||||
| SensorActive.stop(self) | SensorActive.stop(self) | ||||
| def execute(self): | def execute(self): | ||||
| ''' | ''' | ||||
| Active sensor has to handle his own loop | Active sensor has to handle his own loop | ||||
| :return: | |||||
| :return: | |||||
| ''' | ''' | ||||
| while self.is_running() is True: | while self.is_running() is True: | ||||
| self.data_received(self.temp) | |||||
| 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) | self.sleep(5) | ||||
| @classmethod | @classmethod | ||||
| def init_global(cls): | def init_global(cls): | ||||
| ''' | ''' | ||||
| Called one at the startup for all sensors | Called one at the startup for all sensors | ||||
| :return: | |||||
| :return: | |||||
| ''' | ''' | ||||