Section 1 (python)
import datetime
import socket
import struct
import sys
import time
import pyhue
MUMBLE_HOST = "mumble.example.com"
MUMBLE_PORT = 9090
# types are entirely guesswork
HUE_HOST = "hue.local"
HUE_USERNAME = "huehue"
HUE_LIGHT_NUMBER = 1
HUE_COLOR_ONLINE = "green"
HUE_COLOR_EMPTY = "red"
CHECK_DELAY = 1
def users_online(self):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(1)
buf = struct.pack(">iQ", 0, datetime.datetime.now().microsecond)
s.sendto(buf, (MUMBLE_HOST, MUMBLE_PORT))
try:
data, addr = s.recvfrom(1024)
except socket.timeout:
return 0
r = struct.unpack(">bbbbQiii", data)
# r[0,1,2,3] = version,
# r[4] = ts, r[5] = users,
# r[6] = max users, r[7] = bandwidth
return r[5]
def set_hue(self, hue):
bridge = pyhue.Bridge(HUE_HOST, HUE_USERNAME)
light = bridge.lights[HUE_LIGHT_NUMBER]
if light.on:
light.hue = hue
if __name__ == '__main__':
sys.setdefaultencoding('utf8')
while True:
if users_online() > 0:
set_hue(HUE_COLOR_ONLINE)
else:
set_hue(HUE_COLOR_EMPTY)
time.sleep(CHECK_DELAY)
Raw · Download
Pastee