Browse Source

clean up, add webserver

master
Andreas Demmelbauer 5 years ago
parent
commit
ede23f7678
6 changed files with 36 additions and 144 deletions
  1. +1
    -1
      README.md
  2. +23
    -2
      discobert.py
  3. +0
    -104
      dmxtest.py
  4. +0
    -24
      mpd-test.py
  5. +0
    -13
      playmusic.py
  6. +12
    -0
      webtest.py

+ 1
- 1
README.md View File

@@ -21,7 +21,7 @@ The Setup is pretty custom. It includes:
Use Debian, install apt dependencies

```
sudo apt install git samba mpd libttspico-utils python3-pip python3-lirc python3-rpi.gpio
sudo apt install git samba mpd libttspico-utils python3-pip python3-lirc python3-rpi.gpio nginx
```
maybe also: `wiringpi espeak mpc`



+ 23
- 2
discobert.py View File

@@ -14,6 +14,22 @@ from pyudmx import pyudmx

import talkey

# HTTP Server
from twisted.web import server, resource
from twisted.internet import reactor

class Simple(resource.Resource):
isLeaf = True
def render_GET(self, request):
statustext = ""
if inUse:
statustext = "Disco in use!"
else:
statustext = "Ready to Disco!"
html = '<html><body style="min-height:100vh;display:flex;flex-grow:1;align-items:center;justify-content:center;"><div style="display:flex;font-size:10vw">%s</div></body></html>' % statustext
return html.encode('utf-8')


# GPIO
pin_kugel = 2
pin_sun = 4
@@ -323,6 +339,10 @@ tts = talkey.Talkey(
)


site = server.Site(Simple())
reactor.listenTCP(8080, site)
reactor.startRunning(False)


lirc.init("disco", "~/discobert/lircrc", blocking=False)

@@ -341,8 +361,6 @@ setSun('off')
print(timestamp(), "Ready!")




# Main event loop ...
while True:
sleep(0.25)
@@ -420,6 +438,9 @@ while True:
startTimeoutCountdown()
inUseBefore = inUse

# Webserver
reactor.iterate()


lirc.deinit() # Clean up lirc



+ 0
- 104
dmxtest.py View File

@@ -1,104 +0,0 @@
#
# example.py
# Copyright 2018 by Dave Hocker
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# See the LICENSE file for more details.
#
# Example of how to use pyudmx with a Thinpar 64 light
# http://venuelightingeffects.com/wp-content/uploads/manuals/Venue_Thinpar_64_Manual_HR.pdf
# 7 channel mode
# Channels 1-3 are RGB
# Channel 7 is the dimmer
#
# Requirements
# A virtual environment meeting the requirements defined in requirements.txt works best.
# Specifically the pyusb module must be installed.
#

from pyudmx import pyudmx
from time import sleep


def send_rgb(dev, dimmer, red, green, blue, effect):
"""
Send a set of RGB values to the light
"""
cv = [0 for v in range(0, 512)]
cv[0] = dimmer
cv[1] = red
cv[2] = green
cv[3] = blue
cv[4] = effect
print(cv)
print(type(cv))
sent = dev.send_multi_value(1, cv)
return sent


def main():
"""
How to control a DMX light through an Anyma USB controller
"""

# Channel value list for channels 1-512
cv = [0 for v in range(0, 512)]

# Create an instance of the DMX controller and open it
print("Opening DMX controller...")
dev = pyudmx.uDMXDevice()
# This will automagically find a single Anyma-type USB DMX controller
dev.open()
# For informational purpose, display what we know about the DMX controller
print(dev.Device)

# Send messages to the light changing it to red, then green, then blue
# This is the "hard way" to do it, but illustrates how it's done

print("Setting to red...")
cv[0] = 255 # dimmer to half value
cv[1] = 255 # red
sent = dev.send_multi_value(1, cv)
print("Set to red")
sleep(3.0)

print("Setting to green...")
cv[0] = 255 # dimmer to half value
cv[1] = 0 # red
cv[2] = 255 # green
sent = dev.send_multi_value(1, cv)
print("Set to green")
sleep(3.0)

print("Setting to blue...")
cv[0] = 255 # dimmer to half value
cv[1] = 0 # red
cv[2] = 0 # green
cv[3] = 255 # blue
sent = dev.send_multi_value(1, cv)
print("Set to blue")
sleep(3.0)

# Here's an easier way to do it

print("And, again the easier way")
send_rgb(dev, 255, 255, 0, 0, 0)
sleep(3.0)
send_rgb(dev, 255, 0, 255, 0, 0)
sleep(3.0)
send_rgb(dev, 255, 0, 0, 255, 0)
sleep(3.0)

print("Reset all channels and close..")
# Turns the light off
cv = [0 for v in range(0, 512)]
dev.send_multi_value(1, cv)
dev.close()


if __name__ == "__main__":
main()
print("Done")

+ 0
- 24
mpd-test.py View File

@@ -1,24 +0,0 @@
#!/usr/bin/env python3

import mpd
import os

client = mpd.MPDClient()
client.connect("localhost", 6600)

client.clear() # clear playlist
client.add('1') # add file/directory to playlist
client.shuffle() # shuffle playlist

client.repeat(1) # set playback mode repeat
client.random(1) # set playback mode random
client.setvol(80)# set volume
client.play() # play
#client.stop() # stop

for entry in client.lsinfo("1"):
print("%s" % entry)
for key, value in client.status().items():
print("%s: %s" % (key, value))

print(client.currentsong())

+ 0
- 13
playmusic.py View File

@@ -1,13 +0,0 @@
import os, inspect
import subprocess

musicdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))+"/music"+"/1"


for (path, dirnames, filenames) in os.walk(musicdir):
#folders.extend(os.path.join(path, name) for name in dirnames)
for name in filenames:
file = os.path.join(path, name)
#os.system("mpg123 " + "'" + file + "'")
#os.system("")
subprocess.run(["mpg123", file])

+ 12
- 0
webtest.py View File

@@ -0,0 +1,12 @@
from twisted.web import server, resource
from twisted.internet import reactor

class Simple(resource.Resource):
isLeaf = True
def render_GET(self, request):
request.setHeader("Content-Type", "text/html; charset=utf-8")
return "<html>Hello, world!</html>".encode('utf-8')

site = server.Site(Simple())
reactor.listenTCP(8081, site)
reactor.run()

Loading…
Cancel
Save