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.

79 line
2.0KB

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