• Stars
    star
    355
  • Rank 119,764 (Top 3 %)
  • Language
    C
  • License
    MIT License
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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

More Repositories

1

esp-homekit

Apple HomeKit accessory server library for ESP-OPEN-RTOS
C
1,032
star
2

esp-homekit-demo

Demo of Apple HomeKit accessory server library
779
star
3

lewansoul-lx16a

Library and UI to configure and control LewanSoul LX-16A servos
Python
59
star
4

esp-wifi-config

Library to bootstrap WiFi-enabled accessories WiFi config
C
49
star
5

lollipop

Python data serialization/validation library
Python
36
star
6

hypothesis-regex

Hypothesis extension to allow generating strings based on regex
Python
24
star
7

esp-ir

Library for ESP-OPEN-RTOS to send IR commands.
C
17
star
8

esp-button

Library for ESP-OPEN-RTOS to handle button input.
C
15
star
9

spreadsheet

Library to create ODF Spreadsheet files
Ruby
9
star
10

esp-wolfssl

Cryptographic embedded library for ESP-OPEN-RTOS
C
9
star
11

esp-ir-tv

Example of HomeKit device that controls a TV
C
9
star
12

esp-sonoff-outlet

Firmware for Sonoff S20 smart outlet to convert it to HomeKit outlet accessory
C
8
star
13

esp-cjson

cJSON library for ESP-OPEN-RTOS
Makefile
5
star
14

lollipop-hypothesis

Library to generate random test data using Hypothesis based on Lollipop schema
Python
5
star
15

esp-ir-thermostat

Example of HomeKit smart thermostat that controls AC via IR
C
4
star
16

esp-led-status

Library for ESP-OPEN-RTOS to communicate device status through different LED blink patterns.
C
4
star
17

homebridge-macropad

HomeBridge plugin to expose Adafruit RP2040 MacroPad as a number of HomeKit stateless switches
TypeScript
4
star
18

esp-qrcode

Repackage of QRCode generation library for ESP-OPEN-RTOS
C++
3
star
19

wai-throttler

Wai middleware for request throttling
Haskell
3
star
20

esp-ac-dimmer

Library for ESP-OPEN-RTOS to control AC dimmer
C
3
star
21

werdau

An internet magazine application (based on Spree)
Ruby
3
star
22

esp-rotary-encoder

Library for ESP8266/ESP32 to work with rotary encoders
C
3
star
23

esp-mdns

mDNS responder library for ESP-IDF backported to ESP_OPEN_RTOS
C
2
star
24

esp-http-parser

HTTP parser library
Makefile
2
star
25

pageless_browser

Pageless scroller: view all data without navigating through 'pages'
JavaScript
1
star
26

memtrack

Library to find memory leaks
C
1
star
27

godot-rollback-netcode

Fork of Rollback Netcode Godot addon by David Snopek (https://gitlab.com/snopek-games/godot-rollback-netcode)
GDScript
1
star
28

vim-configs

My VIM configuration files
Vim Script
1
star
29

rqt_joint_control

ROS rqt plugin to manually control joints
Python
1
star
30

anki-vector

Environment for Anki Vector programming
Dockerfile
1
star