ESPHOME APPLE HOMEKEY

public
patricktd Jan 14, 2025 Never 234
Clone
Plaintext paste1.txt 96 lines (82 loc) | 2.08 KB
This code configuration seems to be for an ESP32 device running an ESPHome firmware with integrated HomeKit support. Here is an analysis of the key components and configurations: 1. **ESPHome Configuration**: - `name`: Name of the ESPHome device. - `friendly_name`: A more user-friendly name for the device. - `min_version`: Minimum required version of ESPHome. - `name_add_mac_suffix`: Whether to add MAC address as a suffix to the name. 2. **ESP32 Configuration**: - `board`: The ESP32 development board being used. - `framework`: ESP-IDF framework details including type, version, and platform version. - `sdkconfig_options`: Specific configurations related to compiler optimization, LWIP sockets, and mbedtls. 3. **External Components**: - Included external component from a GitHub repository for HomeKit support. 4. **Logger Configuration**: - Logging level is currently commented out. 5. **API Configuration**: - Enable Home Assistant API. 6. **OTA Configuration**: - Over-The-Air updates enabled with the specified OTA password. 7. **Wi-Fi Configuration**: - SSID and password configured for Wi-Fi connection. - Access Point (AP) SSID and password for provisioning Wi-Fi credentials. 8. **Captive Portal**: - Configuration for captive portal to provision Wi-Fi credentials. 9. **Web Server Configuration**: - Web server configured on port 80. 10. **Lock Configuration**: - Template-based lock configuration for HomeKit, controlling a physical lock. - Configured to interact with Home Assistant services for locking and unlocking actions. 11. **SPI Configuration**: - Pins configuration for SPI communication. 12. **PN532 SPI Configuration**: - Configuration for an SPI-based NFC module. 13. **HomeKit Base Configuration**: - Defines the setup code for the HomeKit accessories. 14. **HomeKit Configuration**: - Configuration for HomeKit integration with specific actions for locking and unlocking physical locks. - Includes log statements for success and failure scenarios. Overall, this configuration sets up the ESP32 device to work with HomeKit, enabling control over a physical lock using the HomeKit protocol and NFC capabilities.
1
esphome:
2
name: "patrick-homekey"
3
friendly_name: Patrick Homekey
4
min_version: 2024.11.0
5
name_add_mac_suffix: false
6
7
esp32:
8
board: esp32dev
9
framework:
10
type: esp-idf
11
version: 5.2.1
12
platform_version: 6.7.0
13
sdkconfig_options:
14
CONFIG_COMPILER_OPTIMIZATION_SIZE: y
15
CONFIG_LWIP_MAX_SOCKETS: "16"
16
CONFIG_MBEDTLS_HKDF_C: y
17
18
external_components:
19
source: github://rednblkx/HAP-ESPHome@main
20
refresh: 0s
21
22
logger:
23
# level: DEBUG
24
25
# Enable Home Assistant API
26
api:
27
28
# Allow Over-The-Air updates
29
ota:
30
- platform: esphome
31
password: !secret ota_password
32
33
# Allow provisioning Wi-Fi via serial
34
improv_serial:
35
36
wifi:
37
ssid: !secret wifi_ssid
38
password: !secret wifi_password
39
ap:
40
ssid: ${project_name}
41
password: !secret ap_password
42
43
# In combination with the `ap` this allows the user
44
# to provision wifi credentials to the device via WiFi AP.
45
captive_portal:
46
47
# To have a "next url" for improv serial
48
web_server:
49
port: 80
50
51
lock:
52
- platform: template
53
id: "patrick_porta"
54
name: "Patrick Porta"
55
optimistic: True
56
on_lock:
57
- homeassistant.service:
58
service: switch.turn_off
59
data:
60
entity_id: switch.patrick_porta
61
on_unlock:
62
- homeassistant.service:
63
service: switch.turn_on
64
data:
65
entity_id: switch.patrick_porta
66
67
spi:
68
clk_pin: 18
69
miso_pin: 19
70
mosi_pin: 23
71
72
pn532_spi:
73
id: nfc_spi_module
74
cs_pin: 5
75
update_interval: 100ms
76
77
homekit_base:
78
setup_code: '159-35-728'
79
80
homekit:
81
lock:
82
- id: patrick_porta
83
nfc_id: nfc_spi_module
84
on_hk_success:
85
lambda: |-
86
ESP_LOGI("REGISTRO", "IssuerID: %s", x.c_str());
87
ESP_LOGI("REGISTRO", "EndpointID: %s", y.c_str());
88
if (id(patrick_porta).state == LOCK_STATE_LOCKED) {
89
id(patrick_porta).unlock();
90
} else {
91
id(patrick_porta).lock();
92
}
93
on_hk_fail:
94
lambda: |-
95
ESP_LOGI("REGISTRO", "Falha! :(");
96
hk_hw_finish: "SILVER"