| @@ -1,53 +1,78 @@ | |||
| # -*- coding: utf-8 -*- | |||
| """ | |||
| Dummy sensors | |||
| """ | |||
| import subprocess | |||
| import time | |||
| 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 | |||
| @cbpi.sensor | |||
| 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): | |||
| """ | |||
| stop sensor | |||
| """ | |||
| SensorActive.stop(self) | |||
| def execute(self): | |||
| ''' | |||
| Active sensor has to handle his own loop | |||
| :return: | |||
| :return: | |||
| ''' | |||
| 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) | |||
| @classmethod | |||
| def init_global(cls): | |||
| ''' | |||
| Called one at the startup for all sensors | |||
| :return: | |||
| :return: | |||
| ''' | |||