[Custom component] Bird Buddy smart bird feeder

Its been nearly 3 weeks. Anyone have any insight? Today the error is:

Last logged: 9:06:44 AM

  • Error fetching birdbuddy data: INTERNAL_SERVER_ERROR: {‘message’: ‘Internal server error.’, ‘locations’: [{‘line’: 2, ‘column’: 3}], ‘path’: [‘sightingCreateFromPostcard’], ‘extensions’: {‘code’: ‘INTERNAL_SERVER_ERROR’, ‘errorId’: ‘36955398-87cc-4816-bfe3-9adfca975151’}}
  • Error fetching birdbuddy data: 502, message=‘Attempt to decode JSON with unexpected mimetype: text/html’, url=‘https://graphql.app-api.prod.aws.mybirdbuddy.com/graphql

Hey Everyone, I’m in the process of adding this to my home assistant however i’m unsure how I can test this with out any bird visiting. I did verify with a test image (/config/www/birdbuddy/last_postcard.jpg) I also setup the downloader addon/integration to be www as the download folder.

Here is my automation setup:

alias: Collect Bird Buddy Sightings
description: Automatically collect and download Bird Buddy sighting photos
triggers:
  - domain: birdbuddy
    device_id: "redacted"
    type: new_postcard
    trigger: device
conditions: []
actions:
  - alias: Collect a Postcard
    data:
      strategy: best_guess
      best_guess_confidence: 20
      share_media: true
      postcard: "{{ trigger.event.data.postcard }}"
      sighting: "{{ trigger.event.data.sighting }}"
    action: birdbuddy.collect_postcard
  - data:
      url: "{{ trigger.event.data.sighting.medias[0].contentUrl }}"
      subdir: birdbuddy
      filename: last_postcard.jpg
      overwrite: true
    action: downloader.download_file
mode: single

type or paste code here

I have been working on declouding this same bird feeder camera for quite some time, as a back burner project, and have made a lot of progress. It is now able to display the image from the camera in a lovelace card.

Here are the numerous gotchas though: It still requires acquiring a fresh token often. Even though the token has an expiration date a decade or so out, you will need a new one every time you reconnect. I am working on building a simple script to renew them automatically, but it still leaves the thing cloud dependent.

And the real problem is that i am not a developer. I work in IT, but coding is a necessary evil. Claude is the brains behind a sizable chuck of this. Pulling the APK apart - a Flutter app thoroughly layered with uncommented obfuscated code, proxy detection, SSL Pinning etc. And here i am, unable to even pretend to be a rank amateur. I learned about things like MITMProxy, Frida, and best of all, HTTP Toolkit.

So the integration kinda sorta works with a simple Python script and Lovelace card. But until i have time someday to fully decloud it, it is a PoC, not a production product.

Which brings me to why I’m posting this. I am hoping to outsource this all-important ‘Last Mile’ to someone who hasnt recently had to look up acronyms like API and SSL Pinning. This project needs a real programmer. It is currently on a private repo, but if anyone has the slightest interest in finishing it up, let me know and i will save you a few days work (six months, for me).

(If Shakespeare had a .357, i would have a whole in my head owing to my abject lack of brevity and wit, but it is what it is)

1 Like

These things are really nothing more than a camera with a specially trained AI model to identify the species (in the case of Bird Buddy, they do the AI recognition on their cloud servers). I don’t know anything about that other feeder you’re referring to, and I’ve got too many projects going on to take on another.

But if you really want to “decloud” something similar, your best bet is to build something custom with local NVR storage, and a local AI model running on something like Ollama. BirdNET or Merlin would probably be another good starting point.

Thank you kindly for your reply.

his is absolutely true, but in my case, there are other things at play. It was a gift to my wife, and she felt a strong obligation to use it, and i don’t put potential reverse shells or pivot attack vectors on my LAN. Granted a VLAN or a guest WiFi could have neutered it sufficiently, but it became half principle and have a desire to learn how to do it. My familiarity with Wiresharl, the old SSLStrip etc didn’t prepare me for reversing an API that was so heavily protected. It has been a great experience, and in a few months spending a couple hours a week, i will have the JWT token auto renew. I am not even sure how to remove cloud dependency entirely though, short of an exploit, and I’m not that person.

For my own purposes, it is 'good enough. It shows in HA, and paired with Birdnet-Go, it does a reasonable job. Not nearly as good as Birdnet with a mic combined with the RTSP camera, but again, obligations. I have an old Z840 with an RTX 3090 that is stuffed with RAM and Xeons, so i see no reason to pay for their mediocre AI service. :slight_smile:

Thanks for your sound advice, and apologies again for the long winded message. Best wishes,

Maybe I’m misunderstanding. Do you have birdbuddy and birdnet GO integrated somehow?

If you look back at his initial comment from 21 hours ago, he was replying to this comment from Jan 2024: [Custom component] Bird Buddy smart bird feeder - #126 by Hildebrau

This is not Bird Buddy related.

1 Like

Ah yes, 10-4.

Got me excited, though! Having a bird cam display data alongside what was tracked in birdnet would be sweet. I guess that’s what HA is for!

Madcoder is correct. Two other people had broken the Soliom BFO8 into the conversation, and having failed to find a more extensive conversation, i just skipped my query in, since these people may have a headstart. I apologize if my logic was flawed.

As it is, it works. But IMHO, eliminating the token entirely is necessary. Even with Claude on my side this was non-trivial for a retirement age stoner like me. In the meantime, we can hang it in the garden so our daughter an law will feel generous.

Hi Kaleigawd,
We’ve just received a bird buddy 2.0 as a gift to. Did you make any progress on your auth tokens? And do you have anything you could share?
Would love to use this thing without the bird buddy app…

@O365 : the person you’re responding to does not have a Birdbuddy. It’s a different feeder.

If you have a BB, the integration should work for you. You first have to go through the setup using the app, and you need to make sure your account is an email+password login (not social or Google sign in). If that’s still not working, open an issue on the GitHub tracker and include any relevant error logs you’re seeing.

Integration is running and working perfect. Thanks!

1 Like

I’m probably not much more of a developer than you; but since I think we have the same Solomio bird feeders, and are both powered by AI agents, I’d be willing to have a look at your repo… it’s that whole “available time” thing that really gets us, unfortunately.

I’ve just integrated BirdBuddy into Home Assistant. I can see the activity as well as the battery status, so I assume the integration itself is working correctly.

What’s not entirely clear to me is how I receive the notifications and postcards. I’ve installed the blueprint and also created an automation with BirdBuddy, but I’m not receiving any images or recent visitor data.

Are these supposed to come through automatically, or does the bird actually need to be recognized in the BirdBuddy app first before anything is sent to Home Assistant?

Do I still need to configure something, or am I doing something wrong?
Is there a way to test or manually trigger this to see if it’s working?

It sounds like you’ve done everything right. The blueprint is the simplest way to set up an automation that will automatically collect new postcards when birds are detected at the feeder. The source of data that the integration uses is the same as what the BB app uses, so if you’re getting new bird visitors in the app, then it should also trigger in HA. If you see new visitors in the app and they are not yet “collected”, then it means the automation is not triggering or it’s failing to do the collection. This assumes you’re logged into the BB app with the same login that is used for the integration – postcards are user-specific, not feeder-specific.

Check what you’re seeing in the BB app, and if it isn’t agreeing with what’s in the HA integration, open an issue on GitHub.

I installed the Birdbuddy in my Home Assistant last week, and I had to enable the entities for Bird Buddy before the postcard notification worked. There are 11 entitities but only some of them were enabled as default. The GUI also said something about disabled entitities.

I get the notifications now, but when I try to collect a postcard with the blueprint I get an error that says

Error fetching birdbuddy data: INTERNAL_SERVER_ERROR: {‘message’: ‘Internal server error.’, ‘locations’: [{‘line’: 2, ‘column’: 3}], ‘path’: [‘sightingCreateFromPostcard’], ‘extensions’: {‘code’: ‘INTERNAL_SERVER_ERROR’, ‘errorId’: ‘24fde942-f09d-48e5-a85a-c20eb98ec8b0’}}

I get the same error when I try to collect postcards with python script and pybirdbuddy. If I manually click on a postcard in the app on my phone, the AI recognize function is run, and then I can collect a postcard. Do I need a subscription to be able to collect the postcards automatically with a script?

I get the same error for a few weeks. Is there any fix? Looks like that bird buddy changes something and we need an update?
Or did it work for someone?

Did something change with this intergration. Ever since 2026.5, I cannot get recent image to say anyting but unknown.

I do not care about HA taking snapshots through automatoin or anything like that right now

I just to simplhy display what teh app is capturing liek I've always done

I've used a generic camera with
{{ state_attr("sensor.birdies", "entity_picture") }}

but now if I tryu to rdo this I get error
Relative URLs are not allowed

This is a side effect of how the generic camera config flow works. The "recent visitors" entity needs to have a valid URL at the time you configure it. After that's configured, it doesn't matter anymore, but it does a validation check during the config flow, and won't let you proceed if it doesn't evaluate to a valid image URL.

That said, the integration also exposes an image entity that works much the same way, so depending on where you're wanting to use the bird image, that might be enough to just enable that entity.

You don't need a subscription for postcards to work. That internal server error happens to me as well, but it doesn't prevent the integration from working. That means the bird buddy servers raised an error while executing, but it doesn't tell us what the error was.

I haven't had a chance to figure out why it happens, but it doesn't seem to be a blocker, and I still get all my postcards