Notre chat ayant tendance a l’embonpoint et quelques soucis de santé je me suis mis en tête de lui bricoler un distributeur pilotable qui me permette d’ajuster sa ration quotidienne tout en ne passant pas ma vie a lui servir des micros rations 20 fois par jour
le choix s’est initialement porté sur un Xiaomi pet feeder, mais malheureusement tout en cloud.
Ca a fait l’affaire quelques temps mais la combinaison du cloud et de la nécessité de l’appli dédiée a fini par me convaincre d’améliorer le truc, et pas qu’un peu, tant qu’à faire.
la première étape est le passage du distributeur sous esphome réalisé grâce a ça :
ce qui permet de prendre la main totalement en local sur la machine
et d’avoir un calendrier de distribution inscrit en dur dans l’ESP qui évite tout pb en cas de perte d’internet ou de ha :
je tiens a remercier tout particulièrement l’auteur de la config du petfeeder qui a pris bcp de temps pour qu’on améliore le truc et créer quelque sensors spécifiques comme le décompte du temps restant jusqu’à la prochaine distribution !
l’étape suivante est le couplage avec frigate. le distributeur est « amélioré » par l’ajout d’une caméra pas chère (tapo c210):
le reste passe par le paramétrage de frigate :
et les bonnes automatisations pour contrôler le régime et laisser au chat une latitude :
- creation d’un planning de base allégé
- création d’un seuil journalier de doses a distribuer qui stoppe le calendrier de distribution et la reconnaissance faciale jusqu’au lendemain
- création d’un timer qui empêche le chat de gloutonner toutes les 5 minutes
- asservissement de la distribution d’une dose a la reconnaissance du chat par frigate
en gros le principe :
- a chaque distribution, calendrier. caméra ou manuelle le timer s’enclenche pour 30 min et bloque la distri par la caméra
- 30 min avant la prochain distribution planifiee la distribution par la caméra est aussi bloquée
- si aucun de ces deux times n’est actif, le chat se presente devant le distributeur, frigate l’identifie et déclenche la distribution d’une dose
- quand le cumulé distribué journalier atteint un seuil. le calendrier est désactivé ainsi que la distribution par ma caméra jusqu’au lendemain
alias: distribution camera
description: ""
triggers:
- trigger: state
entity_id:
- binary_sensor.distributeur_cat_occupancy
from: "off"
to: "on"
conditions: []
actions:
- if:
- condition: and
conditions:
- condition: state
entity_id: timer.minuteur_distribution_camera
state: idle
- condition: numeric_state
entity_id: sensor.feeder_remaining_time_until_next_feed
above: 30
then:
- action: esphome.feeder_dispense_food
data:
portions: 1
- action: timer.start
metadata: {}
data: {}
target:
entity_id: timer.minuteur_distribution_camera
enabled: false
mode: single
alias: anti-glouton
description: ""
triggers:
- trigger: state
entity_id:
- sensor.feeder_dispensed_today
conditions: []
actions:
- action: timer.start
metadata: {}
data: {}
target:
entity_id: timer.minuteur_distribution_camera
mode: single
alias: Limitation distributeur
description: ""
triggers:
- trigger: state
entity_id:
- binary_sensor.limite_distributeur_croquettes
from: "off"
to: "on"
for:
hours: 0
minutes: 0
seconds: 30
conditions: []
actions:
- parallel:
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.reset_planning_distributeur
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id:
- automation.distribution_camera
- automation.anti_glouton
- action: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.feeder_feeding_schedule
- delay:
hours: 0
minutes: 0
seconds: 3
milliseconds: 0
- if:
- condition: state
entity_id: switch.feeder_feeding_schedule
state: "on"
then:
- data:
message: Attention le planning du distributeur est toujours actif
action: notify.jimmy
mode: single
alias: Restart planning distributeur
description: ""
triggers:
- trigger: time
at: "00:00:00"
conditions: []
actions:
- parallel:
- action: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.feeder_feeding_schedule
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id:
- automation.anti_glouton
- automation.distribution_camera
- action: automation.turn_off
metadata: {}
data:
stop_actions: false
target:
entity_id: automation.reset_planning_distributeur
mode: single
grosso modo a la fin ça donne ça :
visiblement ça marche et le chat l’a bien compris :
et ça permet de contrôler que la distribution se fait bien en partie sur calendrier, et en partie a la demande :
et au final j’ai rajouté des alertes sur l’awtrix quand le distributeur détecte que le niveau de croquettes est trop faible