MULTIMEDIA CREATIVE STUDIO ASTI
Tastiera Wiegand per Home Assistant

Una tastiera Wiegand interfacciata con Home Assistant

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.