A custom Home Assistant integration for Honey Guardian/Guaridan/Guaridian S30D/S25D Pet Feeder, providing a replacement for the (horrid) HGSmart app.
This integration was developed through reverse engineering of the HGSmart Android application and provides access to feeding schedules, manual feeding, food level monitoring, and device status.
- Manual feeding button with configurable portions
- Access to the programmable feeding schedules of the device
- Real-time food level monitoring
- Desiccant expiration tracking and reset
- Service for custom integrations / schedules (but you'll need to trust the HGSmart APIs and the pet feeder Wi-Fi connectivity)
- Eating sensors for supported devices
- Event logs
All example cards use the S25D model, remember to replace any s25d occurrence with your device model (ie: s30d)
Required custom cards: layout-cards, lovelace-mushroom, slider-button-card
Click here to see the card YAML
type: custom:layout-card
layout_type: custom:vertical
cards:
- type: custom:mushroom-title-card
title: Cat Kibble
- type: custom:layout-card
layout_type: custom:grid-layout
layout:
grid-template-columns: 70% 30%
padding: 0px
margin: 0px
cards:
- type: custom:mushroom-entity-card
entity: button.s25d_feed
icon_color: accent
tap_action:
action: more-info
hold_action:
action: more-info
double_tap_action:
action: more-info
name: Feed the beasts
fill_container: false
- type: custom:mushroom-number-card
entity: number.s25d_manual_feed_portions
name: Porzioni
fill_container: false
secondary_info: none
layout: horizontal
icon_type: none
display_mode: buttons
primary_info: none
- type: custom:layout-card
layout_type: custom:grid-layout
layout:
grid-template-columns: 35% 15% 50%
padding: 0px
margin: 0px;
cards:
- type: custom:mushroom-entity-card
entity: sensor.s25d_desiccant_expiry
name: Desiccant
fill_container: true
- show_name: false
show_icon: true
type: button
entity: button.s25d_reset_desiccant
icon: mdi:refresh
theme: minimalist-desktop
- type: custom:slider-button-card
entity: number.s25d_set_food_remaining
slider:
direction: left-right
background: solid
use_percentage_bg_opacity: false
show_track: true
toggle_on_click: false
force_square: false
show_name: true
show_state: true
compact: true
icon:
show: true
tap_action:
action: more-info
icon: mdi:cookie
action_button:
mode: toggle
icon: mdi:power
show: false
show_spinner: true
tap_action:
action: toggle
show_attribute: true
name: Kibble
(thanks @sovanyio)
Required custom cards: layout-cards, lovelace-mushroom, slider-button-card, flex-table-card, bubble-card
Click here to see the card YAML
type: custom:layout-card
layout_type: custom:vertical
cards:
- type: custom:layout-card
layout_type: custom:vertical
layout:
padding: 0px
margin: 0px
cards:
- type: custom:mushroom-title-card
title: Cat Feeder
- type: custom:layout-card
layout_type: custom:grid-layout
layout:
grid-template-columns: 70% 30%
padding: 0px
margin: 0px
cards:
- type: custom:mushroom-entity-card
entity: button.s25d_feed
icon_color: accent
tap_action:
action: more-info
hold_action:
action: more-info
double_tap_action:
action: more-info
name: Feed the kitties
fill_container: false
primary_info: name
secondary_info: last-changed
- type: custom:mushroom-number-card
entity: number.s25d_manual_feed_portions
name: Portions
fill_container: false
secondary_info: none
layout: horizontal
icon_type: none
display_mode: buttons
primary_info: none
- type: custom:layout-card
layout_type: custom:grid-layout
layout:
grid-template-columns: 35% 15% 50%
padding: 0px
margin: 0px;
cards:
- type: custom:mushroom-entity-card
entity: sensor.s25d_desiccant_expiry
name: Desiccant
fill_container: true
- show_name: false
show_icon: true
type: button
entity: button.s25d_reset_desiccant
icon: mdi:refresh
theme: minimalist-desktop
- type: custom:slider-button-card
entity: number.s25d_set_food_remaining
slider:
direction: left-right
background: solid
use_percentage_bg_opacity: false
show_track: true
toggle_on_click: false
force_square: false
show_name: true
show_state: true
compact: true
icon:
show: true
tap_action:
action: more-info
icon: mdi:cookie
action_button:
mode: toggle
icon: mdi:power
show: false
show_spinner: true
tap_action:
action: toggle
show_attribute: true
name: Kibble
- type: custom:layout-card
layout_type: custom:grid-layout
layout:
grid-template-columns: 50% 50%
padding: 0px
margin: 0px
cards:
- type: custom:mushroom-entity-card
entity: switch.s25d_schedule_1_enabled
icon: mdi:calendar-clock
icon_color: green
tap_action:
action: navigate
navigation_path: "#feeding-schedule"
hold_action:
action: navigate
navigation_path: "#feeding-schedule"
double_tap_action:
action: navigate
navigation_path: "#feeding-schedule"
name: Edit Schedule
fill_container: false
primary_info: name
secondary_info: none
- type: custom:mushroom-entity-card
entity: switch.s25d_schedule_1_enabled
icon: mdi:cogs
icon_color: purple
tap_action:
action: navigate
navigation_path: "#feeding-settings"
hold_action:
action: navigate
navigation_path: "#feeding-settings"
double_tap_action:
action: navigate
navigation_path: "#feeding-settings"
name: Device Settings
fill_container: false
primary_info: name
secondary_info: none
- type: custom:mushroom-title-card
title: Feed log
- type: custom:flex-table-card
entities:
- entity: sensor.s25d_today_s_events
css:
tr:has(td [data-bowl='right']): "background-color: light-dark(#e3f2fd, #0d47a1) !important;"
tr:has(td [data-bowl='left']): "background-color: light-dark(#fff3e0, #e65100) !important;"
tr:has(td [data-bowl='none']): "font-weight: bold;"
th:nth-child(3): "display: none;"
tr td:nth-child(3): "display: none;"
td:nth-child(2): "padding: .5rem"
columns:
- name: Time
data: events.createTime
modify: >-
(new Date(x.replace(' ',
'T'))).toLocaleTimeString('it-IT').toLowerCase()
align: right
- name: Activity
data: events.eventDesc
- name: Code
data: events.event
modify: >
(x == '1_10' && `<span data-bowl="right">${x}</span>`) || (x == '1_9'
&& `<span data-bowl="left">${x}</span>`) || (x == '1_1' && `<span
data-bowl="none">${x}</span>`) || x
strict: true
- type: vertical-stack
cards:
- type: custom:bubble-card
card_type: pop-up
hash: "#feeding-schedule"
button_type: name
sub_button:
main: []
bottom: []
show_header: false
- type: custom:mushroom-title-card
title: Feeding Schedule
- type: custom:layout-card
layout_type: custom:grid-layout
layoutScan report · 2026-10-12
- ✓ Prohibited terms or links
- ✓ Repository eligibility
- ✓ slopscore.md paperwork
- ✓ Content policy
- ✓ Risk review
From the balcony · 0 of 4 clapped
Crusoe, Schnitzel, Cap'm Slop and Princess read it and passed. Their reasons are on the balcony, with every other verdict.
Critics are accounts on this site with no GitHub account behind them. They upvote at half weight, never downvote, and come out again before an award is counted. Who they are.
report this listing
— log in to report
0 comments
log in to comment.