You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+19-14
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Arduino Homekit ESP8266
2
2
3
-
###Apple HomeKit accessory server library for ESP8266 Arduino
3
+
## Apple HomeKit accessory server library for ESP8266 Arduino
4
4
5
5
This Arduino library is a native Apple HomeKit accessory implementation for the ESP8266, and works without any additional bridges.
6
6
@@ -12,12 +12,17 @@ Enjoy the "one-key" build, "one-key" upload, and work to link various other Ardu
12
12
13
13
Here is a [discussion](https://github.com/HomeACcessoryKid/Arduino-HomeKit/issues/1) about the RTOS is required for running Apple HomeKit, and this project is a proof of concept that Apple HomeKit can be implemented and work fine without the RTOS.
1. Define your accessory in a .c file to enjoy the convenient "Macro" style declaration. You can also define your accessory in a .ino file using C++ code.
23
28
```C
@@ -47,7 +52,7 @@ Here is a [discussion](https://github.com/HomeACcessoryKid/Arduino-HomeKit/issue
47
52
```
48
53
Done.
49
54
50
-
###Performance
55
+
## Performance
51
56
52
57
Notice: You should set the ESP8266 CPU to run at 160MHz (at least during the pairing process), to avoid the tcp-socket disconnection from iOS device caused by timeout.
53
58
@@ -61,7 +66,7 @@ Notice: You should set the ESP8266 CPU to run at 160MHz (at least during the pai
61
66
All pairing process takes ~14s after you input the setup-code on your iPhone. Notice that Preinit require ~9s before you can start to pair.
62
67
63
68
64
-
###Heap (memory)
69
+
## Heap (memory)
65
70
66
71
The heap is critical for ESP8266 with full TCP/IP support. ESP8266 easily crashes when the memory is lower than ~5000.
67
72
@@ -76,14 +81,14 @@ Here are the free heap values of running the example sketch:
76
81
* Paired and no iOS device connected: ~23400
77
82
78
83
79
-
###WolfSSL
84
+
## WolfSSL
80
85
81
86
* Based on wolfssl-3.13.0-stable.
82
87
* Clean source code: the unused files are removed.
83
88
*`CURVE25519_SMALL` and `ED25519_SMALL`: ESP8266 can not directly run without `SMALL` defined since the memory is not sufficient. But the NO `SMALL` version is faster. I mark the big `ge_precomp base[32][8]` with PROGMEM to store it in Flash (around 70KB). Also the `ge_double_scalarmult_vartime` can not run caused by lack of heap. I define `ESP_GE_DOUBLE_SCALARMULT_VARTIME_LOWMEM` in `user_settings.h` to use LOWMEM version of `ge_double_scalarmult_vartime` in `ge_low_mem.c`. This is a trade-off of performance and memory. If you want more Flash space, you should define `CURVE25519_SMALL` and `ED25519_SMALL` and undefine `ESP_GE_DOUBLE_SCALARMULT_VARTIME_LOWMEM` in `user_settings.h`.
84
89
*`integer.c`(big integer operations): `MP_16BIT` and `ESP_FORCE_S_MP_EXPTMOD` are defined for better performance in ESP8266. `ESP_INTEGER_WINSIZE` (value is 3) is defined to avoid crash caused by memory exhaust and the values of {3, 4, 5} are of similar performance (this will lead the Pair Verify Steps take 1.2s + 0.9s).
85
90
86
-
###Storage
91
+
## Storage
87
92
88
93
* The pairing data is stored in the `EEPROM` address in ESP8266 Arduino core.
89
94
* This project does not use the `EEPROM` library with data-cache to reduce memory use (directly call flash_read and write).
@@ -93,14 +98,14 @@ Here are the free heap values of running the example sketch:
93
98
* This project do NOT use `FS(file system)`, so you can use `FS` freely.
94
99
95
100
96
-
###WatchDog
101
+
## WatchDog
97
102
98
103
* There are software and hardware watchdogs in ESP8266 Arduino core. The heavy crypto computing will lead to watchdog reset.
99
104
* There are disable/enable api of software-watchdog in ESP8266 Arduino core.
100
105
* I found the [esp_hw_wdt](https://github.com/ComSuite/esp_hw_wdt) to disable/enable the hardware-watchdog.
101
106
* The two watchdogs are disabled while `Preinit` and `Pair Setup Step 2/3`.
102
107
103
-
###Recommended settings in IDE
108
+
## Recommended settings in IDE
104
109
105
110
* Module: Generic ESP8266 Module (to enable full settings)
106
111
* FlashSize: at least 470KB for sketch (see `WolfSSL` section if you want a smaller sketch)
@@ -112,25 +117,25 @@ Here are the free heap values of running the example sketch:
112
117
* Erase Flash: select `All Flash Contents` when you first upload
113
118
* CPU Frequency: 160MHz (must)
114
119
115
-
###Arduino port
120
+
## Arduino port
116
121
117
122
*`ESP8266WiFi` (WiFiServer and WiFiClient) is used for tcp connection.
118
123
*`ESP8266mDNS` is used for advertising (Bonjour)
119
124
120
-
###TODO
125
+
## TODO
121
126
122
127
* ESP32 Arduino version (ESP32 Arduino is base on RTOS and it is not hard to port).
* Check your serial output with [example_serial_output.txt](https://raw.github.com/Mixiaoxiao/Arduino-HomeKit-ESP8266/master/example_serial_output.txt)
0 commit comments