How I Paid Google $5 to Access My Own Devices, Then Fought Their Console for 6 Hours
A tale of OAuth hell, quota purgatory, and the sweet victory of saying “Hey Google, turn on Test Switch”
The Mission
It started innocently enough. I wanted to connect Google Home to Home Assistant so I could voice control things that Google doesn’t natively support. Maybe yell at my Tesla to charge. Perhaps get a sarcastic weather report from my local Ollama instance. You know, normal homelab shit.
What I didn’t realize was that I was about to enter the ninth circle of Google Console Hell.
Act I: The $5 Shakedown
First, you need to understand that Google charges you $5 to access the Nest Device Access API. Five dollars. To access devices you already own. Devices sitting in your own house. Google looked at the smart home market and said, “You know what this needs? A cover charge.”
Fine. Whatever. I paid the $5. I’m a professional.
Act II: Pub/Sub? More Like Pub/Suffering
Setting up the Nest integration requires something called Pub/Sub, which is Google’s way of saying “we’re going to make you create a messaging queue just to know when your doorbell rings.”
The setup instructions said to add a service account as a Publisher. Easy enough. I pasted in cloud-device-manager@system.gserviceaccount.com like a good boy.
Google: “Email addresses and domains must be associated with an active Google Account.”
What? It’s YOUR service account, Google. YOU made it.
Three searches later, I found the magic incantation: sdm-publisher@googlegroups.com. Because of course it’s a Google Group. Why would anything make sense?
Act III: Project Quota: A Horror Story
With Nest working, I moved on to the Google Assistant integration. This requires creating a project in the Google Home Developer Console. Simple, right?
Google: “Resource has been exhausted. Check quota.”
I had two active projects. TWO. Apparently, Google’s definition of “exhausted” is different from mine. I’ve seen my toddler’s toy box more exhausted than my project quota.
I started deleting old projects like a madman. “My First Project”? Gone. “BMC Services Group” from a business I forgot existed? Terminated. I was a project-killing machine.
Google: “Resource has been exhausted.”
WHAT. I just deleted projects!
Turns out, deleted projects go into a 30-day “soft delete” limbo where they still count against your quota. Because Google hates you specifically.
Act IV: The Quota Increase Request
I submitted a quota increase request. Google’s form asked why I needed more projects.
“Setting up Home Assistant smart home integration.”
Translation: “Please let me control my own lights.”
They approved it in about an hour, which was genuinely shocking. I had prepared myself for a 2-week wait and a blood sacrifice.
Act V: The Console That Wouldn’t Save
Project quota? Fixed. Time to create my cloud-to-cloud integration.
I filled out all the fields. Device types? Selected all of them because I’m not doing this twice. OAuth settings? Configured. Fulfillment URL? Entered.
I clicked Save.
The page hung. And hung. Chrome asked if I wanted to kill it.
I switched to Firefox. Same thing.
The console just… didn’t want to save. It would spin for 90 seconds, then dump me back to a blank form. I watched my carefully entered data vanish into the void three times.
On the fourth attempt, it hung for two full minutes. I was about to throw my laptop out the window when I noticed something: the integration had actually been created. It saved. It just didn’t bother telling me.
Google’s UX team, if you’re reading this: what the actual fuck?
Act VI: “Light” Is The Only Device Type
Remember when I said I selected all device types? Yeah, Google only saved “Light.”
I went back and selected them all again. Saved. Checked.
Still just “Light.”
At this point, I had been at this for about five hours. I decided Light would be fine. Most voice control is lights anyway. I’ll fight this battle another day.
Act VII: The Attic of Misfit Devices
Finally, I linked Home Assistant to Google Home. It worked! Devices appeared!
…including duplicates of things Google already controlled natively. My Nest thermostat showed up twice. A Wemo switch I forgot existed emerged from the depths. A light named “Shrek” in my kid’s room decided to make an appearance.
I tried to delete the duplicates. Google wouldn’t let me — they were coming from Home Assistant now, so I couldn’t remove them from Google Home directly.
My solution? I created a room called “Attic” and dumped all the duplicates there. Out of sight, out of mind. They can live in the attic with the Christmas decorations and my broken dreams.
The Payoff
After all that suffering, I created a test input_boolean in Home Assistant, synced my devices, and said the magic words:
“Hey Google, turn on Test Switch.”
And it fucking worked.
Six hours of wrestling with OAuth, quotas, hanging consoles, and mysterious Pub/Sub permissions — all for the privilege of toggling a virtual switch with my voice.
But here’s the thing: now I can voice control anything Home Assistant touches. Scripts. Automations. Entities. I can chain voice commands to Ollama and get sarcastic weather reports. I can yell at my Tesla (once I set up Tessie integration). The possibilities are endless.
Was it worth it? Ask me again after I build that voice-activated weather roast system.
Lessons Learned
- Google charges you to access your own devices. Accept this and move on.
- Deleted projects haunt you for 30 days. Plan accordingly.
- Google’s Developer Console will hang. Don’t panic. It might have worked anyway.
- Create an “Attic” room in Google Home. You’ll need it for duplicate devices.
sdm-publisher@googlegroups.comis the Pub/Sub publisher. Write this down. Tattoo it on your arm. You’ll need it.- Always add
input_booleanto your exposed domains. Your AI assistant will forget to tell you this until you’ve already restarted Home Assistant twice.
What’s Next
- Voice-activated sarcastic weather reports via Ollama
- Tesla voice control through Home Assistant
- Probably more fights with Google’s console
- Therapy
Dave runs a homelab at where he documents his adventures in self-hosted chaos. He paid Google $5 and regrets nothing. Mostly.