{"id":19662600,"url":"https://github.com/dannagle/piplayer","last_synced_at":"2025-04-28T21:32:09.465Z","repository":{"id":41224555,"uuid":"48857738","full_name":"dannagle/PiPlayer","owner":"dannagle","description":"Raspberry Pi Network Audio Player (Used In Presentations)","archived":false,"fork":false,"pushed_at":"2024-02-29T00:20:56.000Z","size":14178,"stargazers_count":26,"open_issues_count":1,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-05T11:12:17.050Z","etag":null,"topics":["audio-player","public-speaking","raspberry-pi","sockets","tcp-server"],"latest_commit_sha":null,"homepage":"https://cloud.packetsender.com/dannagle/piplayer","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dannagle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-12-31T17:54:06.000Z","updated_at":"2025-01-16T04:56:19.000Z","dependencies_parsed_at":"2024-02-29T01:39:06.240Z","dependency_job_id":null,"html_url":"https://github.com/dannagle/PiPlayer","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dannagle%2FPiPlayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dannagle%2FPiPlayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dannagle%2FPiPlayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dannagle%2FPiPlayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dannagle","download_url":"https://codeload.github.com/dannagle/PiPlayer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251391260,"owners_count":21582137,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-player","public-speaking","raspberry-pi","sockets","tcp-server"],"created_at":"2024-11-11T16:11:54.328Z","updated_at":"2025-04-28T21:32:04.448Z","avatar_url":"https://github.com/dannagle.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pi Player: The Raspberry Pi Network Audio Player\n\nEver wanted your Raspberry Pi to act as a network-controlled audio player? Pi Player accomplishes this goal. It consists of 3 components acting independently to make the system work.\n\n1. [Desktop app](desktop/) - Used for discovering the Raspberry Pi and as an example of basic network TCP and UDP commands.\n1. [Web app](www/) - A responsive web UI to control the Raspberry Pi audio through phones and web browsers. This is an easier alternative than building a from-scratch mobile app.\n1. [Pi service](pi/) - A TCP and UDP listener service that actually launches the audio files when requested.\n\n![All Components](images/pi_player_setup.png)\n\n\n## Desktop app\nThe [Desktop app](desktop/) provides basic control and discoverability of the Raspberry Pi. It was written in C++ with the Qt SDK and runs on Windows, Mac, and Desktop Linux.\n\n![Pi Player desktop](images/pi_player_desktop.png)\n\nClick \"Find Pi\", and the desktop app will send out a broadcast UDP packet and report the first one it finds. The other buttons become enabled allowing basic audio control.\n\nIf the Raspberry Pi was given a static IP address, then the desktop app is largely unnecessary. Control can be done through the web app.\n\n## Web app\n\nThe [Web app](www/) is placed directly in `/var/www` of the Raspberry Pi. It provides the same control as the desktop app. The difference is no software is needed to be installed -- only a web browser. The web app was built in PHP, JavaScript, and the Bootstrap framework so it will be responsive.\n\n![Pi Player web app](images/pi_player_web_mobile.png)\n\n![Pi Player web app](images/pi_player_web_desktop.png)\n\nBy making your web port available to the internet, the Pi Player is now an IoT-enabled device. Play audio at home. The back-end service can remain closed to the Internet because the PHP commands are connecting through 127.0.0.1.  \n\n## Pi service\n\nThe [Pi listener service](pi/) starts UDP and TCP listeners on port 15000. These listen for commands and actually invoke the audio player (mpg123) to start the MP3. The audio files must be MP3s located in the home directory. The service was written in C++ using the Qt SDK.\n\n```\nsudo apt-get install qt5-default build-essential mpg123\nqmake \u0026\u0026 make\nsudo daemon ./simpleTCPandUDPserver\n```\n\n## Development and Troubleshooting\nPi Player was heavily tested and developed using the open source project [Packet Sender](https://github.com/dannagle/PacketSender). The actual ASCII commands being sent are listed below. Send to ports 15000 for both UDP and TCP.\n\n* Broadcast UDP: Find Units\n* Unicast TCP:\n* UnicastTCP: next\n* UnicastTCP: stop\n\n\n![Pi Player with Packet Sender](images/packetsender_piplayer_dev.png)\n\n## Video Demo\nhttps://www.youtube.com/watch?v=4JXBG0TkA1g\n\n\n## Hackster.io\n\nThis project is also detailed at [hackster.io](https://www.hackster.io/naglecode/pi-player-049751)\n\n## License\nAll components are GPL v2 or Later. The \"www\" portion is based heavily on the [Packet Sender web project](https://github.com/dannagle/PacketSender-Website) if you'd prefer an MIT license.\n\n\n## Copyright\n\nThis project is wholly owned and copyright \u0026copy;  -  [@NagleCode](http://twitter.com/NagleCode) - [DanNagle.com](http://DanNagle.com)  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdannagle%2Fpiplayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdannagle%2Fpiplayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdannagle%2Fpiplayer/lists"}