- Умный дом Apple Home Kit на базе esp8266
- Esp8266 apple home kit
- Esp8266 apple home kit
- About
- Охранная система в гараж на ESP 8266 с интеграцией в Apple HomeKit
- Начнем с установки MQTT брокера
- Далее приступим к прошивке ESP8266
- Подключение ESP8266 к Wi-Fi
- Настройка ESP8266
- Подключение устройств к ESP8266
- Установка и настройки Plugins Homebridge
- Таким образом я подключил к одной ESP8266:
- Пример добавления датчиков в ESP_easy
- Схема подключения сирены
- rules
Умный дом Apple Home Kit на базе esp8266
Сейчас систем умного дома пруд пруди, но если быть честным, вряд-ли маленькие компании смогут конкурировать с Apple, Google, Amazon, которые уже давно пришли осваивать эту нишу. В основном знакомство с нативным Apple Home Kit начинают с перепрограммирования готового sonoff itead, но мы загрузим прошивку в чистый esp8266 и попробуем, как это работает.
Для начала качаем необходимые файлы. Начнём с самого простого – с выключателя.
В архиве будет 3 файла, и сама программа прошивки. У меня изначально не работали никакие варианты прошивок HomeKit, не шло подключении к wi-fi, пока я полностью не стёр память esp8266, об этом я рассказал в прошлой статье
Выставляем необходимые параметры для программирования
Теперь нужно правильно выставить адреса для 3ёх файлов прошивки. Не забудьте отметить новые поля крестиком слева.
Переходим во вкладку Operation, здесь программа обычно уже сама определяет номер com-порта, и нам достаточно будет нажать кнопку Flash(F)
После загрузки прошивки, нужно перегрузить устройство, и оно начнёт работать в режиме точки доступа, к его сети нам нужно и подключиться
После этого мы попадём на окно выбора доступных вай-фай точек, тут уже нужно выбрать вашу домашнюю сеть, и ввести пароль от неё. Потом жмём зелёную кнопку join и ждём. Обычно подключение длится около 5-10 секунд, потом ваш телефон просто перейдёт обратно на домашнюю сеть автоматически.
Затем переходим в приложение ДОМ, и жмём добавить аксессуар. Снизу находим кнопку “нет кода или не можете сканировать”
На этом этапе у меня был включён wi-fi и на всякий случай bluetooth, и устройство очень быстро определилось.
Вводим проверочный код в виде всех цифр 8, и подтверждаем добавление несертифицированного аксессуара.
В настройках можно поменять комнату (например столовая или гостиная) и тип (выключатель, свет).
После этого можете поиграться с новой иконкой – её соответственно можно включать и выключать.
Эмпирическим путём я нашёл, что за контакт реле отвечает GPIO12, это 6 вывод esp-12, если вы захотите работать с этой платой отдельно.
Для теста я же использовал простое реле от arduino, и плату wemos D1 на базе esp8266. Реле нужно питать от 3.3В а не от 5, иначе оно будет реагировать на 3.3В и 0В логические уровни одинаково. Управляющий пин подключен к выводу D6-MISO-D12.
Что очень не понравилось – как только вы отключаетесь от домашней сети, то устройство становится вне зоны доступа, а чтобы настроить доступ через интернет или из любой точки земного шара – нужно иметь apple tv, HomePod или планшет, который должен находится дома в локальной сети
Источник
Esp8266 apple home kit
Arduino HomeKit ESP8266
Apple HomeKit accessory server library for ESP8266 Arduino
This Arduino library is a native Apple HomeKit accessory implementation for the ESP8266 Arduino core, and works without any additional bridges.
This project is mainly based on esp-homekit for ESP-OPEN-RTOS.
I ported the RTOS-based implementation of esp-homekit to the pure Arduino environment, aimed at easy and fast building project using Arduino IDE (or Eclipse with sloeber, PlatformIO).
Enjoy the «one-key» build, «one-key» upload, and work to link various other Arduino libraries with Apple HomeKit!
Here is a discussion 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.
This library is built with ESP8266 Arduino Core 2.6.3. Lower versions may compile with errors.
For ESP32, see Arduino-HomeKit-ESP32. The HomeKit running on ESP32 has a GREAT PERFORMANCE which is 10x faster than ESP8266.
Setup code of the example sketch
- 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.
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.
9.1s (You can see the accessory on your iOS HOME app after Preinit)
Pair Setup Step 1/3:
0s (The heavy crypto computation is done in Preinit)
Pair Setup Step 2/3:
12.1s
Pair Setup Step 3/3:
0.8s (The pair-setup is only processed when first paired with iOS device)
Pair Verify Step 1/2:
0.3s
Pair Verify Step 2/2:
0.8s (The Verify Step is required every time iOS connects or reconnects to ESP8266 to establish secure session)
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.
The heap is critical for ESP8266 with full TCP/IP support. ESP8266 easily crashes when the memory is lower than
I tried to make WolfSSL crypto work safely on ESP8266 with better performance and lower memory or a trade-off. See details in next section.
Here are the free heap values of running the example sketch:
26000
Preinit over:
17000 (or even low when crypto computing)
Paired and connected with one iOS device:
21700
Paired and no iOS device connected:
After memory optimization in v1.1.0:
46000
Preinit over:
37000 (or even low when crypto computing)
Paired and connected with one iOS device:
41700
Paired and no iOS device connected:
Источник
Esp8266 apple home kit
ESP8266-HomeKit
HomeKit server foundation on ESP8266 with an API approach
UPDATE 17 Dec 2017
Please read the message in issue 41 about the switchover to Maxim Kulkin code base.
Public Apple’s HomeKit protocol code has been around for some time for more potent processors (notably HAP-NodeJS). This is a rewrite for the ESP8266 to make the server foundation. This project uses ESP8266_RTOS_SDK and WolfCrypt 3.9.8 for the crypto. It will however NOT deliver a certified HomeKit device.
For build instructions please refer to the wiki.
If you use the Demo Code from ESP8266-HomeKit-Demo you get this.
The code provides all the services required to pair iOS with an IP device and to operate that device once paired with multiple iOS devices. It runs on even the smallest ESP8266 device like the ESP-01. It creates an API level to create your HomeKit device without descending to the lower levels of the HAP protocol.
See the ESP8266-HomeKit-Demo for the details.
Here are some preliminary timings.
Pairing is dominated by the SRP algorithm which is very slow and expensive. Fortunately this only happens once when the iOS device is being associated with the HomeKit device:
Time1: 25 seconds from boot till start of server, so that initial interaction is split second.
Time2: 30 seconds (based on a build with DEBUG logging which is slow).
Verify happens every time an iOS device reconnected to the HomeKit device. Ideally this should be as fast as possible.
The HomeKit code is approximately 400K and about 18K of RAM is left for other purposes. During Pairing so much RAM is used that it is required to launch most code after pairing is done.
I want to thank a number of projects which made this possible:
HAP-NodeJS — which documents the HomeKit protocols for IP and allowed me to guess how they were implemented.
https://github.com/aanon4/HomeKit — which inspired this README and should inspire us to look into assembly.
ESP8266_RTOS_SDK — Espressif for their great product
WolfCrypt — For a great one stop crypto library
Please note that this software was produced without any reference to any proprietary documentation or information. I am not a MFi licensee, nor do I have access to any related information.
Espressif uses MIT license. WolfCrypt uses GPLv2 or higher license. For the purpose of this distribution you should use GPLv3.
This is based on the changes I had to make to Wolfcrypt and to be compatible with Apache-2.0 license.
Copyright 2016-2017 HomeACcessoryKid — HacK — homeaccessorykid@gmail.com
Licensed under the Apache License, Version 2.0 (the «License»);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an «AS IS» BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
About
HomeKit server Native on ESP8266_RTOS with an API approach
Источник
Охранная система в гараж на ESP 8266 с интеграцией в Apple HomeKit
Добрый день дорогой читатель, хочу поделиться опытом подключения ESP8266 в систему HomeBridge (HomeKit). На примере охранной системы.
Для этого нам понадобиться Raspbery pi с установленным HomeBridge, контроллер ESP8266 и любое совместимое устройство (реле, датчик открытия, движения, температуры, влажности), покажу на примере nodeMCU.
Начнем с установки MQTT брокера
Подключаемся по SSH к нашей Raspbery pi и далее в терминале
sudo apt update
sudo apt install -y mosquitto mosquitto-clients
Во время установки Вам потребуется ввести «Y» и нажать «Enter»
sudo systemctl enable mosquitto.service
Поздравляю вы получили рабочий брокер у себя на Raspbery Pi
Далее приступим к прошивке ESP8266
Первым делом скачаем и распакуем последнюю версию прошивки. Я использовал ESP_Easy ссылка , архив состоит из набора прошивок под разный объем памяти устройств и программы для заливки прошивки в ESP FlashESP8266.
Подключаем ESP8266 к компьютеру, Подключение осуществляется двумя способами:
— при помощи usb-micro usb кабеля (вопросов не должно возникнуть)
— или при помощи ttl конвертера, обратите внимание пины ttl конвертера 3.3v, GRND, RX, TX на пины ESP8266 3.3v, GRND, TX, RX (TX и RX нужно поменять местами).
Далее запускаем FlashESP8266.exe из скаченного архива.
Выбираем COM порт нашей ESP8266 или ttl конвертера и прошивку, нажимаем на кнопку Flash.
Описание прошивок, заливать можно и normal и test и dev, главное чтоб объем ESP совпадал (1024 или 4096)
На этом прошивка закончена. Переходим к настройке ESP8266
Подключение ESP8266 к Wi-Fi
Берем телефон или планшет в руки. Открываем настройки Wi-Fi, и видим там новую сеть ESP-0, подключаемся к ней, пароль configesp. Нас перекидывает в настройки ESP_Easy, выбираем смою домашнюю wifi сеть и вписываем пароль.
Настройка ESP8266
Открываем в браузере 192.168.1.113 и попадаем в админку ESP_Easy.
Первым делом нужно настроить MQTT клиент. Переходим во вкладку Сontrollers и нажимаем в первой строчке Edit.
Protocol: OpenHAB MQTT
Controller IP: ip adress брокера
Controller Port: 1883 (по дефолту)
Controller User/Password: admin/admin (по дефолту)
Ставим галочку Enabled и жмем Submit
Подключение устройств к ESP8266
Покажу на примере такого реле:
Практически все устройства подключаются тремя пинами (3.3v, GND, и информационный пин IN). Так вот, подключаем 3.3v и GND, а пин IN устройства подключаем на свободный GPIO нашей ESP (в моем случаи GPIO-0).
Далее идем в админку ESP_Easy в раздел Devices и нажимаем Edit.
Выбираем Device: Switch input — Switch
Enabled: Ставим галочку
1st GPIO: GPIO на плате при подключении в моем случаи GPIO-0
Send to Controller: Ставим галочку
Переходим к настройкам плагина для homebridge.
Установка и настройки Plugins Homebridge
Я использовал homebridge-mqttthing, он мне понравился большим количеством поддерживаемых устройств.
Подключаемся по SSH к малине и пишем в командной строке:
sudo npm install -g homebridge-mqttthing
и добавляем аксессуары в конфиг:
<
«accessory»: «mqttthing»,
«type»: «switch»,
«name»: «switch»,
«url»: «mqtt://127.0.0.1»,
«username»: «admin»,
«password»: «admin»,
«topics»: <
«getOn»: «/ESP_Easy/Relay1/Switch»,
«setOn»: «/ESP_Easy/gpio/0»
>,
«integerValue»: «true»,
«onValue»: «0»,
«offValue»: «1»
>
Перезагружаем homebridge и радуемся проделанной работой.
Таким образом я подключил к одной ESP8266:
Пример добавления датчиков в ESP_easy
Схема подключения сирены
Она выглядит очень просто.
Алгоритм работы системы:
Реле1 — Охрана (добавил как датчик движения)
- Если «Датчик движения» или «Датчик открытия» сработал тогда замкнуть «Реле1» (это мы настраиваем в разделе Rules)
- Если «Реле2» Включено в приложении HomeKit у нас сработает «Сирена»
Также если Сирена выключена/включена по событиям с Датчика движения/открытия нам прилетают push уведомления и включается освещение в гараже:
rules
Правила для срабатывания охраны и включения освещения.
on contact#State do
if [contact#State]=1
gpio,0,0
gpio,16,0
else
gpio,0,1
gpio,16,1
endif
endon
on motion#State do
if [motion#State]=1
gpio,0,0
gpio,16,0
else
gpio,0,1
gpio,16,1
endif
endon
Источник