Browse Source
			
			
			Merge pull request #322 from chehrlic/chris_vz
			
				RPI: some more changes to properly throw and catch exceptions
			
			
				pull/343/head
			
			
		 
		
			
				
					
						 lumapu
					
					3 years ago
						lumapu
					
					3 years ago
					
						
							committed by
							
								 GitHub
								GitHub
							
						 
					
				 
				
			 
		 
		
			
				
					
					No known key found for this signature in database
					
						
							GPG Key ID: 4AEE18F83AFDEB23
						
					
				
			
		
		
		
	
		
			
				 3 changed files with 
16 additions and 
7 deletions
			 
			
		 
		
			
				- 
					
					
					 
					tools/rpi/hoymiles/__init__.py
				
- 
					
					
					 
					tools/rpi/hoymiles/__main__.py
				
- 
					
					
					 
					tools/rpi/hoymiles/outputs.py
				
				
				
					
						
							
								
									
	
		
			
				
					|  |  | @ -598,6 +598,9 @@ class InverterTransaction: | 
			
		
	
		
			
				
					|  |  |  |                 wait = True | 
			
		
	
		
			
				
					|  |  |  |         except TimeoutError: | 
			
		
	
		
			
				
					|  |  |  |             pass | 
			
		
	
		
			
				
					|  |  |  |         except BufferError as e: | 
			
		
	
		
			
				
					|  |  |  |             print(f'Buffer error {e}') | 
			
		
	
		
			
				
					|  |  |  |             pass | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         return wait | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | 
 | 
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					|  |  | @ -86,13 +86,13 @@ def poll_inverter(inverter, do_init, retries=4): | 
			
		
	
		
			
				
					|  |  |  |                         dst=inverter_ser | 
			
		
	
		
			
				
					|  |  |  |                         ))) | 
			
		
	
		
			
				
					|  |  |  |             response = None | 
			
		
	
		
			
				
					|  |  |  |             try: | 
			
		
	
		
			
				
					|  |  |  |                 while com.rxtx(): | 
			
		
	
		
			
				
					|  |  |  |             while com.rxtx(): | 
			
		
	
		
			
				
					|  |  |  |                 try: | 
			
		
	
		
			
				
					|  |  |  |                     response = com.get_payload() | 
			
		
	
		
			
				
					|  |  |  |                     payload_ttl = 0 | 
			
		
	
		
			
				
					|  |  |  |             except Exception as e_all: | 
			
		
	
		
			
				
					|  |  |  |                 print(f'Error while retrieving data: {e_all}') | 
			
		
	
		
			
				
					|  |  |  |                 pass | 
			
		
	
		
			
				
					|  |  |  |                 except Exception as e_all: | 
			
		
	
		
			
				
					|  |  |  |                     print(f'Error while retrieving data: {e_all}') | 
			
		
	
		
			
				
					|  |  |  |                     pass | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         # Handle the response data if any | 
			
		
	
		
			
				
					|  |  |  |         if response: | 
			
		
	
	
		
			
				
					|  |  | @ -324,3 +324,6 @@ if __name__ == '__main__': | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     except KeyboardInterrupt: | 
			
		
	
		
			
				
					|  |  |  |         sys.exit() | 
			
		
	
		
			
				
					|  |  |  |     except Exception as e: | 
			
		
	
		
			
				
					|  |  |  |         print ('Exception catched: %s' % e) | 
			
		
	
		
			
				
					|  |  |  |         raise | 
			
		
	
	
		
			
				
					|  |  | 
 | 
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					|  |  | @ -265,7 +265,7 @@ class VzInverterOutput: | 
			
		
	
		
			
				
					|  |  |  |             r = self.session.get(url) | 
			
		
	
		
			
				
					|  |  |  |             if r.status_code != 200: | 
			
		
	
		
			
				
					|  |  |  |                 raise ValueError('Could not send request (%s)' % url) | 
			
		
	
		
			
				
					|  |  |  |         except ConnectionError as e: | 
			
		
	
		
			
				
					|  |  |  |         except requests.exceptions.ConnectionError as e: | 
			
		
	
		
			
				
					|  |  |  |             raise ValueError('Could not send request (%s)' % e) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | class VolkszaehlerOutputPlugin(OutputPluginFactory): | 
			
		
	
	
		
			
				
					|  |  | @ -300,4 +300,7 @@ class VolkszaehlerOutputPlugin(OutputPluginFactory): | 
			
		
	
		
			
				
					|  |  |  |         serial = data["inverter_ser"] | 
			
		
	
		
			
				
					|  |  |  |         if serial in self.inverters: | 
			
		
	
		
			
				
					|  |  |  |             output = self.inverters[serial] | 
			
		
	
		
			
				
					|  |  |  |             output.store_status(data, self.session) | 
			
		
	
		
			
				
					|  |  |  |             try: | 
			
		
	
		
			
				
					|  |  |  |                 output.store_status(data, self.session) | 
			
		
	
		
			
				
					|  |  |  |             except ValueError as e: | 
			
		
	
		
			
				
					|  |  |  |                 print('Could not send data to volkszaehler instance: %s' % e) | 
			
		
	
	
		
			
				
					|  |  | 
 |