enabled for rules

This commit is contained in:
2025-11-11 17:08:18 +01:00
parent 2e2963488b
commit d3d96ed3e9
3 changed files with 15 additions and 1 deletions

View File

@@ -85,6 +85,10 @@ class RuleEngine:
# Instantiate each rule # Instantiate each rule
for desc in self.rule_descriptors: for desc in self.rule_descriptors:
if not desc.enabled:
logger.info(f" - {desc.id} (type: {desc.type}) [DISABLED]")
continue
try: try:
rule_instance = load_rule(desc) rule_instance = load_rule(desc)
self.rules[desc.id] = rule_instance self.rules[desc.id] = rule_instance
@@ -93,7 +97,10 @@ class RuleEngine:
logger.error(f"Failed to load rule {desc.id} (type: {desc.type}): {e}") logger.error(f"Failed to load rule {desc.id} (type: {desc.type}): {e}")
raise raise
logger.info(f"Successfully loaded {len(self.rules)} rule implementation(s)") enabled_count = len(self.rules)
total_count = len(self.rule_descriptors)
disabled_count = total_count - enabled_count
logger.info(f"Successfully loaded {enabled_count} rule implementation(s) ({disabled_count} disabled)")
# Initialize MQTT client # Initialize MQTT client
self.mqtt_client = MQTTClient( self.mqtt_client = MQTTClient(

View File

@@ -25,6 +25,7 @@ class Rule(BaseModel):
id: str = Field(..., description="Unique rule identifier") id: str = Field(..., description="Unique rule identifier")
name: Optional[str] = Field(None, description="Optional human-readable name") name: Optional[str] = Field(None, description="Optional human-readable name")
type: str = Field(..., description="Rule type (e.g., 'window_setback@1.0')") type: str = Field(..., description="Rule type (e.g., 'window_setback@1.0')")
enabled: bool = Field(default=True, description="Whether this rule is enabled")
targets: RuleTargets = Field(..., description="Target rooms and devices") targets: RuleTargets = Field(..., description="Target rooms and devices")
params: dict[str, Any] = Field(default_factory=dict, description="Rule-specific parameters") params: dict[str, Any] = Field(default_factory=dict, description="Rule-specific parameters")

View File

@@ -3,6 +3,7 @@
rules: rules:
- id: window_setback_esszimmer - id: window_setback_esszimmer
enabled: false
name: Fensterabsenkung Esszimmer name: Fensterabsenkung Esszimmer
type: window_setback@1.0 type: window_setback@1.0
targets: targets:
@@ -19,6 +20,7 @@ rules:
close_min_secs: 20 close_min_secs: 20
previous_target_ttl_secs: 86400 previous_target_ttl_secs: 86400
- id: window_setback_kueche - id: window_setback_kueche
enabled: false
name: Fensterabsenkung Küche name: Fensterabsenkung Küche
type: window_setback@1.0 type: window_setback@1.0
targets: targets:
@@ -37,6 +39,7 @@ rules:
close_min_secs: 20 close_min_secs: 20
previous_target_ttl_secs: 86400 previous_target_ttl_secs: 86400
- id: window_setback_patty - id: window_setback_patty
enabled: false
name: Fensterabsenkung Arbeitszimmer Patty name: Fensterabsenkung Arbeitszimmer Patty
type: window_setback@1.0 type: window_setback@1.0
targets: targets:
@@ -54,6 +57,7 @@ rules:
close_min_secs: 20 close_min_secs: 20
previous_target_ttl_secs: 86400 previous_target_ttl_secs: 86400
- id: window_setback_schlafzimmer - id: window_setback_schlafzimmer
enabled: false
name: Fensterabsenkung Schlafzimmer name: Fensterabsenkung Schlafzimmer
type: window_setback@1.0 type: window_setback@1.0
targets: targets:
@@ -69,6 +73,7 @@ rules:
close_min_secs: 20 close_min_secs: 20
previous_target_ttl_secs: 86400 previous_target_ttl_secs: 86400
- id: window_setback_wohnzimmer - id: window_setback_wohnzimmer
enabled: false
name: Fensterabsenkung Wohnzimmer name: Fensterabsenkung Wohnzimmer
type: window_setback@1.0 type: window_setback@1.0
targets: targets:
@@ -85,6 +90,7 @@ rules:
close_min_secs: 20 close_min_secs: 20
previous_target_ttl_secs: 86400 previous_target_ttl_secs: 86400
- id: window_setback_wolfgang - id: window_setback_wolfgang
enabled: true
name: Fensterabsenkung Arbeitszimmer Wolfgang name: Fensterabsenkung Arbeitszimmer Wolfgang
type: window_setback@1.0 type: window_setback@1.0
targets: targets: