You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.7KB

  1. # -*- coding: utf-8 -*-
  2. import subprocess
  3. import time
  4. from modules import cbpi, socketio
  5. from modules.core.hardware import SensorActive
  6. from modules import cbpi
  7. from modules.core.props import Property
  8. @cbpi.sensor
  9. class DummyTempSensor(SensorActive):
  10. temp = Property.Number("Temperature", configurable=True, default_value=5, description="Dummy Temperature as decimal value")
  11. inc = Property.Number("Auto increase", configurable=True, default_value=0.5, description="Dummy Temperature increase as decimal value")
  12. max_temp = Property.Number("Max temperature", configurable=True, default_value='100', description="Dummy Max. Temperature as decimal value")
  13. min_temp = Property.Number("Min temperature", configurable=True, default_value='0', description="Dummy Min. Temperature as decimal value")
  14. current_temp = None
  15. @cbpi.action("Reset")
  16. def reset(self):
  17. self.current_temp = None
  18. @cbpi.action("Toogle Up/Down")
  19. def toogle(self):
  20. self.inc *= -1
  21. def stop(self):
  22. SensorActive.stop(self)
  23. def execute(self):
  24. '''
  25. Active sensor has to handle his own loop
  26. :return:
  27. '''
  28. while self.is_running() is True:
  29. if not self.current_temp:
  30. self.current_temp = self.temp
  31. self.data_received(self.current_temp)
  32. new_temp = float(self.current_temp) + float(self.inc)
  33. if float(self.min_temp) <= new_temp <= float(self.max_temp):
  34. self.current_temp = '%.2f' % new_temp
  35. self.sleep(5)
  36. @classmethod
  37. def init_global(cls):
  38. '''
  39. Called one at the startup for all sensors
  40. :return:
  41. '''