Arduino、Yaler、IFTTTでWeb対応IoTゲージを構築する
必要な部品と材料
![]() |
Arduino Yun | × | 1 |
| サーボ (Tower Pro MG996R) | × | 1 | |
| M3ナット&ボルト | × | 3 | |
| 4mm合板 | × | 1 |
必要な工具と機械
| レーザーカッター |
| ホットグルーガン |
| AndroidまたはiOSスマートフォン |
アプリとオンラインサービス
![]() |
IFTTT Makerサービス |
このプロジェクトについて

(出典: Instructables)
REST APIを備えたWeb対応のArduinoベースIoTゲージを構築し、Yaler.netリレーサービス*を介してIFTTT.comマッシュアッププラットフォームと接続する方法を解説します。
何がエキサイティングなのか? Maker Channelにより、IFTTTがカスタムWebhookをサポートし、DIY IoTプロジェクトの統合が可能になりました。これは2011年以来待ち望まれていた機能です**。
DIY IoTの古典であるWhereDialにインスパイアされたIoTゲージは、所有者の現在地を表示します。まるでハリー・ポッターのウィーズリー家の時計のようです。
IoTゲージの設計とコードは汎用的で、天気表示などにも応用可能です。ロジックはクラウド側にあり、ゲージは単なるAPIを持つサーボに過ぎません。
乾杯、@tamberg
ダウンロード (Uno用)
- Yaler Arduinoライブラリ: YalerEthernetServer.zip
- Arduino Unoコード: IoTGaugeWebService.ino
* 筆者はYalerの創業者です。
** Zapierという別のマッシュアッププラットフォームは、以前からカスタムWebhookをサポートしていました。
ステップ1: IoTゲージのレーザーカットと組み立て




部品の制作
- IoTゲージの設計ファイルをダウンロード
- 4mm合板からレーザーカットで切り出し
- 場所名などを彫刻、またはペンで書き込み
IoTゲージの組み立て
- EthernetシールドをArduinoに装着 (Unoの場合)
- Arduinoをベースプレートにネジ止め (向きに注意)
- 大きなフェイスプレートをサーボに、次に小さなフェイスプレートを取り付け
- ベースプレートを両フェイスプレートにはめ込み、すべてが整列するよう調整
- インジケーターをフェイスプレートに接着、向きを確認
- ジャンパーワイヤーでサーボをArduino (またはシールド) のピン9、5V、GNDに接続
- 時計の針を取り付け (後でキャリブレーション)
ステップ2: IoTゲージWebサービスのArduinoコードをアップロード

シンプルなWebサービス
IoTゲージの制御はシンプルです。着信リクエストを待ち受けるWebサービス (REST API) がサーボ位置を設定します。IoTゲージは単なる「ダムな」サーボであり、ロジックをクラウド側に置くことで、後から「脳」を入れ替えて天気表示などにも対応できます。
Arduinoへのリモートアクセス
IFTTTクラウドサービスがIoTゲージにアクセスできるよう、ArduinoのREST APIをWebからアクセス可能かつアドレス可能にする必要があります。専門家ならファイアウォールやルーターに例外を追加できますが、手間がかかるためリレーサービス*を利用します。
Arduino Unoのセットアップ (Yunの場合は後述)
- Yalerの手順に従ってYalerEthernetServer.zipライブラリをインストール
- IoTGaugeWebService.inoをダウンロード
- 一意のMACアドレスを使用
- RELAY_DOMAINを自身のリレードメインに置き換え (Yaler.netで無料トライアルアカウントを取得)
- コードをArduino Unoにアップロード
Arduino Yunのセットアップ (Unoの場合は上記参照)
- Yalerの手順に従ってYalerTunnelをインストールしWebアクセスを有効化
- IoTGaugeMailboxApi.inoをダウンロード
- コードをArduino Yunにアップロード
なぜYunのコードはUnoと違うのか?
Yunには組み込みのREST API「メールボックス」があります。これをWebからアクセス可能にするため、YalerTunnel Linuxデーモンを使用します (Unoとは異なりSSL暗号化もサポート)。既存の仕組みを活用することでコードを簡素化できます。
両方のプログラムを比較検討してください。YunのメールボックスAPIは完璧ではありません (GETで値を変更できるなど厳密なRESTfulではない) が、YunのLinux側で動作するスクリプトベースのため、Arduino側の貴重なメモリを節約できます。
* リレーサービスを使いたくない場合は削除し、(Unoの場合) ローカルサーバーのコメントを外してください。
ステップ3: curlでArduino Webサービスをテスト

curlコマンドラインツールのインストール
- curl.haxx.seからダウンロードしてインストール
- シェルを開き、
$ curl -v https://google.com/でテスト
Arduino Yun APIの有効化 (Unoの場合はスキップ)
- Yunに通電し、少し待ってからhttps://arduino.local/にアクセス
- ログインしてConfigureをクリック
- 下部のREST APIアクセスをOpenに設定
- Configure & Restartをクリック
curlでIoTゲージをテスト
- 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でAPIをテストすべきか?
curlは標準的なHTTPクライアントです。ブラウザはGETリクエストのテストに適し、PUT/POSTをテストするオンラインツールもあります。しかしブラウザはリダイレクト追従など「魔法」をかけることがあります。IFTTTから送信されるような基本的なクライアントやサードパーティWebhook呼び出しがWebサービスAPIにアクセスできるか確実にテストするには、curlが最適です。
* Unoの場合、POST /mailbox/pos/3もPUT /servo?pos=3も動作します。リクエスト解析コードが寛容なためです。
ステップ4: ArduinoをIFTTT Makerチャネルに接続



新しいIFTTTレシピの作成 (既存レシピ追加はスキップ)
IFTTTではトリガーとアクションを繋ぐレシピを作成できます。
- https://ifttt.com/myrecipes/personal/newにアクセス (未登録ならサインアップ)
- トリガーチャンネル選択で「Android Device」や「iOS Location」などを検索し選択
- トリガーを選択、例: 特定のWiFiネットワークに接続 (Androidの場合)
- ネットワーク名や場所を入力
- アクションチャネルでMakerを検索し選択
- アクションWebリクエストを作成を選択
- URL: https://RELAY_DOMAIN.try.yaler.io/mailbox/pos/3 (RELAY_DOMAINを置き換え)
- Method: POST
- Content Type: application/x-www-form-urlencoded
- Bodyは空でOK
既存IFTTTレシピの追加
IFTTTではユーザーがレシピを公開できます。IoTゲージ制御用のレシピが2つあります:
- 「Android WiFi位置からIoTゲージ位置」レシピ
- 「iOS位置からIoTゲージ位置」レシピ
- または「IoT Gauge」で検索
- レシピのAddボタンをクリックして自分のレシピに追加
- WiFiネットワーク名や場所を入力 (レシピが要求する内容に合わせる)
- URL内のRELAY_DOMAINを自身のリレードメインに置き換え
- URLのposパラメータを1〜5で調整し、場所に合わせる
- 場所ごとにレシピのインスタンスを追加
* IFTTTはMakerチャネルのレシピを検索結果に表示しないようです
ステップ5: IoTゲージ用IFTTT Doボタンの作成

IFTTT Doアプリ
IFTTTはiOS/Android向けDoアプリを提供しています。手動でアクションをトリガーできるため、他のIFTTTレシピのテストに最適です。
通常のIFTTTレシピと異なり、Doアプリのレシピは (現時点では?) 共有や公開ができません。そのためゼロから作成する必要があります。
新しいIFTTT Doボタンの作成
- Do Buttonアプリを入手 (Android/iPhone)
- 必須(?)のイントロ画面を進める
- 右下の小さなアイコンでレシピ一覧を表示
- プラス記号をタップ、ChannelsでMakerを検索
- アクションWebリクエストを作成を選択
- URL: https://RELAY_DOMAIN.try.yaler.io/mailbox/pos/3 (RELAY_DOMAINを置き換え)
- Method: POST
- Content Type: application/x-www-form-urlencoded
- Bodyは空でOK
- Addをタップしてボタン作成
- 作成後、https://ifttt.com/myrecipes/doでオンライン編集可能
以上です。お読みいただきありがとうございました。ご質問やご提案があればお知らせください。
コード
Bitbucket
カスタムパーツとエンクロージャ
IoT_Gauge.zip
回路図
製造プロセス
- Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
- Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
- IoTとAIで水質監視し水生生物を守るシステム
- MotionSense: ArduinoとESP8266で作るスマート侵入検知システム
- Arduino Nanoとロータリーエンコーダーで作る高精度測定ホイール
- Arduinoで作る斥力式磁気浮上装置: シンプル回路とDIYガイド
- 高性能 Arduino 気象観測気球データロガーの製作ガイド
- ArduFarmBot Part 2:リモートIoT制御ステーションの構築
- Arduino Nanoで作る8×8 LEDマトリックスのフリップクロック - 自作リアルタイムクロック
- 高度なマイクロコントローラー実験:ESP32、Arduino、PIC、センサーモジュール
- Arduino Nanoで作る携帯型ガイガーカウンター

