Teemu R. 
							
						 
					 
					
						
						
							
						
						773801cad5 
					 
					
						
						
							
							Add setting to change carpet clean mode ( #1458 )  
						
						... 
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	CI / Perform linting checks (3.13) (push) Has been cancelled 
				
			 
		
			
				
	CodeQL checks / Analyze (python) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Has been cancelled 
				
			 
		
		
	 
 
	 
						
						Add new setting to control carpet clean mode:
```
== Configuration ==
Carpet clean mode (carpet_clean_mode): Normal *Boost*
``` 
						
						
					 
					
						2025-01-15 19:35:41 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						d27697c50f 
					 
					
						
						
							
							Add ultra mode (fanspeed = 5) for vacuums ( #1459 )  
						
						
						
						
					 
					
						2025-01-15 19:11:10 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						b23019e748 
					 
					
						
						
							
							Enable dynamic hub child creation and deletion on update ( #1454 )  
						
						
						
						
					 
					
						2025-01-15 19:10:32 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						17356c10f1 
					 
					
						
						
							
							Add mop module ( #1456 )  
						
						... 
						
						
						
						Adds the following new features: a setting to control water level and a sensor if the mop is attached:
```
Mop water level (mop_waterlevel): *Disable* Low Medium High
Mop attached (mop_attached): True
``` 
						
						
					 
					
						2025-01-15 19:12:33 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						bc97c0794a 
					 
					
						
						
							
							Add setting to change clean count ( #1457 )  
						
						... 
						
						
						
						Adds a setting to change the number of times to clean:
```
== Configuration ==
Clean count (clean_count): 1 (range: 1-3)
``` 
						
						
					 
					
						2025-01-15 19:11:33 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						2ab42f59b3 
					 
					
						
						
							
							Fallback to is_low for batterysensor's battery_low ( #1420 )  
						
						... 
						
						
						
						Fallback to `is_low` if `at_low_battery` is not available. 
						
						
					 
					
						2025-01-15 14:33:05 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						1355e85f8e 
					 
					
						
						
							
							Expose current cleaning information ( #1453 )  
						
						... 
						
						
						
						Add new sensors to show the current cleaning state:
```
Cleaning area (clean_area): 0 0
Cleaning time (clean_time): 0:00:00
Cleaning progress (clean_progress): 100 %
``` 
						
						
					 
					
						2025-01-15 14:20:19 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						2542516009 
					 
					
						
						
							
							Add vacuum speaker controls ( #1332 )  
						
						... 
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	CI / Perform linting checks (3.13) (push) Waiting to run 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CodeQL checks / Analyze (python) (push) Waiting to run 
				
			 
		
		
	 
 
	 
						
						Implements `speaker` and adds the following features:
* `volume`  to control the speaker volume
* `locate` to play "I'm here sound" 
						
						
					 
					
						2025-01-14 16:48:34 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						3c98efb015 
					 
					
						
						
							
							Implement vacuum dustbin module (dust_bucket) ( #1423 )  
						
						... 
						
						
						
						Initial implementation for dustbin auto-emptying.
New features:
- `dustbin_empty` action to empty the dustbin immediately
- `dustbin_autocollection_enabled` to toggle the auto collection
- `dustbin_mode` to choose how often the auto collection is performed 
						
						
					 
					
						2025-01-14 17:30:18 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						1be87674bf 
					 
					
						
						
							
							Initial support for vacuums (clean module) ( #944 )  
						
						... 
						
						
						
						Adds support for clean module:
- Show current vacuum state
- Start cleaning (all rooms)
- Return to dock
- Pausing & unpausing
- Controlling the fan speed
---------
Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com > 
						
						
					 
					
						2025-01-14 15:35:09 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						a211cc0af5 
					 
					
						
						
							
							Update hub children on first update and delay subsequent updates ( #1438 )  
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	CI / Perform linting checks (3.13) (push) Waiting to run 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CodeQL checks / Analyze (python) (push) Waiting to run 
				
			 
		
		
	 
 
	 
						
						
					 
					
						2025-01-13 17:19:40 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						fe88b52e19 
					 
					
						
						
							
							Fallback to other module data on get_energy_usage errors ( #1245 )  
						
						... 
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	CI / Perform linting checks (3.13) (push) Waiting to run 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CodeQL checks / Analyze (python) (push) Waiting to run 
				
			 
		
		
	 
 
	 
						
						- The `get_energy_usage` query can fail if the device time is not set because the response includes the device time.
- Make `get_energy_usage` an optional query response so the energy module can fall back to getting the power from `get_emeter_data` or `get_current_power` on error.
- Devices on `energy_monitoring` version 1 still fail as they have no additional queries to fall back to. 
						
						
					 
					
						2024-12-20 08:53:07 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						c439530f93 
					 
					
						
						
							
							Add bare bones homekit modules smart and smartcam devices ( #1370 )  
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	CI / Perform linting checks (3.13) (push) Has been cancelled 
				
			 
		
			
				
	CodeQL checks / Analyze (python) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Has been cancelled 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Has been cancelled 
				
			 
		
		
	 
 
	 
						
						
					 
					
						2024-12-14 13:34:58 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						2ca6d3ebe9 
					 
					
						
						
							
							Add bare-bones matter modules to smart and smartcam devices ( #1371 )  
						
						
						
						
					 
					
						2024-12-13 19:45:38 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						7709bb967f 
					 
					
						
						
							
							Update cli, light modules, and docs to use FeatureAttributes ( #1364 )  
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	CI / Perform linting checks (3.13) (push) Waiting to run 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CodeQL checks / Analyze (python) (push) Waiting to run 
				
			 
		
		
	 
 
	 
						
						
					 
					
						2024-12-11 15:53:35 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						032cd5d2cc 
					 
					
						
						
							
							Improve overheat reporting ( #1335 )  
						
						... 
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	CI / Perform linting checks (3.13) (push) Waiting to run 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CodeQL checks / Analyze (python) (push) Waiting to run 
				
			 
		
		
	 
 
	 
						
						Different devices and different firmwares report overheated status in
different ways.
Some devices indicate support for `overheat_protect` component, but
there are devices that report `overheat_status` even when it is not
listed.
Some other devices use `overheated` boolean that was already previously
supported, but this PR adds support for much more devices that use
`overheat_status` for reporting.
The "overheated" feature is moved into its own module, and uses either
of the ways to report this information.
This will also rename `REQUIRED_KEY_ON_PARENT` to `SYSINFO_LOOKUP_KEYS`
and change its logic to check if any of the keys in the list are found
in the sysinfo.
```
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheat_protect' -c|wc -l
15
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheated' -c|wc -l
38
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheat_status' -c|wc -l
20
```
---------
Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com > 
						
						
					 
					
						2024-12-11 01:01:36 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						0c755f7120 
					 
					
						
						
							
							Include duration when disabling smooth transition on/off ( #1313 )  
						
						... 
						
						
						
						Fixes  #1309  
					
						2024-11-26 10:39:31 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						69e08c2385 
					 
					
						
						
							
							Expose energy command to cli ( #1307 )  
						
						... 
						
						
						
						Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com > 
						
						
					 
					
						2024-11-26 09:42:55 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						3dfada7575 
					 
					
						
						
							
							Add common Thermostat module ( #977 )  
						
						
						
						
					 
					
						2024-11-26 09:37:15 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						cb4e28394d 
					 
					
						
						
							
							Update docs for the new module attributes has/get feature ( #1301 )  
						
						
						
						
					 
					
						2024-11-26 08:38:20 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						37cc4da7b6 
					 
					
						
						
							
							Allow getting Annotated features from modules ( #1018 )  
						
						... 
						
						
						
						Co-authored-by: Teemu R. <tpr@iki.fi > 
						
						
					 
					
						2024-11-22 07:52:23 +00:00 
						 
				 
			
				
					
						
							
							
								Ryan Nitcher 
							
						 
					 
					
						
						
							
						
						dab64e5d48 
					 
					
						
						
							
							Add voltage and current monitoring to smart Devices ( #1281 )  
						
						
						
						
					 
					
						2024-11-20 18:18:30 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						df48c21900 
					 
					
						
						
							
							Migrate triggerlogs to mashumaru ( #1277 )  
						
						
						
						
					 
					
						2024-11-20 13:21:08 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						999e84d2de 
					 
					
						
						
							
							Migrate smart firmware module to mashumaro ( #1276 )  
						
						
						
						
					 
					
						2024-11-20 11:54:13 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						a01247d48f 
					 
					
						
						
							
							Remove support for python <3.11 ( #1273 )  
						
						... 
						
						
						
						Python 3.11 ships with latest Debian Bookworm. 
pypy is not that widely used with this library based on statistics. It could be added back when pypy supports python 3.11. 
						
						
					 
					
						2024-11-18 18:46:36 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						66eb17057e 
					 
					
						
						
							
							Enable ruff check for ANN ( #1139 )  
						
						
						
						
					 
					
						2024-11-10 18:55:13 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						0360107e3f 
					 
					
						
						
							
							Add childprotection module ( #1141 )  
						
						... 
						
						
						
						When turned on, rotating the thermostat will not change the target
temperature. 
						
						
					 
					
						2024-11-01 20:46:36 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						70c96b5a5d 
					 
					
						
						
							
							Initial trigger logs implementation ( #900 )  
						
						... 
						
						
						
						Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com > 
						
						
					 
					
						2024-11-01 15:36:09 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						673a32258f 
					 
					
						
						
							
							Make HSV NamedTuple creation more efficient ( #1211 )  
						
						
						
						
					 
					
						2024-10-29 17:14:52 +00:00 
						 
				 
			
				
					
						
							
							
								Fulch36 
							
						 
					 
					
						
						
							
						
						8b95b7d557 
					 
					
						
						
							
							Fallback to get_current_power if get_energy_usage does not provide current_power ( #1186 )  
						
						
						
						
					 
					
						2024-10-25 19:24:43 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						cd0a74ca96 
					 
					
						
						
							
							Improve supported module checks for hub children ( #1188 )  
						
						... 
						
						
						
						No devices in `fixtures/smart/child` support the `get_device_time` or
`get_device_usage` methods so this PR tests for whether the device is a
hub child and marks those modules/methods as not supported. This
prevents features being erroneously created on child devices.
It also moves the logic for getting the time from the parent module
behind getting it from the child module which was masking the creation
of these unsupported modules. 
						
						
					 
					
						2024-10-23 17:17:27 +02:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						8a17752ae2 
					 
					
						
						
							
							Add waterleak alert timestamp ( #1162 )  
						
						... 
						
						
						
						The T300 reports the timestamp of the last alarm, this exposes it to
consumers. 
						
						
					 
					
						2024-10-18 13:18:12 +02:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						7fd8c14c1f 
					 
					
						
						
							
							Create common Time module and add time set cli command ( #1157 )  
						
						
						
						
					 
					
						2024-10-15 08:59:25 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						7c1686d3ae 
					 
					
						
						
							
							Cache zoneinfo for smart devices ( #1156 )  
						
						
						
						
					 
					
						2024-10-08 12:21:01 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						9641edcbc0 
					 
					
						
						
							
							Make iot time timezone aware ( #1147 )  
						
						... 
						
						
						
						Also makes on_since for iot devices use device time.
Changes the return value for device.timezone to be tzinfo instead of a dict. 
						
						
					 
					
						2024-10-08 08:16:51 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						d897503b58 
					 
					
						
						
							
							Move feature initialization from __init__ to _initialize_features ( #1140 )  
						
						
						
						
					 
					
						2024-09-28 20:14:31 +02:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						2a89e58ae0 
					 
					
						
						
							
							Add missing type hints to alarm module ( #1111 )  
						
						
						
						
					 
					
						2024-09-10 17:20:00 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						520b9d7a38 
					 
					
						
						
							
							Disable automatic updating of latest firmware ( #1103 )  
						
						... 
						
						
						
						To resolve issues with the calls to the tplink cloud to get the latest firmware.
Disables the automatic calling of `get_latest_fw` and requires firmware update checks to be triggered manually. 
						
						
					 
					
						2024-08-30 18:01:54 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						6a86ffbbba 
					 
					
						
						
							
							Add flake8-pytest-style (PT) for ruff ( #1105 )  
						
						... 
						
						
						
						This will catch common issues with pytest code.
* Use `match` when using `pytest.raises()` for base exception types like
`TypeError` or `ValueError`
* Use tuples for `parametrize()`
* Enforces `pytest.raises()` to contain simple statements, using `noqa`
to skip this on some cases for now.
* Fixes incorrect exception type (valueerror instead of typeerror) for
iotdimmer.
* Adds check valid types for `iotbulb.set_hsv` and `color` smart module.
* Consolidate exception messages for common interface modules. 
						
						
					 
					
						2024-08-30 17:30:07 +02:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						3e43781bb2 
					 
					
						
						
							
							Add flake8-logging (LOG) and flake8-logging-format (G) for ruff ( #1104 )  
						
						... 
						
						
						
						Enables rules LOG (flake8-logging) and G (flake8-logging-format) for
ruff. This will catch eager log message formatting, among other similar
issues. 
						
						
					 
					
						2024-08-30 16:13:14 +02:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						31ec27c1c8 
					 
					
						
						
							
							Fix iot light effect brightness ( #1092 )  
						
						... 
						
						
						
						Fixes issue where the brightness of the `iot` light effect is set properly
on the light effect but read back incorrectly from the light. 
						
						
					 
					
						2024-07-31 15:58:48 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						cb7e904d30 
					 
					
						
						
							
							Enable setting brightness with color temp for smart devices ( #1091 )  
						
						
						
						
					 
					
						2024-07-31 15:52:27 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						7bba9926ed 
					 
					
						
						
							
							Allow erroring modules to recover ( #1080 )  
						
						... 
						
						
						
						Re-query failed modules after some delay instead of immediately disabling them.
Changes to features so they can still be created when modules are erroring. 
						
						
					 
					
						2024-07-30 19:23:07 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						055bbcc0c9 
					 
					
						
						
							
							Add support for T100 motion sensor ( #1079 )  
						
						... 
						
						
						
						Add support for T100 motion sensor.
Thanks to @DarthSonic for the fixture file! 
						
						
					 
					
						2024-07-24 15:48:33 +02:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						58afeb28a1 
					 
					
						
						
							
							Update smart request parameter handling ( #1061 )  
						
						... 
						
						
						
						Changes to the smart request handling:
- Do not send params if null
- Drop the requestId parameter
- get_preset_rules doesn't send parameters for preset component version less than 3
- get_led_info no longer sends the wrong parameters
- get_on_off_gradually_info no longer sends an empty {} parameter 
						
						
					 
					
						2024-07-23 19:02:20 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						e17ca21a83 
					 
					
						
						
							
							Only refresh smart LightEffect module daily ( #1064 )  
						
						... 
						
						
						
						Fixes an issue with L530 bulbs on HW version 1.0 whereby the light effect
query causes the device to crash with JSON_ENCODE_FAIL_ERROR after
approximately 60 calls. 
						
						
					 
					
						2024-07-17 08:28:11 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B 
							
						 
					 
					
						
						
							
						
						7fd5c213e6 
					 
					
						
						
							
							Defer module updates for less volatile modules ( #1052 )  
						
						... 
						
						
						
						Addresses stability issues on older hw device versions
 - Handles module timeout errors better by querying modules individually on errors and disabling problematic modules like Firmware that go out to the internet to get updates.
- Addresses an issue with the Led module on P100 hardware version 1.0 which appears to have a memory leak and will cause the device to crash after approximately 500 calls.
- Delays updates of modules that do not have regular changes like LightPreset and LightEffect and enables them to be updated on the next update cycle only if required values have changed. 
						
						
					 
					
						2024-07-11 16:21:59 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R 
							
						 
					 
					
						
						
							
						
						a044063526 
					 
					
						
						
							
							Use first known thermostat state as main state ( #1054 )  
						
						... 
						
						
						
						Instead of trying to use the first state when multiple are reported,
iterate over the known states and pick the first matching.
This will fix an issue where the device reports extra states (like
`low_battery`) while having a known mode active.
Related to https://github.com/home-assistant/core/issues/121335  
						
						
					 
					
						2024-07-11 15:11:50 +02:00 
						 
				 
			
				
					
						
							
							
								Steven B 
							
						 
					 
					
						
						
							
						
						7888f4904a 
					 
					
						
						
							
							Fix light preset module when list contains lighting effects ( #1048 )  
						
						... 
						
						
						
						Fixes the residual issues with the light preset module not handling
unexpected `lighting_effect` items in the presets list.
Completes the fixes started with PR
https://github.com/python-kasa/python-kasa/pull/1043  to fix
https://github.com/python-kasa/python-kasa/issues/1040 , [HA
#121115 ](https://github.com/home-assistant/core/issues/121115 ) and [HA
#121119 ](https://github.com/home-assistant/core/issues/121119 )
With this PR affected devices will no longer have the light preset
functionality disabled. As this is a new feature this does not warrant a
hotfix so will go into the next release.
Updated fixture for testing thanks to @szssamuel, many thanks! 
						
						
					 
					
						2024-07-04 17:22:47 +02:00 
						 
				 
			
				
					
						
							
							
								Steven B 
							
						 
					 
					
						
						
							
						
						905a14895d 
					 
					
						
						
							
							Handle module errors more robustly and add query params to light preset and transition ( #1036 )  
						
						... 
						
						
						
						Ensures that all modules try to access their data in `_post_update_hook` in a safe manner and disable themselves if there's an error.
Also adds parameters to get_preset_rules and get_on_off_gradually_info to fix issues with recent firmware updates.
[#1033 ](https://github.com/python-kasa/python-kasa/issues/1033 ) 
						
						
					 
					
						2024-07-04 08:02:50 +01:00