Skip to content

Instantly share code, notes, and snippets.

@mrwulff
Last active October 15, 2023 21:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrwulff/b6e56afb00d2a4432dee413e866af73e to your computer and use it in GitHub Desktop.
Save mrwulff/b6e56afb00d2a4432dee413e866af73e to your computer and use it in GitHub Desktop.
openrgb homeassistant hack
switch:
- platform: rest
name: 'Computer Blue'
resource: http://192.168.0.191:8000/
body_on: 'blue'
body_off: 'off'
- platform: rest
name: 'Computer Green'
resource: http://192.168.0.191:8000/
body_on: 'green'
body_off: 'off'
- platform: rest
name: 'Compute Red'
resource: http://192.168.0.191:8000/
body_on: 'red'
body_off: 'off'
- platform: rest
name: 'Compute Off'
resource: http://192.168.0.191:8000/
body_on: 'off2'
body_off: 'off'
- platform: rest
name: 'Compute Rainbow'
resource: http://192.168.0.191:8000/
body_on: 'rainbow'
body_off: 'off'
#!/usr/bin/env python3
"""
Very simple HTTP server in python for logging requests
Usage::
./server.py [<port>]
"""
from http.server import BaseHTTPRequestHandler, HTTPServer
import time
import sys, os
sys.path.append(os.path.realpath('.'))
from openrgb import OpenRGB
seq = [(0, 0, 250),(250,0,0)]
blue = [(0, 0, 250)]
red=[(255,0,0)]
green=[(0,255,0)]
rainbow=[(0,255,0)]
off=[(0,0,0)]
client = OpenRGB('localhost', 6742)
def rain():
seq = [(0, 0, 250), (250, 0, 0), (0, 250, 0), (0, 255, 250), (250, 255, 0), (255, 0, 255)]
return seq
class S(BaseHTTPRequestHandler):
def _set_response(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
self._set_response()
self.wfile.write("GET request for {}".format(self.path).encode('utf-8'))
def do_POST(self):
content_length = int(self.headers['Content-Length']) # <--- Gets the size of data
post_data = self.rfile.read(content_length) # <--- Gets the data itself
qq=(post_data.decode('utf-8'))
print (qq)
print (red)
seq=qq
#seq=[(255,0,0)]
print (seq)
if seq=='green':
finalcolor=green
if seq=='red':
finalcolor=red
if seq=='blue':
finalcolor=blue
if seq=='off2':
finalcolor=off
if seq=='rainbow':
finalcolor=rain()
print (finalcolor)
for device in client.devices():
for mode in device.modes:
if mode.name == 'Static':
mode.active()
break
device.set(finalcolor, interpolate=True)
self._set_response()
self.wfile.write("POST request for {}".format(self.path).encode('utf-8'))
def run(server_class=HTTPServer, handler_class=S, port=8000):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
try:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
if __name__ == '__main__':
from sys import argv
if len(argv) == 2:
run(port=int(argv[1]))
else:
run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment