Browse Source

more changes

master
Andreas Demmelbauer 5 years ago
parent
commit
74c65c0463
1 changed files with 160 additions and 37 deletions
  1. +160
    -37
      discobert.py

+ 160
- 37
discobert.py View File

@@ -11,11 +11,15 @@ import mpd

from pyudmx import pyudmx

import talkey

# GPIO
pin_kugel = 2
pin_sun = 4
pin_pir = 0



dmxScenes = {
"fadecolors":[255,255,255,255,255,192],
"plain-red":[255,255,0,0,0,0],
@@ -26,10 +30,10 @@ dmxScenes = {

dmxUserScenes = [
[255,255,255,255,255,192],
[255,0,180,180,0,0],
[255,255,0,0,0,0],
[255,0,255,0,0,0],
[255,0,0,255,0,0],
[255,0,180,180,0,0],
[190,255,255,255,0,0],
[120,0,255,255,0,224]
]
@@ -42,9 +46,14 @@ def setDmxScene(scene):
dev.send_multi_value(1, cv)


def setUserDmxScene(scene):
def setUserDmxScene():
global dmxScene
if dmxScene < len(dmxUserScenes)-1:
dmxScene += 1
else:
dmxScene = 0
cv = [0 for v in range(0, 512)]
for index, val in enumerate(dmxUserScenes[scene]):
for index, val in enumerate(dmxUserScenes[dmxScene]):
cv[index] = val
dev.send_multi_value(1, cv)

@@ -64,37 +73,142 @@ def setSun(state):



def startMusic(playlist):
client.clear() # clear playlist
def startMusic(playlist, single=False, shuffle=True, repeat=True):
try:
client.clear() # clear playlist
except Exception:
client.connect("localhost", 6600)
client.clear() # clear playlist

client.add(playlist) # add file/directory to playlist
client.shuffle() # shuffle playlist
client.repeat(1) # set playback mode repeat
if shuffle:
client.shuffle() # shuffle playlist
if repeat:
client.repeat(1) # set playback mode repeat
else:
client.repeat(0) # set playback mode repeat
if single:
client.repeat(0) # set playback mode repeat
client.single(1) # set playback mode single
else:
client.single(0) # set playback mode single
client.setvol(80)# set volume
client.play() # play

def stopMusic():
client.stop()

try:
client.stop()
except Exception:
client.connect("localhost", 6600)
client.stop()

def muteMusic():
global volume
global isMuted

try:
currentvol = int(client.status()['volume'])
except Exception:
client.connect("localhost", 6600)
currentvol = int(client.status()['volume'])

if currentvol != 0:
volume = currentvol

if isMuted:
try:
client.setvol(volume)
except Exception:
client.connect("localhost", 6600)
client.setvol(volume)
else:
try:
client.setvol(0)
except Exception:
client.connect("localhost", 6600)
client.setvol(0)
isMuted = not isMuted

def changeVolume(change=5):
global volume
global isMuted
isMuted = False
newvol = volume + change
if newvol > 100:
newvol = 100
if newvol < 0:
newvol = 0

try:
client.setvol(newvol)
except Exception:
client.connect("localhost", 6600)
client.setvol(newvol)
volume = newvol

def setMode(string):
global mode
mode = string

def setDiscoMode():
setSun('off')
sleep(0.3)
setKugel('on')
setDmxScene('fadecolors')
setUserDmxScene()
sleep(0.3)
setSun('off')
setMode('disco')

def getTrackInfo():
try:
currentsong = client.currentsong()
except Exception:
client.connect("localhost", 6600)
currentsong = client.currentsong()
print(currentsong)

global volume
try:
currentvol = int(client.status()['volume'])
except Exception:
client.connect("localhost", 6600)
currentvol = int(client.status()['volume'])

changeVolume(-30)
try:
tts.say(currentsong['artist'] + ', ' + currentsong['title'])
except Exception:
tts.say('Willkommen am Discoklo!')
client.setvol(currentvol)
volume = currentvol



def setWorkingMode():
setSun('on')
sleep(0.3)
setKugel('off')
setDmxScene('black')
setMode('work')

def setOff():
def closeService():
setSun('off')
sleep(0.3)
setKugel('off')
setDmxScene('black')


stopMusic()
setMode('off')

def initService():
startMusic('0', True)
setDiscoMode()

def setOnOff():
global mode
stopMusic()
if mode is not 'work':
setWorkingMode()
else:
initService()

def bootstrap():
wiringpi.wiringPiSetup()
@@ -106,29 +220,33 @@ def bootstrap():



dmxScene = 0
bootstrap()
dev = pyudmx.uDMXDevice()
dev.open()

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


tts = talkey.Talkey(
preferred_languages=['en', 'de'],
engine_preference=['pico'],
)

pirstate = wiringpi.digitalRead(6)

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

lastUsed = time.time()
inUse = True
inUseBefore = False
mode = "none"
inUseBefore = True
timeout = 2 * 60
volume = 80
isMuted = False

dmxScene = 0

initService()

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


# Main event loop ...
@@ -146,21 +264,17 @@ while True:
remotesignal = lirc.nextcode()
if remotesignal:
lastUsed = time.time() # user is active!
inUse = True
for code in remotesignal:
print('received code:', code)
if(code == "mode_disco"):
setDiscoMode()
if(code == "mode_work"):
setWorkingMode()
if(code == "mode_off"):
setOff()
if(code == "mode_dmx_next"):
print("dmxScene", dmxScene)
setUserDmxScene(dmxScene)
if dmxScene < len(dmxUserScenes)-1:
dmxScene += 1
else:
dmxScene = 0
if(code == "mode_power"):
setOnOff()
#if(code == "mode_dmx_next"):

if(code == "mode_music_play_1"):
startMusic('1')
if(code == "mode_music_play_2"):
@@ -172,20 +286,29 @@ while True:
if(code == "mode_music_play_5"):
startMusic('5')
if(code == "mode_play_fm4"):
startMusic('http://185.85.28.144:8000/')
startMusic('http://185.85.29.141:8000')
if(code == "mode_play_oe1"):
startMusic('http://185.85.29.142:8000')
if(code == "mode_music_stop"):
stopMusic()
if(code == "mode_music_mute"):
muteMusic()
if(code == "mode_volume_up"):
changeVolume(5)
if(code == "mode_volume_down"):
changeVolume(-5)
if(code == "mode_music_info"):
getTrackInfo()



if(inUseBefore != inUse):
print("State change inUse:", inUseBefore, inUse)
if (inUse):
setDiscoMode()
if inUse:
initService()
else:
setOff()


inUseBefore = inUse
closeService()
inUseBefore = inUse


lirc.deinit() # Clean up lirc


Loading…
Cancel
Save