Updated SmartPlug commands - set_power() and check_power()
This commit is contained in:
		
							parent
							
								
									c174e40f59
								
							
						
					
					
						commit
						652f52eb03
					
				
					 2 changed files with 22 additions and 5 deletions
				
			
		
							
								
								
									
										11
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
										
									
									
									
								
							|  | @ -44,7 +44,12 @@ Obtain sensor data from an A1: | ||||||
| data = devices[0].check_sensors() | data = devices[0].check_sensors() | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Set power state on an SP2/SP3 (0 for off, 1 for on): | Set power state on a SmartPlug SP2/SP3: | ||||||
|  | ``` | ||||||
|  | devices[0].set_power(True) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Check power state on a SmartPlug: | ||||||
|  | ``` | ||||||
|  | state = devices[0].check_power() | ||||||
| ``` | ``` | ||||||
| devices[0].set_power(1) |  | ||||||
| ``` |  | ||||||
|  | @ -181,11 +181,23 @@ class device: | ||||||
|     return response[0] |     return response[0] | ||||||
| 
 | 
 | ||||||
|   def set_power(self, state): |   def set_power(self, state): | ||||||
|     packet = bytearray(8) |     """Sets the power state of the smart plug.""" | ||||||
|  |     packet = bytearray(16) | ||||||
|     packet[0] = 2 |     packet[0] = 2 | ||||||
|     packet[4] = state |     packet[4] = 1 if state else 0 | ||||||
|     self.send_packet(0x6a, packet) |     self.send_packet(0x6a, packet) | ||||||
| 
 | 
 | ||||||
|  |   def check_power(self): | ||||||
|  |     """Returns the power state of the smart plug.""" | ||||||
|  |     packet = bytearray(16) | ||||||
|  |     packet[0] = 1 | ||||||
|  |     response = self.send_packet(0x6a, packet) | ||||||
|  |     err = ord(response[0x22]) | (ord(response[0x23]) << 8) | ||||||
|  |     if err == 0: | ||||||
|  |       aes = AES.new(str(self.key), AES.MODE_CBC, str(self.iv)) | ||||||
|  |       payload = aes.decrypt(str(response[0x38:])) | ||||||
|  |       return bool(ord(payload[0x4])) | ||||||
|  | 
 | ||||||
|   def send_data(self, data): |   def send_data(self, data): | ||||||
|     packet = bytearray([0x02, 0x00, 0x00, 0x00]) |     packet = bytearray([0x02, 0x00, 0x00, 0x00]) | ||||||
|     packet += data |     packet += data | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue