src.nth.io/

summaryrefslogtreecommitdiff
path: root/README.md
blob: 0959a025f4dc47d5b73ff26cfe86e26d2251c4dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# ESP HomeKit Intercom

## Overview

An ESP32 HomeKit implementation of a [Lobby Door Intercom](https://wrt.nth.io/luke/siri-controlled-1970s-intercom-door)
with a solenoid door lock control and a voltage-based doorbell "buzzer".

This is a reimplementation of the [original based on a RaspberryPi Zero W and HAP-NodeJS](https://github.com/lukehoersten/homekit-door).

The impetus for this ESP32 implementation was [Espressif's HAP SDK](https://github.com/espressif/esp-homekit-sdk) which
is much better than the official [Apple "ADK"](https://github.com/espressif/esp-apple-homekit-adk).

## Electronics

The input voltage for the doorbell has a 23VDC and a 52VAC component and the same circuit is shared with all the units
in a teir. I haven't yet determined exactly how the buzzer indexes to the AC/DC voltage change but it's pulled
high. When the buzzer is triggered, the ADC measures a voltage drop of about 20%. I'm assuming this is the DC component
only measured by the ADC.

### AC

- 52V
- Peak 73V
- 100kO, 12.2kO
- Peak 8V
-

- f = 60 Hz
- C = 33 * 10^-6

4.7uF capacitor


### DC

- 23V
- HI (2.475V, 3.6V)
- LO (-0.3V, 0.825V)

- r1 = 100kO
- r2 = 10kO + 2.2kO


## Partition Sizing

When flashing, the following error may occur:

```
E (703) esp_image: Image length 1435760 doesn't fit in partition length 1048576
E (703) boot: Factory app partition is not bootable
E (705) boot: No bootable app partitions in the partition table
```

The fix is [documented](https://github.com/micropython/micropython-esp32/issues/235) as the following:

`esp-idf/components/partition_table/partitions_singleapp.csv`
```
# Name,   Type, SubType, Offset,  Size, Flags
# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap
nvs,      data, nvs,     ,        0x6000,
phy_init, data, phy,     ,        0x1000,
factory,  app,  factory, ,        0x180000, # Change from 1M to 0x180000
```


## Doorbell ADC Output

```I (65813) HAP Intercom: Intercom bell ring value in range [2960]
I (66813) HAP Intercom: Intercom bell ring value in range [2966]
I (67813) HAP Intercom: Intercom bell ring value in range [2957]
I (68813) HAP Intercom: Intercom bell ring value in range [2945]
I (69813) HAP Intercom: Intercom bell ring value in range [2953]
I (70813) HAP Intercom: Intercom bell ring value in range [2951]
I (71813) HAP Intercom: Intercom bell ring value in range [2959]
I (72813) HAP Intercom: Intercom bell ring value in range [2930]
I (73813) HAP Intercom: Intercom bell ring value in range [2951]
I (74813) HAP Intercom: Intercom bell ring value in range [2960]
I (75813) HAP Intercom: Intercom bell ring value in range [2978]
I (76813) HAP Intercom: Intercom bell ring value in range [2987]
I (77813) HAP Intercom: Intercom bell ring value in range [2949]
I (78813) HAP Intercom: Intercom bell ring value in range [2951]
I (79813) HAP Intercom: Intercom bell ring value in range [2929]
I (80813) HAP Intercom: Intercom bell ring value in range [2961]
I (81813) HAP Intercom: Intercom bell ring value in range [2960]
I (82813) HAP Intercom: Intercom bell ring value in range [2953]
I (83813) HAP Intercom: Intercom bell ring value in range [2957]
I (84813) HAP Intercom: Intercom bell ring value in range [2957]
I (85813) HAP Intercom: Intercom bell ring value in range [2705]
I (86813) HAP Intercom: Intercom bell ring value in range [2343] ---- start
I (87813) HAP Intercom: Intercom bell ring value in range [2343]
I (88813) HAP Intercom: Intercom bell ring value in range [2359] ---- stop
I (89813) HAP Intercom: Intercom bell ring value in range [2909]
I (90813) HAP Intercom: Intercom bell ring value in range [3045]
I (91813) HAP Intercom: Intercom bell ring value in range [2951]
I (92813) HAP Intercom: Intercom bell ring value in range [2959]
I (93813) HAP Intercom: Intercom bell ring value in range [2951]
I (94813) HAP Intercom: Intercom bell ring value in range [2949]
```