diff --git a/README.md b/README.md index a2b3703..b994936 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,14 @@ Discobert is a multimedial toilet experience device The Setup is pretty custom. It includes: + * Raspberry Pi 3b+ * Relay Board for switching 220V Devices * Relay 1: - * Light Bulb + * Light Bulb * Relay 3: - * DMX Light - * Disco Ball + Motor + * DMX Light + * Disco Ball + Motor * PIR sensor * Door open/closed Sensor * IR Receiver @@ -16,6 +17,10 @@ The Setup is pretty custom. It includes: * A random remote * some speakers +![Discobert Work in Progress](project-images/work-in-progress.jpg) + +![Discobert Work in Progress](project-images/final.jpg) + ## Install Use Debian, install apt dependencies @@ -34,26 +39,33 @@ cd discobert ``` configure mpd + ``` sudo cp mpd.conf /etc/mpd.conf ``` configure samba share + ``` sudo cp smb.conf /etc/samba/smb.conf ``` + install pip modules + ``` pip3 install -r requirements.txt ``` + add systemd service + ``` sudo cp disco.service /lib/systemd/system/disco.service sudo systemctl daemon-reload ``` ### Setting up a random remote -Use `irrecord` to create a lirc Config file and copy the generated file in `/etc/lirc/lircd.conf.d/your-remotes-name.lircd.conf` +Use `irrecord` to create a lirc Config file and copy the generated file in +`/etc/lirc/lircd.conf.d/your-remotes-name.lircd.conf` You can find and edit the used keycodes: `~/discobert/lircrc` diff --git a/discobert.py b/discobert.py index 02d1797..abd6e17 100644 --- a/discobert.py +++ b/discobert.py @@ -130,6 +130,20 @@ def startMusic(playlist, single=False, shuffle=True, repeat=True): client.setvol(80)# set volume client.play() # play +def playMusic(): + try: + client.play() + except Exception: + client.connect("localhost", 6600) + client.play() + +def pauseMusic(): + try: + client.pause() + except Exception: + client.connect("localhost", 6600) + client.pause() + def stopMusic(): try: client.stop() @@ -137,6 +151,20 @@ def stopMusic(): client.connect("localhost", 6600) client.stop() +def nextSong(): + try: + client.next() + except Exception: + client.connect("localhost", 6600) + client.next() + +def previousSong(): + try: + client.previous() + except Exception: + client.connect("localhost", 6600) + client.previous() + def muteMusic(): global uservolume if getMpdVolume() != 0: # if not muted @@ -201,6 +229,13 @@ def setMpdVolume(vol): uservolume = vol return True +def seek(secs): + try: + client.seekcur(secs) + except Exception: + client.connect("localhost", 6600) + client.seekcur(secs) + return True def getTrackInfo(): try: @@ -271,6 +306,7 @@ def closeService(sleepsecs=0): changeVolume(-5) sleep(0.1) stopMusic() + inUseBefore = False # Pfusch pfusch! setMode('off') sleep(sleepsecs) @@ -373,7 +409,6 @@ while True: if doorstate == 1: if (time.time() > (starttime + 15) and inUse == True): doorShutdown() - inUseBefore = False # Pfusch pfusch! if pirstate == 1: @@ -413,19 +448,40 @@ while True: startMusic('http://185.85.29.141:8000') if(code == "mode_play_oe1"): startMusic('http://185.85.29.142:8000') + + if(code == "mode_music_previous"): + previousSong() + if(code == "mode_music_next"): + nextSong() + + if(code == "mode_music_play"): + playMusic() if(code == "mode_music_stop"): stopMusic() if(code == "mode_music_mute"): muteMusic() + if(code == "mode_music_pause"): + pauseMusic() + + if(code == "mode_music_rewind"): + seek(-30) + if(code == "mode_music_back"): + seek(-5) + if(code == "mode_music_forward"): + seek(5) + if(code == "mode_music_fastforward"): + seek(30) + if(code == "mode_volume_up"): changeVolume(5) if(code == "mode_volume_down"): changeVolume(-5) if(code == "mode_music_info"): getTrackInfo() + if(code == "mode_record"): say("I'm sorry, I'm afraid I can't do that!") - if(code == "mode_home"): + if(code == "mode_help"): tour() diff --git a/lircrc b/lircrc index 8b5112f..0af03a1 100644 --- a/lircrc +++ b/lircrc @@ -59,52 +59,106 @@ begin end begin - button = KEY_HOME + button = KEY_CD prog = disco - config = mode_home + config = mode_help end begin - button = KEY_RADIO + button = KEY_VCR2 prog = disco config = mode_play_fm4 end begin - button = KEY_SETUP + button = KEY_VCR prog = disco config = mode_play_oe1 end begin - button = KEY_VIDEO + button = BTN_START prog = disco config = mode_disco end begin - button = KEY_PICTURES + button = KEY_STOP prog = disco config = mode_work end begin - button = KEY_MUSIC + button = KEY_STOPCD + prog = disco + config = mode_work +end + +begin + button = KEY_RECORD prog = disco config = mode_music_info end +begin + button = KEY_PAUSE + prog = disco + config = mode_music_pause +end + +begin + button = KEY_PLAY + prog = disco + config = mode_music_play +end +begin + button = KEY_FORWARD + prog = disco + config = mode_music_forward +end begin - button = KEY_POWER + button = KEY_FASTFORWARD prog = disco - config = mode_power + config = mode_music_fastforward end begin - button = KEY_RECORD + button = KEY_BACK + prog = disco + config = mode_music_back +end + +begin + button = KEY_REWIND + prog = disco + config = mode_music_rewind +end + + +begin + button = KEY_REWIND + prog = disco + config = mode_music_rewind +end + +begin + button = KEY_NEXT prog = disco - config = mode_record + config = mode_music_next +end + +begin + button = KEY_PREVIOUS + prog = disco + config = mode_music_previous +end + + +begin + button = KEY_POWER + prog = disco + config = mode_power end diff --git a/project-images/final.jpg b/project-images/final.jpg new file mode 100644 index 0000000..5ecc82a Binary files /dev/null and b/project-images/final.jpg differ diff --git a/project-images/work-in-progress.jpg b/project-images/work-in-progress.jpg new file mode 100644 index 0000000..5e0aa77 Binary files /dev/null and b/project-images/work-in-progress.jpg differ