La vidéo
schéma

LES codes
Code esphome
esphome:
name: esp_distributeur_de_croquette
platform: ESP8266
board: d1_mini
wifi:
ssid: "WIFI"
password: "MOTDEPASSE"
ap:
ssid: "Esp Distributeur De Croquette"
password: "MZqbJV7ukcqa"
captive_portal:
logger:
api:
services:
- service: control_servo
variables:
level: float
then:
- servo.write:
id: servoMoteur
level: !lambda 'return level / 100.0;'
- service: distribution
variables:
rep: int
then:
- homeassistant.service:
service: input_datetime.set_datetime
data:
entity_id: input_datetime.last_time_food
data_template:
date: '{{ as_timestamp(now())|timestamp_custom(''%Y-%m-%d'') }}'
time: '{{ now().strftime(''%H:%M:%S'') }}'
- lambda: |-
int t = rep;
while(t > 0){
id(servoMoteur).write(-0.3);
delay(1500);
id(servoMoteur).write(1.0);
delay(1500);
t = t - 1;
}
- servo.detach: servoMoteur
ota:
output:
- platform: esp8266_pwm
id: pwm_servo
pin: D2
frequency: 50 Hz
servo:
- id: servoMoteur
output: pwm_servo
sensor:
- platform: uptime
name: "Temps De Fonctionnement"
- platform: wifi_signal
name: "Signal Wifi"
id: "signal_wifi_distributeur_croquette"
update_interval: 360s
- platform: ultrasonic
trigger_pin: D7
echo_pin: D8
name: "Capteur Ultrason"
id: "capteur_ultrason_distributeur_croquette"
update_interval: 3h
filters:
- filter_out: nan
- lambda: return 100 - (x - 0.04) * 100/(0.22);
accuracy_decimals: 0
unit_of_measurement: "%"
time:
- platform: homeassistant
timezone: Europe/Paris
id: homeassistant_time
switch:
- platform: restart
name: "Redémarrer Distributeur de croquette"
id: "restart_distributeur_croquette"
binary_sensor:
- platform: gpio
pin:
number: GPIO14
id: bouton
on_press:
then:
- homeassistant.service:
service: input_datetime.set_datetime
data:
entity_id: input_datetime.last_time_food
data_template:
date: '{{ as_timestamp(now())|timestamp_custom(''%Y-%m-%d'') }}'
time: '{{ now().strftime(''%H:%M:%S'') }}'
- servo.write:
id: servoMoteur
level: -30%
- delay: 1.5s
- servo.write:
id: servoMoteur
level: 100%
- delay: 3s
- servo.detach: servoMoteur
code Interface 1
cards:
- cards:
- hold_action:
action: more-info
icon: 'mdi:cat'
name: Distribuer des Croquettes
show_name: true
state_color: true
tap_action:
action: call-service
service: esphome.esp_distributeur_de_croquette_distribution
service_data:
rep: 1
type: button
type: horizontal-stack
- entities:
- entity: switch.redemarrer_distributeur_de_croquette
- entity: sensor.temps_de_fonctionnement
- entity: sensor.signal_wifi
- entity: input_datetime.last_time_food
title: Infos
type: entities
- entity: sensor.capteur_ultrason
max: 100
min: 0
name: Réservoir
severity:
green: 60
red: 0
yellow: 30
theme: default
type: gauge
title: Distributeur de Croquettes
type: vertical-stack
code Interface 2
cards:
- entities:
- entity: automation.distributeur_de_croquette_horaire_1
name: État
- entity: input_datetime.everyday_food_1
name: Heure de Distribution
title: Horaire 1
type: entities
- entities:
- entity: automation.distributeur_de_croquette_horaire_2
name: État
- entity: input_datetime.everyday_food_2
name: Heure de Distribution
title: Horaire 2
type: entities
- entities:
- entity: automation.distributeur_de_croquette_horaire_3
name: État
- entity: input_datetime.everyday_food_3
name: Heure de Distribution
title: Horaire 3
type: entities
title: Réglage Distributeur de Croquettes
type: vertical-stack
Le code à ajouter dans configuration.yaml
sensor:
- platform: systemmonitor
resources:
- type: disk_use_percent
arg: /home
- type: processor_use
- type: memory_use_percent
- type: last_boot
- platform: time_date
display_options:
- 'time'
- platform: template
sensors:
last_feed:
friendly_name: "Dernière Distribution"
entity_id: sensor.last_food
device_class: timestamp
value_template: '{{ as_timestamp(states.esphome.esp_distributeur_de_croquette_distribution.last_changed) }}'
input_datetime:
everyday_food_1:
name: "Programation Distribution 1"
has_date: false
has_time: true
everyday_food_2:
name: "Programation Distribution 2"
has_date: false
has_time: true
everyday_food_3:
name: "Programation Distribution 3"
has_date: false
has_time: true
last_time_food:
name: "Dernière Distribution"
has_date: true
has_time: true
heure_courrier:
name: "Heure Courier"
has_date: false
has_time: true
Code Automation
{{states('sensor.time') == (state_attr('input_datetime.everyday_food_1','timestamp') | int | timestamp_custom('%H:%M', False)) }}