Support new style rules hon#112
This commit is contained in:
		@@ -102,10 +102,12 @@ class HonCommand:
 | 
				
			|||||||
        if name == "zoneMap" and self._appliance.zone:
 | 
					        if name == "zoneMap" and self._appliance.zone:
 | 
				
			||||||
            data["default"] = self._appliance.zone
 | 
					            data["default"] = self._appliance.zone
 | 
				
			||||||
        if data.get("category") == "rule":
 | 
					        if data.get("category") == "rule":
 | 
				
			||||||
            if "fixedValue" not in data:
 | 
					            if "fixedValue" in data:
 | 
				
			||||||
                _LOGGER.error("Rule not supported: %s", data)
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                self._rules.append(HonRuleSet(self, data["fixedValue"]))
 | 
					                self._rules.append(HonRuleSet(self, data["fixedValue"]))
 | 
				
			||||||
 | 
					            elif "enumValues" in data:
 | 
				
			||||||
 | 
					                self._rules.append(HonRuleSet(self, data["enumValues"]))
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                _LOGGER.warning("Rule not supported: %s", data)
 | 
				
			||||||
        match data.get("typology"):
 | 
					        match data.get("typology"):
 | 
				
			||||||
            case "range":
 | 
					            case "range":
 | 
				
			||||||
                self._parameters[name] = HonParameterRange(name, data, parameter)
 | 
					                self._parameters[name] = HonParameterRange(name, data, parameter)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,8 +68,9 @@ class HonParameter:
 | 
				
			|||||||
        self._triggers.setdefault(value, []).append((func, data))
 | 
					        self._triggers.setdefault(value, []).append((func, data))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def check_trigger(self, value: str | float) -> None:
 | 
					    def check_trigger(self, value: str | float) -> None:
 | 
				
			||||||
        if str(value) in self._triggers:
 | 
					        triggers = {str(k).lower(): v for k, v in self._triggers.items()}
 | 
				
			||||||
            for trigger in self._triggers[str(value)]:
 | 
					        if str(value).lower() in triggers:
 | 
				
			||||||
 | 
					            for trigger in triggers[str(value)]:
 | 
				
			||||||
                func, args = trigger
 | 
					                func, args = trigger
 | 
				
			||||||
                func(args)
 | 
					                func(args)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,6 +56,11 @@ class HonRuleSet:
 | 
				
			|||||||
                    extra[trigger_key] = trigger_value
 | 
					                    extra[trigger_key] = trigger_value
 | 
				
			||||||
                    for extra_key, extra_data in param_data.items():
 | 
					                    for extra_key, extra_data in param_data.items():
 | 
				
			||||||
                        self._parse_conditions(param_key, extra_key, extra_data, extra)
 | 
					                        self._parse_conditions(param_key, extra_key, extra_data, extra)
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    param_data = {"typology": "fixed", "fixedValue": param_data}
 | 
				
			||||||
 | 
					                    self._create_rule(
 | 
				
			||||||
 | 
					                        param_key, trigger_key, trigger_value, param_data, extra
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _create_rule(
 | 
					    def _create_rule(
 | 
				
			||||||
        self,
 | 
					        self,
 | 
				
			||||||
@@ -102,6 +107,10 @@ class HonRuleSet:
 | 
				
			|||||||
            param.values = [str(value)]
 | 
					            param.values = [str(value)]
 | 
				
			||||||
            param.value = str(value)
 | 
					            param.value = str(value)
 | 
				
			||||||
        elif isinstance(param, HonParameterRange):
 | 
					        elif isinstance(param, HonParameterRange):
 | 
				
			||||||
 | 
					            if float(value) < param.min:
 | 
				
			||||||
 | 
					                param.min = float(value)
 | 
				
			||||||
 | 
					            elif float(value) > param.max:
 | 
				
			||||||
 | 
					                param.max = float(value)
 | 
				
			||||||
            param.value = float(value)
 | 
					            param.value = float(value)
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        param.value = str(value)
 | 
					        param.value = str(value)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user