Paste 8LYqU

Submitted on 17 May 2014 at 12:00 UTC
133 views

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