最近では、さまざまなIoTデバイスが簡単に手に入る。Wi-Fi経由でACをオンオフできるスマートプラグやUSB電源、リモコン送信機、温度・湿度計など、安価なものは1,000円以下で手に入る。これらで、ライトや家電などを制御する、温度湿度を計測する、といったことが簡単に行える。

  • WindowsからIoTデバイスを操作

    写真01

ほとんどのIoTデバイスは、利用にスマートフォンが必須だ。スマートフォン上の専用アプリで初期設定などを行うが、実際の操作はクラウド経由になるものが多い。しかし、クラウド経由の制御なのにWindowsから直接制御できるIoT機器はあまり多くない。

WindowsからこうしたIoT機器を制御することは不可能ではない。インターネットのサービスの1つにIFTTTというのがある。これを使うと、IFTTTに対応したIoT機器の制御をWindowsのコマンドラインから行うことができる。一般にコマンドラインから可能なことは、フロントエンドプログラムなどを作ることでGUI化も可能。簡易には、デスクトップにスクリプト(BatchファイルやPowerShellスクリプト)へのショートカットを置けば、マウスクリックで動作させることもできる。

IFTTTで、IoT機器をWindowsから操作する場合、Webhooks(旧Maker Service)をトリガーとして登録し、IFTTTに対応したIoT機器のアクションを指定する(写真02)。Webhookは、HTTPのPOSTメソッドで起動することができるため、Windows10に標準附属しているcurl.exeコマンドを使って送信できる。

  • 写真02: IFTTTで、Webhookをトリガーとして、IoTデバイスのオンオフを行うアプレットを作成することで、Windowsのコマンドラインからcurl.exeを使ってIoTデバイスを操作可能にできる


curl -X POST https://maker.ifttt.com/trigger/コマンド文字列/with/key/自分のキー

「自分のキー」は、最初にWebhooksを利用登録したときに得られる文字列だ。その後、webhooksでコマンド文字列を定義し、URLにこれを入れておく。

これは、今でも利用できる方法なのだが、残念ながら有料化により無料で利用できる範囲が限定されてしまった。必要なら、有料サービスを使ってもいいのだが、さすがに目の前にある机のランプを点灯するためにお金を払うというのもなんである。

Windows版Alexaを使う

Windows版のAlexa(写真03)を使えば、マウス操作でIoTデバイスを操作することは可能だ。コマンドラインからは起動できないが、画面上のボタンを押して、ランプを点灯する、エアコンを操作するなどが可能になる。Alexaは、多くのIoTデバイスに対応しており、たいていのIoT機器は、Alexaで操作が可能だ。操作可能なデバイスが「スマートホーム」タブに表示されるので、デバイスのボタンクリックで操作できる。

  • 写真03: Windows版Alexaは、Alexaに対応したIoTデバイスをウィンドウ内から操作できる

操作だけならWindows版のAlexaのみでいいのだが、設定にはスマートフォンが必要で、さらにIoTデバイスの専用アプリとスマートフォン版のAlexaのインストールを行う必要がある。専用アプリ側で連携の設定を行うと、Alexaの「スマートフォーム」にスマートフォン側で登録したデバイスが表示されるようになる。

なお、Windows版Alexaは、UWPアプリケーションなので、起動が少し面倒だが、コマンドラインからはURIによる起動が可能だ。AlexaのURI起動用のスキーマは「alexa」なので「alexa://」というURIを起動すればよい。具体的には、CMD.EXEやPowerShellからは、


start alexa://

でAlexaが起動する。もし、すでに起動していたらウィンドウがアクティブになる。

少し話がそれるが、UWPアプリのURI起動のスキーマを調べるには、Windows 10附属のPowerShellから、以下のコマンドを使う(写真04)。

  • 写真04: UWPアプリは、URI起動に対応していることがあるが、そのために指定するスキーマ部分に関しては、Windows PowerScriptで調べることが可能だ


([XML](get-content "$((Get-AppxPackage -Name '*alexa*').InstallLocation)\Appxmanifest.xml")).Package.Applications.Application.Extensions.Extension.Protocol.Name

上記のコマンドの「'*alexa*'」の部分で、Windows版Alexaを探している(前後のアスタリスクはワイルドカード文字)。ここを他のキーワード(たとえば、Windows10附属の電卓ならcalcなど)にすれば、該当の名称を持つUWPアプリ(正確には、UWPアプリのパッケージ名)を探して、URI起動が定義されていれば、URI起動スキーマを出力する。

Alexaは、システムの起動時に自動的に起動して常駐できる。しかし、必要なときだけ起動したいのでデスクトップにAlexaのショートカットを置きたいといったこともあるだろう。ショートカットを作成するには、エクスプローラーのウィンドウ上部のパス欄に「shell:Appsfolder」とシェルショートカットを入力する(写真05)。するとApplicationsフォルダーが開くので、Alexaのアイコンを右クリックして「ショートカットを作成」を選択する。デスクトップにショートカットが作成されるので、これを好きなところに置けばよい。

  • 写真05: Alexaは、システムの起動時に自動的に起動させることも可能だが、必要なときだけ起動したい場合、ショートカットを作ると便利だ。UWPアプリのショートカットを作成するには、shell:AppsfolderでApplicationフォルダーを開き、右クリックで「ショートカットの作成」を選択する

少しやり過ぎだとは思っているが、最近、Windows 10で使えるようになったPower Automate Desktopで「フロー」を作ってAlexaの操作することも可能だ。このとき、「アプリケーションの実行」では、「アプリケーションパス」に上記のURIを入力する(この方法は、UWPアプリを起動するときに利用できる)。また、Alexaの場合、各デバイスのオンオフには"Button"を押すのだが、Power Automate Desktopアクションの「ウィンドウ内のボタンを押す」ではなく、「ウィンドウのUI要素をクリックする」を使わないと動作しないようだ(写真06)。

  • 写真06: Power Automate DesktopでAlexaを起動し、特定のボタンを押す「フロー」。Alexaの場合「アクション」にボタンを押すではなく、UI要素をクリックを使わないとうまく動かない

IoT機器は、最近安価になってきたので、ちょっとした家電のオンオフなどに利用できる。もちろん、スマートスピーカーなどを導入して声で操作してもいいのだが、PCを使っている最中なら、コンピューターらしく操作したいところ。いまのところWindowsで利用可能なのは、AmazonのAlexaだけで、IoTデバイスの操作が可能なGoogleアシスタントにはWindows版がない。Windows版Alexaはフリーなので、導入にコストはかからない。筆者的には、起動オプションなどでデバイスの制御ができるとありがたいところなのだが……。