97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from rgbUtils.debug import debug
 | |
| import uuid
 | |
| 
 | |
| class RGBStrip:
 | |
|     # name = the name off the the strip, defined by the client connecting to the server
 | |
|     # uid = unique id, if the strip sends one, use this (later maybe, or never, whatever)
 | |
|     # lenght = the lenght off the strip, for future use of eg WS2812b strips, will be 1 by default
 | |
|     def __init__(self,name,onValuesUpdateHandler,lenght=1):
 | |
|         # UID should be updateable later, or not?
 | |
|         # when updating, be sure it does not exist
 | |
|         self.STRIP_UID = str(uuid.uuid4())
 | |
|         self.STRIP_NAME = name
 | |
|         self.STRIP_LENGHT = lenght
 | |
| 
 | |
|         self.onValuesUpdateHandler = onValuesUpdateHandler
 | |
| 
 | |
|         self.red = [0]*self.STRIP_LENGHT
 | |
|         self.green = [0]*self.STRIP_LENGHT
 | |
|         self.blue = [0]*self.STRIP_LENGHT
 | |
|     
 | |
|     def RGB(self,red,green,blue,brightness = 100):
 | |
|         
 | |
|         if(red < 0):
 | |
|             red = 0
 | |
|         if(red > 255):
 | |
|             red = 255
 | |
|         
 | |
|         if(green < 0):
 | |
|             green = 0
 | |
|         if(green > 255):
 | |
|             green = 255
 | |
|         
 | |
|         if(blue < 0):
 | |
|             blue = 0
 | |
|         if(blue > 255):
 | |
|             blue = 255
 | |
|         
 | |
|         if(brightness < 0):
 | |
|             brightness = 0
 | |
|         if(brightness > 100):
 | |
|             brightness = 100
 | |
|             
 | |
|         for x in range(self.STRIP_LENGHT):
 | |
|             self.red[x] = int(red/100*brightness)
 | |
|             self.green[x] = int(green/100*brightness)
 | |
|             self.blue[x] = int(blue/100*brightness)
 | |
|         
 | |
|         self.show()
 | |
|         
 | |
|     def WS2812b(self,id,red,green,blue,brightness=100):
 | |
|         if id < 0 and id > self.STRIP_LENGHT:
 | |
|             print(self.STRIP_NAME," is max ",self.STRIP_LENGHT," Pixels long!")
 | |
|             return
 | |
|         else:
 | |
|             if(red < 0):
 | |
|                 red = 0
 | |
|             if(red > 255):
 | |
|                 red = 255
 | |
|             
 | |
|             if(green < 0):
 | |
|                 green = 0
 | |
|             if(green > 255):
 | |
|                 green = 255
 | |
|             
 | |
|             if(blue < 0):
 | |
|                 blue = 0
 | |
|             if(blue > 255):
 | |
|                 blue = 255
 | |
|             
 | |
|             if(brightness < 0):
 | |
|                 brightness = 0
 | |
|             if(brightness > 100):
 | |
|                 brightness = 100
 | |
|                 
 | |
|             self.red[id] = int(red/100*brightness)
 | |
|             self.green[id] = int(green/100*brightness)
 | |
|             self.blue[id] = int(blue/100*brightness)
 | |
| 
 | |
|     def show(self):
 | |
|         self.onValuesUpdateHandler(self)
 | |
|             
 | |
|     
 | |
|     def off(self):
 | |
|         for x in range(self.STRIP_LENGHT):
 | |
|             self.red[x] = 0
 | |
|             self.green[x] = 0
 | |
|             self.blue[x] = 0
 | |
|         
 | |
|         self.onValuesUpdateHandler(self)
 | |
| 
 | |
|     def getData(self):
 | |
|         self.hasNewData = False
 | |
|         return [self.red,self.green,self.blue]
 | |
| 
 | |
| 
 | |
| 
 |