Parancssorban futó hanglejátszó

Alex - 2 éve

Hogyan jutottunk el a jelenlegi verzióig?

Az első verzió a játékvezető gépéről futott. A játék vezérlő panel része volt. A szobában lévő hangszórók a számítógépre voltak direktben rákötve. Emiatt a kötöttség miatt fix számítógép tartozott a szoba vezérléséhez. A későbbiekben a fő szempont az volt, hogy a szobákat bármilyen számítógépről lehessen vezérelni. Függetleníteni kellett a játék vezérlőt a szobától.

A következő verzió már Raspberry Pi-n futott. Ennél a verziónál a játékvezérlőből szedtük ki a hang vezérléssel foglalkozó részt és töltötte be a Raspberry Pi böngészőben, így viszonylag gyorsan megkaptuk a működő rendszert. Ez a megoldás nem volt teljesen tökéletes, ugyanis ha valamiért nem érte el a szervert egy üres fehér oldalt töltött be helyette, amit már nem tudtunk távolról irányítani.

Végül milyen lett a jelenlegi verzió?

A jelenlegi megoldásnál egy olyat kerestem ami tud background serviceként működni. Cross platform, hogy bármin futhasson és minél kisebb lehessen a mérete. Végül a GO nyelvre esett a választás és a Beep nevű packagere.

Milyen problémába futottunk bele?

Már működő verzió futott a kinti szobákban, és olyan panaszok érkeztek vissza hogy túl halk a lejátszó. Tesztelésekkel nem tudtuk rendesen előidézni a problémát. Egy kis idő után jöttünk rá hogy a Raspberry Pi Jack csatlakozójával volt a probléma. A Raspberry Pi jack kimeneti jelszintje alacsony volt. Nem tudta eléggé meghajtani az erősítő bemenetét ezért kellett egy külső USB-s hangkártyát csatlakoztatnunk. Ez már a megfelelő jelszintet produkálta.

Az USB-s hangkártya viszont egy újabb problémát generált. A Raspberry Piben néha vándoroltak az eszközazonosítók. Így le kellett tiltani a hdmi és jack hang kimeneteket. Az alsa configjában pedig fixálni kellett a külső hangkártya ID-ját.

Mit tud ez a rendszer?

Egy MQTT szerverrel kommunikál és onnan kapja meg a parancsot hogy melyik hangot játssza le sima egyszeri lejátszással vagy esetleg loopolva. Ezen felül még tud fogadni pause, restart és set volume parancsokat is.

A hangerőt képes fadelve állítani ha a hang éppen lejátszás alatt van. Így kellemesebb élményt nyújt a játékosoknak.

Ez a rendszer is a config management-hez van kötve, így a configokat egy központi helyen tároljuk és onnan kéri le a beállításokat a saját ip címe alapján. Ezt a rendszer cacheli egy fájlba arra az esetre ha a következő futtatásnál valamiért nem érné el a config managementet.

A hang fájlokat még a régi rendszerből tölti le és tárolja. Ez a későbbiekben át fog kerülni a minio szerverre. A rendszer felismeri ha online frissült egy hangfájl és azt letölti.

Szabadulószoba GO Beep MQTT Hasura Raspberry Pi

Olvasnék még ...