import time from flask_classy import route from modules import DBModel, cbpi from modules.core.baseview import BaseView class Sensor(DBModel): __fields__ = ["name","type", "config", "hide"] __table_name__ = "sensor" __json_fields__ = ["config"] class SensorView(BaseView): model = Sensor cache_key = "sensors" @route('/action/', methods=["POST"]) def action(self, id, method): cbpi.cache.get("sensors").get(id).instance.__getattribute__(method)() return ('', 204) def _post_post_callback(self, m): cbpi.init_sensor(m.id) def _post_put_callback(self, m): cbpi.stop_sensor(m.id) cbpi.init_sensor(m.id) def _pre_delete_callback(self, m): cbpi.stop_sensor(m.id) @cbpi.initalizer(order=1000) def init(cbpi): SensorView.register(cbpi.app, route_base='/api/sensor') SensorView.init_cache() cbpi.init_sensors() @cbpi.backgroundtask(key="read_passiv_sensor", interval=5) def read_passive_sensor(api): """ background process that reads all passive sensors in interval of 1 second :return: None """ for key, value in cbpi.cache.get("sensors").items(): if value.mode == "P": value.instance.read()