Parancssorban futó hanglejátszó
Alex - 2 éveHogyan 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