Vi spiego come ho integrato una tastiera Wiegand ad Home Assistant attraverso un ESP8266.
Lo scopo è quello di armare l’antifurto di casa oppure attivare qualunque altro dispositivo domotico o ancora avviare specifiche automazioni.
Da tempo tenevo nel cassetto una tastiera apriporta e quando mi sono messo a provarla ho scoperto che aveva il protocollo Wiegand.
Dopo alcuni tentativi andati a vuoto, probabilmente per un difetto hardware, ho deciso di acquistarne un’altra, questa volta è andata bene.
Mi sono chiesto, come la sfrutto e soprattutto come posso utilizzare il segnale Wiegand ?
Dopo brevi ricerche ho scoperto che ESPHome ne gestisce il protocollo ! fantastico !
Per cui ho preso uno dei tanti ESP8266 a disposizione ed eccomi qui a raccontarvi come è andata l’esperienza.
Tra le tante modalità di utilizzo ne ho scelto una e nel video vi spiego come ho deciso di integrarla nel mio sistema domotico al fine di realizzare una chiave di attivazione antifurto per Home Assistant o qualunque altra attivazione mi necessitasse in futuro.
A titolo di esempio qui di seguito vi riporto il codice che normalmente utilizzo come base per gli ESP8266 e che ovviamente va personalizzato
Ovviamente il codice fa riferimento ad alcuni elementi nascosti nel file secret.yaml che dovrete avere preparato e personalizzato, tipo questo:
# Esempio di file secrets.yaml
wifi_ssid: "tuo_nome_rete_wifi"
wifi_password: "tua_password_wifi"
web_server_password: "tua_password_web"
captive_password: "tua_password_captive"
ota_password: "tua_password_ota"
# Le chiavi per ogni esp
EncKey_tastiera-wiegand: "66dga78378tr2=8dha9dy987a9fdunnr4k4'3mm43m4="
Probabilmente se avete creato la configurazione con esptools sarà completamente diversa pertanto potrete ignorare questa parte oppure sostituirla ad essa opportunamente personalizzata:
esphome:
name: esphome-tastiera-wiegand
friendly_name: Tastiera Wiegand
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: !secret EncKey_tastiera-wiegand
ota:
- platform: esphome
# safe_mode: true
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Setto IP statico
manual_ip:
static_ip: 192.168.1.115
gateway: 192.168.1.251
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Tastiera Wiegand ESP8266"
password: !secret captive_password
captive_portal:
web_server:
port: 80
auth:
username: "admin"
password: !secret web_server_password
time:
- platform: sntp
id: my_time
timezone: Europe/Rome
switch:
- platform: restart
name: EspHome Node Restart
Questa invece è la parte vera e propria del codice relativo alla gestione della tastiera Wiegand dove si creano anche i sensori e i pin GPIO che avete scelto:
# Configurazione del dispositivo Wiegand
wiegand:
- id: mykeypad
d0: GPIO5
d1: GPIO4
on_key:
- lambda: |-
ESP_LOGI("KEY", "received key %d", x);
id(keypad_key).publish_state(std::to_string(x).c_str());
on_tag:
- lambda: |-
ESP_LOGI("TAG", "received tag %s", x.c_str());
id(keypad_tag).publish_state(x.c_str());
- homeassistant.tag_scanned: !lambda 'return x.c_str();'
on_raw:
- lambda: |-
ESP_LOGI("RAW", "received raw %d bits, value %llx", bits, value);
id(raw_bits).publish_state(bits);
id(raw_value).publish_state((uint64_t)value);
# Definizione delle entità sensore per Home Assistant
text_sensor:
- platform: template
name: "Keypad Key"
id: keypad_key
icon: "mdi:keyboard"
- platform: template
name: "Keypad Tag"
id: keypad_tag
icon: "mdi:key"
sensor:
- platform: template
name: "Raw Bits"
id: raw_bits
icon: "mdi:null"
- platform: template
name: "Raw Value"
id: raw_value
icon: "mdi:numeric"
binary_sensor:
- platform: gpio
pin:
number: GPIO13 #D7
inverted: false
mode:
input: true
pullup: true
name: "Keypad rele"
device_class: lock
filters:
- delayed_on: 10ms
- platform: gpio
pin:
number: GPIO12 #D6
inverted: true
mode:
input: true
pullup: true
name: "Keypad campanello"
device_class: sound
filters:
- delayed_on: 10ms
# Questa parte non è necessaria se usate la tastiera in modalità "Relè Toggle"
key_collector:
- id: pincode_reader
source_id: mykeypad
min_length: 6
max_length: 6
end_keys: "#"
end_key_required: true
back_keys: "*"
clear_keys: "C"
allowed_keys: "0123456789"
timeout: 5s
on_progress:
- logger.log:
format: "input progress: '%s', started by '%c'"
args: [ 'x.c_str()', "(start == 0 ? '~' : start)" ]
on_result:
- logger.log:
format: "input result: '%s', started by '%c', ended by '%c'"
args: [ 'x.c_str()', "(start == 0 ? '~' : start)", "(end == 0 ? '~' : end)" ]
on_timeout:
- logger.log:
format: "input timeout: '%s', started by '%c'"
args: [ 'x.c_str()', "(start == 0 ? '~' : start)" ]
I Capitoli nel video su YouTube:
00:00 A cosa serve una tastiera apriporta
01:00 Possibili applicazioni e il protocollo Wiegand
05:23 Breadboard e l’ESP8266
06:50 Abilitiamo una carta e un codice
08:47 Modalità di funzionamento della tastiera
10:40 Preparazione base dell’ESP8266
14:18 Quali PIN GPIO ho usato
16:42 Connessioni con la breadboard
20:46 Device Discovery – Riconoscimento in Home Assistant
22:54 Configurazione del codice ESP per Wiegand
25:54 Primo test funzionamento
29:03 Configurazione con Key Collector
34:40 Test funzionamento con l’automazione
🔹 Tutti i componenti che occorrono 🔹
Tastiere con supporto Wiegand senza WiFi
🛒 Simile a quella usata nel video: https://amzn.to/4cD4hSU
🛒 Altro modello: senza WiFi: https://amzn.to/4czSAME
🛒 Modello economico: https://amzn.to/3XDYTdI
🛒 Quella del video con WiFi la trovate su Aliexpress:https://it.aliexpress.com/item/1005005901920016.html?spm=a2g0o.order_list.order_list_main.16.ec723696YP6wiv&gatewayAdapt=glo2ita
🛒 Microcontrollore ESP8266: https://amzn.to/4cCTIix
🛒 Breadboard con step-down Converter e cavetti dupont: https://amzn.to/3zrAON8
🛒 Kit di cavetti Dupont: https://amzn.to/4cD4aXu
🛒Alimentatore 12V 3 A: https://amzn.to/3RHUcvP
👉 Il mio Setup di Home Assistant: https://www.bonetto.cloud/2024/05/13/setup-domotico-di-home-assistant/
(Come Affiliato Amazon ricevo un guadagno dagli acquisti idonei fatti da qui 🙏🏻)
🔹 LINK UTILI 🔹
Documentazione generale ESPHome
🔗 https://esphome.io/index.html
Codice ufficiale per la tastiera da inserire nell’ESP
🔗 https://next.esphome.io/components/wiegand.html
🔗 https://next.esphome.io/components/key_collector
🔗 Prima programmazione da PC: https://web.esphome.io/
🔗 Cancellazione ESP: https://espressif.github.io/esptool-js/
oppure questo https://serial.huhn.me/
❤️ Spero vi possano tornare utili, anche solo in parte, le indicazioni che vi ho mostrato anche se non è sempre facile essere completi e precisi.
Se volete potete ricambiare semplicemente condividendo il video nei vostri social, grazie ! ❤️
📧 CONTATTI 📧
Vi ringrazio per tutti i preziosi commenti e suggerimenti che mi scrivete, sono sempre molto graditi e cerco, nel limite del possibile, di rispondervi su YouTube.
Se invece avete delle precise esigenze, rispondo alle mail come agli altri canali social e telefonici ESCLUSIVAMENTE per richieste di consulenza PROFESSIONALI quindi a carattere economico in quanto parte del mio lavoro.