2019-05-03 22:14:07 +02:00

34 lines
1.3 KiB
Python

from random import randint
import time
import socket
class UDPListner:
lastping = time.time()-1
def __init__(self, rgbStrip, remoteaddr):
self.rgbStrip = rgbStrip
self.remoteaddr = remoteaddr
self.localaddr = ("",randint(6000,7000))
self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
self.socket.settimeout(.002)
def loop(self):
#print(time.time() - self.lastping)
if time.time() - self.lastping > .5 :
self.socket.sendto("s:ping".encode(), self.remoteaddr)
self.lastping = time.time()
try:
data, address = self.socket.recvfrom(4096)
data = data.decode('UTF-8')
#print(data[0],data[1])
if data:
if data[0] is "s" and data[1] is "r":
self.socket.sendto(("r:1:"+self.rgbStrip.STRIP_NAME+":1").encode(), address)
if data[0] is "d":
self.rgbStrip.RGB(self.getRgbVal(data,1),self.getRgbVal(data,4),self.getRgbVal(data,7))
except socket.timeout:
pass
def getRgbVal(self,data,pos):
return 100*int(data[pos]) + 10*int(data[pos+1]) + int(data[pos+2])