アレクサとIFTTTの離別

2023年11月からアレクサの定型アクションのトリガーとしてIFTTTが利用できなくなりました。事前にアナウンスされていたようで、実際気づいたのは、アレクサに照明をオンオフを指示しても全く反応なくなったのがきっかけでした。

ちなみに家の照明はパナソニックの赤外線スイッチ、よくあるリモコンタイプのシーラングライトを採用していますがAlexa、GoogleHomeなどのIoT接続できるような代物のではありません。

電子工作界隈では定番の工作、赤外線LEDを使ったマルチリモコン風のものを作りアレクサから操作していました。

アレクサからの流れは以下のような流れで指示が飛びます。今回はIFTTTとアレクサの間の指示が飛ばなくなり使えなくなりました。少し前にIFTTTの有料化があり、この時にも騒ぎとなりました。この時は課金(移行プランで月2ドル)して継続して使うようにした経緯があります。アレクサと連携できなくなった今、もうIFTTTには用はありません。

今回はアレクサとIFTTT間の連携が無くなってしまったので、根本的な見直しをする必要があります。


fauxmoESPの導入

アレクサからトリガーに出来そうなアクションを見てみます。IFTTTはもちろん消え去っています( ´∀` )

この中で出来そうな筆頭は「スキル」なんですが、一度スキルを作ってみてPOSTリクエストまで投げることは出来たんですが、開発段階ではアクションスキルを指定できないみたいなんです。つまりは公開してパブリックにしないダメなわけで自宅用に限定した用途では敷居が高いです。またスキルを公開してメンテナンスする気も全くありません。

あとは、もうスマートホームの仮想スイッチぐらいしかないわけです。ここでfauxmoESPというESP32/8266用の仮想スマートスイッチライブラリの登場です。昔、ESP8266の時に触ったことがありました。

この時なぜ導入に後ろ向きだったかというと

  • 3台以上の仮想スイッチを割り当てると動作がおかしくなる(ESP8266のみ?)
  • 3rdGenのアレクサだと80ポートを割り当てないとダメ ⇒ Httpサーバーが立てにくい(81ポートで立てざる得ない)

この2点で見送っていました。上の動作不良は解決しているようです。

「Httpサーバーが立てにくい」というのは直でESP8266にアクセスしてリモコンWebページからでも赤外線操作を実現するために80ポートを利用する必要があったためです。

今回は、ESP32で構築し、下のようなイメージで赤外線リモコンを動作させる予定ですので、ESP32でIFTTTとBeebotteの役割をまとめてやらせたいと思います。赤外線LEDを発するESP8266はすでにHTTPで照明をオンオフできるようにI/Fを実装しているのでいじる必要ないです。

こうすれば800円ぐらいのESP32をつなげておくだけで、IFTTTやBeebotteを使わなくてよいし、インターネットを経由する必要もないし、万事OKというわけです。


コーディング

実際のコードはなんともあっけないです。

まぁ、仮想デバイスのトリガーが発生したらhttpリクエストを送るだけです。httpリクエストはWebHookと同義ですし、Getリクエストとなっていますが、Postを送りたければPostのメソッドを実装すれば送ることが可能です。まぁESP32なので色々やりたい放題できるでしょう。

ちなみに、父部屋の消灯の部分がurl_father_light_jyoyaを送ってからurl_father_light_offを送っていますが、このシーリングライト(NEC製)はライトオンオフが同一の赤外線のコードなので、消灯信号を送っても照明が消えていればついてしまうのです。なので、一旦常夜灯を点灯送信した上で消灯を送れば確実に消せるので、そういう仕様にしてあります。また、静的IPを取得してますがDHCPでもかまいません。あとはコードを追えば、なんとなくわかると思います。

下にESP8266側のサーバー側の抜粋を掲載します。全掲載すると長いので、照明用のサーバーの一部を掲載しておきます。getLightIrCodeはactの値でそれに該当するir_code(赤外線コード)を返す関数です。これは機種ごとに違いますし、ここで書くと長すぎますのでマイコンで赤外線リモコンを作るサイトにお任せします。

AsyncWebServerを使って、レスポンス処理をして赤外線を出すのはこんな感じで実装してます的な雰囲気のために掲載しました。

あくまでも抜粋ですのでAsyncWebServerについて調べてもらえれば、情報は大量にあります。

とりあえず、今回はEPS32一つでなんとかなったので良かったことにします。またネット経由せずにLAN内で完結できるので反応が爆速になりました

投稿者 まる

Twitter : @dinagon Instagram : @d_dinagon フォロバします!!最近、ESP/Arduinoいじりすぎでアプリ開発が進んでない。歯医者なのに歯のことはあまり触れませんw