diff --git a/adhan-webapp/app.py b/adhan-webapp/app.py index 7c981f5..9ba346e 100644 --- a/adhan-webapp/app.py +++ b/adhan-webapp/app.py @@ -763,33 +763,41 @@ def set_pi_volume(): if not isinstance(volume, int) or volume < 0 or volume > 100: return jsonify({'success': False, 'error': 'Volume moet tussen 0 en 100 zijn'}), 400 - # Stel Pi volume in via amixer - try: - # Stel PCM volume in (HDMI audio) - subprocess.run(['amixer', 'set', 'PCM', f'{volume}%'], - check=True, capture_output=True, text=True) - - # Sla volume op in settings voor persistentie - settings = load_settings() - settings['pi_hdmi_volume'] = volume - - with open(SETTINGS_PATH, 'w') as f: - json.dump(settings, f, indent=2) - - print(f"🔊 Pi HDMI volume ingesteld op {volume}%") - + # Sla volume op in settings voor persistentie + settings = load_settings() + settings['pi_hdmi_volume'] = volume + + with open(SETTINGS_PATH, 'w') as f: + json.dump(settings, f, indent=2) + + # Check of we in een Docker container draaien + if os.path.exists('/.dockerenv'): + print(f"🔊 Pi HDMI volume opgeslagen: {volume}% (Docker container)") return jsonify({ 'success': True, - 'message': f'Pi HDMI volume ingesteld op {volume}%', - 'volume': volume + 'message': f'Pi HDMI volume opgeslagen op {volume}%. Volume wordt toegepast bij browser herstart.', + 'volume': volume, + 'info': 'Docker container - volume opgeslagen voor browser audio' }) - - except subprocess.CalledProcessError as e: - print(f"❌ Amixer fout: {e}") - return jsonify({ - 'success': False, - 'error': f'Kon volume niet instellen: {e.stderr if e.stderr else str(e)}' - }), 500 + else: + # Direct op Pi - probeer amixer + try: + subprocess.run(['amixer', 'set', 'PCM', f'{volume}%'], + check=True, capture_output=True, text=True) + print(f"🔊 Pi HDMI volume direct ingesteld op {volume}%") + return jsonify({ + 'success': True, + 'message': f'Pi HDMI volume ingesteld op {volume}%', + 'volume': volume + }) + except (subprocess.CalledProcessError, FileNotFoundError) as e: + print(f"⚠️ Amixer fout: {e}") + return jsonify({ + 'success': True, + 'message': f'Volume opgeslagen op {volume}%. Amixer niet beschikbaar.', + 'volume': volume, + 'warning': str(e) + }) except Exception as e: print(f"❌ Volume API fout: {e}") diff --git a/pi-volume-startup.sh b/pi-volume-startup.sh new file mode 100644 index 0000000..ade2f5a --- /dev/null +++ b/pi-volume-startup.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# Script om Pi HDMI volume in te stellen bij opstarten + +SETTINGS_FILE="/home/pi/adhan/adhan-webapp/settings.json" + +if [ -f "$SETTINGS_FILE" ]; then + # Haal volume uit settings.json + VOLUME=$(python3 -c " +import json +try: + with open('$SETTINGS_FILE') as f: + settings = json.load(f) + print(settings.get('pi_hdmi_volume', 70)) +except: + print(70) +") + + echo "🔊 Pi HDMI volume instellen op ${VOLUME}%..." + amixer set PCM ${VOLUME}% 2>/dev/null || echo "⚠️ Amixer niet beschikbaar" +else + echo "⚠️ Settings bestand niet gevonden, gebruik standaard volume 70%" + amixer set PCM 70% 2>/dev/null || echo "⚠️ Amixer niet beschikbaar" +fi \ No newline at end of file