В предыдущей статье было описано подключение электромеханического замка с помощью Raspberry pi , на которой крутится NodeRed, выступающий в роли сервера, и esp8266 WiFi модуля, + дополнительно управление освещением. В данной статье мы расмотрим процесс настройки и прошивки модулей и NodeRed
Прошивка и сам прошивальщик для Windows скачиваем отсюда. Прошивка для ESP 8266 (85) создана при помощи конструктора WiFiOT. При первой прошивке рекомендую поставить галочку напротив "Стереть чип перед прошивкой", Для модулей ESP8285 и модулях с памятью PN25F08B требуется установка режима памяти DOUT !! . Ну объем памяти и ком порт куда подключен модуль. Если Вы сами будете собирать прошивку то необходимо отметить в настройках DS18b20 максимальное количество датчиков 1, в разделе MQTT клиент снять галочку с MQTT Lite Mode , ввести значение в Дополнительный буфер под сообщения в байтах 50, Отдельный топик на запись поставить галочку. Все эти настройки производятся по нажатию на "шестереночку", рядом с модулем. Так же необходимо поставить галочку с модулем GPIO.
После прошивки модуля, он переключается в режим SafeMode В режиме safe mode в эфире появится точка с именем WiFi-IoT . Подключаемся к нему как к точке доступа и переходим на вэбинтерфейс (если Вы не перешли автоматически идем по адресу http://192.168.4.1 )
Далее жмем на MAIN далее в поле AP name: - вводим имя точки доступа Вашего роутера в поле AP pass: пароль. Обязательно нажимаем кнопочку SET. После чего идем на главную . Жмем Hardware и вводим все к ак на картинке:
Опять возвращаемся на главную и жмем на GPIO вводим цифру 4 и режим OUTPUT - нажимаем Set, повторяем тоже с цифрой 5, нажимаем Set. Вводим цифру 16 и выбираем режим OUTPUT INVERTED (это встроенный синий светодиодик на момем модуле, светится при 0 на этом выходе) не забываем нажать SET, в итого должно получиться следующее :
И на данном этапе последний штрих : идем с главной на вкладку 1-wire и нажимаем Clear & Scan list . Перезагружаем модуль , если все верно то модуль подключиться к вашей сети и теперь в настройках роутера необходимо настроить статический адрес для модуля.
Теперь топаем на web морду нашего NodeRed по адресу http://IP_raspberry:1880 Как устанавливать и настраивать Nodered с поддержкой homeKit рассказывали в этой статье. У Вас уже должен быть установлен Avahi и node-red-contrib-homekit-bridged.
Возвращаемся в окно настройки аксессуары и в разделе Service выбираем LuckMehanizm. Manufacturer,Serial Number,Model любые, на работу не влияют. Имя модуля обязательно. Должно быть следующее:
Нажимаем Done, после чего в правом верхнем углу нажимаем кнопочку Deploy, для сохранения всей конфигурации. К сожалению есть проблема , которую я пока не решил , после внесения изменений мост иногда перестает реагировать на команды с телефона, приходится перезапускать node-red по SSH подключаемся к малинке и вводим : node-red-start && node-red-stop
Открываем приложение "Дом" на вашем Iphone или Ipad, нажимаем "Добавить аксессуар" , внизу нажимаем "Нет кода или не можете Сканировать?" Видим доступные мосты . В моем случае это мост с именем "Home" нажимаем на него, и на вопрос о несертифицированном аксессуаре отвечаем "Добавить", вводим пин код, который мы указали в поле при настройке моста , в нашем случае это 144-22-344. Приложение добавит мост и кнопочку управления замком.:
Но пока он ничего не делает а просто выдает сообщения в формате JSUN в окно отладки. Теперь надо добавить исполнительные блоки для esp . Команды мы будем подавать при помощи GET на адрес ESP (у меня она на адресе 192.168.1.61) поэтому я далее буду использовать этот адрес, а Вы подставляете свой. Прошивка WiFiOT позваляет управлять GPIO ESp следующими командами IP_ADRES/gpio?st=1&pin=5 Этой командой установим 1 на GPIO 4.
Итак: Тащим блок http request на поле: кликаем по нему два раза в поле Method выбираем GET, в поле URL вводим http://192.168.1.61/gpio?st=1&pin4 в поле Name : open. Сохраняем. Ставим точно такой же блок (можно скопировать ctrl+c ctrl+v для windows) только теперь в поле URL вводим http://192.168.1.61/gpio?st=0&pin=5 в поле Name : Close.
Добавим блок JSON для преобразования в стоку, в нем оставляем все как есть. Добавляем блок тригера - change настраиваем два правила следующим образом (для добавления второго правила есть маленькая кнопочка ADD внизу слева);
Далее добавляем компонент switch и настраиваем правила ветвления следующим образом:
Устанавливаем связи блоков:
Сохраняем, теперь после нажатия кнопки на телефоне для открытия замка , на GPIO 5 установится 1, при повторном нажатии для закрытия замка установится 0 , в сообщениях Debug будет ОК. Здесь файл описанной выше конфигурации. Открываем любым текстовым редактором (notepad++ например) , копируем все содержимое файл в буфер, нажимаем меню в правом верхнем углу, import --> clipboard вставляем в поле содержимое буфера обмена, нажимаем import , все конфиг уже у Вас.
Но на этом еще не все. Во первых необходимо снять напругу с замка, т.е. перевести выход в исходное состояние с 1 на 0, а во вторых передать приложению дом информацию о том, что мы выполнили его команду, иначе приложение будет крутить кружок на иконке и ждать исполнения до бесконечности, посылая постоянные запросу аксессуару. Для первого пункта необходимо ввести блок trigger , который через нужное время сформирует команду на отключение, тобишь закрытие замка, через вход блока homekit имитируя при этом нажатие кнопки в телефоне. Для второго необходимо получать OK от блоков HTTP GET и преобразовать их в соответствующие команды состояния блока homekit.
Настроим блок trigger следующим образом:
Можно установить галочку , если хотите начинать отсчет заново при поступлении сигнала на вход.
Для пункта номер два введем два блока switch которые будут преобразовывать строку OK от ESP в JSUN данные о состоянии объекта Lock current state и передавать в блок homekit.
Для состояния открыто такой же блок , только в строке Replace with для объекта нужно ввести значение false. После сохранения и перезапуска Node-red статус состояния замка в приложении "Дом" меняется и приложение знает, что мы исполнили его команду. Окончательный файл конфигурации node-red по работе с замком.
Теперь совсем немного осталось подержать на иконке замка ( в телефоне) нажать "настройки", обозвать ваш замок русскими буквами (например банально "замок"). И произнести "привет сири" "открой замок" и она должна послушно передать сигнал на nodered а тот в свою очередь на esp и все Ваш замок открыт.