Habilitación del audio
Una vez funcionando la pantalla, el siguiente objetivo fue conseguir que los sonidos generados desde la Raspberry Pi se reprodujeran por los altavoces integrados en el panel.
La imagen grovety/crow-ws-server:1.2.5 incorpora soporte de audio y utiliza PulseAudio dentro del contenedor.
No necesitamos instalar un servidor de audio adicional en la Raspberry Pi ni conectar altavoces externos.
Activación
En el archivo compose.yaml añadimos:
1 | AUDIO_ENABLED: "1" |
Después recreamos el contenedor:
1 2 3 | cd /opt/mydockers/crow-ha docker compose up -d |
Comprobamos que la variable está activa:
1 | docker exec crow-ha printenv AUDIO_ENABLED |
El resultado esperado es:
1 | 1 |
Comprobación de PulseAudio
El servidor PulseAudio utiliza un socket Unix propio:
1 | /tmp/crow-audio/pulse.sock |
Por este motivo, no debemos utilizar el socket estándar de PulseAudio.
La consulta correcta es:
1 2 | docker exec crow-ha sh -c \ 'pactl --server=unix:/tmp/crow-audio/pulse.sock info' |
En nuestra instalación obtuvimos:
1 2 3 4 | Server String: unix:/tmp/crow-audio/pulse.sock Server Name: pulseaudio Server Version: 16.1 Default Sink: crow_browser |
El dispositivo de salida virtual es crow_browser.
Podemos comprobarlo con:
1 2 | docker exec crow-ha sh -c \ 'pactl --server=unix:/tmp/crow-audio/pulse.sock list short sinks' |
Primera prueba de reproducción
El contenedor dispone de paplay, que permite reproducir archivos WAV.
La prueba se realizó generando un tono de 440 Hz y enviándolo al servidor PulseAudio.
La reproducción se ejecuta con:
1 2 | docker exec crow-ha sh -c \ 'PULSE_SERVER=unix:/tmp/crow-audio/pulse.sock paplay /tmp/crow-tone.wav' |
La prueba fue satisfactoria: el tono se escuchó por los altavoces integrados de la pantalla.
Esto confirmó que toda la cadena de audio funcionaba:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Archivo WAV | v paplay | v PulseAudio | v crow_browser | v Captura de audio crow-ha | v WebSocket | v Elecrow ESP32-P4 | v Altavoces integrados |
Reproducción de archivos propios
También comprobamos la reproducción de un archivo WAV propio.
Primero copiamos el archivo de sondios / alarma a la Raspberry Pi y después al contenedor:
1 | docker cp /tmp/audio.wav crow-ha:/tmp/audio.wav |
Para reproducirlo:
1 2 | docker exec crow-ha sh -c \ 'PULSE_SERVER=unix:/tmp/crow-audio/pulse.sock paplay /tmp/audio.wav' |
La reproducción fue correcta.
73
Como era de esperar, después de dejar nuestro kit de impresión 3D «olvidado» en la buhardilla durante bastante tiempo, hemos descubierto que nos falta alguna pieza y que, por mucho que lo hemos intentado, no conseguimos montar la carcasa que teníamos prevista.
Así que, para salir del paso, hemos tenido que buscar una solución alternativa que permita «descansar» cómodamente a nuestra pantalla ELECROW. De momento, no hemos encontrado nada mejor que un sencillo atril que teníamos por ahí, y que está cumpliendo dignamente su cometido. No es la solución más elegante ni la definitiva, pero al menos nuestra pantalla ya tiene dónde apoyarse mientras seguimos buscando las piezas perdidas… ¡o una alternativa mejor!