Bonjour à tous,
J’ai réussi à me débrouiller et à réaliser à 80% mon idée, cependant il me reste 2 détails à régler.
Je réalise donc une serrure avec lecteur RFID (RC522) ainsi qu’un écran LCD 16x2 (PCF8574), un relais 5v (Ali) et un buzzer, le tout sur un ESP32 (WROOM-32D)
En suivant toute la doc d’ESPHOME.IO j’ai pratiquement réussi à tout faire.
J’ai un soucis de commande du relais, la sortie (GPIO13 dans mon cas) est toujours activée, je n’arrive pas à la mettre en pulldown.
Mon deuxième soucis est dans la commande de l’écran, j’arrive à le faire fonctionner mais de manière fixe. Il affiche l’heure et la date du jour, puis « j’attends un tag ».
Je souhaite afficher autre chose lorsqu’un tag particulier est lu.
Par exemple « bienvenue » si un tag est connu et « mauvais tag » dans le cas contraire.
Voici mon code :
esphome:
name: esp-wroom
friendly_name: Serrure RFID
esp32:
board: denky32
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
ota:
- platform: esphome
password: "xxxxxxxxxxxxxxxxxxxxxxxx"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 192.168.1.86
gateway: 192.168.1.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp-Wroom Fallback Hotspot"
password: "xxxxxxxxxxxxxxxxxx"
captive_portal:
web_server:
port: 80
spi:
clk_pin: GPIO18
mosi_pin: GPIO23
miso_pin: GPIO19
id: "rfid"
rc522_spi:
cs_pin: GPIO4
reset_pin: GPIO5
spi_id: "rfid"
update_interval: 0.1s
on_tag:
then:
- homeassistant.tag_scanned: !lambda 'return x;'
- rtttl.play: 'long:d=1,o=5,b=100:e6'
- text_sensor.template.publish:
id: rfid_tag
state: !lambda 'return x;'
text_sensor:
- platform: template
name: "RFID Tag"
id: rfid_tag
binary_sensor:
- platform: rc522
uid: XX-XX-XX-XX
name: "Carte David"
on_state:
then:
- rtttl.play: 'scale_up:d=32,o=5,b=100:c,c#,d#,e,f#,g#,a#,b'
- platform: rc522
uid: XX-XX-XX-XX
name: "KeyFob David"
on_state:
then:
- rtttl.play: 'scale_up:d=32,o=5,b=100:c,c#,d#,e,f#,g#,a#,b'
i2c:
sda: GPIO21
scl: GPIO22
frequency: 400kHz
timeout: 30ms
display:
- platform: lcd_pcf8574
dimensions: 16X2
address: 0x27
lambda: |-
it.strftime("%H:%M %d.%m.%Y", id(my_time).now());
it.print(0, 1, "j'attends un tag");
time:
- platform: homeassistant
id: my_time
output:
- platform: ledc
pin: GPIO12
id: rtttl_out
rtttl:
output: rtttl_out
switch:
- platform: gpio
pin: GPIO13
id: relay
name: "Porte du sous-sol"
icon: "mdi:door-closed-lock"
on_turn_on:
- delay: 2000ms
- switch.turn_off: relay
Merci d’avance à ceux qui vont décortiquer le code. ^^