Инструкция: дверной звонок с уведомлениями в Slack Статьи редакции

Коллеги в офисе попросили что-нибудь придумать с дверным звонком — чтобы он не шумел на весь офис, но при этом можно было легко узнать о том, что кто-то пришел. Были и другие ограничения: две входных двери, нет возможности провести какие-либо провода к звонку.

Лучше всего под такие ограничения подошла кнопка Amazon Dash для мгновенного заказа товаров в интернет-магазине. Она работает на батарейках и подключается к Wi-Fi. Плюс в интернете есть много инструкций по её непрямому использованию 😄.

Итак, что нужно:

  • Кнопка Amazon Dash, которая будет выполнять функции дверного звонка.
  • Компьютер Raspberry Pi, который будет отправлять сообщение в Slack.

Сценарий такой: Raspberry видит сигнал, который отправляет Amazon Dash при нажатии на кнопку, и запускает скрипт, который отправляет сообщение в Slack.

1. Готовим Raspberry

Сначала на компьютере записываем образ с операционной системой на SD-карту. Для этого в Terminal на macOS нужно ввести последовательно команды:

df -h

Смотрим номер, который соответствует SD-карте. В моём случае это disk2s1, поэтому вместо N в коде ниже подставляю 2.

sudo diskutil unmount /dev/diskNs1 sudo dd bs=1m if=./name.img of=/dev/rdiskN sudo diskutil eject /dev/rdiskN

Вставляем SD-карту в Raspberry и ждем установки.

2. Устанавливаем Node.js

Наш скрипт, который будет отслеживать сигнал и отправлять сообщение в Slack, работает на Node.js. Поэтому первым делом ставим его.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install nodejs

3. Устанавливаем библиотеку для мониторинга сети

Библиотека libpcap нужна для того, чтобы отслеживать в локальной сети пакеты данных, которые отправляет Amazon Dash.

sudo apt-get install libpcap-dev -y

4. Устанавливаем скрипт для работы звонка

На GitHub можно найти много готовых скриптов для работы с Amazon Dash и Slack. Я взял dashdong за основу, адаптировав несколько параметров для нашего офиса.

Копируем любой из этих скриптов на Raspberry и устанавливаем.

git clone https://github.com/kontsarenko/amazon-dash-doorbell/ cd amazon-dash-doorbell sudo npm install

5. Подключаем кнопку через приложение Amazon

Теперь нужно подключить Amazon Dash к Wi-Fi. В приложении Amazon заходим в настройки профиля и добавляем новое устройство.

Следуя инструкции вводим пароль от Wi-Fi, подключаем кнопку к сети и доходим до вот этого экрана с выбором продукта:

Здесь ничего не нажимаем и принудительно закрываем приложение.

6. Ищем MAC-адрес кнопки

Amazon Dash подключена к сети. Теперь нужно узнать её Mac-адрес. Вводим на Raspberry команду:

sudo node node_modules/node-dash-button/bin/findbutton

Скрипт начнет сканирование и выведет список всех устройств, обнаруженных в сети. Нажимаем на кнопку, чтобы она отправила запрос и ищем вот такую строчку:

Possible dash hardware address detected: MM:MM:MA:AA:AC:CC Manufacturer: Amazon Technologies Inc. Protocol: udp

Сохраняем MAC-адрес.

7. Подключаем Slack

Заходим в настройки Slack и создаём новую интеграцию: выбираем канал, в который нужно отправлять сообщения, и копируем Webhook URL.

8. Создаём файл с настройками

Возвращаемся к Raspberry, создаем файл с настройками config.json, вставляем в него следующее:

{ "settings": { "logging": { "url": "http://dot.com", "token": "look-a-me-im-a-token", "client-id": "CLIENTID", "client-secret": "CLIENTSECRET", "enabled": true } }, "buttons": [{ "name": "Doorbell", "id": "MAC-АДРЕС", "action": "post", "post": { "url": "WEBHOOK-ИЗ-SLACK", "headers": {"Content-type": "application/json"}, "json": {"text": ":fist: Кто-то стучится в дверь"} } }] }

Вместо MAC-АДРЕС — то, что получили на 4-м шаге. Вместо WEBHOOK-ИЗ-SLACK — то, что скопировали на 6-м шаге.

Если нужно установить кнопки на несколько дверей, то добавляем в config.json сразу несколько конфигураций:

{ "settings": { "logging": { "url": "http://dot.com", "token": "look-a-me-im-a-token", "client-id": "CLIENTID", "client-secret": "CLIENTSECRET", "enabled": true } }, "buttons": [{ "name": "Doorbell 1", "id": "MAC-АДРЕС-1", "action": "post", "post": { "url": "WEBHOOK-ИЗ-SLACK-1", "headers": {"Content-type": "application/json"}, "json": {"text": ":fist: Кто-то стучится во входную дверь"} } },{ "name": "Doorbell 2", "id": "MAC-АДРЕС-2", "action": "post", "post": { "url": "WEBHOOK-ИЗ-SLACK-2", "headers": {"Content-type": "application/json"}, "json": {"text": ":fist: Кто-то стучится в дверь на крыше"} } }] }

9. Запускаем

Всё готово. Но нужно ещё сделать так, чтобы скрипт работал постоянно — даже после перезагрузки Raspberry. Для этого устанавливаем supervisor и открываем файл с настройками.

pip install supervisor sudo nano /etc/supervisor/supervisord.conf

В настройках указываем путь к скрипту.

[program:doorbell] command=/usr/bin/node /home/pi/amazon-dash-button/index.js directory=/home/amazon-dash-button/ autostart=true autorestart=true startretries=3 stderr_logfile=/var/log/supervisor/amazon-dash-button.err.log stdout_logfile=/var/log/supervisor/amazon-dash-button.out.log user=root

Сохраняемся. Запускаемся.

supervisorctl start

10. Проверяем

Жмём.

Смотрим:

0
16 комментариев
Написать комментарий...
Андрей Чуль

Хабрахабр переехал на vc?)

Ответить
Развернуть ветку
Denis Shiryaev

Добро пожаловать на https://vc.ru/dev :)

Ответить
Развернуть ветку
Sergionn Rad

Как-то все просто, надо было через IBM Watson попробовать

Ответить
Развернуть ветку
Дмитрий Гладышев

Берём ESP8266 (150 руб на али), берём ОБЫЧНУЮ кнопку за 20 руб. И отправляем сообщения куда угодно: VK, Телеграм, Push-сервисы, СМС и т.д.

Ответить
Развернуть ветку
Кирилл Уксусов

Делал такое у себя на Wemos (китайский ардуино за 150 руб) + обычная кнопка: https://github.com/UksusoFF/wemos-doorbell Сейчас все равно пришлось прикрутить RPI чтобы еще и картинку с камеры приклеивала.

Ответить
Развернуть ветку
Temporello

А сколько месяцев от батареи у вас этот звонок проживет?

Ответить
Развернуть ветку
Anthony Marchenko

VC спасибо, это крутая рубрика :)

Ответить
Развернуть ветку
passer2003

Вообще непонятно, зачем тут Raspberry?
Это кнопка из коробки работает с AWS, а оттуда можно слать пуши, смскиа на телефон, в Saleforce сообщения и еще много чего.

Ответить
Развернуть ветку
Филипп Концаренко
Автор

AWS уже три месяца как нельзя купить: https://www.amazon.com/dp/B01KW6YCIM.

Вероятно, они свернули производство — на письма о кнопке как минимум не отвечают.

Ответить
Развернуть ветку
passer2003

странно

Ответить
Развернуть ветку
Филипп Концаренко
Автор

Нажмите «Купить» — так уже где-то с октября-ноября.

Ответить
Развернуть ветку
passer2003

Я читал что они начали кнопки на 4Г делать вместо вайфая и этот 4Г подвязан на мобильного оператора AT&T.
Может они хотят все так перевести?

Ответить
Развернуть ветку
Филипп Концаренко
Автор

Воу. Надеюсь, что выпустят!

Ответить
Развернуть ветку
Viacheslav B

Не будет эта связка работать!
Просто потому что кнопку спи....унесут.

Ответить
Развернуть ветку
Матвей Кондаков

хаха))

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Илья Фадеев

блин, реально интересная тема! главное, без особой зауми!

Ответить
Развернуть ветку
13 комментариев
Раскрывать всегда