この記事は『CRESCO Advent Calendar 2021』 20日目の記事です。

 

みなさんこんにちは。

ビジネスプラットフォームテクノロジーセンターのやまさきあです。

先日、弊社ではクレスコフェアが開催されたのですが、

そのイベントの企画の1つであるデジタルアイデアコンテスト作品展示に、

RPA業務に携わっているメンバーで参加しました。

このコンテスト内で、私はUiPath を使って家電を動かす機能を担当したので、

今回は、どのようにして実装していったのかをお話しします。

使用したもの

まず、今回使用したものの紹介です。

・ライセンス認証済のUiPath Studioが入っているPC

・家電登録済のNature Remo(今回はNature remo 3 を使用しました。)

UiPath Studioについては過去の記事でも取り扱ってきたので、

ライセンス認証の説明については割愛します。

バージョンは2019.10.5を使用しました。

Nature remoについてはここで少し説明します。

Nature remoとは

Nature Remoは、赤外線リモコンをスマートフォンのアプリケーションから操作できるようにするデバイスです。

アプリケーション上に表示されるボタンを押すと、Nature remoを通して赤外線を送信することができます。

↓アプリケーションの画面の例です。ボタンを押すと、照明に信号を送信することができます。

今回は、このアプリケーションからの操作ではなく、

公式から提供されているAPIを用いて、UiPath から照明を操作してみます。

このとき、アプリケーションからメールアドレスを登録し、対象の家電を登録した

Nature remoを準備しておき、以下の操作を実施していきます。

対象の家電情報取得

家電操作に使用するアクティビティは「HTTP要求」というものです。

HTTP要求アクティビティを使うと、指定したWebAPIに対してHTTPリクエストを実行できます。

まず、こちらの設定を行う際に必要な情報を取得していきます。

アクセストークンの取得

必要なトークンを取得していきます。

https://home.nature.global/にアクセスし、ログインします。

Nature remoに登録したメールアドレスでログインしてください。

ログインが成功するとメールが送られてきますので、

「ログイン」ボタンを押してログインを行ってください。

ログイン後、Remoへのアクセスリクエスト許可画面が開きますので、許可します。

その後表示される「Go」ボタンを押すと、アクセストークン一覧画面が現れます。

「Generate access token」を押し、アクセストークンを作成します。

このトークンは後ほど使用しますので、メモしておいてください。

対象家電の情報取得

家電をAPIで操作するためには、操作対象家電のIDと対象ボタンの名称が必要となります。

この操作はUiPath から実施できますので、やっていきましょう。

まずは、家電IDを取得できるAPIを以下のページから見つけます。

今回は、家電リストを取得したいので、以下のAPIを使用します。

こちらは、上記からわかるように

要求メソッドが「GET」のAPIで、

エンドポイントは、ページ上部に記載のある「https://api.nature.global」(下図)に、

家電リスト取得APIの「/1/appliances」を付与した「https://api.nature.global/1/appliances」です。

また、コンテンツタイプは「json」なので、応答形式はこちらに合わせる必要があります。

この情報を元に、アクティビティを設定していきましょう。

アクティビティ設定

ワークフローデザイナーパネルにHTTP要求アクティビティを追加すると、

HTTP要求ウィザードが開きます。

以下のように各項目をしていきます。

エンドポイント

https://api.nature.global/1/appliances

メソッド

GET

応答形式

JSON

(ANYでも大丈夫です。)

こちらの設定ができたら、OKボタンを押してください。

次に、詳細設定を行っていきます。

設定するのは「オプション」内の「ヘッダー」と、「出力」内の「結果」です。

ヘッダー

引数を追加し、「Authorization」という名称を設定し、「値」を「”Bearer”+”アクセストークン”」に設定します。

(アクセストークンは、「アクセストークンの取得」で取得した文字列を入れてください。)

結果

APIを実行した結果が返ってきますので、そちらを格納する変数を「結果」に設定してください。

(変数の型はStringです。)

こちらを「メッセージをログ」アクティビティ等を用いて出力パネルに出力できるよう、設定してください。

実行、情報の取得

以上で、アクティビティの設定は完了です。実行すると、結果が出力パネルに表示されます。

この中から、対象の家電の家電IDとボタンの名称を探します。

今回は出力の中から照明を探し、その上にある”device”の前にある”id”の後に記載されているが対象の家電IDとなります。

また、ボタンの名称は、”buttons”の後にある”name”の後に記載されているものです。

こちらの2つを使って照明に対する操作を実施するので、メモしておいてください。

UiPath からの家電操作

必要な情報がすべてそろったので、家電操作を行う準備ができました。

今回は照明をオンにするという操作をやっていきましょう。

まずは、家電IDを取得できるAPIを以下のページから見つけます。

今回は、照明をオンにしたいので、以下のAPIを使用します。

この情報を元に、HTTP要求アクティビティを設定していきます。

エンドポイント

https://api.nature.global/1/appliances/家電ID/light

家電IDは、準備の際に取得した文字列に置換してください。

要求メソッド

POST

応答形式

JSON

(ANYでも大丈夫です。)

上記項目の設定箇所は家電情報取得の際と一緒です。

ボタン名については、パラメータとして設定します。

ボタン名

準備の際に取得した文字列

(今回の環境では”on”なのでこちらを使います。)

「オプション」→「パラメータ」から設定します。

引数を追加し、名前に「button」、値に”on”を設定します。

これでUiPath から家電を操作する準備が完了しました。

実行してみると、無事に照明がつきました!なんだかうれしい。

やってみた感想

・難しかった

私はこれまでの業務でAPIやHTTP要求を使ったことなく、

UiPath のHTTP要求アクティビティを使用したこともなかったので、今回とても苦戦しました。

ウェブで情報を検索しながらやっていたのですが、

家電をUiPath から操作する方法を記載している方が見当たりませんでした。

そのため、APIの使い方、HTTP要求の方法、HTTP要求アクティビティの使い方などの情報をつぎはぎして、

チームのメンバーに頼りながらなんとか課題をクリアすることができました。

とてもためになる経験になったと思います。

・RPAの可能性

これまで、UiPath からExcel、Word等を動かしたことはあったのですが、

画面の外に出て何か物を動かすということは初めて行いました。

とても難しい課題ではありましたが、こんなこともできるんだな~と

RPA の可能性を感じ、とても面白いなと思いました。

これからもRPA で出来ることの幅を広げていけたらなと思います。

以上です。

長くなりましたが、読んでいただきありがとうございました!