Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

44 lignes
1.0KB

  1. import time
  2. from flask_classy import route
  3. from modules import DBModel, cbpi
  4. from modules.core.baseview import BaseView
  5. class Sensor(DBModel):
  6. __fields__ = ["name","type", "config", "hide"]
  7. __table_name__ = "sensor"
  8. __json_fields__ = ["config"]
  9. class SensorView(BaseView):
  10. model = Sensor
  11. cache_key = "sensors"
  12. def _post_post_callback(self, m):
  13. cbpi.init_sensor(m.id)
  14. def _post_put_callback(self, m):
  15. cbpi.stop_sensor(m.id)
  16. cbpi.init_sensor(m.id)
  17. def _pre_delete_callback(self, m):
  18. cbpi.stop_sensor(m.id)
  19. @cbpi.initalizer(order=1000)
  20. def init(cbpi):
  21. SensorView.register(cbpi.app, route_base='/api/sensor')
  22. SensorView.init_cache()
  23. cbpi.init_sensors()
  24. @cbpi.backgroundtask(key="read_passiv_sensor", interval=5)
  25. def read_passive_sensor(api):
  26. """
  27. background process that reads all passive sensors in interval of 1 second
  28. :return: None
  29. """
  30. for key, value in cbpi.cache.get("sensors").iteritems():
  31. if value.mode == "P":
  32. value.instance.read()