Веб-управляемый IoT-индикатор на Arduino, Yaler и IFTTT
Компоненты и материалы
| Arduino Yun | × | 1 |
| Сервопривод (Tower Pro MG996R) | × | 1 |
| Гайки и болты M3 | × | 3 |
| Фанера 4 мм | × | 1 |
Инструменты и оборудование
| Лазерный резак |
| Клеевой пистолет |
| Смартфон (Android или iOS) |
Приложения и онлайн-сервисы
| IFTTT Maker service |
О проекте

(Источник: Instructables)
Как построить веб-управляемый Arduino-индикатор IoT с REST API и подключить его к платформе IFTTT.com через релейный сервис Yaler.net.
В чем суть? С Maker Channel IFTTT поддерживает пользовательские вебхуки для интеграции DIY IoT-проектов. Ждали этого с 2011 года.
Вдохновлено WhereDial — классикой DIY IoT. IoT Gauge показывает текущее местоположение владельца. Что-то вроде часов Уизли из Гарри Поттера.
Дизайн и код универсальны — можно отображать погоду или любые другие данные. Логика в облаке, индикатор — просто сервопривод с API.
Загрузки (для Uno)
- Библиотека Yaler Arduino:
YalerEthernetServer.zip - Код для Arduino Uno:
IoTGaugeWebService.ino
* Я — основатель Yaler.
** Zapier, другая платформа интеграции, всегда поддерживала вебхуки.
Шаг 1: Лазерная резка и сборка




Изготовление деталей
- Скачайте файлы дизайна IoT Gauge
- Вырежьте по лазеру из фанеры 4 мм
- Нанесите гравировку названий локаций (или добавьте ручкой)
Сборка
- Установите Ethernet Shield на Arduino (для Uno)
- Прикрутите Arduino к базовой плате (обратите внимание на ориентацию)
- Установите большую переднюю панель на сервопривод, затем маленькую
- Вставьте базовую плату в обе панели, выровняйте всё
- Приклейте индикаторы на переднюю панель, правильно ориентируя их
- Соедините сервопривод с пином 9, 5V и GND Arduino (илишилда) перемычками
- Установите стрелку (калибровка позже)
Шаг 2: Загрузка веб-сервиса Arduino

Простой веб-сервис
Управление IoT Gauge просто: веб-служба (REST API) слушает входящие запросы и устанавливает позицию сервопривода. Индикатор — «глупый» сервопривод. Логика в облаке позволяет менять «мозг» позже (например, показывать погоду вместо локации).
Удаленный доступ к Arduino
Чтобы IFTTT имел доступ к IoT Gauge, REST API Arduino должен быть доступен из интернета. Эксперты могут настроить файрвол/роутер, но проще использовать релейный сервис.
Установка для Arduino Uno (для Yun см. ниже)
- Установите библиотеку YalerEthernetServer.zip как показано на yaler.net/arduino
- Скачайте код
IoTGaugeWebService.ino - Используйте уникальный MAC-адрес
- Замените RELAY_DOMAIN на ваш релейный домен (зарегистрируйтесь на Yaler.net для бесплатной пробной версии)
- Загрузите код в Arduino Uno
Установка для Arduino Yun
- Установите YalerTunnel и включите веб-доступ как показано на yaler.net/arduino-yun
- Скачайте код
IoTGaugeMailboxApi.ino - Загрузите код в Arduino Yun
Почему код для Yun отличается от Uno?
Yun имеет встроенный REST API (mailbox). Для веб-доступа используется демон YalerTunnel (поддерживает SSL, в отличие от Uno). Используя имеющееся, упрощаем код. Mailbox API не идеален (не строго RESTful, позволяет GET менять значения), но работает на стороне Linux Yun, экономя память Arduino.
* Если не хотите использовать релейный сервис, просто удалите его и (для Uno) раскомментируйте локальный сервер.
Шаг 3: Тестирование веб-сервиса с Curl

Установка Curl
- Скачайте и установите Curl с curl.haxx.se
- Откройте терминал и проверьте:
$ curl -v https://google.com/
Включение API Arduino Yun (пропустите для Uno)
- Подайте питание на Yun, подождите, зайдите на
https://arduino.local/ - Войдите, нажмите Configure
- Прокрутите вниз, установите REST API access в Open
- Нажмите Configure & Restart
Тестирование IoT Gauge с Curl
- Убедитесь, что Arduino включен и подключен к интернету
- Установите позицию сервопривода на 3 (или 1-5):
$ curl -vX POST https://RELAY_DOMAIN.try.yaler.io/mailbox/pos/3
(Замените RELAY_DOMAIN на ваш домен) - Проверьте, что сервопривод переместил стрелку (скорректируйте при необходимости)
- Ожидайте ответ HTTP/1.1 200 OK
- HTTP/1.1 504 означает, что Arduino не в сети или опечатка
Зачем тестировать с Curl?
Curl — стандартный HTTP-клиент. Браузер отлично подходит для GET, есть онлайн-инструменты для PUT/POST. Но браузер может добавлять «магию» (редиректы). Чтобы убедиться, что базовый клиент или вебхук IFTTT может обратиться к вашему API — Curl идеален.
* Для Uno POST /mailbox/pos/3 работает так же как PUT /servo?pos=3, так как парсер запросов достаточно гибок.
Шаг 4: Подключение к IFTTT Maker Channel



Создание нового рецепта IFTTT
IFTTT позволяет создавать рецепты, соединяющие триггер и действие.
- Зайдите на ifttt.com/myrecipes/personal/new (зарегистрируйтесь, если нужно)
- Выберите триггер-канал: поищите «Android Device» или «iOS Location»
- Выберите триггер, например Connects to a specific WiFi network (Android)
- Введите имя сети или локацию
- Для действия найдите канал Maker
- Выберите действие Make a web request
- URL:
https://RELAY_DOMAIN.try.yaler.io/mailbox/pos/3(замените RELAY_DOMAIN) - Method: POST
- Content Type: application/x-www-form-urlencoded
- Body: оставьте пустым
Добавление существующего рецепта
IFTTT позволяет публиковать рецепты. Вот два для IoT Gauge:
- Рецепт «IoT Gauge position from Android WiFi location»
- Рецепт «IoT Gauge position from iOS location»
- Или поищите «IoT Gauge» на ifttt.com
Нажмите Add, введите WiFi-сеть/локацию, замените RELAY_DOMAIN в URL, адаптируйте параметр pos (1-5) под вашу локацию. Добавьте экземпляр рецепта для каждой локации.
* Похоже, IFTTT пока не добавляет рецепты Maker Channel в поиск.
Шаг 5: Создание IFTTT Do Button

Приложения IFTTT Do
IFTTT предоставляет приложения Do для iOS и Android для ручного запуска действий. Отлично для тестирования других рецептов.
В отличие от обычных рецептов, Do-рецепты пока нельзя публиковать — создавайте с нуля.
Создание Do Button
- Скачайте Do Button: ifttt.com/products/do/button
- Пройдите вводные экраны
- Нажмите иконку справа внизу → Channels → найдите Maker
- Выберите Make a web request
- URL:
https://RELAY_DOMAIN.try.yaler.io/mailbox/pos/3 - Method: POST
- Content Type: application/x-www-form-urlencoded
- Body: пусто
- Нажмите Add
- Редактируйте онлайн на ifttt.com/myrecipes/do
Готово! Спасибо за внимание, вопросы и предложения приветствуются.
Код
Репозиторий на Bitbucket
Печатные платы и корпуса
IoT_Gauge.zip
Схемы
Производственный процесс
- Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
- Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
- IoT и ИИ для мониторинга качества воды: защита водных экосистем
- MotionSense: умная система обнаружения проникновения на Arduino и ESP8266
- Сборка точного измерительного колеса на Arduino Nano и вращательном энкодере
- Магнитная левитация на отталкивании с Arduino: Простая схема и DIY-руководство
- Высокопроизводительный регистратор данных для метеозонда на Arduino
- ArduFarmBot Часть 2: Удалённая IoT-станция управления фермой
- Arduino Flip Clock на матрице 8×8 LED — DIY проект реального времени
- Продвинутая лаборатория микроконтроллеров: ESP32, Arduino, PIC и сенсорные модули