update script, daemon, services, added sound, small improvements
This commit is contained in:
@@ -10,18 +10,6 @@ app = Flask(__name__)
|
||||
app.register_blueprint(api, url_prefix='/api')
|
||||
app.register_blueprint(pages)
|
||||
|
||||
loglevel = 'INFO'
|
||||
if luniebox.get_setting('logging', 'level'):
|
||||
loglevel = luniebox.get_setting('logging', 'level')
|
||||
|
||||
logger = logging.getLogger('luniebox')
|
||||
logger.setLevel(logging._nameToLevel[loglevel])
|
||||
logFormatter = logging.Formatter(
|
||||
style='{', datefmt='%Y-%m-%d %H:%M:%S', fmt='{asctime} {levelname}: {message}')
|
||||
logstdoutHandler = logging.StreamHandler(sys.stdout)
|
||||
logstdoutHandler.setFormatter(logFormatter)
|
||||
logger.addHandler(logstdoutHandler)
|
||||
|
||||
if __name__ != '__main__':
|
||||
gunicorn_logger = logging.getLogger('gunicorn.error')
|
||||
app.logger.handlers = gunicorn_logger.handlers
|
||||
|
||||
+38
-12
@@ -3,6 +3,7 @@
|
||||
import signal
|
||||
import time
|
||||
import sys
|
||||
import subprocess
|
||||
import logging
|
||||
from luniebox import luniebox
|
||||
import RPi.GPIO as GPIO
|
||||
@@ -26,23 +27,29 @@ class LunieboxDaemon(object):
|
||||
self.tolerance = self.luniebox.get_setting(
|
||||
'rfid', 'pause_tolerance', 4)
|
||||
self.reads = 0
|
||||
self.error_text = False
|
||||
|
||||
if self.luniebox.get_setting('hardware', 'mpu') == 'True':
|
||||
self.mpu = MPU9250(
|
||||
address_ak=AK8963_ADDRESS,
|
||||
address_mpu_master=MPU9050_ADDRESS_68,
|
||||
address_mpu_slave=None,
|
||||
bus=4,
|
||||
gfs=GFS_1000,
|
||||
afs=AFS_8G,
|
||||
mfs=AK8963_BIT_16,
|
||||
mode=AK8963_MODE_C100HZ)
|
||||
self.mpu.configure()
|
||||
try:
|
||||
self.mpu = MPU9250(
|
||||
address_ak=AK8963_ADDRESS,
|
||||
address_mpu_master=MPU9050_ADDRESS_68,
|
||||
address_mpu_slave=None,
|
||||
bus=4,
|
||||
gfs=GFS_1000,
|
||||
afs=AFS_8G,
|
||||
mfs=AK8963_BIT_16,
|
||||
mode=AK8963_MODE_C100HZ)
|
||||
self.mpu.configure()
|
||||
except Exception as exception:
|
||||
logging.getLogger('luniebox').warning(
|
||||
"Could not setup MPU9250: " + str(exception))
|
||||
self.mpu = False
|
||||
else:
|
||||
self.mpu = False
|
||||
|
||||
def run(self):
|
||||
logging.getLogger('luniebox').info("run luniebox")
|
||||
logging.getLogger('luniebox').info("run luniebox daemon")
|
||||
|
||||
while True:
|
||||
# mpu
|
||||
@@ -86,10 +93,14 @@ class LunieboxDaemon(object):
|
||||
if self.reads >= self.tolerance:
|
||||
self.reads = 0
|
||||
self.luniebox.pause()
|
||||
self.error_text = False
|
||||
time.sleep(0.1)
|
||||
else:
|
||||
self.reads = 0
|
||||
self.luniebox.play(text)
|
||||
if text != self.error_text and not self.luniebox.play(text):
|
||||
if self.luniebox.get_setting('luniebox', 'error_sound') != 'False':
|
||||
self.error_text = text
|
||||
self.error_sound()
|
||||
time.sleep(0.1)
|
||||
|
||||
def signal_handler(self, signal, frame):
|
||||
@@ -98,6 +109,21 @@ class LunieboxDaemon(object):
|
||||
luniebox.stop()
|
||||
sys.exit(0)
|
||||
|
||||
def beep_sound(self):
|
||||
self.play_sound("/home/pi/luniebox/audio/beep.wav",
|
||||
str(self.luniebox.volume))
|
||||
|
||||
def error_sound(self):
|
||||
self.play_sound("/home/pi/luniebox/audio/error.wav", "100")
|
||||
|
||||
def play_sound(self, path, volume):
|
||||
volume_p = subprocess.Popen(
|
||||
["amixer", "set", "PCM", volume + "%"], stdin=None,
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, close_fds=True, shell=False, group="pi", user="pi")
|
||||
volume_p.wait()
|
||||
subprocess.Popen(["aplay", path], stdin=None,
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, close_fds=True, shell=False, group="pi", user="pi")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
daemon = LunieboxDaemon(luniebox=luniebox)
|
||||
|
||||
+26
-13
@@ -168,9 +168,9 @@ class Luniebox(object):
|
||||
self.zspotify_path, username, password, root)
|
||||
logging.getLogger('luniebox').info("spotifydl enabled!")
|
||||
return True
|
||||
except Exception as ex:
|
||||
except Exception as exception:
|
||||
logging.getLogger('luniebox').warning(
|
||||
"error on setup spotifydl: " + str(ex))
|
||||
"error on setup spotifydl: " + str(exception))
|
||||
return False
|
||||
|
||||
def read_config(self):
|
||||
@@ -315,14 +315,20 @@ class Luniebox(object):
|
||||
else:
|
||||
logging.getLogger('luniebox').warn(
|
||||
"cannot resume spotify: " + self.current)
|
||||
return True
|
||||
elif self.service == PlayerService.MPD:
|
||||
if text != self.current:
|
||||
if self.mpd_connect():
|
||||
self.mpd.setvol(self.volume)
|
||||
self.mpd.clear()
|
||||
text = text.replace('mpd:', '')
|
||||
self.mpd.add(text)
|
||||
self.mpd.play()
|
||||
try:
|
||||
self.mpd.setvol(self.volume)
|
||||
self.mpd.clear()
|
||||
text = text.replace('mpd:', '')
|
||||
self.mpd.add(text)
|
||||
self.mpd.play()
|
||||
except Exception as exception:
|
||||
logging.getLogger('luniebox').warning(
|
||||
"cannot not play mpd '" + text + "': " + str(exception))
|
||||
return False
|
||||
self.current = text
|
||||
self.set_setting('luniebox', 'current', self.current)
|
||||
self.resume = False
|
||||
@@ -334,8 +340,13 @@ class Luniebox(object):
|
||||
"play mpd: " + self.current)
|
||||
elif self.resume and text == self.current:
|
||||
if self.mpd_connect():
|
||||
self.mpd.setvol(self.volume)
|
||||
self.mpd.play()
|
||||
try:
|
||||
self.mpd.setvol(self.volume)
|
||||
self.mpd.play()
|
||||
except Exception as exception:
|
||||
logging.getLogger('luniebox').warning(
|
||||
"cannot not resume mpd '" + self.current + "': " + str(exception))
|
||||
return False
|
||||
self.resume = False
|
||||
if text.startswith('spotify:'):
|
||||
logging.getLogger('luniebox').debug(
|
||||
@@ -343,10 +354,12 @@ class Luniebox(object):
|
||||
else:
|
||||
logging.getLogger('luniebox').debug(
|
||||
"resume mpd: " + self.current)
|
||||
|
||||
elif text != None:
|
||||
logging.getLogger('luniebox').info(
|
||||
"invalid value(?): " + str(text))
|
||||
return True
|
||||
elif text != None:
|
||||
logging.getLogger('luniebox').info(
|
||||
"invalid value(?): " + str(text))
|
||||
return False
|
||||
return False
|
||||
|
||||
def stop(self):
|
||||
self.pause()
|
||||
|
||||
@@ -6,4 +6,5 @@ mpu9250-jmdev==1.0.12
|
||||
python-dateutil==2.8.2
|
||||
python-mpd2==3.0.4
|
||||
requests==2.26.0
|
||||
smbus==1.1.post2
|
||||
smbus2==0.4.1
|
||||
|
||||
Reference in New Issue
Block a user