def evaluate_non_themp(): mappings = get_mappings() table = RuleTable( "Non thermostat rules", mappings, "RegexParser", #rawfile, "RAWFile", None) table.setPolicy(False) for rule in Rule.objects.filter(active=True, thermostat=False).order_by("pk"): table.addRule(rule.to_pypelib()) if settings.DEBUG: table.dump(logger) try: table.evaluate({}) logger.debug("Table NONTHERM evaluated True") except Exception as ex: logger.debug("Table NONTHERM evaluated False")
def evaluate(): mappings = get_mappings() table = RuleTable( "Decide tunned temp", mappings, "RegexParser", #rawfile, "RAWFile", None) logger.debug("current time: %s " % mappings["current_time"]()) logger.debug("current day of week: %s" % mappings["current_day_of_week"]()) logger.debug("current temp %s" % mappings["current_internal_temperature"]()) logger.debug("economic %s" % mappings["economic_temperature"]()) logger.debug("confort %s" % mappings["confort_temperature"]()) logger.debug("tuned %s" % mappings["tuned_temperature"]()) logger.debug("flame %s" % mappings["flame_on"]()) logger.debug("heat on %s" % mappings["heater_on"]()) table.setPolicy(False) table.addRule("if heater_manual = 1 then ACCEPT") for rule in Rule.objects.filter(active=True, thermostat=True).order_by("pk"): table.addRule(rule.to_pypelib()) if settings.DEBUG: table.dump(logger) metaObj = {} try: table.evaluate(metaObj) logger.debug("Table THERM1 evaluated True") mappings["tune_to_confort"]() except Exception: logger.debug("Table THERM1 evaluated False") mappings["tune_to_economic"]() table1 = RuleTable( "Decide flame status", mappings, "RegexParser", #rawfile, "RAWFile", None) table1.addRule("if heater_on = 0 then deny") table1.addRule("if current_internal_temperature < tuned_temperature then accept") if settings.DEBUG: table1.dump(logger) try: table1.evaluate(metaObj) logger.debug("Table THERM2 evaluated True") try: mappings["start_flame"]() except Exception as ex: logger.critical("ERROR: Cant start flame: %s" % ex) except Exception as e: logger.debug("Table THERM2 evaluated False") try: mappings["stop_flame"]() except Exception as ex: logger.critical("ERROR: Cant stop flame: %s" % ex)