Home Pod tutorial!
🕑 Added 2024-09-11 00:59:30 +0000 UTCI am excited to release the official tutorial for building the HomePod. This chatGPT backed assistant and centerpiece for your Livingroom makes an engineering project come to life.
The Home Pod is a LLM voice assistant running on a raspberry pi connected to a touch screen display that runs a variety of apps. This makes it the perfect substitute for your Alexa or Google home.
Where is the code?:
https://github.com/Concept-Bytes/HomePod
How to build:
This project contains 2 3d prints that screw together with 4 M4 screws. Everything else just clicks together!
A bill of materials can be found in the setup guide attached below.
Does this work with Jarvis?
Yes! Jarvis is built right into the home screen. Simply say "Hey Jarvis, what time is it?" and he will respond right from your home pod device!
Apps at a Glance:
Weather
Spotify
Sports
Stocks
Clock
Smart things controls
News
Timer
Shout out to @blurryface on the discord for the UI redesign!
Thank you guys for all the support. More projects and tutorials coming very soon!
Comments
Michael Frazier
FYI, those speakers listed from waveshare directly are not compatible and the connector is not the same as what it shows in picture in the store.
Michael Frazier
I found a single-connection dual speaker that will fit the factory 4-pin port. https://www.amazon.com/dp/B07C5WCDQK?psc=1&smid=A50C560NZEBBE&ref_=chk_typ_imgToDp. The speakers listed on the parts list will not plug directly into the port unless you have the 4 pin connectors and modify the speakers.
Michael Frazier
https://www.amazon.com/dp/B07C5WCDQK?psc=1&smid=A50C560NZEBBE&ref_=chk_typ_imgToDp. Is a direct fit for the size and 4pin connector.
Michael Frazier
Just a heads up, the part number was incorrect from Amazon on the hard item parts list for the speakers. The speakers have dual connectors that are too large for the Waveshare display port.
Braiden Jackson
How do I find all the assistant info like the thread id, assistant id and api key
Jaron Wilson
That would be cool, I am currently developing my own mat as he has not updated the code in 4-7 months, so I will do that as he has had no commits recently.
emmanuel romain
Avez-vous trouvé une alternative pour le lien vers la carte USB SPEAKER ?
Aaron Hastings
Why is there no dependencies/requirements.txt file in the github repo?
Max787
Do you fixed it ? I have the same problem
Edwyn Moss
Any integration with an On-Prem Ollama server??
Joao
hello how can i set the news for potuguese news?
Microbialchimp
Did you get an answer Tyler?
Microbialchimp
Did the creator help you with the other problems you were facing?
Tyler
Anyone have issues with power to the 5" display? I've followed all directions precisely, and my Pi turns on but there's no power to the LCD screen. Likewise, I wish that there more accurate directions and that the video was updated with the current BOM. The discord server is just totally flooded with irrelevant conversations about all different types of tech, even in the "Questions" hub, so it's impossible to find relevant info on this project.
Jedd
BEWARE - NOT ALL IS AS IT SEEMS ON THIS PROJECT!!!!! I hope this information proves helpful to others who are considering this project. I wanted to share some observations regarding the discrepancies between what is presented in the video tutorial and the GitHub repository. Video Insights Setup and Functionality: After purchasing all the components, downloading the HomePod repository from GitHub, and executing the pip install --break-system-packages, I found that the functionality does not align with what is demonstrated in the video. While the interface appears, and commands like "Jarvis, how is your day going?" can be executed, the experience is not as seamless. For instance, although some apps yield results, I was unable to retrieve actual scores from the sports application. Additionally, the weather app works for approximately 30 days before requiring a paid API key to remain functional. Powering the Raspberry Pi 5: The video suggests that the Raspberry Pi 5 can be powered through the GPIO pins. However, I have not been successful using either the official USB-C power supply or my bench power supply. The Raspberry Pi shows a red light, flashes green briefly, and then returns to a steady red light with no boot occurring. Code and Hardware Discrepancies: The code and hardware depicted in the video do not match what is outlined in the build documentation, raising concerns about the authenticity of the demonstration. GitHub Code Insights PyGame Limitations: The PyGame library used for the UI does not support threading, which is an issue in the current implementation. After issuing a command, such as "What is 2 plus 2?", the system correctly displays the input but then fails with the error message "pygame.error: unable to create gl context." This issue stems from the threading incompatibility with PyGame. Version Control for Dependencies: The Python imports in the project lack version specifications, making it difficult to determine the required versions. A requirements.txt file outlining all necessary modules and their respective versions would greatly enhance usability. Missing Voice Library: The voice library demonstrated in the video is not included in the GitHub repository. This further supports the notion that the demo and the provided code are significantly different, lacking crucial components. Issue Responses: When I checked the GitHub issues page, there were no responses to queries (aside from a few I resolved myself). This lack of engagement is concerning. Conclusion While I can tolerate code with bugs or omissions, I find it frustrating to be presented with one experience and receive something distinctly different. My disappointment is compounded by the fact that this project is a Patreon-supported endeavor only, so I expected a certain level of quality and support. Additionally, when seeking assistance, the project author directs users to a Discord channel where engagement appears zero from the project author. Other developers, are kind and helpful, but most don't have access to the details that are needed to resolve issues. Not their fault, just another factoid of the lacking nature of this project. I share this feedback not to discourage others but to provide clarity on the challenges faced in this project. Transparency and support are crucial for any collaborative effort, and I hope this message encourages improvements moving forward.
Secprepper
Any chance for the non-meshed files of the homepod? I'd love to remix it to be a screw top instead of screws to secure the display to the rest of the home pod.
Jedd
I followed your installation instructions and when I run the main_pod.py no matter what I do I get the shown in the ERROR section: I've installed python on my window 11 machine and used the same code that is on my Raspberry Pi 5 and the code works there, just not on my Pi with the waveshare monitor. From your video, I can see anything I'm doing differently and yet you get different results, so I have to ask others if they have gotten this code to work in the environment you showed in your video. My guess is that something is be missed on the Pi setup, but I think you're probably the only one that knows all the steps you did and what you have provided in the video and github. The microphone doesn't seem to be the issue as I get the Jarvis, How are you doing? text on the pod when I speak that. It just hangs after that. All the other pod apps work as demonstrated. I'm using an raspberry pi 5 with 8gb memory total used free shared buff/cache available Mem: 8244560 954560 6555120 28096 853440 7290000 Swap: 204784 0 204784 OS-Release Information: PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" uname -a Linux JARVIS 6.6.47+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.47-1+rpt1 (2024-09-02) aarch64 GNU/Linux PIP packages: Package Version ---------------------------------- ------------------------- icrawler 0.6.9 openai 1.47.0 PyAudio 0.2.14 pygame 2.1.2 python-weather 2.0.3 RealtimeSTT 0.2.41 spotipy 2.24.0 yfinance 0.2.43 wheel 0.38.4 torch 2.3.1 torchaudio 2.3.1 playsound 1.3.0 python-dotenv 0.21.0 ERROR Say something... User: Jarvis, how are you doing? Exception in thread Thread-1 (run_voice_assistant): Traceback (most recent call last): File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner self.run() File "/usr/lib/python3.11/threading.py", line 975, in run self._target(*self._args, **self._kwargs) File "/home/jedd/HomePod/home_screen.py", line 141, in run_voice_assistant apply_blur_ring_and_text(screen, current_text, blue_ring_thickness=100) File "/home/jedd/HomePod/home_screen.py", line 109, in apply_blur_ring_and_text text_surfaces, text_rects = create_text_surfaces(text, font, screen.get_width(), margin) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jedd/HomePod/home_screen.py", line 74, in create_text_surfaces start_y = (screen.get_height() - total_height) // 2 ^^^^^^ NameError: name 'screen' is not defined
Efstratios Kordonis
Hello! How can I activate voice commands?
Kevin Coda
Hey Jedd, not trying to scam anyone, maybe myself or someone on discord can help you out. What seems to be the issue?
Jedd
With the code posted in the GitHub, using a raspberry pi 5 with 8gb has ANYONE have a work HomePod like the video shows or have we all been SCAMMED??
Jedd
No. And now it seems to be working.
Mike Baudu
do you have power issue?
Jedd
Error when running the app_5.py code, yfinance complains that 2d is a valid duration. Changing this to 5d (the next valid option) worked. previous_price = stock.history(period="2d")['Close'].iloc[0] previous_price = stock.history(period="5d")['Close'].iloc[0]
Jedd
The following error occurs after running python home_screen.py. pygame.error: Could not make GL context current: BadAccess (attempt to access private resource denied) After this error occurs the home_screen will no longer respond. Tried this same code on my windows PC and everything works properly. Only real difference is my windows PC has a GPU whereas the Raspberry Pi 5 does not. Wondering if there's a way to switch pygame to use CPU only and not a GPU.
Jedd
Anyone having problems with their waveshare touchscreen. I get video but no touch.
Jedd
Just out of curiosity, which Linux OS flavor did you use Raspberry, Ubuntu, Kali, etc?
JR Tate
How would I go about changing the wallpaper or the UI?
Stoo
What's the connection on the wave shave board and can you just wire 2 speakers to this?
Kevin Coda
Hey, you can post here, in the discussions chat, or there is tons of help if you join the discord!
Kevin Coda
Hey, I apologize for this. The one I used was taken off amazon. I am looking for an alternative right now. If you have the speakers and are just waiting on the usb board your best bet might be to go directly to the speaker out on the display driver. Ill update you as soon as I find something.
Jedd
Please post the LINK to the USB SPEAKER board.
Haan
if ur extremely rich and have money to spend go ahead because chatgpt 4 is actually very expensive
Edgar Cabadas
Where can i post for technical help?
Stoo
could you link me to that speaker to usb breakout board? im struggling to find anything similar :)
Christopher Caspari
Is gpt 4o-mini also a good choice as openai model ?
Luke Davies
Can the HomePod controller Apple Music over Spotify
Christopher Crucilla
can the homepod intergrate with the holomat?
Sam Morando
I've been waiting so long for this! Currently printing the case. Thank you so much for all you do.
Kevin Coda
Im using the 8gb version, but this is mostly API calls so the 4Gb should work just fine. Im interested in the performance so let me know if you try this!
Stoo
what speaker to usb board did you use? :)
Huy Huynh
can i use raspberry pi 5 with 4gb or lower rasperry version?
Kevin Coda
Yes, same Jarvis assistant from holomat, now in a movable home device!
Kevin Coda
Should be an updated file in this post
Stoo
where did you get the usb speaker board from? :) got a link? also base stl doesnt have the usb c breakout slot like yours does? is there an updated stl?
Edgar Cabadas
Is this the same as Jarvis holomat? just in a different form factor?
Keaton Hammack
Will Apple Music have an integration with Jarvis? Please? I use Apple Music
xxxxxx xxxxxx
Cool man !!!
Kevko
Great Projekt🔥🔥
Kevin Coda
No problem, let me know if that works for you, or if you have any other questions!
amirhosein fj
Thank you
Kevin Coda
The only unsupported feature of realtimestt is porcupine which is used for hotword detection. I believe you might be able to solve this by creating a blank file called pvporcupine.py in the main directory. You could also try setting the hotword model to None. I do both these things in the github to avoid that error.
amirhosein fj
How do you use RealTimeSTT on RPI? I keep getting "Unsupported Platform" error message.