refactor(instellingen): verbeter errorafhandeling en amixer-check
De functie voor het opslaan van instellingen is verbeterd met uitgebreide foutafhandeling door gebruik te maken van try-except blokken. Er is nu een controle toegevoegd om te bepalen of de code in een Docker-container draait voordat 'amixer' commando's worden uitgevoerd, wat ongewenste fouten voorkomt als 'amixer' niet beschikbaar is. Dit verhoogt de robuustheid bij het instellen van Pi HDMI volume. Onverwachte fouten worden gelogd en het proces gaat verder zonder onderbreking.
This commit is contained in:
parent
9ebbf79428
commit
40e3bcc527
@ -1,5 +1,5 @@
|
||||
from flask import Flask, render_template, request, redirect, send_from_directory, jsonify, request as flask_request
|
||||
import requests, json, os, random
|
||||
import requests, json, os, random, subprocess
|
||||
from datetime import datetime
|
||||
from config import *
|
||||
from hijridate import Gregorian
|
||||
@ -299,6 +299,7 @@ def instellingen():
|
||||
alle_zones = fetch_sonos_zones()
|
||||
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
# Nieuwe volume instellingen
|
||||
if 'volume_day' in request.form and 'volume_night' in request.form:
|
||||
settings['volume_day'] = int(request.form['volume_day'])
|
||||
@ -334,14 +335,19 @@ def instellingen():
|
||||
pi_volume = int(request.form.get('pi_hdmi_volume', 70))
|
||||
settings['pi_hdmi_volume'] = pi_volume
|
||||
|
||||
# Stel Pi volume direct in via amixer
|
||||
import subprocess
|
||||
# Probeer Pi volume in te stellen via amixer (alleen als we niet in Docker draaien)
|
||||
try:
|
||||
# Check of we in een Docker container draaien
|
||||
if os.path.exists('/.dockerenv'):
|
||||
print(f"🔊 Pi HDMI volume opgeslagen: {pi_volume}% (Docker container - amixer niet beschikbaar)")
|
||||
else:
|
||||
subprocess.run(['amixer', 'set', 'PCM', f'{pi_volume}%'],
|
||||
check=True, capture_output=True, text=True)
|
||||
print(f"🔊 Pi HDMI volume ingesteld op {pi_volume}%")
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"❌ Kon Pi volume niet instellen: {e}")
|
||||
except (subprocess.CalledProcessError, FileNotFoundError) as e:
|
||||
print(f"⚠️ Kon Pi volume niet direct instellen: {e} (volume wel opgeslagen)")
|
||||
except Exception as e:
|
||||
print(f"❌ Onverwachte fout bij volume instelling: {e}")
|
||||
|
||||
settings['zones'] = request.form.getlist('zones')
|
||||
settings['audio_clip'] = request.form['audio_clip']
|
||||
@ -362,6 +368,11 @@ def instellingen():
|
||||
|
||||
return redirect('/instellingen')
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Fout bij opslaan instellingen: {e}")
|
||||
# Probeer alsnog door te gaan zonder de Pi volume instelling
|
||||
return redirect('/instellingen')
|
||||
|
||||
return render_template('settings.html',
|
||||
settings=settings,
|
||||
alle_zones=alle_zones,
|
||||
@ -753,7 +764,6 @@ def set_pi_volume():
|
||||
return jsonify({'success': False, 'error': 'Volume moet tussen 0 en 100 zijn'}), 400
|
||||
|
||||
# Stel Pi volume in via amixer
|
||||
import subprocess
|
||||
try:
|
||||
# Stel PCM volume in (HDMI audio)
|
||||
subprocess.run(['amixer', 'set', 'PCM', f'{volume}%'],
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user