示例#1
0
    def toggle(self, id):
        kettle = cbpi.cache.get("kettle")[id]

        if kettle.state is False:
            # Start controller
            if kettle.logic is not None:
                cfg = kettle.config.copy()
                cfg.update(
                    dict(api=cbpi,
                         kettle_id=kettle.id,
                         heater=kettle.heater,
                         sensor=kettle.sensor))
                instance = cbpi.get_controller(
                    kettle.logic).get("class")(**cfg)
                instance.init()
                kettle.instance = instance

                def run(instance):
                    instance.run()

                t = self.api.socketio.start_background_task(target=run,
                                                            instance=instance)
            kettle.state = not kettle.state
            cbpi.emit("UPDATE_KETTLE", cbpi.cache.get("kettle").get(id))
        else:
            # Stop controller
            kettle.instance.stop()
            kettle.state = not kettle.state
            cbpi.emit("UPDATE_KETTLE", cbpi.cache.get("kettle").get(id))
        return ('', 204)
示例#2
0
    def get_logs_as_json(self, log_type, log_id):
        """
        :param log_type: log type
        :param log_id: log id

        :return: log as array
        """
        result = []
        if log_type == "s":
            name = cbpi.cache.get("sensors").get(log_id).name
            result.append({
                "name": name,
                "data": self.read_log_as_json("sensor", log_id)
            })

        if log_type == "k":
            kettle = cbpi.cache.get("kettle").get(log_id)
            result = list(
                map(
                    self.convert_chart_data_to_json,
                    cbpi.get_controller(
                        kettle.logic).get("class").chart(kettle)))

        if log_type == "f":
            fermenter = cbpi.cache.get("fermenter").get(log_id)
            result = list(
                map(
                    self.convert_chart_data_to_json,
                    cbpi.get_fermentation_controller(
                        fermenter.logic).get("class").chart(fermenter)))

        return json.dumps(result)
示例#3
0
    def get_logs_as_json(self, t, id):
        #print "get logs as json %s %s"%(t,id)
        data = request.json
        result = []
        if t == "s":
            name = cbpi.cache.get("sensors").get(id).name
            result.append({"name": name, "data": self.read_log_as_json("sensor", id)})

        if t == "k":
            kettle = cbpi.cache.get("kettle").get(id)
            result = map(self.convert_chart_data_to_json, cbpi.get_controller(kettle.logic).get("class").chart(kettle))

        if t == "f":
            fermenter = cbpi.cache.get("fermenter").get(id)
            result = map(self.convert_chart_data_to_json, cbpi.get_fermentation_controller(fermenter.logic).get("class").chart(fermenter))

        if t == "act_sensor":
            result = self.get_kettle_action_log(id)
            #kettle = cbpi.cache.get("kettle").get(id)
            #result = map(self.convert_chart_data_to_json, cbpi.get_controller(kettle.logic).get("class").chart(kettle))
            #print result

        if t == "as":
            result = self.get_fermenter_action_log(id)

        if t == "pump":
            result = self.get_mygpio_action_log(21)

        return json.dumps(result)
示例#4
0
    def get_logs_as_json(self, t, id):
        data = request.json
        result = []
        if t == "s":
            name = cbpi.cache.get("sensors").get(id).name
            sensor_name = "%s_%s" % ("sensor", str(id))
            result.append({"name": name, "data": self.read_log_as_json(sensor_name)})

        if t == "k":
            kettle = cbpi.cache.get("kettle").get(id)
            result = map(self.convert_chart_data_to_json, cbpi.get_controller(kettle.logic).get("class").chart(kettle))

        if t == "f":
            fermenter = cbpi.cache.get("fermenter").get(id)
            result = map(self.convert_chart_data_to_json,
                         cbpi.get_fermentation_controller(fermenter.logic).get("class").chart(fermenter))

        return json.dumps(result)
示例#5
0
 def init(self):
     if isinstance(self.a_id, unicode) and self.a_id:
         self.id = (int(self.a_id))
     self.auto_type = self.b_auto
     try:
         kettle = cbpi.cache.get("kettle").get(self.id)
         if (kettle.state is False) and (self.auto_type = "On"):
             # Start controller
             if kettle.logic is not None:
                 cfg = kettle.config.copy()
                 cfg.update(dict(api=cbpi, kettle_id=kettle.id, heater=kettle.heater, sensor=kettle.sensor))
                 instance = cbpi.get_controller(kettle.logic).get("class")(**cfg)
                 instance.init()
                 kettle.instance = instance
                 def run(instance):
                     instance.run()
                 t = self.api.socketio.start_background_task(target=run, instance=instance)
             kettle.state = True
             cbpi.emit("UPDATE_KETTLE", kettle)
         else (kettle.state is True) and (self.auto_type = "Off"):
             # Stop controller
             kettle.instance.stop()
示例#6
0
    def setAutoMode(self, auto_state):
        try:
            kettle = cbpi.cache.get("kettle")[int(self.kettle)]
            if (kettle.state is False) and (auto_state is True):
                # turn on
                if kettle.logic is not None:
                    cfg = kettle.config.copy()
                    cfg.update(
                        dict(api=cbpi,
                             kettle_id=kettle.id,
                             heater=kettle.heater,
                             sensor=kettle.sensor))
                    instance = cbpi.get_controller(
                        kettle.logic).get("class")(**cfg)
                    instance.init()
                    kettle.instance = instance

                    def run(instance):
                        instance.run()

                    t = cbpi.socketio.start_background_task(target=run,
                                                            instance=instance)
                kettle.state = not kettle.state
                cbpi.emit("UPDATE_KETTLE",
                          cbpi.cache.get("kettle")[int(self.kettle)])
            elif (kettle.state is True) and (auto_state is False):
                # turn off
                kettle.instance.stop()
                kettle.state = not kettle.state
                cbpi.emit("UPDATE_KETTLE",
                          cbpi.cache.get("kettle")[int(self.kettle)])
        except Exception as e:
            cbpi.notify("Error",
                        "Failed to set Auto mode {}".format(["OFF", "ON"
                                                             ][auto_state]),
                        type="danger",
                        timeout=None)
            cbpi.app.logger.error(e)