Steven B. 
							
						 
					 
					
						
						
							
						
						8418ba3eef 
					 
					
						
						
							
							Treat smartcam 500 errors after handshake as retryable ( #1395 )  
						
						... 
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	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 
				
			 
		
		
	 
 
	 
						
						`smartcam` devices can respond with 500 if another session is created from the same host 
						
						
					 
					
						2024-12-20 19:23:18 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						93ca3ad2e1 
					 
					
						
						
							
							Handle smartcam device blocked response ( #1393 )  
						
						... 
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	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 
				
			 
		
		
	 
 
	 
						
						Devices that have failed authentication multiple times due to bad credentials go into a blocked state for 30 mins.
Handle that as a different error type instead of treating it as a normal `AuthenticationError`. 
						
						
					 
					
						2024-12-20 14:55:15 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						e9109447a7 
					 
					
						
						
							
							Add smartcam modules to package inits ( #1376 )  
						
						
						
						
					 
					
						2024-12-16 13:20:26 +01:00 
						 
				 
			
				
					
						
							
							
								Puxtril 
							
						 
					 
					
						
						
							
						
						cb89342be1 
					 
					
						
						
							
							Add LinkieTransportV2 and basic IOT.IPCAMERA support ( #1270 )  
						
						... 
						
						
						
						Add LinkieTransportV2 transport used by kasa cameras and a basic
implementation for IOT.IPCAMERA (kasacam) devices.
---------
Co-authored-by: Zach Price <pricezt@ornl.gov >
Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com >
Co-authored-by: Teemu Rytilahti <tpr@iki.fi > 
						
						
					 
					
						2024-12-07 00:06:58 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						9966c6094a 
					 
					
						
						
							
							Add ssltransport for robovacs ( #943 )  
						
						... 
						
						
						
						This PR implements a clear-text, token-based transport protocol seen on
RV30 Plus (#937 ).
- Client sends `{"username": "email@example.com ", "password":
md5(password)}` and gets back a token in the response
- Rest of the communications are done with POST at `/app?token=<token>`
---------
Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com > 
						
						
					 
					
						2024-12-01 18:06:48 +01: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 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						410c3d2623 
					 
					
						
						
							
							Fix deprecated SSLContext() usage ( #1271 )  
						
						
						
						
					 
					
						2024-11-18 12:49:44 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						6213b90f62 
					 
					
						
						
							
							Move TAPO smartcamera out of experimental package ( #1255 )  
						
						... 
						
						
						
						Co-authored-by: Teemu R. <tpr@iki.fi > 
						
						
					 
					
						2024-11-13 19:59:42 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						e55731c110 
					 
					
						
						
							
							Move protocol modules into protocols package ( #1254 )  
						
						
						
						
					 
					
						2024-11-13 17:50:21 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						668ba748c5 
					 
					
						
						
							
							Move transports into their own package ( #1247 )  
						
						... 
						
						
						
						This moves all transport implementations into a new `transports` package
for cleaner main package & easier to understand project structure. 
						
						
					 
					
						2024-11-12 14:40:44 +01:00