[Custom component] Bird Buddy smart bird feeder

No worries. :slight_smile: The trigger is correct, I’m getting the picture on my “Magic Mirror” (that where actually the goal for the whole BB > HA > MM. :slight_smile: I think this will be solved when the BB integration sets the entity image as the last postcard. I believe @madcoder is working on that


Anyway, here is the “current” picture on my Magic Mirror (in my hallway) for the family to see! :slight_smile:

1 Like

This is mine 
 I leave this hee ,-).

I improved the dashboad a bit to fit to my overall design. You might find this usefull too.

image

type: grid
columns: 2
title: Bird Buddy
square: false
cards:
  - type: vertical-stack
    cards:
      - type: picture
        image: http://10.0.10.8:8123/local/birdbuddy/last_postcard.jpg
        tap_action:
          action: none
        hold_action:
          action: none
      - type: custom:mushroom-template-card
        entity: sensor.annikas_bird_buddy_state
        icon_color: grey
        secondary: |
          {{ states(entity)
              | replace('READY_TO_STREAM','Warte auf nÀchsten Besucher.')
              | replace('OFF_GRID','Bin nicht online.')
              | replace('_',' ')
          }}
        tap_action:
          action: more-info
        card_mod:
          style: |
            ha-card {
              box-shadow: 0px 0px;
              background: none;
            }
  - type: vertical-stack
    cards:
      - type: custom:mushroom-template-card
        entity: sensor.annikas_bird_buddy_battery
        icon: >-
          mdi:battery-{{((states('sensor.annikas_bird_buddy_battery')|int/10) |
          round(0)) * 10}}
        primary: Batterie
        icon_color: >-
          {{'grey' if states('sensor.annikas_bird_buddy_battery')|int > 30 else
          'red' }}
        secondary: '{{ (states(entity)) }}%'
        tap_action:
          action: more-info
        card_mod:
          style: |
            ha-card {
              box-shadow: 0px 0px;
              background: none;
            }
      - type: custom:mushroom-template-card
        entity: binary_sensor.annikas_bird_buddy_charging
        icon: mdi:power-plug{{'-off' if states(entity) == 'off'}}
        icon_color: '{{''grey'' if states(entity) == ''off'' else ''green'' }}'
        primary: |
          {{ states(entity) 
              | replace('off','LĂ€dt nicht')
              | replace('on','LĂ€dt via Solar')
          }}
        tap_action:
          action: more-info
        card_mod:
          style: |
            ha-card {
              box-shadow: 0px 0px;
              background: none;
            }
      - type: custom:mushroom-template-card
        entity: sensor.annikas_bird_buddy_signal
        icon: mdi:wifi
        primary: WLAN
        icon_color: grey
        secondary: |
          {{ states(entity) 
          }} dBm
        tap_action:
          action: more-info
        card_mod:
          style: |
            ha-card {
              box-shadow: 0px 0px;
              background: none;
            }
      - type: custom:mushroom-entity-card
        entity: switch.annikas_bird_buddy_off_grid
        name: Off Grid
        icon_color: red
        tap_action:
          action: more-info

3 Likes

For the secondary/states text: HA 2023.1 now includes translations for entity states. The integration includes the strings necessary for that to work (so it no longer shows them as ALL_CAPS).

Those state strings would likely need to be a bit more brief than what you’re adding here though – but I’m happy to accept translations for those :slight_smile:

As for the picture card issues, it’s likely caching the image. If you right click the image and click “open in a new tab”, and then add a cachebuster to the URL, like last_postcard.jpg?xyz, does the image update? If not, then the caching is happening on the HA backend side; if it does update, then the URL’s headers indicate that it should be cached and so the browser is just honoring that. If it was already updated when you picked “open in a new tab”, or if the image updates when you refresh your dashboard, then it might be the picture card that only updates the image when the URL changes (which makes sense, but this URL isn’t changing).

You could remove the filename: from the automation, but that means it will download a new file on every postcard, and you would then have to worry about cleaning up older downloads. Plus then you would have to get the new image filename into the picture card in order for it to update. It would be pretty easy to do that using a text helper though.

I’m still thinking through how that should be surfaced. It’s not as easy as “setting the entity picture” - because there’s no relevant entity currently. So it would have to be a new entity that is dedicated to showing the last postcard information (probably identified bird species), and set the picture attribute.

If I can formulate a wish 
 Yes, the sensor for the postcard should have additional attributes like the bird species.

1 Like

If I reload the “page” a couple of times, the picture updates. So I think it’s the browser that®s buffering.
I don’t think the picture card is ment to be used this way. :slight_smile:
But it does not matter so much for me, I send a refresh on update (not using HA on the Mirror). :slight_smile:

Here are the translations to Swedish:

DEEP_SLEEP = Sover
“Sover” is more like “Sleep”, and that’s usually what “things” do. We usually only use “Deep sleep” (Swedish = Djupsömn) for people only :slight_smile:

FACTORY_RESET = FabriksÄterstÀllning
FIRMWARE_UPDATE = Firmwareuppdatering

OFFLINE = Offline
Can also be “Bortkopplad” but we usually say “Offline” as well.

OFF_GRID = Bortkopplad
This I would say is “Bortkopplad”. :slight_smile:

ONLINE = Online
Same here, we use “Online” all the time, but you could say “Inkopplad” (if “Bortkopplad” is used for “Offline”).

OUT_OF_FEEDER = Urtagen ur huset
There is no “good” word for “feeder”, maybe “Matare”, but it looks stupid. :slight_smile: Maybe instead change it to “Camera out”, that would be “Kameran urtagen”.

PENDING_FACTORY_RESET = VÀntande fabriksÄterstÀllning
This is a bit strange formulated. You could also say “VĂ€ntar pĂ„ fabriksĂ„terstĂ€llning”. :slight_smile:
The second one is more “conversational” then the first one. :slight_smile:

PENDING_REMOVAL = VĂ€ntande borttagning
Same with this one: “VĂ€ntar pĂ„ borttagning” may be a better formulation.
The second one is more “conversational” then the first one.

READY_TO_STREAM = Klar att strömma
This is a bit strange as well. This means that its ready to send video in Swedish. But maybe that’s intended?
I would rader have it say just “Ready” and in Swedish “Klar” or maybe “Waiting for visitors” = “VĂ€ntar pĂ„ besökare”.

STREAMING = “Strömmar video”

TAKING_POSTCARDS = “Tar bild”
Postcard in Swedish is “Vykort”, but that refers to a physical card i think. “Tar bild” means “Taking picture”, but I think it fits better.

UNKNOWN = “OkĂ€nt”
Maybe “OkĂ€nt fel” = “Unknown error”.

A new entity for the picture is a great idea.

For OFF_GRID, the origin of the phrase is “off the grid”, which traditionally applies to someone who is living off of the electrical power grid - like roughing it in a cabin with no power. But more recently and in this case it is likely referring more to “I’m intentionally not reporting, because I don’t want people to know where I am.” For example the Foursquare/Swarm app has (or used to have) an “off grid” checkbox you could toggle for a check-in, and it would stay private, so your friends couldn’t see it.
Google translate says bortkopplad is “disconnected”, which I agree is probably a good approximation. Just want to be sure it doesn’t accidentally imply that it’s an unexpected disconnect? We have OFFLINE for the accidentally disconnected state (lost wifi for example). Off grid is intentionally paused from creating postcards.

How does the BB app translate those? I can probably just take all of their translations, including for English, assuming it is translated at all.

The BB app uses “Ready for birds” for the ready state. In this case I did use “Ready” for the English string here.

The machine constants for these are generally going to sound mechanical, and I was aiming to keep them brief so that it doesn’t get ellipsized in a small space (“Ready for 
” would be unhelpful).

I actually don’t know when the state would be “online”, because I’ve always only seen it in one of the other states. The non-owner account doesn’t get states like “out of feeder” or “off grid”, so in those cases it is just “offline”. This is for a guest member (up to 3) you’ve invited to view your feeder, or in an apparently upcoming feature they’re adding a fully public feeder.

I think I found a solution/workaround for the auto refresh issue. I stole it here

You define an additinal birdbuddy camera like this

camera:
  - platform: local_file
    name: birdbuddy
    file_path: /config/www/birdbuddy/last_postcard.jpg

The dashboard looks no like this:

type: grid
columns: 2
title: Bird Buddy
square: false
cards:
  - type: vertical-stack
    cards:
      - show_state: false
        show_name: false
        camera_view: auto
        type: picture-entity
        entity: camera.birdbuddy
        aspect_ratio: 4x5
        tap_action:
          action: none
        hold_action:
          action: none
      - type: custom:mushroom-template-card
        entity: sensor.annikas_bird_buddy_state
        icon_color: grey
        secondary: |
          {{ states(entity)
              | replace('READY_TO_STREAM','Warte auf nÀchsten Besucher.')
              | replace('OFF_GRID','Bin nicht online.')
              | replace('_',' ')
          }}
        tap_action:
          action: more-info
        card_mod:
          style: |
            ha-card {
              box-shadow: 0px 0px;
              background: none;
            }
  - type: vertical-stack
    cards:
      - type: custom:mushroom-template-card
        entity: sensor.annikas_bird_buddy_battery
        icon: >-
          {% set s = states('sensor.annikas_bird_buddy_battery') %}
          mdi:battery{{"-" + (((s|int/10) |round(0)) * 10) | string if ((s|int)
          < 90) and ((s|int) > 5)}}
        primary: Batterie
        icon_color: >-
          {{'grey' if states('sensor.annikas_bird_buddy_battery')|int > 30 else
          'red' }}
        secondary: '{{ (states(entity)) }}%'
        tap_action:
          action: more-info
        card_mod:
          style: |
            ha-card {
              box-shadow: 0px 0px;
              background: none;
            }
      - type: custom:mushroom-template-card
        entity: binary_sensor.annikas_bird_buddy_charging
        icon: mdi:power-plug{{'-off' if states(entity) == 'off'}}
        icon_color: '{{''grey'' if states(entity) == ''off'' else ''green'' }}'
        primary: |
          {{ states(entity) 
              | replace('off','LĂ€dt nicht')
              | replace('on','LĂ€dt via Solar')
          }}
        tap_action:
          action: more-info
        card_mod:
          style: |
            ha-card {
              box-shadow: 0px 0px;
              background: none;
            }
      - type: custom:mushroom-template-card
        entity: sensor.annikas_bird_buddy_signal
        icon: mdi:wifi
        primary: WLAN
        icon_color: grey
        secondary: |
          {{ states(entity) 
          }} dBm
        tap_action:
          action: more-info
        card_mod:
          style: |
            ha-card {
              box-shadow: 0px 0px;
              background: none;
            }
      - type: custom:mushroom-entity-card
        entity: switch.annikas_bird_buddy_off_grid
        name: Off Grid
        icon_color: red
        tap_action:
          action: more-info

1 Like

Oh! Great idea!! I’ll borrow that as well! :slight_smile: Thank you!

Elegant :slight_smile: Thanks for sharing!

I added a “save last snapshot” action to my “BB snapshot automation”
 Just to save all of the snaps somewhere, I was thinking maybe I could make a “collage” later on somewhere from the pictures this Day or Month or even Year
 :slight_smile:

Anyway, here is the “Action”:

service: downloader.download_file
data:
  url: "{{ trigger.event.data.sighting.medias[0].contentUrl }}"
  subdir: BB-Snapshots
  filename: >-
    {{ (as_timestamp(now())-(0)) | timestamp_custom('BB-Snapshot - %Y-%m-%d -
    %H-%M-%S.jpg') }}
  overwrite: true
enabled: true

Creates file named like this: “BB-Snapshot - 2023-01-07 - 15-25-05.jpg” = BB-Snapshot - Year-Month-Day - Hour-Minute-Second.jpg
Saves in the “BB-Snapshots” folder
 :slight_smile:

1 Like

So, I was able to add a new “Recent Visitor” entity, setting the state=bird species, and entity_picture=image url. When displaying the entity, it seems to be working correctly, and I see the image as the thumbnail of the entity, and the bird species as the state.

However, adding that to the picture-entity card, does not seem to extract the entity_picture attribute as I would expect. The only ways to get an image in the card are:

  • image: $url points to a static URL (template not supported)
  • entity: camera.* point to a camera entity to show the camera still
  • camera_image: camera.* to show one entity in the card’s footer, but pull the camera still from another entity

It does not seem possible to pull the image directly from the entity’s entity_picture attribute (which is documented here).

So I get these 2 options built-in:
Screenshot 2023-01-07 at 11.58.52 AM
Screenshot 2023-01-07 at 11.58.57 AM

But the only way I was able to get the image to appear as a large picture was using the Markdown card:

type: markdown
content: >-
  ![]({{ states.sensor.my_bird_buddy_recent_visitor.attributes.entity_picture }})
  {{ states.sensor.my_bird_buddy_recent_visitor.state}}
title: Recent Visitor

But I’m hoping to make it look like this: Picture Entity Card - Home Assistant but instead all I get is:
Screenshot 2023-01-07 at 12.00.40 PM
I would want this ^ L&F, but with the entity_picture as the image.

So, for now I’m kind of at a standstill. I may still push this sensor with the picture_entity anyway, because if you just want a thumbnail it works fine. But it’s not totally ready to get the results I think we want.

Great work! Push it and we can play around anyway. :slight_smile:
Do I have to had opened and identified (if not AI identified) the bird on the postcard to get anything i the “recent visitor”? What happens if the AI could not identify the bird?

The current iteration will start out with the most recent visitor from your collections (already opened postcards). From there, for each new incoming postcard, the AI-recognized bird species will be shown, along with the postcard’s cover image; if it was not recognized it just displays the sighting type for now (no bird, cannot decide, etc), along with the postcard cover image. It will not auto-collect the postcard, and the postcard does not have to be finished in order to display.

Before I release it I will come up with another way to describe the unrecognized visitors (might just say “mystery” or “unknown”), and I’ll need to work on a way to make sure the collection is up to date first. And right now it’s just using the BB image URL, which has an expiration time, so probably need to actually download the image for it to be usable long term. If I can get it to use a media URI that might be best because then I can link to just the image id, and fetch the latest URL as needed.

Ok, sounds reasonable.
I have not yet tried this: Media Source - Home Assistant
But maybe you can use it some how?

Wow, you guys have made a lot of progress quickly.

I tried to follow along as best I could and I think what’s missing is I need to wait for another postcard to get something. Can somebody fact check me here?

I can definitely see the bird buddy pictures in the media browser:
2023-01-08 18_01_22-Greenshot

my automation:

alias: Bird Buddy - Postcard
description: Bird Buddy is sending a postcard.
trigger:
  - platform: device
    device_id: XXXXXX
    domain: birdbuddy
    type: new_postcard
    feeder_id: XXXXXX
  - platform: event
    event_type: birdbuddy_new_postcard_sighting
condition: []
action:
  - service: downloader.download_file
    data:
      url: "{{ trigger.event.data.sighting.medias[0].contentUrl }}"
      subdir: birdbuddy
      filename: last_postcard.jpg
      overwrite: true
  - service: birdbuddy.collect_postcard
    data_template:
      strategy: best_guess
      postcard: "{{ trigger.event.data.postcard }}"
      sighting: "{{ trigger.event.data.sighting }}"
mode: single

my card:

type: picture
image: http://MYURL:8123/local/birdbuddy/last_postcard.jpg
tap_action:
  action: none
hold_action:
  action: none
alt_text: Front Bird Feeder

This is the result:

I think this is because the automation hasn’t ran?

@Snille yeah, that’s already implemented - that’s how it appears in the Media Browser. But using a media-source:// URI does not appear to work in the picture-entity card (i.e., image: media-source://birdbuddy/...).

@Sergeantpup yes, basically the image points to a linked file that doesn’t exist yet. It’ll download the file the next time the automation runs. But fyi, you don’t need both triggers; just one or the other is sufficient. Right now you have a device trigger, as well as the event trigger. The device trigger is just an easier way to add the event trigger (and it’ll also filter to the matching feeder id automatically, which is only relevant if you have more than one feeder)

I thought so from the back and forth. Device trigger is preferable anyway. Thanks!

Look at my bird

2 Likes

It seems that the wizard for configuring the add-on doesnt work with the latest version today.
I am receiving the following error:

"Please wait, starting configuration wizard for Bird Buddy"

followed by:

Config flow could not be loaded: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style>body{font-family:Arial,Helvetica,sans-serif;font-size:12px;text-align:center}h1{color:#06C;font-size:25px;line-height:60px;margin-top:56px}img{margin-top:40px} </style> </head> <body> <img src="data:image/jpg;base64,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 TNuBU0kkkylImmQpSEIAFKAAABwHm8AcB//Z "/> <h1 id="a"></h1> <hr> <p>&copy; 2022 <a href="http://www.synology.com">Synology Inc.</a></p> </body> <script type ="text/javascript"> /* Copyright (c) 2022 Synology Inc. All rights reserved. */ (function(){var a={en:"Sorry, the page you are looking for is not found.",zh:"\u62b1\u6b49\uff0c\u60a8\u6240\u6307\u5b9a\u7684\u9875\u9762\u4e0d\u5b58\u5728\u3002",it:"La pagina richiesta non \u00e8 stata trovata.","zh-HK":"\u62b1\u6b49\uff0c\u60a8\u6240\u6307\u5b9a\u7684\u9801\u9762\u4e0d\u5b58\u5728\u3002",cs:"Hledan\u00e1 str\u00e1nka nebyla nalezena.",es:"Lo sentimos, no se encuentra la p\u00e1gina que est\u00e1 buscando.",ru:"\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u0438\u0441\u043a\u043e\u043c\u0430\u044f \u0432\u0430\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430.",nl:"Sorry, de pagina die u zoekt kan niet weergegeven worden.",pt:"Desculpe, a p\u00e1gina que procura n\u00e3o foi encontrada.",no:"Beklager, siden du leter etter finnes ikke.",nb:"Beklager, siden du leter etter finnes ikke.",tr:"\u00dczg\u00fcn\u00fcz, arad\u0131\u011f\u0131n\u0131z sayfa bulunamad\u0131.",pl:"Przepraszamy, nie znaleziono strony, kt\u00f3rej szukasz.",fr:"D\u00e9sol\u00e9, la page que vous recherchez est introuvable.",de:"Es tut uns Leid, die von Ihnen gesuchte Seite konnte nicht gefunden werden.",da:"Desv\u00e6rre, den side, du leder efter, kunne ikke findes.","pt-BR":"Desculpe, a p\u00e1gina que procura n\u00e3o foi encontrada.","zh-MO":"\u62b1\u6b49\uff0c\u60a8\u6240\u6307\u5b9a\u7684\u9801\u9762\u4e0d\u5b58\u5728\u3002",hu:"Eln\u00e9z\u00e9st, a keresett oldal nem tal\u00e1lhat\u00f3.",ja:"\u7533\u3057\u8a33\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u635c\u3057\u3066\u3044\u308b\u30da\u30fc\u30b8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093",nn:"Beklager, siden du leter etter finnes ikke.","zh-TW":"\u62b1\u6b49\uff0c\u60a8\u6240\u6307\u5b9a\u7684\u9801\u9762\u4e0d\u5b58\u5728\u3002",ko:"\uc8c4\uc1a1\ud569\ub2c8\ub2e4. \ucc3e\uace0\uc790 \ud558\ub294 \ud398\uc774\uc9c0\ub97c \ubc1c\uacac\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.",sv:"Sidan du s\u00f6ker hittades inte."};var b=window.navigator.browserLanguage||window.navigator.language;if(-1==["zh-TW","zh-MO","zh-HK","pt-BR"].indexOf(b)){b=b.split("-",1)}document.getElementById("a").innerHTML=a[b]||a.en})(); </script> </html>

@Sergeantpup Looking good, You already sorted it out. :slight_smile:

@madcoder Ah, of course. :slight_smile: No worries now when @rak figured out the “camera” option. :slight_smile:

@Darkentrophy I haven’t seen that before. The HTML you add contains the string:

Sorry, the page you are looking for is not found.

This seems like something in misconfigured. Are there any other logs that could be relevant?
Can you describe more of your environment and config?

  • HA version
  • HACS version
  • Version of Bird Buddy installed in HACS

You mentioned “latest version today”, but there is no new version. The latest version is still v0.0.7. If you had installed it from the main branch, that could be the issue that you’re seeing, since I did push a change to the main branch, but those changes have not been released yet. You might want to try redownloading Bird Buddy and selecting the v0.0.7 tag to install: HACS → Bird Buddy → 3-dots overflow → “Redownload” → select v0.0.7.

Edit: I realized now you might have been referring to the recent HA update, 23.1.2? I have that version installed, and I’m able to start the config flow, so I’m not sure what would cause that. I’ll see if I can track down any info about that error. One other thing that could be relevant: are you accessing the internal HA URL, or using an external URL (or nabu casa)?