Building a keypad for controlling Access using a W32T Ethernet board and a matrix keypad

Good Day Everyone,

I’m getting ready to build a new keypad to control access to my gate. The main reason why I want to do this is that I can integrate the codes with the locks at the property for example, AirBnB guest arrives I no longer have to give out the master code to the gate anymore and they can instead use the code that Rental Control programs into the lock to control the gate.

So I have to use a W32T ESP board for down at the gate, there is just no way I can expect a standard ESP WiFi board to have enough strength to reach back the 1/4 mile to the outdoor wifi access point. My phone even struggles with reaching down there, I mean it will do it but if I have to face the house directly.

Right now the gate is connected back to the house via WiFi bridge and that works great, I have a PoE switch down there for powering my cameras and I intend to use a PoE splitter to power the W32T since I don’t have on hand at the moment any of the PoE variants.

That being said while I haven’t started the board construction yet I did start to throw together the ESPHome code for it but as the examples from ESPHome for the Matrix keypad reference pins that these boards do not have I wanted to know which pins I can substitute in place of the ones in the examples, I know that there are certain pins that are for input. Or if its even possible to achieve with this board.

Here is my code

substitutions:
  devicename: gatekeypad ##this will be the device name like "water_station_1" "outdoor_light_5"
  purpose: gate access control ##this will be the purpose of the switch like recirculation, illumination, or irrigation
  subject: gate keypad ## this is what its interface is acting on like "garden", "water heater", or "zone_1"
##################################################################

esphome:
  name: $devicename
  platform: ESP32
  board: esp-wrover-kit

# Enable logging
logger:
  level: DEBUG

ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO0_IN
  phy_addr: 1
  power_pin: GPIO16
  manual_ip:
    static_ip: 192.168.X.X
    gateway: 192.168.X.X
    subnet: 255.255.255.0

matrix_keypad:
  id: gatekeypad
  rows:
    - pin: 21
    - pin: 19
    - pin: 18
    - pin: 5
  columns:
    - pin: 17
    - pin: 16
    - pin: 4
    - pin: 15
  keys: "123A456B789C*0#D"
  has_diodes: false

key_collector:
  - id: pincode_reader
    source_id: gatekeypad
    min_length: 4
    max_length: 4
    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)" ]

And for reference here is the board I’m using


Thank you all for your help with this it is greatly appreciated.