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)