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.

56 lines
1.8KB

  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("My Custom Action")
  16. def my_action(self):
  17. print("HELLO WORLD")
  18. pass
  19. @cbpi.action("Reset")
  20. def reset(self):
  21. self.current_temp = None
  22. @cbpi.action("Toogle Up/Down")
  23. def toogle(self):
  24. self.inc *= -1
  25. def stop(self):
  26. SensorActive.stop(self)
  27. def execute(self):
  28. '''
  29. Active sensor has to handle his own loop
  30. :return:
  31. '''
  32. while self.is_running() is True:
  33. if not self.current_temp:
  34. self.current_temp = self.temp
  35. self.data_received(self.current_temp)
  36. new_temp = float(self.current_temp) + float(self.inc)
  37. if float(self.min_temp) <= new_temp <= float(self.max_temp):
  38. self.current_temp = '%.2f' % new_temp
  39. self.sleep(5)
  40. @classmethod
  41. def init_global(cls):
  42. '''
  43. Called one at the startup for all sensors
  44. :return:
  45. '''