mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	[component] Fix `is_ready` flag when loop disabled (#9501)
				
					
				
			Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
		| @@ -40,6 +40,13 @@ loop_test_component: | ||||
|     - id: isr_test | ||||
|       name: "isr_test" | ||||
|  | ||||
|   # Update test component to test component.update when loop is disabled | ||||
|   update_components: | ||||
|     - id: update_test_component | ||||
|       name: "update_test" | ||||
|       disable_loop_after: 3  # Disable loop after 3 iterations | ||||
|       update_interval: 0.1s  # Fast update interval for testing | ||||
|  | ||||
| # Interval to re-enable the self_disable_10 component after some time | ||||
| interval: | ||||
|   - interval: 0.5s | ||||
| @@ -51,3 +58,28 @@ interval: | ||||
|             - logger.log: "Re-enabling self_disable_10 via service" | ||||
|             - loop_test_component.enable: | ||||
|                 id: self_disable_10 | ||||
|  | ||||
|   # Test component.update on a component with disabled loop | ||||
|   - interval: 0.1s | ||||
|     then: | ||||
|       - lambda: |- | ||||
|           static bool manual_update_done = false; | ||||
|           if (!manual_update_done && | ||||
|               id(update_test_component).get_loop_count() == 3 && | ||||
|               id(update_test_component).get_update_count() >= 3) { | ||||
|             ESP_LOGI("main", "Manually calling component.update on update_test_component with disabled loop"); | ||||
|             manual_update_done = true; | ||||
|           } | ||||
|       - if: | ||||
|           condition: | ||||
|             lambda: |- | ||||
|               static bool manual_update_triggered = false; | ||||
|               if (!manual_update_triggered && | ||||
|                   id(update_test_component).get_loop_count() == 3 && | ||||
|                   id(update_test_component).get_update_count() >= 3) { | ||||
|                 manual_update_triggered = true; | ||||
|                 return true; | ||||
|               } | ||||
|               return false; | ||||
|           then: | ||||
|             - component.update: update_test_component | ||||
|   | ||||
		Reference in New Issue
	
	Block a user