Virtual pin pad ideas? (update: implemented!)

I would like to create a remote garage door opener that meets the following requirements:

  1. Can be opened by guest having only shared a secret pin with them, which they know from me out-of-band (eg “go to this address and use PIN 1234 to get in”)
  2. Does not rely on the opener having wifi or cellular connectivity
  3. Does not require any physical hardware to be exposed (e.g. external pin pad)

So far I have two ideas:

  1. Acoustic “knock the pin as pattern to unlock” & mic pickup. I don’t love it (seems brittle, exposes the “secret” to anyone listening, etc), but its cute.
  2. Set up an ESPHome device that either
    a. exposes a wifi base station the guest can connect to and enter the pin over a simple web form, or
    b. exposes some sort of bluetooth interface

Focusing on option 2, anyone have precedent or ideas here?

Option 2a seems the most broadly compatible. A bit cumbersome to explain, but, would work.

Option 2b seems like it could be cool, if paired with e.g. a minimal ios/android app (which I know how to build). Eg “Download the Virtual BLE PinPad app from the app store, and when you’re close, open it and look for MyGarage. Tap it and enter the pin.”

Curious to hear other ideas!

In 2a the user has to know two passwords, the AP password and the pin.

I ended up building a virtual BLE pinpad (option 2b).

I still need to figure out how to conveniently trigger this from an Android/iOS device; will likely end up writing a minimal app. But it works!

Here’s an example of how it’s incorporated into a project:

esp32_ble_pinpad:
  status_indicator: onboard_status_led
  static_secret_pin: "1234"
  on_pinpad_accepted:
    - logger.log: "Got pin over BLE, opening door."
    - cover.toggle: garage_door
  on_pinpad_rejected:
    - logger.log: "Warning: Incorrect pin was given over BLE"

Here’s the component (would especially love testers, and/or feedback from anyone familiar with writing custom components):

1 Like