Разработка
Филипп Концаренко
5892

Инструкция: дверной звонок с уведомлениями в 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 за основу, адаптировав несколько параметров для нашего офиса.

Объявление на vc.ru Отключить рекламу
Маркетинг
Три онлайн-игры, № 1 по вовлечению в нише и увеличение продаж в кризис: кейс «Улыбка радуги»
Как мы сделали проект № 1 по вовлеченности в нише, провели три масштабные игры ВКонтакте, привели аудиторию в…

Копируем любой из этих скриптов на 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. Проверяем

Жмём.

Смотрим:

Еще у меня есть Telegram-канал @kontsarenko
{ "author_name": "Филипп Концаренко", "author_type": "editor", "tags": [], "comments": 16, "likes": 41, "favorites": 13, "is_advertisement": false, "subsite_label": "dev", "id": 58154, "is_wide": true, "is_ugc": false, "date": "Wed, 13 Feb 2019 18:44:09 +0300", "is_special": false }
Объявление на vc.ru Отключить рекламу
0
16 комментариев
Популярные
По порядку
Написать комментарий...
8

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

Ответить
6

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

Ответить
4

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

Ответить
0

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

Ответить
2

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

Ответить
0

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

Ответить
2

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

Ответить
1

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

Ответить
0

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

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

Ответить
0

странно

Ответить
0

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

Ответить
1

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

Ответить
0

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

Ответить
1

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

Ответить

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

0

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

Ответить

Комментарии

null