Smart Garage

    Smart Garage is a companion device to existing garage door openers. Powered by the Home app, it allows one or more users to securely open, close, and monitor their garage door from anywhere in the world.

    Turned a Arduino firmware prototype to production version C firmware over two iteration of hardware. The first version shipped with ESP8266 and second with ESP32. Both the devices are still in production with well over 50K devices in field.

    Work Highlights

    Smart Garage 100

    • Did the firmware architecture
    • Wrote the first version of firmware with Arduino for POC
    • The POC included basic OTA, Wi-Fi and garage control
    • Implemented local data storage using SPI Flash file system. It was used to store device configuration like Wi-Fi settings, device IDs and other important parameters locally.
    • Developed and refined OTA to be robust usage and backward compatibility
    • Did memory optimization for several code modules
    • Implemented an error logging system
    • Implemented production tests
    • Fixed several field bugs and managed 3 major releases.

    Smart Garage 200

    • Started with bare-metal ESP32 architecture for the firmware to overcome several constraints in the previous version
    • Setup the base drivers and ported the application files from previous version
    • Migrated to SSL version of MQTT
    • Improved OTA by sending real time update status over MQTT
    • Added support to setup the device over BLE.
    • Implemented time scheduling feature for the product
    • Integrated RF sensor for garage door controller.
    • Implemented local web for OTA and initial device configuration
    • Built and shipped several features over 2 years and continue to be lead maintainer of the project
    • Lead 47 minor and 3 major releases for the firmware

    Hardware

    • Microcontroller with Wifi: ESP8266, ESP32
    • Bluetooth 4.2: ESP32
    • Sensors: RF Switch, Wired Switch, MQ6 — LPG

    Languages

    • C, C++

    Testing

    • Code Reviews
    • Unit Tests
    • Integration Tests
    • Production Test Environment