Tic Tac Garagedoor

Minimalist way to securely control your garage door using your smartphone

Similar projects worth following
An ESP32 connects as a client to the WiFi-network. The ESP32 works as a web server. When a user browses to the ESP32, (s)he will be presented with an HTML-page where a pin code can be entered. If the pin code is correct, the ESP32 momentarily closes a input-contact of the garage door, forcing the door open.

* non (id-) IoT : not connected to external network.
* Doesn't depend on some 3rd party web service.
* Sits behind your firewall, less prone to attacks by hackers.
* Only works when you're in the range of your wifi-network.
* Small: fits inside a TicTac box
* Easy to integrate : fits inside the garage door controller.
* Security strength depends on your WiFi-password
* Pin code security
* SSL/TLS support (using a self signed certificate in my case). Even if someone managed to get your WiFi-password eavesdrops on all your WiFi-traffic, they can't read the pin code.
* implemented in MicroPython
* open source


Connection to Hörmann Supramatic 3, using connector for HE 3 BiSecur

pull momentarily to 0V to open door 5cm
21I1Whitepull momentarily to 0V to fully open/close door
200VGreenground connection

Connection to ESP32

The BC547 functions as switching element.  Its emitter is connected to GND, the collector is connected to I1 of the garage door controller.

There's a base resistor of 2K7 connected between GPIO4 of the ESP32 and the base of the BC547.  The 27K resistor is connected between the base and the emitter of the BC547.

Status of the garage door

There's no input to the ESP32, so the ESP32 has no idea if the garage door is currently open or closed.  As the nature of the project is such that you should be connected to the local wifi to operate the door, you can easily check for yourself is the door is open or not.

If the door is currently open and you type the correct pin code on the web page, the door will close.



mDNS is supported by the firmware.  Unluckily, mDNS is not supported by Android smart phones.  For that reason a fixed IP-address is set up for the ESP32-webserver.  Without static-IP and mDNS, the Android phone would have no way of knowing the IP-address of the ESP32-webserver.


All settings that depend on the installation (IP-address, WiFi-password, ...) are stored in JSON-files.  For obvious reasons these have not been included in the github source code.


As the certificate is self-signed, Firefox for Android doesn't accept it by default.  Each time you have to confirm the security exception for it.  This is annoying.

Using the certificate generated by these instructions it works fine with Chrome on Android.  It works well with Firefox on Linux too.  On Linux you can add a security exception for the MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT error. 
Unfortunately that still doesn't work with Firefox on Android.  Any help to fix this would be greatly appreciated.

View all 9 components

  • New remote wanted

    Christoph Tack03/17/2022 at 20:30 0 comments

    My wife wants an alternative to the heavy Hörmann HS4-868 BS BLACK, which suffers from bad battery contacts.

    The Hörmann HSE 1-868-BS would be a great alternative if it had been available and at a reasonable price <€20.

    So it looks like we'll have to make something ourselves:

    • SoC
    • LIR2450 cell
    • a battery holder : Keystone 3009
    • a button
    • a bicolor LED
    • optional : micro-usb connector + charging circuitry

    Development could be done using Adafruit's TinyS2.  It has almost everything already on board.  It also allows for development in Circuitpython.

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates