Salut a tous,
Solution Ici
J’aurais besoin de vos lumières
Je suis en train de suivre cet article Integrar RFID - RC522 en ESPHome y Homeassistant - Domology 2.0 basé sur un ESP32,
J’essai d’adapté a mon ESP32 CAM, avec ces branchements.
ESP32 ----> RFID
3,3/5v —> Vcc
16 —> RST
GND —> GND
14 ----> MISO
2 ----> MOSI
4 ----> SCK
15 ----> SS/SDA
Voici mon fichier rc522_sensor.h que j’ai mis directement a la racine du dossier ESPHome dans dossier config.
Ce fichier et téléchargé dans un dossier portant le même nom, faut t’il que je le mette dans le dossier ?
#include "esphome.h"
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 16 // Configurable, see typical pin layout above
#define SS_1_PIN 15 // Configurable, take a unused pin, only HIGH/LOW required
MFRC522 mfrc522; // Create MFRC522 instance.
unsigned long tempo2 = 0;
class RFIDRC522Sensor : public Component{
public:
TextSensor *rfid = new TextSensor();
TextSensor *rfidlast = new TextSensor();
std:: string idnumberstd = "";
std:: string last_cardstd= "";
void setup() override {
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(SS_1_PIN, RST_PIN); // Init each MFRC522 card
}
void loop() override {
// Look for new cards
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size, mfrc522.PICC_GetTypeName(piccType)); //llama a la funcion que trabaja con nuestra tarjeta
// Halt PICC
mfrc522.PICC_HaltA();
// Stop encryption on PCD
mfrc522.PCD_StopCrypto1();
}
if (millis() > tempo2 && tempo2 != 0){
//Borramos tarjeta y publicamos (vacio)
idnumberstd.clear();
rfid->publish_state(idnumberstd);
tempo2 = 0;
}
}
void dump_byte_array(byte *ID, byte IDSize, String picc) {
//le damos formato al numero de de la tarjeta leido
String idnumber = "";
for(byte i=0; i < IDSize; i++){
if(ID[i] < 0x10){ //Añadimos el 0 de la izquierda en cada byte (si lo tuviera).
idnumber += "0";
}
idnumber += String (ID[i], HEX);
}
idnumberstd = idnumber.c_str(); //pasamos a variable standard para que funcione en ESPHome y podamos mandarla
//creamos los datos de la ultima tarjeta leida
String last_card = (" ID card: " + idnumber + " PICC type: " + picc);
last_cardstd = last_card.c_str(); //pasamos a variable standard para que funcione en ESPHome y podamos mandarla
//Publicamos la tarjeta leida
rfid->publish_state(idnumberstd);
rfidlast->publish_state(last_cardstd);
//Activamos temporizador de borrado
tempo2 = millis() + 1000;
}
};
Et voici mon fichier yaml ESPHome,
esphome:
name: poulailler
platform: ESP32
board: esp32dev
includes:
- rc522_sensor.h
libraries:
- "MFRC522"
- "SPI"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_mdp
# Ip Manuelle Optionnel
manual_ip:
static_ip: 192.168.10.200
gateway: 192.168.10.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Poulailler Hotspot"
password: !secret ap_mdp
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
esp32_camera:
name: My Camera
external_clock:
pin: GPIO27
frequency: 20MHz
i2c_pins:
sda: GPIO25
scl: GPIO23
data_pins: [GPIO17, GPIO35, GPIO34, GPIO5, GPIO39, GPIO18, GPIO36, GPIO19]
vsync_pin: GPIO22
href_pin: GPIO26
pixel_clock_pin: GPIO21
reset_pin: GPIO15
resolution: 640x480
jpeg_quality: 10
binary_sensor:
# statut
- platform: status
name: "Statut"
sensor:
# Qualité du signal
- platform: wifi_signal
name: "Signal Wifi"
update_interval: 60s
# Temps de fonctionnement
- platform: uptime
name: "Allumé depuis (s)"
id: uptime_sec
switch:
# Bouton de redémarrage
- platform: restart
name: "Redémarrage"
text_sensor:
- platform: template
name: "Allumé depuis (j)"
lambda: |-
int seconds = (id(uptime_sec).state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
icon: mdi:clock-start
update_interval: 60s
- platform: custom
lambda: |-
auto my_sensor = new RFIDRC522Sensor();
App.register_component(my_sensor);
return {my_sensor->rfid, my_sensor->rfidlast};
text_sensors:
- name: "RFID ID (temps reel)"
- name: "RFID (derniere lecture)"
Voilà si il y a des partisan de ESPHome je suis preneur car je ne trouve pas ou est mon problème.
Merci d’avance.