Чтобы исправить свою неудачную систему домофона, Эми и ее друзья вместе построили решение, работающее на Twilio, которое срабатывает домофон Эми, когда на номер Twilio отправляется парольный SMS.
Ниже приведена оригинальная инструкция Эми, первоначально опубликованная на GitHub.
Если у вас есть Raspberry Pi и вы что-либо делали с ним, вы, скорее всего, уже включали светодиод. Этот проект почти такой же простой. Программное обеспечение требует некоторой настройки, но с точки зрения аппаратного обеспечения, если вы можете включить светодиод, вы можете сделать и это.
Вам понадобится:
— Raspberry Pi с установленным Node.js
— Домен от freedns
— Аккаунт Twilio с номером телефона
— Оптоэлектронный изолятор (я использовала этот)
— Некоторые резисторы
— Светодиод
— Плата для прототипирования
— Провод
Посмотрите файл README для основной информации об установке этого кода на ваш Raspberry Pi. После установки переименуйте sample_config.json в config.json. Вам нужно будет заполнить пробелы, но об этом позже.
Прежде чем мы подключим что-либо к вашему домофону, давайте настроим простой тестовый свет, чтобы убедиться, что программное обеспечение настроено правильно.
Все, что нам нужно сейчас, — это включить один светодиод, поэтому я буду ссылаться на другую инструкцию, поскольку их уже много. Это та, которую я использовала, но если вы найдете другую, которая вам нравится, это тоже нормально. Как только у вас будет светодиод, подключенный к вашему Raspberry Pi, вернитесь сюда.
Теперь, когда у вас есть светодиод, который включается и выключается, откройте config.json и измените buzzer_pin на физический номер порта, к которому подключен ваш светодиод. Если вы использовали ту же инструкцию, что и я, ваш номер — 11. В противном случае вы можете использовать эту диаграмму, чтобы выяснить это. Числа в кругах — это физические номера портов.
Затем запустите node test.js, и ваш светодиод должен загореться на 2 секунды, а затем погаснуть.
Теперь, когда мы можем протестировать это, давайте подключим его к Twilio.
**Маршрутизация**
Сначала вам нужно открыть ваш Raspberry Pi для всего мира через ваш маршрутизатор, чтобы Twilio мог до него добраться. Я не могу сказать вам, как это сделать для вашего маршрутизатора, но вы хотите открыть порт и отправить этот порт на IP-адрес вашего Raspberry Pi. Вам, вероятно, нужно будет присвоить вашему Raspberry Pi статический IP-адрес в вашей локальной сети.
Вот как я сделала это на своем маршрутизаторе:
Сначала я пошла в раздел DHCP Reservation…
Перейдите на freedns и найдите «Dynamic DNS». Внизу нажмите «[добавить]». Оставьте тип как «A», выберите поддомен (это может быть все, что вам нравится), выберите один из публичных доменов (снова все, что вам нравится), и оставьте пункт назначения (мы обновим его из Raspberry Pi).
Как только вы сохранили, нажмите на «Dynamic DNS» еще раз и найдите «Прямую ссылку» для вашего поддомена. Скопируйте все после знака вопроса в freedns_key в config.json.
Затем запустите ./bin/cron_install, который установит cron для периодического обновления IP-адреса, на который указывает DDNS.
На этом этапе вы должны быть в состоянии запустить npm start на вашем Raspberry Pi, и вы увидите некоторые вещи, такие как это:
Как только это запустится, вы должны быть в состоянии перейти в /sms в браузере и увидеть «Ошибка вебхука — мы попытались проверить этот запрос без предварительной настройки нашего токена аутентификации» и увидеть это в консоли [Twilio]: Ошибка — токен аутентификации Twilio требуется для проверки вебхука.
Теперь нам нужно указать Twilio на домен, который вы только что настроили. Перейдите в Twilio и настройте номер. Затем перейдите в настройки этого номера и установите URL запроса сообщения на /sms:
Также получите свой токен аутентификации Twilio и заполните twilio_token в config.json.
Теперь, когда вы запустите npm start и перейдете на ваш домен, он должен сказать «Неудача проверки запроса Twilio», и если вы отправите ему SMS, вы должны получить ответное сообщение, говорящее «Хм, это не пароль», но! Если вы откроете config.json и добавите свой номер телефона в список разрешений «sesame», а затем отправите «sesame», ваш тестовый свет должен загореться на несколько секунд и затем погаснуть.
Теперь вам нужно подключить ваш оптоэлектронный изолятор к вашему Raspberry Pi и вашему домофону.
Ваш оптоэлектронный изолятор имеет две стороны: одна сторона имеет светодиод, а другая — фоторезистор. Когда вы включаете светодиод, резистор соединяет контакты на другой стороне. Ваша коробка домофона имеет кнопку «дверь». Когда вы нажимаете кнопку двери, она соединяет два провода, и дверь открывается.
То, что мы хотим сделать, — это подключить сторону светодиода оптоэлектронного изолятора к Raspberry Pi, а сторону фоторезистора — к кнопке двери. Raspberry Pi будет включать светодиод, который будет соединять стороны кнопки двери, и дверь откроется. Волшебство!
Вот диаграмма и близкий взгляд на мое подключение:
Включение оптоэлектронного изолятора такое же, как включение одного светодиода. Итак, вам понадобится резистор между ним и вашим Raspberry Pi. Если вы используете тот же оптоэлектронный изолятор, вам понадобится один резистор 33 ома. Если вы не используете его, вам нужно будет выяснить значение резистора самостоятельно. Вот полезный калькулятор последовательного сопротивления для одного светодиода. Напряжение источника — 3,3 вольта, и вы должны быть в состоянии найти прямое напряжение и прямой ток в техническом описании вашего оптоэлектронного изолятора.
Вот реальная фотография моей коробки домофона. Это очень простая коробка, сделанная компанией TekTone, которую имеют большинство людей, которых я знаю, но если ваша другая, не волнуйтесь. Вам просто нужно найти два контакта на сторонах кнопки, которая открывает вашу дверь.
Желтые провода (подключенные к #2 и #3) — это те, которые идут к моему Raspberry Pi. Любой из этих проводов может идти к любому проводу на стороне фоторезистора оптоэлектронного изолятора, поскольку фоторезисторы не имеют полярности.
Теперь у вас должно быть почти все подключено, установленное и настроенное. Запустите nmp start еще раз, выйдите наружу и протестируйте это!
Последнее, что вам нужно сделать, — это запустить ./bin/initd_install, который установит скрипт init.d в /etc/init.d/buzzerbot_init.sh. Это сделает ваш сервер домофона работать всякий раз, когда ваш Raspberry Pi запускается.
Что-то не совсем правильно? Я что-то упустила? Будьте великолепны и отправьте запрос на добавление/исправление, чтобы сделать все более ясным.
Спасибо за следование этой инструкции, и сообщите мне, если вы действительно настроите это!