Skip to content

maximkulkin/esp32-homekit-camera

Repository files navigation

esp32-homekit-camera

Firmware for esp32-camera module to act as Apple Homekit IP camera.

Based on esp-homekit.

Prerequisites

esp-idf

esp32-homekit-camera code

  • Clone this repository git clone https://github.com/maximkulkin/esp32-homekit-camera.git
  • Work out of this directory going forward cd esp32-homekit-camera
  • Initialize and sync all submodules (recursively) git submodule update --init --recursive

Configuration

Before compiling, you need to alter several settings in menuconfig. Make sure you save this file, as it will be used in the build section to configure ESP32-CAM as well as your network/Homekit settings.

  • Open the menuconfiguration with the command make menuconfig
  • Scroll through each section of the menu, and make these changes:
  • Serial flasher config
    • Default serial port
    • Flash size = 4 MB
  • Partition Table
    • Partition Table = Custom partition table CSV
    • Custom partition CSV file = partitions.csv
  • Component config
    • Driver configuration
      • RTCIO configuration
        • Support array rtc_gpio_desc for ESP32 = check
    • ESP32-specific
      • Support for external, SPI-connected RAM = check
      • SPI RAM config
        • Initialize SPI RAM during startup = check
        • SPI RAM access method = Make RAM allocatable using malloc() as well
    • Camera configuration
      • OV2640 Support = check
    • HomeKit
      • SPI flash address for storing HomeKit data = 0x3A0000
  • ESP32 HomeKit Camera
    • WiFi SSID
    • WiFi Password
    • Select Camera Pinout
      • Select Camera Pinout = your variant of module
    • LED Pin
      • PIN = your variant of module
        • ESP32-CAM by AI-Thinker == 33
    • Image sensor vertical flip (optional)
      • Toggle if HomeKit app has video feed upside down
    • Image sensor horizontal mirror (optional)
      • Toggle if HomeKit app has video feed mirrored
    • Image sensor enhance settings (optional)
      • EXPERIMENTAL: adjusts contrast, saturation, etc for better image quality
    • HomeKit Device Setup Code (optional)
    • HomeKit Device Manufacturer (optional)
    • HomeKit Device model name (optional)
    • HomeKit Device model number (optional)
    • HomeKit Device Serial number (optional)
    • HomeKit Device Firmware version (optional)

Build instructions ESP32

  1. Make sure you have followed the Configuration changes above
  2. Apply esp32-camera.patch patch:
    • git apply --directory="components/esp32-camera" esp32-camera.patch
    • This is only required once.
  3. Compile code make all
  4. To prevent any effects from previous firmware (e.g. firmware crashing right at start), highly recommend to erase flash:
    • make erase_flash
  5. Upload Upload firmware to ESP32
    • make flash monitor
    • Note, ESP32 GPIO0 pin needs to be connected to GND pin to enable flashing
    • To exit monitor, on mac control+]

Add camera to HomeKit app

  1. Open Home app
  2. Click + sign to add accessory
  3. On Add Accessory screen, click I Don't Have a Code or Cannot Scan button
  4. The ESP camera accessory should be shown, click the icon
  5. On Uncertified Accessory prompt, select Add Anyway
  6. On Enter HomeKit Setup Code, enter setup code
    • Default is 111-11-111
    • Found in the HomeKit Configuration section above
  7. Click Continue button
  8. Select camera location, continue
  9. Enter camera name, continue
  10. Click Done
  11. Camera ready to use

Troubleshooting

While not HomeKit specific, good amount of troubleshooting information for flashing ESP32 devices can be found at https://randomnerdtutorials.com/esp32-cam-troubleshooting-guide/

Other

Device runs a webserver on HTTP port 5556