« 2022年1月 | トップページ | 2022年3月 »

2022.02.28

IoT データ可視化サービス Ambient を使ってみる(その4)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

IoT データ可視化サービス Ambient を使ってみる(その3)」の続きです。

▼2022/03/31 追記 ここから

こちらの記事は「IoT データ可視化サービス Ambient を使って Nature Remo E lite から取得した電力使用量をグラフ化する(まとめ)」にまとめました。

▲2022/03/31 追記 ここまで

プログラムから Ambient にデータを登録するのですが、先にプログラムから Ambient を使えるようにしないとイケません。

今回はプログラム言語を Windows の Python にして Ambient の Python ライブラリを使うことにします。

https://www.python.org/downloads/ によると2022/02/28時点での Windows の最新版は、3.10.2のようですが、かげさんのデスクトップ PC には、Python 3.9.5 が入っているので、それを使います。

Python ライブラリのインストール

Ambient の上部にあるメニューから「ドキュメント」-「チュートリアル」を選択します。

サイドバーにチュートリアルが表示されるので「ライブラリー/リファレンス」-「 Python ライブラリー」を選択します。

Github にライブラリーがあるので下記のコマンドを実行します。

pip3 install git+https://github.com/AmbientDataInc/ambient-python-lib.git

するとエラーメッセージと警告メッセージが表示されました。
素直にバージョン、3.10.2をインストールしておけばよかったかもしれない…(´;ω;`)

F:\Python\Python39>pip3 install git+https://github.com/AmbientDataInc/ambient-python-lib.git
Collecting git+https://github.com/AmbientDataInc/ambient-python-lib.git
Cloning https://github.com/AmbientDataInc/ambient-python-lib.git to c:\users\xxxxxxxx\appdata\local\temp\pip-req-build-b7yxv3_4
Running command git clone -q https://github.com/AmbientDataInc/ambient-python-lib.git 'C:\Users\xxxxxxxx\AppData\Local\Temp\pip-req-build-b7yxv3_4'
ERROR: Error [WinError 2] 指定されたファイルが見つかりません。 while executing command git clone -q https://github.com/AmbientDataInc/ambient-python-lib.git 'C:\Users\xxxxxxxx\AppData\Local\Temp\pip-req-build-b7yxv3_4'
ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?
WARNING: You are using pip version 21.1.2; however, version 22.0.3 is available.
You should consider upgrading via the 'f:\python\python39\python.exe -m pip install --upgrade pip' command.

警告メッセージの方は、かげさんが使っている pip は バージョン 21.1.2 ただし、バージョン22.0.3 が利用可能らしい。

ご丁寧にバージョンアップのコマンドも表示されているので pip をバージョンアップしちゃいましょう

F:\Python\Python39>f:\python\python39\python.exe -m pip install --upgrade pip
Requirement already satisfied: pip in f:\python\python39\lib\site-packages (21.1.2)
Collecting pip
Downloading pip-22.0.3-py3-none-any.whl (2.1 MB)
|████████████████████████████████| 2.1 MB 2.2 MB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 21.1.2
Uninstalling pip-21.1.2:
Successfully uninstalled pip-21.1.2
Successfully installed pip-22.0.3

これで pip のバージョンは 22.0.3 になりました。

さて、エラーの方ですが

ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?

ということで、git コマンドがインストールされていないか、パスが通っていないとのこと。

うーん、かげさんの場合、GitHub を使うのに SourceTree をインストールしたので git は入っていると思ったのだが…

次は git をインストールした方が良さそうですね。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.27

IoT データ可視化サービス Ambient を使ってみる(その3)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

IoT データ可視化サービス Ambient を使ってみる(その2)」の続きです。

▼2022/03/31 追記 ここから

こちらの記事は「IoT データ可視化サービス Ambient を使って Nature Remo E lite から取得した電力使用量をグラフ化する(まとめ)」にまとめました。

▲2022/03/31 追記 ここまで

Ambientのログイン

登録したユーザでログインします。

Ambient_05

ログインするとユーザーキーとチャネル一覧が表示されます。
ユーザーキーは、プログラムをするときに必要になるため、控えておきましょう。

Ambient_06

チャネルを作る

上図の「チャネルを作る」ボタンをクリックします。

1ユーザで8個までチャネルを作れ、1チャネルで8種類のデータを扱えます。

Ambient_07

チャネルが作成されるとチャネル名、チャネルID、リードキー、ライトキーが自動で設定されます。
「チャネルID」、「ライトキー」は、プログラムをするときに必要になるため、控えておきましょう。

Ambient_08

チャネルとグラフの設定

設定欄にある「…▼」をクリックすると表示される「設定変更」をクリックします。

Ambient_09

「チャネル名」、「説明」、「データー1~8」を設定して、「チャネル属性を設定する」ボタンをクリックします。
今回はチャネル名「電気使用量グラフ」、説明「電気使用量の1分ごとのグラフ」、データー1「電力使用量(w)」と入力しました。

Ambient_10

チャネル一覧に戻るので「入力したチャネル名」をクリックします。

まだ何もグラフを作っていないのでメニューバーだけ表示されます。
下図の赤枠部分「グラフ設定」ボタンをクリックします。

Ambient_11

「チャネル/データ設定」をクリックします。

Ambient_12

チャート設定を入力します。
今回はチャート種類「棒グラフ(時系列)」、d1:電力使用量「左軸」、日時指定「チェック」にしました。

Ambient_13

まだデータを登録してないので、データがないグラフが表示されます。
グラフの大きさは、左下の三角の部分をドラッグすると変更できます。

Ambient_14

続いてデータを登録するプログラムを作っていくことになります。
IoT データ可視化サービス Ambient を使ってみる(その3)」では開発言語に合わせたライブラリの準備について書いていきます。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.26

IoT データ可視化サービス Ambient を使ってみる(その2)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

IoT データ可視化サービス Ambient を使ってみる(その1)」の続きです。

▼2022/03/31 追記 ここから

こちらの記事は「IoT データ可視化サービス Ambient を使って Nature Remo E lite から取得した電力使用量をグラフ化する(まとめ)」にまとめました。

▲2022/03/31 追記 ここまで

Ambientのユーザ登録

Ambient_01

ユーザ登録ボタンをクリック

Ambient_02

必要事項を入力

Ambient_03_20220227154801

メールが送信されるので、メールにあるリンクをクリック

Ambient_04_20220227154801

ログインのリンクをクリック

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.25

IoT データ可視化サービス Ambient を使ってみる(その1)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

▼2022/03/31 追記 ここから

こちらの記事は「IoT データ可視化サービス Ambient を使って Nature Remo E lite から取得した電力使用量をグラフ化する(まとめ)」にまとめました。

▲2022/03/31 追記 ここまで

Nature Remo や SwitchBot の API を使っていろいろと値を取得できるようになりました。

curl コマンドなので、その場、その場の値は取得できるものの、取得した値を使って何かをしたい!

ということで消費電力の可視化をやってみよう!(・∀・)

IoT データ可視化サービス Ambient

グラフとして可視化するために Ambient という IoT データ可視化サービスを使います。

無料ユーザ登録すると簡単にグラフ化ができるようになります。

Ambient のユーザ登録は、「Ambient」のサイトの右上の「ユーザー登録(無料)」ボタンから行います。

具体的なユーザ登録の手順は「IoT データ可視化サービス Ambient を使ってみる(その2)」に書きます。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.24

準備が必要な気配

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

そろそろゲートウェイとして使う Raspberry Pi Zero の話やプログラム言語だと Python や Node.js の話を書きたいところなんだが、大雪による交通渋滞対策での早起きと今月の帰宅時間が遅いせいで時間が取れない今日このごろ、皆さんいかがお過ごしですか?

Raspberry Pi Zero の話

ゲートウェイとして使う予定の Raspberry Pi Zero の設定周りの記事を書きたいのだが、全然まとまってない(´・ω・`)

Pyhon の話

これまで Nature Remo Cloud API や SwitchBot API を curl で使う話を書いてきた。

curl コマンドは、単体でテストをする上では良いのだが、具体的な処理を書くには Python などのプログラム言語を使って書いたほうが良い。

だが、Python は仕事で使ったことがないため、あまり詳しくないのであった…

Node.js の話

今後、TP-link の製品のプログラムの記事も書く予定なんだが、Node.js も仕事で使ったことがなく、あまり詳しくないのであった…

まとめ

という感じで、他の記事候補も含め、ちょっと準備が必要な気配である。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.23

SwitchBot API を使った SwitchBot カーテンの curl コマンド(まとめ)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

さて、今回は、SwitchBot API を使った SwitchBot カーテンの curl コマンドをまとめて紹介します。

例によって「dddddddddddd」が SwitchBot カーテンのデバイスID、「XXXXXX」のところがアクセストークンになっています。

Switchbot のアクセストークンの取得方法は「SwitchBot API を使う前準備」を参照。

SwitchBot カーテンのステータス取得

curl -X GET "https://api.switch-bot.com/v1.0/devices/dddddddddddd/status" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" | jq .

成功すると下記のような情報が表示されます。

curl -X GET "https://api.switch-bot.com/v1.0/devices/dddddddddddd/status" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 191 100 191 0 0 191 0 0:00:01 0:00:01 --:--:-- 185
{
"statusCode": 100,
"body": {
"deviceId": "XXXXXXXXXXXX",
"deviceType": "Curtain",
"hubDeviceId": "XXXXXXXXXXXX",
"calibrate": true,
"group": false,
"moving": false,
"slidePosition": 100
},
"message": "success"
}

body の部分が SwitchBot カーテンのステータスです

deviceId(デバイスID)
deviceType(カーテンの場合:Curtain)
hubDeviceId(ハブのID、未設定なら000000000000)
calibrate(デバイスがキャリブレーション(較正/調整)されているかどうか)
moving(カーテンが動いているかどうか)
slidePosition(カーテンが移動した、キャリブレーションされた開位置と閉位置の間の距離のパーセンテージ。0:全開、100:全閉)

SwitchBot カーテンを全開にする(カーテン位置:0と同じ)

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"turnOn\",\"parameter\": \"default\",\"commandType\": \"command\"}"

成功するとカーテンが全開になります。

SwitchBot カーテンを全閉にする(カーテン位置:100と同じ)

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"turnOff\",\"parameter\": \"default\",\"commandType\": \"command\"}"

成功するとカーテンが全閉になります。

SwitchBot カーテンの閉じ具合指定(カーテン位置:全閉パーセンテージ)

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"setPosition\",\"parameter\": \"0,FF,80\",\"commandType\": \"command\"}"

まとめ

SwitchBot カーテンの 全開 / 全閉 変更は、パラメータが「"{\"command\": \"turnOn か turnOff\",\"parameter\": \"defualt\",\"commandType\": \"command\"}"」になります。

SwitchBot カーテンの閉じ具合変更は、パラメータが「"{\"command\": \"setPosition\",\"parameter\": \"0 か 1,FF,数字\",\"commandType\": \"command\"}"」になります。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.22

雪、多すぎだろ…

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

大雪すぎるんだが…

今シーズンは、大雪過ぎて、もう雪はお腹いっぱい…(´・ω・`)

かげさんの家は、救急病院が近いから除雪が入るんで良いんですが、今年は全然排雪されないから雪の山がどんどん高くなっていく…

歩道の雪も積み上がっていくから、場所によっては車道を走る車より視線が高い場所を歩いていったりすることになる。

全国的に大雪だから、ホワイトアウトによる事故とかもあると思うし、雪下ろし作業でも事故が増えると思う。

みなさんが、除雪で怪我したり、事故ったりしませんように…

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.21

SwitchBot カーテンでカーテンを自動開閉しよう!

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

カーテンを自動で開ける、いわゆる目覚ましカーテン

正直、目覚ましカーテンは、値段が高い印象でした。両開きのカーテンだと2つ必要だし、1つが高い…

かげさんの場合、候補は2つありました。

  • Nature Remo 3 が対応している mornin’plus (モーニンプラス)
  • SwitchBot カーテン

ここでも起きる Nature Remo / SwitchBot の選択問題(笑)

かげさんが購入したのは、SwitchBot カーテンでした。



witchBot カーテン 自動 開閉 スイッチボット - Alexa Google Home IFTTT イフト Siri LINE Clovaに対応 スマートホーム 遠隔操作 取付簡単 ソーラーパネルで充電可能 U型/角型レールに対応 8Kgまで対応


めざましカーテン mornin’ plus(モーニンプラス) スマホ連動型カーテン自動開閉機 太陽の光でスッキリ目覚める 新機種 MN-C02 2018年度グッドデザイン賞受賞

SwitchBot カーテンにした理由

通常価格だと mornin’plus のほうが安いんですけど、単純に昨年のブラックフライデーセールの割引に釣られました(笑)

割引された価格が、mornin’plus と似たような値段だったので、元々が高い方を選んだという話だったりします。

後付の理由を上げるとしたら

  • SwitchBot API を使った制御もできる
  • SwitchBot カーテン用のソーラーパネルが M5Stack とか 他の USB Type-C の充電にも使えそうだと思った
  • SwitchBot リモートボタンに相当するものをリモートボタン以下の値段で作ると面白いかも?

といったことがありました。

まぁ、SwitchBot API での制御は、Nature Remo Cloud API を使うことで代用できそうとも思いましたが(^^)

リモートボタン以下の値段で作るというのは、具体的にはダイソーで売っている Bluetooth シャッターや M5Atom Lite とかを使えないかな?って考えてました

まぁ、Bluetooth シャッターを使うってのは、ホームゲートウェイ(中継機)を経由する想定だったので、厳密にはリモートボタンの1980円より高くなりそうでしたが…

それも Raspberry Pi Zero をホームゲートウェイにする気だったので、ギリギリ1980円よりは安く済ませれるかも?と思っていました。

SwitchBot API を使ったカーテン操作の記事はコチラ▼

SwitchBot API を使った SwitchBot カーテンの curl コマンド(まとめ)

ここまではOKだ



witchBot カーテン 自動 開閉 スイッチボット - Alexa Google Home IFTTT イフト Siri LINE Clovaに対応 スマートホーム 遠隔操作 取付簡単 ソーラーパネルで充電可能 U型/角型レールに対応 8Kgまで対応


SwitchBot スイッチボット カーテン専用 ソーラーパネル スマートホーム-太陽パネル 太陽光で充電 ソーラー充電 取付簡単 ケーブル不要


SwitchBot スイッチボット リモートボタン ワンタッチ SwitchBotボット・カーテンに対応 - スマートホーム 置き場所自由 遠隔操作 Bluetooth5.0
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.20

SwitchBot API を使った SwitchBot 加湿器の curl コマンド(まとめ)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

さて、今回は、SwitchBot API を使った SwitchBot 加湿器の curl コマンドをまとめて紹介します。



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応

例によって「dddddddddddd」が SwitchBot 加湿器のデバイスID、「XXXXXX」のところがアクセストークンになっています。

Switchbot のアクセストークンの取得方法は「SwitchBot API を使う前準備」を参照。

Switchbot 加湿器のデバイスIDの取得方法は「SwitchBot 加湿器の情報(ステータス)を取得するコマンド」を参照。

SwitchBot 加湿器のステータス取得

curl -X GET "https://api.switch-bot.com/v1.0/devices/dddddddddddd/status" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" | jq .

成功すると下記のような情報が表示されます。

curl -X GET "https://api.switch-bot.com/v1.0/devices/dddddddddddd/status" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 262 100 262 0 0 262 0 0:00:01 0:00:01 --:--:-- 257
{
"statusCode": 100,
"body": {
"deviceId": "dddddddddddd",
"deviceType": "Humidifier",
"hubDeviceId": "hhhhhhhhhhhh",
"nebulizationEfficiency": 0,
"humidity": 45,
"auto": true,
"childLock": false,
"sound": true,
"power": "on",
"temperature": 17.6,
"lackWater": false
},
"message": "success"
}

body の部分が SwitchBot 加湿器のステータスです

deviceId(デバイスID)
deviceType(加湿器の場合:Humidifier)
hubDeviceId(ハブのID、未設定なら000000000000)
nebulizationEfficiency(加湿速度)
humidity(湿度)
auto(加湿器のモードがオートか)
childLock(チャイルドロック)
sound(音量設定)
power(電源の状態)
temperature(温度)
lackWater(給水タンクが空か)

SwitchBot 加湿器の電源ON

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"turnOn\",\"parameter\": \"default\",\"commandType\": \"command\"}"

成功すると電源が入ります。

SwitchBot 加湿器の電源OFF

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"turnOn\",\"parameter\": \"default\",\"commandType\": \"command\"}"

成功すると電源が切れます。

SwitchBot 加湿器のモード:オート

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"setMode\",\"parameter\": \"auto\",\"commandType\": \"command\"}"

成功すると表示灯が「白」に変わります。

「オート」モードの詳細条件は「SwitchBot」アプリで設定します。

SwitchBot 加湿器のモード:弱(噴霧効率指定=34%と同じ)

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"setMode\",\"parameter\": \"101\",\"commandType\": \"command\"}"

成功すると表示灯が「黄色」に変わります。

SwitchBot 加湿器のモード:中(噴霧効率指定=67%と同じ)

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"setMode\",\"parameter\": \"102\",\"commandType\": \"command\"}"

成功すると表示灯が「オレンジ」に変わります。

SwitchBot 加湿器のモード:強(噴霧効率指定=100%と同じ)

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"setMode\",\"parameter\": \"103\",\"commandType\": \"command\"}"

成功すると表示灯が「赤に近いオレンジ」に変わります。

SwitchBot 加湿器のモード:噴霧効率指定(0~100%) ※34%までは黄色、67%まではオレンジ、100%までは赤に近いオレンジ

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"setMode\",\"parameter\": \"80\",\"commandType\": \"command\"}"

この例では80%を指定しています。

成功すると表示灯が「指定した値による色」に変わります。

■まとめ

SwitchBot 加湿器の ON / OFF 変更は、パラメータが「"{\"command\": \"turnOn か turnOff\",\"parameter\": \"defualt\",\"commandType\": \"command\"}"」になります。

SwitchBot 加湿器の動作モード変更は、パラメータが「"{\"command\": \"setMode\",\"parameter\": \"数字 か auto\",\"commandType\": \"command\"}"」になります。

数字は、0~100までが噴霧効率指定、弱:101、中:102、強:103です。

ここまではOKだ



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.19

Windows 版 curl コマンドでパラメータとして JSON を POST する時の注意点

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

これまで Windows 版の curl コマンドの操作は情報取得が中心だったので GET を使っていました。

次は JSON 形式のパラメータを指定して curl コマンドを実行したい。

実は、これまで POST を使ったことがなかったのです(;^_^A

この記事を読むと、Windows 版 curl コマンドで JSON を POST する時の注意点であるエスケープシーケンスについて分かります。

また、この記事は、下記の SwitchBot 加湿器を curl コマンドで操作する SwitchBot API の話の続きでもあります。

ここまでは GET を使うだけで良かったんだけど、SwitchBot 加湿器の電源オン/オフするには、オンかオフかをパラメータとして指定しないとイケない。

ということで、POST が必要になった。



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応

SwitchBot 加湿器を On にするには、次の json 形式のパラメータが必要になります。

{"command": "turnOn","parameter": "default","commandType": "command"}

パラメータの意味は

  • コマンドは、turnOn(ほとんどのSwitchBotシリーズではturnOnは電源オンを意味する)
  • パラメータは、default(初期値)
  • コマンドタイプは、command

となっている。

Windows の curl でパラメータを記入するには、-d "パラメータ情報"とする必要がある。

しかし何も考えずに

-d "{"command": "turnOn","parameter": "default","commandType": "command"}"

として、下記のコマンドを入力してもエラーが出てしまう。
(横に長いのでスクロールしてください)

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{"command": "turnOn","parameter": "default","commandType": "command"}"

エラーが出てしまう原因は、くくり文字である「"」に囲まれた "~" の~部分にも " が含まれているから。

-d "{"command": "turnOn","parameter": "default","commandType": "command"}"

では

-d "{"command": "turnOn","parameter": "default","commandType": "command"}"

ダブルクォーテーションでくくられた文字として認識されるのは上行の赤文字のところです。

本来は、-d "{"command": "turnOn","parameter": "default","commandType": "command"}"

と認識してほしい。

でも、「"」 でくくられた文字の中で出てくる「"」は特殊記号(そのままだと最初の"に対応する閉じる"と判断されてしまう)

このため、途中で出てくる「"」 を「\"」にしてやる必要がある。正しくは一番外側の「”」以外は、こうなります。

-d "{\"command\": \"turnOff\",\"parameter\": \"default\",\"commandType\": \"command\"}"

\ はバックスラッシュで表示されているかもしれせんが、日本語キーボードだと¥(円マーク)です。

特殊記号の前に \ を入力する方式を「エスケープシーケンス」と言います。

正しいコマンド入力だと下記のようになります。
(横に長いのでスクロールしてください)

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"turnOff\",\"parameter\": \"default\",\"commandType\": \"command\"}"

▼2022/02/20追記 ここから

元々、くくり文字と同じ文字が囲まれた文字に含まれているからなぁと、かげさんも予想していました。

エスケープシーケンスの問題はよくある問題だからです。

なので何も考えずにエスケープシーケンスを使ったら動いた。

一応、裏を取るためにネットで調べたらQiita(キータ)に「Windows版curlでJSONをPOSTする際に困った話」という記事を見つけました。

このQiitaの記事では、WireShark(ワイヤーシャーク)というパケットキャプチャソフトを使って原因を突き止めていました。

実は、WireShark を使う部分でも参考になりました。

ちなみにこのブログにも WireShark(ワイヤーシャーク)に関する記事があります。

コチラです。

▲2022/02/20追記 ここまで

ここまではOKだ

下記の SwitchBot 加湿器を操作するコマンドをまとめた記事はコチラ ➡「SwitchBot API を使った SwitchBot 加湿器の curl コマンド(まとめ)



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応


SwitchBotスマート加湿器交換用フィルター。
フィルターは活性炭を使用して、ホコリや花粉や微小な粒子まで素早く集めて集じんします。
ご使用状況によっては、お手入れや交換が必要です。フィルターの交換は早めの半年に1回交換がおすすめです。
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.18

Nature Remo E lite が赤の早い点滅(クラウドに接続できていない)なのに Cloud API が使える(謎)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

帰宅したら Nature Remo E lite が速い赤点滅をしていた。



Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。

Nature Remo E lite は速い赤点滅なんだけど、Nature Remo 3 本体の方は正常な状態なので、この状態で curl で Remo デバイスの情報やスマートメータの情報が取れるか確認したら、普通に取得できた。

Nature Remo E lite の速い赤点滅はクラウド接続できないと思っていたんだが、この状態でもスマホの Natre Remo アプリでは、グラフが取得できてるから気になっていたんだよねぇ。

参考「Nature Remo Eのランプの色の意味を知りたい

速い赤点滅:1秒間に数回(クラウドに接続できていません)
遅い赤点滅:1秒間に1回(Wi-Fiに接続していません)

クラウドに接続できていないのに Cloud API が使えるというのは、どういうことなんだろう? よくわからんなぁ…(´・ω・`)

まぁ、とりあえず1つ検証できたということで良しとするか。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.17

SwitchBot 加湿器の情報(ステータス)を取得するコマンド

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

SwitchBot 関連デバイスのリストを API を使って取得する」の続きです。

SwitchBot 加湿器など SwitchBot 関連デバイスのリストを取得しました。



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応

SwitchBot 関連デバイスのリスト取得

おさらいで SwitchBot API のURLを改めて紹介します。

https://github.com/OpenWonderLabs/SwitchBotAPI/blob/main/README.md

コレを使う際も Nature Remo の API を使う時と同様にアクセストークンが必要になります。

以降の curl コマンドの例で XXXXXX となっているところがアクセストークンだと思ってください。

curl -X GET "https://api.switch-bot.com/v1.0/devices" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json; charset=utf8" | jq .

かげさんの家の場合、アクセストークンなどをマスクした状態で結果を表示すると、こんな感じになる。

curl -X GET "https://api.switch-bot.com/v1.0/devices" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json; charset=utf8" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1137 100 1137 0 0 1137 0 0:00:01 0:00:01 --:--:-- 1054
{
"statusCode": 100,
"body": {
"deviceList": [
{
"deviceId": "dddddddddddd",
"deviceName": "加湿器",
"deviceType": "Humidifier",
"enableCloudService": true,
"hubDeviceId": "000000000000"
},
{
"deviceId": "dddddddddddd",
"deviceName": "デスクトップ横温度",
"deviceType": "Meter",
"enableCloudService": true,
"hubDeviceId": "XXXXXXXXXXXX"
},
{
"deviceId": "dddddddddddd",
"deviceName": "カーテン",
"deviceType": "Curtain",
"enableCloudService": true,
"hubDeviceId": "XXXXXXXXXXXX",
"curtainDevicesIds": [
"XXXXXXXXXXXX"
],
"calibrate": true,
"group": false,
"master": true,
"openDirection": "left"
},
{
"deviceId": "dddddddddddd",
"deviceName": "玄関温湿度",
"deviceType": "Meter",
"enableCloudService": false,
"hubDeviceId": "000000000000"
},
{
"deviceId": "dddddddddddd",
"deviceName": "窓側温湿度",
"deviceType": "Meter",
"enableCloudService": true,
"hubDeviceId": "XXXXXXXXXXXX"
},
{
"deviceId": "dddddddddddd",
"deviceName": "Bot 4C",
"deviceType": "Bot",
"enableCloudService": false,
"hubDeviceId": "000000000000"
},
{
"deviceId": "dddddddddddd",
"deviceName": "Hub Mini F1",
"deviceType": "Hub Mini",
"enableCloudService": false,
"hubDeviceId": "000000000000"
}
],
"infraredRemoteList": []
},
"message": "success"
}

今回は、SwitchBot 加湿器の操作をしたいので SwitchBot 加湿器の部分( deviceType = Humidifier )に注目します。

      {
"deviceId": "dddddddddddd",
"deviceName": "加湿器",
"deviceType": "Humidifier",
"enableCloudService": true,

"hubDeviceId": "000000000000"
},

deviceId が SwitchBot 製品の「デバイスID」です。

SwitchBot API を使った製品の操作には、この「デバイスID」が必要になります。この例だとddddddddddddの部分ですね。

SwitchBot 加湿器の情報(ステータス)を取得するコマンドだとこんな感じになります。

curl -X GET "https://api.switch-bot.com/v1.0/devices/dddddddddddd/status" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" | jq .

情報(ステータス)を取得するコマンドは、コマンド名 = status です。

上のコマンド例のように「 https://api.switch-bot.com/v1.0/devices/デバイスID/コマンド名」 というURLを指定する必要があります。

さて、ここまでの curl コマンドは GET を使っていました

ここからは、SwitchBot デバイスを操作するコマンドのパラメータを指定します。

そして GET の部分が POST になります。

こんな感じです。

curl -X POST "https://api.switch-bot.com/v1.0/devices/dddddddddddd/commands" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d "{\"command\": \"turnOff\",\"parameter\": \"default\",\"commandType\": \"command\"}"

Windows の curl ならではの注意点があるのですが、続きは「Windows 版 curl コマンドで JSON を POST する時の注意点」に書きますね。

ここまではOKだ



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.16

SwitchBot 温湿度計プラスが発売されます

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

最近記事にしている SwitchBot 加湿器と連動できる新商品が発売されました。

SwitchBot 温湿度計プラスです。



より大きく、より頼もしい。3インチのTNパネルを採用し、ディスプレイ表示がより見やすく、どこからでも温湿度が一目でわかります。そして、「乾燥」「快適」「湿潤」の快適レベルで部屋の快適さをよりわかりやすく把握できます。ペットや植物などに合わせた快適レベルのカスタマイズも可能です。

従来の SwitchBot 温湿度計の後継機と思われます。

・ディスプレイが見やすくなった
・快適レベルを示すマークが表示される
・スマートスピーカーと連動する(従来のものには説明がなかったので)

といった改善がされているっぽい?

うちには従来の SwitchBot 温湿度計が3台あるのですが、確認したら従来の SwitchBot 温湿度計でもスマートスピーカーに対応しているっぽいな。「ねぇ、Google 今の室温は?」で反応した。

実際に購入したら具体的な比較記事を書こうと思います。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.15

SwitchBot 関連デバイスのリストを API を使って取得する

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

SwitchBot API を使う前準備」の続きです。

まずは、SwitchBot 加湿器など SwitchBot 関連デバイスのリストを取得して、操作するデバイスを特定する必要があります。



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応

SwitchBot 関連デバイスのリスト取得

おさらいで SwitchBot API のURLを改めて紹介します。

https://github.com/OpenWonderLabs/SwitchBotAPI/blob/main/README.md

コレを使う際も Nature Remo の API を使う時と同様にアクセストークンが必要になります。

以降の curl コマンドの例で XXXXXX となっているところがアクセストークンだと思ってください。

curl -X GET "https://api.switch-bot.com/v1.0/devices" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json; charset=utf8" | jq .

かげさんの家の場合、アクセストークンなどをマスクした状態で結果を表示すると、こんな感じになる。

curl -X GET "https://api.switch-bot.com/v1.0/devices" -H "Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json; charset=utf8" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1137 100 1137 0 0 1137 0 0:00:01 0:00:01 --:--:-- 1054
{
"statusCode": 100,
"body": {
"deviceList": [
{
"deviceId": "XXXXXXXXXXXX",
"deviceName": "加湿器",
"deviceType": "Humidifier",
"enableCloudService": true,
"hubDeviceId": "000000000000"
},
{
"deviceId": "XXXXXXXXXXXX",
"deviceName": "デスクトップ横温度",
"deviceType": "Meter",
"enableCloudService": true,
"hubDeviceId": "XXXXXXXXXXXX"
},
{
"deviceId": "XXXXXXXXXXXX",
"deviceName": "カーテン",
"deviceType": "Curtain",
"enableCloudService": true,
"hubDeviceId": "XXXXXXXXXXXX",
"curtainDevicesIds": [
"XXXXXXXXXXXX"
],
"calibrate": true,
"group": false,
"master": true,
"openDirection": "left"
},
{
"deviceId": "XXXXXXXXXXXX",
"deviceName": "玄関温湿度",
"deviceType": "Meter",
"enableCloudService": false,
"hubDeviceId": "000000000000"
},
{
"deviceId": "XXXXXXXXXXXX",
"deviceName": "窓側温湿度",
"deviceType": "Meter",
"enableCloudService": true,
"hubDeviceId": "XXXXXXXXXXXX"
},
{
"deviceId": "XXXXXXXXXXXX",
"deviceName": "Bot 4C",
"deviceType": "Bot",
"enableCloudService": false,
"hubDeviceId": "000000000000"
},
{
"deviceId": "XXXXXXXXXXXX",
"deviceName": "Hub Mini F1",
"deviceType": "Hub Mini",
"enableCloudService": false,
"hubDeviceId": "000000000000"
}
],
"infraredRemoteList": []
},
"message": "success"
}

今回は、SwitchBot 加湿器の操作をしたいので SwitchBot 加湿器の部分に注目します。

      {
"deviceId": "XXXXXXXXXXXX",
"deviceName": "加湿器",
"deviceType": "Humidifier",
"enableCloudService": true,
"hubDeviceId": "000000000000"
},

deviceNameが「加湿器」と日本語になっているのは、かげさんがそういう名前にしたからです。

初期値のままだと「Humidifier xx」となっているかもしれません。

xxの部分は、英数字2桁になっています。

なぜこうなっているかというと、同じ製品が複数あったときにxxで個体を判断するためです。

xxはランダムに付与されているわけではなく、実はMACアドレスの最後の2桁と同じです。

重複することもあるかもしれませんが、16進数で2桁のため、256種類の区別ができるのでそう重複することはないでしょう。

余談までで時間切れになってしまった…(´・ω・`)

curl や jq を使った加湿器の操作は、別の記事に書きますね。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.14

SwitchBot API を使う前準備

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

先日、SwitchBot 加湿器を購入しました。(その時の記事はコチラ

さらに Nature Remo 3 本体から湿度を取得することもできました。(その時の記事はコチラ

となれば、Nature Remo 3 本体から湿度から SwitchBot 加湿器をオンしたり、加湿の強さを変えてみたいですよね。

ということで、SwitchBot 加湿器をプログラムから操作するために SwitchBot API を使います。

この記事では、SwitchBot API を使う前準備についてまとめようと思います。



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応


赤外線リモコンの代わりに、スマホを使って家電を操作できます。外出先からでも家の家電を操作することができるので、家に帰る前にエアコンをつけたりすることができます。Google Home、Amazon Echo、Apple HomePod などのスマートスピーカーと連携させることで、スマート家電ではない家電も音声で操作できるようになります。※スマートスピーカーがなくてもスマホから家電を操作することは可能です。

SwitchBot API について

SwitchBot は GitHub に API が公開されています。

https://github.com/OpenWonderLabs/SwitchBotAPI/blob/main/README.md

コレを使う際も Nature Remo の API を使う時と同様にアクセストークンが必要になります。

アクセストークンを取得する

アクセストークンを取得するには、SwitchBot のスマホアプリが必要です。

SwitchBot の製品を持っている人なら、SwitchBot のスマホアプリは、きっと導入済みでしょう。

SwitchBot アプリで下記の操作をします。

  1. プロフィール」をタップ
  2. 設定」をタップ
  3. アプリバージョン」を10回タップこれをすることで「開発者向けオプション」が表示される
  4. 開発者向けオプション」をタップ(トークンが生成される
  5. トークン」をコピーするなり、メモるなりします。

かげさんはトークンをコピーしてスマホの Evernote に貼り付けてPC版の Evernote でそれを取得しました。

curl や jq を使ったデバイスリストの取得とかは、次の記事「SwitchBot 関連デバイスのリストを API を使って取得する」に書きますね。

ここまではOKだ



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応


赤外線リモコンの代わりに、スマホを使って家電を操作できます。外出先からでも家の家電を操作することができるので、家に帰る前にエアコンをつけたりすることができます。Google Home、Amazon Echo、Apple HomePod などのスマートスピーカーと連携させることで、スマート家電ではない家電も音声で操作できるようになります。※スマートスピーカーがなくてもスマホから家電を操作することは可能です。
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.13

今後書こうと思っている IoT やスマートホームの記事をリストアップ

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

困りました。リードスイッチを使うのが初めてで、使い方がよく分かりません…(´・ω・`)

ということで今日、書く予定だった記事が書けません…orz

じゃあ、なんの記事を書こうかな?

せっかくなので今後書こうと思っている IoT やスマートホームの記事をリストアップしてみるか

Nature Remo 関連

こうしてみるとデータ保存とかグラフ化もいろいろあるし、Nature Remo 関連だけでも結構あるな。

SwitchBot 関連

TP-link

  • スマートプラグ Kasa を API から動かす
  • スマートプラグ Tapo を API から動かす
  • スマートライト L510E を API から動かす
  • スマートライト L530E を API から動かす

スマートプラグ関連

  • スマートプラグ比較( Kasa / Tapo / SwitchBot / Gosund / Meross )
  • Gosund のスマートプラグを API から動かす
  • Meross のスマートプラグを API から動かす

スマートスピーカー関連

  • Google Home Miniプログラミング
  • Google Nest Hubプログラミング
  • Amazon Alexaプログラミング

まとめ

意外と M5Stack 系のプログラム記事以外にも書こうと思っていることはあるようだな(・∀・)

それぞれに付属する内容を書いていくと記事も増えるだろうしなぁ。

こうしてまとめてみると、Nature Remo 関連から書き始めたのは良かったのかもしれない。

Nature Remo 本体のセンサーで取得した値で何かするって流れや Nature Remo E lite で取得した電力から省エネするにはスマートプラグで何かするって流れが作れるからね(・∀・)

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.12

Nature Remo E lite からスマートメーターの情報を取得する

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Nature Remo E lite を使ってやりたいこと」に書いた「電子レンジのドアを開けたときに特定の電力消費量を超えていると通知が出るシステム」を少しずつ作っていきます。

まずは「リアルタイムの電力消費量(瞬時電力計測値)」の取得から。

スマートメーターの情報を絞り込む

リアルタイムの電力消費量は、Nature Remo E lite を使ってスマートメーターの情報から取得する。



Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。

スマートメーターは、Nature Remo E lite に登録されている電化製品という扱いだ。

なので「Nature Remo デバイスに登録した電化製品の情報を取得する」で紹介した下記のコマンドで取得する。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .

アクセストークンなどをマスクした状態で結果を表示すると、こんな感じになる。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4114 100 4114 0 0 4114 0 0:00:01 --:--:-- 0:00:01 4968
[
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo E lite",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2022-01-25T14:43:37Z",
"updated_at": "2022-01-25T14:44:04Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "4W1XXXXXXXXXXX",
"firmware_version": "Remo-E-lite/1.3.9",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"manufacturer": "",
"name": "Smart Meter",
"image": "ico_smartmeter"
},
"type": "EL_SMART_METER",
"nickname": "スマートメーター",
"image": "ico_smartmeter",
"settings": null,
"aircon": null,
"signals": [],
"smart_meter": {
"echonetlite_properties": [
{
"name": "coefficient",
"epc": 211,
"val": "1",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "cumulative_electric_energy_effective_digits",
"epc": 215,
"val": "6",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "normal_direction_cumulative_electric_energy",
"epc": 224,
"val": "475342",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "cumulative_electric_energy_unit",
"epc": 225,
"val": "2",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "reverse_direction_cumulative_electric_energy",
"epc": 227,
"val": "74",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "measured_instantaneous",
"epc": 231,
"val": "934",
"updated_at": "2022-02-11T21:46:02Z"
}
]
}
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"country": "JP",
"manufacturer": "koizumi",
"remote_name": "kaw-12",
"series": "",
"name": "Koizumi AC 001",
"image": "ico_ac_1"
},
"type": "AC",
"nickname": "窓用エアコン",
"image": "ico_ac_0",
"settings": {
"temp": "24",
"temp_unit": "c",
"mode": "cool",
"vol": "2",
"dir": "",
"dirh": "",
"button": "power-off",
"updated_at": "2021-08-10T18:00:01Z"
},
"aircon": {
"range": {
"modes": {
"blow": {
"temp": [
""
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"cool": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"dry": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
""
]
}
},
"fixedButtons": [
"power-off"
]
},
"tempUnit": "c"
},
"signals": []
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"country": "JP",
"manufacturer": "koizumi",
"remote_name": "kaw-12",
"series": "",
"name": "Koizumi AC 001",
"image": "ico_ac_1"
},
"type": "AC",
"nickname": "エアコン",
"image": "ico_ac_1",
"settings": {
"temp": "25",
"temp_unit": "c",
"mode": "cool",
"vol": "2",
"dir": "",
"dirh": "",
"button": "power-off",
"updated_at": "2021-09-15T03:48:30Z"
},
"aircon": {
"range": {
"modes": {
"blow": {
"temp": [
""
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"cool": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"dry": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
""
]
}
},
"fixedButtons": [
"power-off"
]
},
"tempUnit": "c"
},
"signals": []
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": null,
"type": "IR",
"nickname": "13インチディスプレイ",
"image": "ico_tv",
"settings": null,
"aircon": null,
"signals": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "電源",
"image": "ico_io"
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "切り替え",
"image": "ico_forward"
}
]
}
]

このままだと、Nature Remo E lite に登録されている電化製品に加えて、Nature Remo 3 に登録されている電化製品まで表示されてしまう。

かげさんの場合、Nature Remo デバイスの情報はNature Remo E lite 、Nature Remo 3 の順番に表示される。なので jq で配列番号0を指定して Nature Remo E lite だけの情報を取得する。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[0]

取得内容もスッキリした。

{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo E lite",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2022-01-25T14:43:37Z",
"updated_at": "2022-01-25T14:44:04Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "4W1XXXXXXXXXXX",
"firmware_version": "Remo-E-lite/1.3.9",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"manufacturer": "",
"name": "Smart Meter",
"image": "ico_smartmeter"
},
"type": "EL_SMART_METER",
"nickname": "スマートメーター",
"image": "ico_smartmeter",
"settings": null,
"aircon": null,
"signals": [],
"smart_meter": {
"echonetlite_properties": [
{
"name": "coefficient",
"epc": 211,
"val": "1",
"updated_at": "2022-02-11T23:20:01Z"
},
{
"name": "cumulative_electric_energy_effective_digits",
"epc": 215,
"val": "6",
"updated_at": "2022-02-11T23:20:01Z"
},
{
"name": "normal_direction_cumulative_electric_energy",
"epc": 224,
"val": "475491",
"updated_at": "2022-02-11T23:20:01Z"
},
{
"name": "cumulative_electric_energy_unit",
"epc": 225,
"val": "2",
"updated_at": "2022-02-11T23:20:01Z"
},
{
"name": "reverse_direction_cumulative_electric_energy",
"epc": 227,
"val": "74",
"updated_at": "2022-02-11T23:20:01Z"
},
{
"name": "measured_instantaneous",
"epc": 231,
"val": "940",
"updated_at": "2022-02-11T23:20:01Z"
}
]
}
}

スマートメーターの情報は、smart_meter 内の echonetlite_properties にあるので絞り込む。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[0].smart_meter.echonetlite_properties

ここまで絞り込めた。

[
{
"name": "coefficient",
"epc": 211,
"val": "1",
"updated_at": "2022-02-12T03:45:41Z"
},
{
"name": "cumulative_electric_energy_effective_digits",
"epc": 215,
"val": "6",
"updated_at": "2022-02-12T03:45:41Z"
},
{
"name": "normal_direction_cumulative_electric_energy",
"epc": 224,
"val": "475804",
"updated_at": "2022-02-12T03:45:41Z"
},
{
"name": "cumulative_electric_energy_unit",
"epc": 225,
"val": "2",
"updated_at": "2022-02-12T03:45:41Z"
},
{
"name": "reverse_direction_cumulative_electric_energy",
"epc": 227,
"val": "74",
"updated_at": "2022-02-12T03:45:41Z"
},
{
"name": "measured_instantaneous",
"epc": 231,
"val": "380",
"updated_at": "2022-02-12T03:45:41Z"
}
]

echonetlite_properties のオブジェクトの意味

echonetlite_properties は、6種類のオブジェクト(情報)を持っている。

1種類につき4つのキーと値がセットになっている。

キー値の型意味

name string

ECHONET 機器オブジェクト詳細規定の英語版を参考にした名称。将来的に変更される可能性がある。

epc integer ECHONETプロパティ。機器の情報を取得するためのキー情報。
val string
updated_at time 最終更新時をRFC3339フォーマットで表現。

スマートメーターが持っている6つの値


配列番号

name epc(16進数の値) プロパティ名称
0 coefficient 211(0xD3) 係数
1 cumulative_electric_energy_effective_digits 215(0xD7) 積算電力量有効桁数
2 normal_direction_cumulative_electric_energy 224(0xE0) 積算電力量計測値(正方向)
3 cumulative_electric_energy_unit 225(0xE1) 積算電力量単位
4 reverse_direction_cumulative_electric_energy 227(0xE3) 積算電力量計測値(逆方向)
5 measured_instantaneous 231(0xE7) 瞬時電力計測値

先の取得したデータを例にして「スマートメーターの値から電力データを算出する」に従い値を読むと、こんな感じ。

積算電力量有効桁数:6桁(0-999999まで値を保持し、999999を超えると0に戻る)

積算電力量計測値(正方向):475804 x 係数:1 = 475804

積算電力単位=2:0.01kWh なので積算電力量計測値(正方向)=4758.04kWh

積算電力量計測値(逆方向):74 x 係数:1 = 74

積算電力単位=2:0.01kWh なので積算電力量計測値(逆方向)=0.74kWh

瞬時電力計測値:380 単位はW(ワット)

正方向(買電)・逆方向(売電)

まとめ

curl コマンドで jq による絞り込みして瞬時電力計測値するのは、下記のコマンドとなる。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[0].smart_meter.echonetlite_properties[5]

なお、取得した値の型は文字列なので"値"となっている点に注意である。

ここまではOKだ



Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.11

IoTシステム技術検定試験

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

今年の目標は「スマートホーム」や「IoT」のプログラムなので、IoTの勉強にあたり、IoTシステム技術検定試験という試験の書籍を購入しました。

IoTシステム技術検定試験

IoTシステム技術検定試験 基礎(60分 60問 マークシート方式 受験料:10,800円(税込))
IoTシステム技術検定試験 中級(90分 80問 マークシート方式 受験料:15,100円(税込))

試験日:年2回(7月、12月)およそ2ヶ月前から申込可能
試験会場:東京、横浜、名古屋、大阪、札幌、仙台、さいたま、広島、福岡(変動あり)

というものらしいです。



唯一無二のMCPC公式テキスト。出題カテゴリに準拠。試験の対象分野全般をカバー。受検者に最適なIoT技術入門書。IoTの導入・構築・活用に必須!技術やシステムをはじめ、センサやナノコンなどの最新動向を詳しく図説。実務に役立つ技術が身に付く!IoTシステム技術検定(基礎)に対応!

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.10

このあたりを使ってブレイカーが落ちるのを避ける警告出力システムを作れないかなぁ

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

このあたりを使ってブレイカーが落ちるのを避ける警告を発するシステムを作れないかなぁと考えている。

Photo_20220210230901

本体候補は上の3つのうちのどれか M5Atom+ Speaker、M5Echo、M5StickC が良いかなと思ってる。

瞬間電力を Nature Remo E lite で取得して、リードスイッチで開閉判定。

M5Atom 系のバッテリーを使うって感じでどうじゃろ?(^^)

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.09

Nature Remo E lite を使ってやりたいこと

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Nature Remo E lite を使ってやってみたいこと、それは



Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。

電子レンジのドアを開けたときに特定の電力消費量を超えていると通知が出るシステム。

いわゆるあれです、ブレイカーが落ちるのを避けるための警告です。

電子レンジのドアの開閉は、リードスイッチで判定して、警告はM5シリーズのLEDが赤くなって音が鳴るといったことを考えている。

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.08

SwitchBot 加湿器を購入しました(購入3ヶ月後のレビューと SwitchBot API 情報も追記)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

家の中の乾燥がヒドイので加湿器を購入することにしました。

今年の目標は「スマートホーム」や「IoT(モノのインターネット)」のプログラムです。

その目標に沿った加湿器ということで「 SwitchBot 加湿器」を購入しました。

SwitchBot 加湿器でできること



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応
  • 普通の加湿器の機能(当たり前だけど)
  • 満タンで48時間連続運転
  • アロマディフューザー機能
  • 湿度管理、自動加湿機能
  • スマートスピーカー連携機能
  • SwitchBot 製品(主に SwitchBot 温度湿度計)との連携
  • SwitchBot API による加湿器の操作(プログラマ向け)

▼2022/05/07追記 ここから

SwitchBot 加湿器を3ヶ月使ってみた感想

  • 取扱説明書
    スマホの SwitchBot アプリの説明以外は、手入れの方法も含めて、ほとんどが「図解」のため、理解しやすいです。
    SwitchBot アプリの説明がないのは、バージョンアップしていくものなので仕方がないのかなと思います。

  • 加湿器本体について
    操作ボタンは1つしかないシンプルな構造です。
    電源オン(オートモードか弱) ⇒ 中 ⇒ 強 ⇒ オートモード ⇒ 電源オフと遷移します。
    電源オンでオートモードになった場合、もう一度操作ボタンを押すと電源オフになります。
    ボタンを押すたびに音が鳴ります。
    音は、SwitchBot アプリの音量設定で消すこともできます

    加湿器の状態は、操作ボタンの周囲のLEDランプの色で判断します。
    LEDランプは、SwitchBot アプリの表示灯点灯設定で消すこともできます
    LEDの色 意味
    なし 電源オフ
    黄色 噴霧状態:弱(ミスト噴出量1~33%)
    オレンジ 噴霧状態:中(ミスト噴出量34~65%)
    赤みが強いオレンジ 噴霧状態:強(ミスト噴出量66~100%)
    噴霧状態:オート(初期の目標値は55%)
    水量不足
    ※ミスト噴出量の境界値は、SwitchBot API を使って調べました。

  • 超音波式なのでこまめな掃除が必要
    加湿器の方式には、「超音波式」、「スチーム式(加熱式)」、「ハイブリッド式(加熱気化熱式)」、「気化式」の4つの分類があります。

    SwitchBot 加湿器は、振動で水をミストに変える「超音波式」です。

    ヒーターを使っていないので室温への影響はなく、電気料金も低い傾向にあります。

    水蒸気ではなく水の粒子として放出するため、手入れを怠るとタンクやトレーに水垢やカビなどの”雑菌が繁殖した”場合、それを空中に放出する可能性があります。

    このため、2~3日おきくらいに掃除が必要です。満タンで48時間稼働するので、かげさんは水がなくなったら掃除くらいの感覚で使っています。 かげさんの場合、IoT で快適空間を作るという目標があるので、やむを得ない。

    でも、掃除が面倒くさい人には向いていないと思います。(;^_^A

    SwitchBot 加湿器は、単独でスマホのアプリから外出先からリモート操作することができます。
    そして電気安全法により「特定の電熱機器はリモート操作してはいけない」というのがあるので、リモート操作できる IoT 機器は、対策を講じていないとこれに引っかかります。そういう意味でも超音波式なのだと思います。

    詳細は「スマートプラグが電熱機器に向いていない理由」を参照

    <参考>
    スチーム式(加熱式)水をヒーターで加熱して蒸発させ、湯気をファンで回して加湿する。

     水を沸騰させるため菌が繁殖しにくいので”衛生的”。
     ヒーターを使うので室温も上がるので”寒い時期”には便利。
     加熱に電力を使うため、電気料金は高くなる。
     ヒーターを使うため火傷リスクがあるので小さい子供がいる場合など注意。
     カルキが付着しやすいので吹き出し口を掃除しないままだと加湿能力が低下する

    ハイブリッド式(加熱気化熱式)ヒーターとファンで作った温風を使う方式。
     濡れタオルをドライヤーの温風で乾かすこと水分を気化して加湿するようなイメージ

     火傷リスクは低いので小さい子供がいても安心!

    気化式風を当てて帰化した水分を放出する方式。
     ヒーターがないので電気料金がほとんどかからず、火傷リスクがない。
     送風量が多くなるのでモーターオンやファンの音がうるさく感じるモデルもあるかも。

  • SwitchBot アプリ
    アプリでは、噴霧状態の3段階の数字付きアイコンとAで表現しています。
    1:弱、2:中、3:強、A:オート

    アプリでしかできないことは下記の通り
      • オートモードの目標湿度設定
      • 一定時間後に操作する「遅延実行」
      • 「スケジュールによる実行」
      • 「表示灯点灯設定」
      • 「音量設定」

  • オートモードの注意点
    オートモードの目標湿度設定で55%を目標とした時に、湿度55%になっても自動的に電源オフになるわけではない。

    SwitchBotヘルプセンター「SwitchBot加湿器のオートモードで指定した湿度を超えても、どうして加湿し続けていますか。」より

    55%の-5%である湿度50%までは強モードで加湿し、55%±5%の間は中モード、60%を超えたら最弱モード(ミスト噴出量7%)で加湿し続けます。

    特定湿度になったら自動電源オフしたい場合SwitchBot 加湿器の他に SwitchBot ハブミニ(かプラス)SwitchBot 温湿度計(プラス含む)を揃えて、SwitchBot アプリのシーンからSwitchBot 温湿度計(プラス含む)の湿度が○○になったら SwitchBot 加湿器の電源をオフにする という設定が必になります。

    SwitchBot API で調べたところ、SwitchBot 加湿器にも湿度計を持っています。
    オートがあるので湿度計があるのは当たり前なんですが、SwitchBot アプリの加湿器の情報からは湿度が表示されていない。
    なお、SwitchBot 加湿器の湿度計の計測結果をグラフにしてみるとまったく湿度変化がないため、実質APIを使って操作する場合も、SwitchBot ハブミニ(かプラス)と SwitchBot 温湿度計(プラス含む)が必要になります。
    一応、SwitchBotじゃない湿度計でも湿度が取れればできます。

  • アロマディフューザは未使用のため分かりません…

▲2022/05/07追記 ここまで

SwitchBot API による加湿器の操作(プログラマ向け)

一番かげさんの2022年の目標に沿っているのは、SwitchBot API によるプログラムからの加湿器の操作です。

本来なら SwitchBot 温度湿度計と連携して湿度が○○%になったら加湿器をオンするのが普通なんですが、
そこをあえて Nature Remo 3 の湿度センサーの値が○○%になったら加湿器をオンという
別メーカーのセンサーの値でSwitchBot 加湿器を操作ってこともできるってことです。

こんな感じでメーカーAのセンサーをトリガーとしてメーカーBの機器を動かすとか、夢が広がりング♪

SwitchBot アプリや Nature Remo アプリでは設定できない複雑な条件による操作も API を利用した
プログラムを組めばできるわけです。

▼2022/05/07追記 ここから

SwitchBot API を使った SwitchBot 加湿器の curl コマンド(まとめ)

▲2022/05/07追記 ここまで

こういった記事を少しずつ増やしていきたいな、と考えています。

ここまではOKだ



SwitchBot 加湿器 卓上 超音波式 Alexa 大容量 3.5L 上から給水 アロマ対応 6-15畳に対応 除菌 フィルター 超静音 空焚き防止 冬乾燥対策 最大48時間連続稼働 スマート家電 スマホ操作可能 単体でEchoデバイス、Google Home、HomePod、IFTTT 、Siriに対応


SwitchBotスマート加湿器交換用フィルター。
フィルターは活性炭を使用して、ホコリや花粉や微小な粒子まで素早く集めて集じんします。
ご使用状況によっては、お手入れや交換が必要です。フィルターの交換は早めの半年に1回交換がおすすめです。


SwitchBot ハブミニとは複数の赤外線リモコンを一つにまとめるコンパクトなスマートリモコンです。ゲートウェイとしてお家のエアコン・テレビ・照明などの家電とSwitchBot製品をインターネットに接続させて、外出先からスマホでコントロールできます。


より大きく、より頼もしい。3インチのTNパネルを採用し、ディスプレイ表示がより見やすく、どこからでも温湿度が一目でわかります。そして、「乾燥」「快適」「湿潤」の快適レベルで部屋の快適さをよりわかりやすく把握できます。ペットや植物などに合わせた快適レベルのカスタマイズも可能です。


SwitchBot 温湿度計 デジタル スマート家電 高精度 スイス製センサー スマホで温度湿度管理 熱中症対策 アラーム付き グラフ記録 Alexa、Google home、HomePod、IFTTT に対応(ハブ必要)
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.07

Nature Remo デバイスに登録した電化製品の情報を取得する

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Nature Remo Cloud API について(その2)」では Nature Remo デバイスの取得について紹介しました。

次に「電化製品」の情報を取得します。

ここでいう電化製品とは

Nature Remo E シリーズならスマートメーター、Nature Remo なら登録したリモコン家電のことです。

電化製品を英語にすると「 appliances 」なので、取得する curl コマンドはこうなります。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .

アクセストークンなどをマスクした状態で結果を表示すると、こんな感じになる。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4114 100 4114 0 0 4114 0 0:00:01 --:--:-- 0:00:01 4968
[
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo E lite",
"id": "d2caef43-85f2-481f-965e-d0a622a590a9",
"created_at": "2022-01-25T14:43:37Z",
"updated_at": "2022-01-25T14:44:04Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "4W1XXXXXXXXXXX",
"firmware_version": "Remo-E-lite/1.3.9",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"manufacturer": "",
"name": "Smart Meter",
"image": "ico_smartmeter"
},
"type": "EL_SMART_METER",
"nickname": "スマートメーター",
"image": "ico_smartmeter",
"settings": null,
"aircon": null,
"signals": [],
"smart_meter": {
"echonetlite_properties": [
{
"name": "coefficient",
"epc": 211,
"val": "1",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "cumulative_electric_energy_effective_digits",
"epc": 215,
"val": "6",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "normal_direction_cumulative_electric_energy",
"epc": 224,
"val": "475342",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "cumulative_electric_energy_unit",
"epc": 225,
"val": "2",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "reverse_direction_cumulative_electric_energy",
"epc": 227,
"val": "74",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "measured_instantaneous",
"epc": 231,
"val": "934",
"updated_at": "2022-02-11T21:46:02Z"
}
]
}
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"country": "JP",
"manufacturer": "koizumi",
"remote_name": "kaw-12",
"series": "",
"name": "Koizumi AC 001",
"image": "ico_ac_1"
},
"type": "AC",
"nickname": "窓用エアコン",
"image": "ico_ac_0",
"settings": {
"temp": "24",
"temp_unit": "c",
"mode": "cool",
"vol": "2",
"dir": "",
"dirh": "",
"button": "power-off",
"updated_at": "2021-08-10T18:00:01Z"
},
"aircon": {
"range": {
"modes": {
"blow": {
"temp": [
""
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"cool": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"dry": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
""
]
}
},
"fixedButtons": [
"power-off"
]
},
"tempUnit": "c"
},
"signals": []
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo",
"id": "e5fc772f-0103-4fab-b954-e556ef6234d4",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"country": "JP",
"manufacturer": "koizumi",
"remote_name": "kaw-12",
"series": "",
"name": "Koizumi AC 001",
"image": "ico_ac_1"
},
"type": "AC",
"nickname": "エアコン",
"image": "ico_ac_1",
"settings": {
"temp": "25",
"temp_unit": "c",
"mode": "cool",
"vol": "2",
"dir": "",
"dirh": "",
"button": "power-off",
"updated_at": "2021-09-15T03:48:30Z"
},
"aircon": {
"range": {
"modes": {
"blow": {
"temp": [
""
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"cool": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"dry": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
""
]
}
},
"fixedButtons": [
"power-off"
]
},
"tempUnit": "c"
},
"signals": []
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": null,
"type": "IR",
"nickname": "13インチディスプレイ",
"image": "ico_tv",
"settings": null,
"aircon": null,
"signals": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "電源",
"image": "ico_io"
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "切り替え",
"image": "ico_forward"
}
]
}
]

ここまではOKだ



赤外線リモコンの代わりに、スマホを使って家電を操作できます。外出先からでも家の家電を操作することができるので、家に帰る前にエアコンをつけたりすることができます。Google Home、Amazon Echo、Apple HomePod などのスマートスピーカーと連携させることで、スマート家電ではない家電も音声で操作できるようになります。※スマートスピーカーがなくてもスマホから家電を操作することは可能です。


Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.06

Nature Remo 3 本体のセンサーの情報を jq で絞り込み取得する

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Nature Remo Cloud API について(その2)」にも記載したように Remo の newest_events の部分が、Nature Remo 3 本体のセンサーの情報で val が値である。

・hu:湿度(humidity)
・il:照度(illuminance)
・mo:人感(motion)
・te:温度(temperature)

jq を使うことでそれぞれの値を絞り込んで取得できます。

湿度センサーの値取得

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[].newest_events.hu.val

2022/02/13追記 湿度センサーがない Nature Remo mini シリーズでは取得できません。

照度センサーの値取得

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[].newest_events.il.val

2022/02/13追記 照度センサーがない Nature Remo mini シリーズでは取得できません。

人感センサーの値取得

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[].newest_events.mo.val

2022/02/13追記 人感センサーがない Nature Remo mini シリーズでは取得できません。

温度センサーの値取得

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[].newest_events.te.val

補足の追記

▼2022/02/12 追記ここから

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[].newest_events.hu.val

ちなみに、この記述は Nature Remo 本体を持っていて、かつ、Nature Remo の製品が1つだけのときに湿度だけ出力されます。

Nature Remo の製品が複数あるときにこの記述をすると、こんな出力になります。

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[].newest_events.hu.val
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1081 100 1081 0 0 1081 0 0:00:01 --:--:-- 0:00:01 1503
null
47

Nature Remo 3 の湿度センサーの値は47%

それは良いとしてその前のnullは何でしょう?

かげさんの場合、Nature Remo の製品(Nature Remoデバイス)を2つ持っています。

  1. Nature Remo 3
  2. Nature Remo E lite


赤外線リモコンの代わりに、スマホを使って家電を操作できます。外出先からでも家の家電を操作することができるので、家に帰る前にエアコンをつけたりすることができます。Google Home、Amazon Echo、Apple HomePod などのスマートスピーカーと連携させることで、スマート家電ではない家電も音声で操作できるようになります。※スマートスピーカーがなくてもスマホから家電を操作することは可能です。


Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。

Nature Remo Cloud API について(その2)のようにjqによる絞り込みを入れない時は、こうなります。

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1081 100 1081 0 0 1081 0 0:00:01 --:--:-- 0:00:01 1356
[
{
"name": "Remo E lite",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2022-01-25T14:43:37Z",
"updated_at": "2022-01-25T14:44:04Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "4W1XXXXXXXXXXX",
"firmware_version": "Remo-E-lite/1.3.9",
"temperature_offset": 0,
"humidity_offset": 0,
"users": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"nickname": "かげさん",
"superuser": true
}
],
"newest_events": {}
},
{
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0,
"users": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"nickname": "かげさん",
"superuser": true
}
],
"newest_events": {
"hu": {
"val": 41,
"created_at": "2022-02-05T14:06:34Z"
},
"il": {
"val": 64,
"created_at": "2022-02-05T14:10:32Z"
},
"mo": {
"val": 1,
"created_at": "2022-02-05T14:05:42Z"
},
"te": {
"val": 20.4,
"created_at": "2022-02-05T14:09:34Z"
}
}
}
]

name のところを見てもらうと Remo E lite 、Remo の順になっています。そして、Remo E lite の方にある newest_events には hu も val もありません。つまりデータが存在しない = null となります。

湿度取得の curl コマンドの jq の部分だけ見てみます。

jq .[].newest_events.hu.val

後ろの方、.newest_events.hu.val は、newest_events 内の hu 内の val という意味です。

前の方の .[] は、ルート(最上位階層)内の全配列という意味です。

配列番号は 0 から始まります。配列部分は、上述の jq の絞り込みを入れない場合の最上位階層は [ から始まるので、次の階層 { の中が0番目の配列になります。つまり、name が Remo E lite の部分です。同様に1番目の配列は、name が Remo の部分になります。

ということで、かげさんが Nature Remo 3 本体の湿度を取得したい場合は、jq の部分をこのように記述する必要があります。

jq .[1].newest_events.hu.val

hu:湿度センサーの値なので hu の部分を il に変えると照度センサーの値、 mo に変えると人感センサーの値、te に変えると温度センサーの値が取得できます。

▲2022/02/12 追記ここまで

ここまではOKだ



赤外線リモコンの代わりに、スマホを使って家電を操作できます。外出先からでも家の家電を操作することができるので、家に帰る前にエアコンをつけたりすることができます。Google Home、Amazon Echo、Apple HomePod などのスマートスピーカーと連携させることで、スマート家電ではない家電も音声で操作できるようになります。※スマートスピーカーがなくてもスマホから家電を操作することは可能です。


Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.05

Nature Remo Cloud API について(その2)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Nature Remo Cloud API について(その1)」の続きで Nature Remo の API について書いていきます。

目次


赤外線リモコンの代わりに、スマホを使って家電を操作できます。外出先からでも家の家電を操作することができるので、家に帰る前にエアコンをつけたりすることができます。Google Home、Amazon Echo、Apple HomePod などのスマートスピーカーと連携させることで、スマート家電ではない家電も音声で操作できるようになります。※スマートスピーカーがなくてもスマホから家電を操作することは可能です。


Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。

Nature Remo の API は2種類ある

  1. Nature Remo Cloud API
  2. Nature Remo Local API

単純に Nature Remo の API という場合、インターネット経由で使う Cloud API のことだと思って良いでしょう。

Nature Remo Local API

Local API の方は、スマートリモコン Nature Remo シリーズの操作に使います。
具体的には、受信した最新の赤外線(IR)信号を取得したり、赤外線(IR)信号を送信するのに使います。

Local API は Nature Remo クラウドで障害が発生した場合などでも使えるのがポイントです。

Local API のことは、別の記事として書くことにして、この記事では Cloud API について書いていきます。

Nature Remo Cloud API

Cloud API は、Nature Remo クラウドを利用してスマートリモコン Nature Remo シリーズや エネルギーをモニタリングする Nature Remo E シリーズにアクセスする時に使う。

Nature Remo クラウドで外部に公開している API の機能の URL (エンドポイントという)は、22個存在する。しかし、全体で22個あるものの情報の登録/更新/削除は、スマホの「 Nature Remo アプリ」を使って操作した方が便利そうである。

なので実際に使うのは、下記の3つが中心になると思う。

  • スマートリモコン Nature Remo 本体が持つセンサー情報を取得
  • 登録した電化製品の情報を取得
  • 電化製品のリモコンを操作

電化製品の情報を取得には Nature Remo E シリーズと接続するスマートメーターの情報取得も含まれる。

Nature Remo クラウドへの接続には、 OAuth2 (オーオース2.0)という認証/認可の仕組みを使う。

このときに必要になるのが、アクセストークンという文字列だ。

これを事前に取得する必要がある。

Nature Remo のアクセストークンを取得する

https://home.nature.global/
にアクセスします。

メールアドレスを入力するとログイン用URLが届きます。

ログインして求められる権限を許可します。

Access tokens の画面にある「Genarate access token」ボタンを選択。

アクセストークンは一度しか表示されないため、「Copy」ボタンを選択して安全な場所に記録します。

アクセストークンを流出させてしまうと、Nature Remo で操作できる家電に外部からアクセスされるので注意しましょう。

curl コマンドで Nature Remo Cloud API を使う

Nature Remo Cloud API を使う方法としては、curlコマンド、Python、JavaScriptなどの開発言語を使う方法があります。

簡単に検証できるのは、インストール作業が不要なcurlコマンドです。(Windows 10 以降や Raspbery Pi の OS ならたぶん標準で入っている

最初は curl コマンドでのやり方から紹介します。

もともと curl コマンドで実行するつもりで過去記事「jsonデータを整形するjq(使う前の準備まとめ)」を書いたので。

この記事では Windows のコマンドプロンプトで使う curl で説明します。

ここで Windows のコマンドプロンプトと「ことわり」を入れているのは、実行環境でスペースを含むパラメータを与える時のくくり文字が異なるためです。

例えば、OAuth2のヘッダを入力する際、"Authorization: Bearer XXXXXXXX"というヘッダを付けます。

この時、Windows のコマンドプロンプトだとダブルクォート「"」でのくくる必要があります。
Linux 系で curl を使うときはシングルクォート「'」でくくります。
Windows でも PowerShell で curl を使う場合は、ダブルクォートでも、シングルクォートでも良いのですが、Windows のコマンドプロンプトで curlを使うときは、ダブルクォートでくくらないといけません。

この違いのため、curl コマンドは Linux系で使われることが多いコマンドのため、ネットでサンプルとして拾ってきた curl コマンドの例を Windows のコマンドプロンプト上の curl で使うとエラーになるのです。

ちょっと余談をしてしまったが、早速、Nature Remo デバイスの情報を取得してみよう。

サンプルになるCurlコマンドを得る方法は、下記の通りだ。(画像はクリックで拡大します)

[ GET /1/devices ] をクリックして開く。

Natureapi_01

[ Try it out ] ボタンをクリック。

Natureapi_02

[ Execute ] ボタンをクリック。

Natureapi_03

すると Curl という欄が表示される。これがサンプルである

Natureapi_04

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json"

ただし、このままでは OAuth2 による認証がされていないため、Server response が 401 Error (認証エラー)になっている。
このため、サンプルの Curl コマンドに OAuth2 認証をするヘッダ「 -H "Authorization: Bearer 取得したアクセストークン"」を付ける必要がある。

ヘッダを付けて実行すると https リクエストの結果(レスポンス)である json 形式のデータが返ってくる。

ただし、整形されていない json データのため、読みづらい。

そこで、パイプで jq を使って json データを整形する。( jq のダウンロードは「jsonデータを整形するjq(使う前の準備まとめ) 」を参照)

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer 取得したアクセストークン" | jq .

アクセストークンなどをマスクした状態で結果を表示すると、こんな感じになる。

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1081 100 1081 0 0 1081 0 0:00:01 --:--:-- 0:00:01 1356
[
{
"name": "Remo E lite",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2022-01-25T14:43:37Z",
"updated_at": "2022-01-25T14:44:04Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "4W1XXXXXXXXXXX",
"firmware_version": "Remo-E-lite/1.3.9",
"temperature_offset": 0,
"humidity_offset": 0,
"users": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"nickname": "かげさん",
"superuser": true
}
],
"newest_events": {}
},
{
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0,
"users": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"nickname": "かげさん",
"superuser": true
}
],
"newest_events": {
"hu": {
"val": 41,
"created_at": "2022-02-05T14:06:34Z"
},
"il": {
"val": 64,
"created_at": "2022-02-05T14:10:32Z"
},
"mo": {
"val": 1,
"created_at": "2022-02-05T14:05:42Z"
},
"te": {
"val": 20.4,
"created_at": "2022-02-05T14:09:34Z"
}
}
}
]

ちゃんと Remo E lite と Remo の情報を取得できている。

ちなみに Remo の newest_events の部分が、Nature Remo 3 本体のセンサーの情報で val が値である。

hu:湿度(humidity)
il:照度(illuminance)
mo:人感(motion)
te:温度(temperature)

なお、人感センサーは 0 と 1 で表現されており、0:人がいない、1:人がいるという意味だが、ここでいう「人がいる/いない」は「動く熱源」で検知しているようだ。

情報ソースはコチラの記事「Nature Remoの人感センサーは、「動く熱源」を感知してる?【まとめ】

Nature Remo Cloud API が使えない時

さて、Nature Remo Cloud API が使えない時のことも書いておこう。

公式サイトの「【11/26 11:12更新】システム障害のお詫びと復旧のお知らせ」を見ると Nature Remo クラウドは、AWS(アマゾン・ウェブ・サービス)を利用していて、AWS での障害の影響を受けるようですね。

Nature Remo が赤点滅して正常に動作しない」の図解から、AWS で障害が起きたときは、Nature Remo が赤く早い点滅(1秒間に数回点滅)するのでしょう。
AWS の復旧を待つ必要がありそうです。

赤く早い点滅の解決策が知りたい」にも解決のためのステップが載っているので参考になるかもしれません。

なお、遅い赤点滅(1秒間に1回)の場合、Nature Remo と Wi-Fi ルータ間の問題なので、Wi-Fi ルータをリセットすると良いでしょう。
以前にかげさんも Wi-Fi ルータが不調時にこの状態になり、Wi-Fi ルータをリセットで復旧したことがあります。

ほかにも使えないケースはあるかもしれませんが、分かる範囲ではこんなところです。

ここまではOKだ



赤外線リモコンの代わりに、スマホを使って家電を操作できます。外出先からでも家の家電を操作することができるので、家に帰る前にエアコンをつけたりすることができます。Google Home、Amazon Echo、Apple HomePod などのスマートスピーカーと連携させることで、スマート家電ではない家電も音声で操作できるようになります。※スマートスピーカーがなくてもスマホから家電を操作することは可能です。


Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.04

無理やり書いてる

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

連日投稿を頑張っている。

帰宅が遅くなった上に疲れていて書くのが間に合わないときが
ツライ…(´・ω・`)

まぁ、今の状況なわけで、無理やり書いてます(笑)。

これじゃ、途切れてないだけで内容が無いよう…(´・ω・`)

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.03

Nature Remo Cloud API について(その1)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

さて「jsonデータを整形するjq(使う前の準備まとめ)」で紹介したように jq の準備ができたら早速、Nature Remo の API を使いたいところです。が、先に API 概要があるページを説明した方が良いでしょう。

API 概要のページ

まずはリンクから https://developer.nature.global/jp/overview

さてこのページなんだが、一見して分かりにくいところとして
ただのテキスト文書としてしか思えない文字色を使っているところが挙げられる。

リンクになっているところにアンダーラインがない上、通常文字:灰色+リンク文字:黒となっており、リンク箇所が保護色にみたいになっているのだ。

よくよく見ると5箇所がリンクになっていて、そのリンク先を見に行く必要があるんだが、リンク文字列がすでに分かりにくい…(´・ω・`)

リンクになっているのは、以下の5箇所だ。

API仕様[Cloud API]
API仕様[Local API]
home.nature.global
RFC7231
swagger.nature.global

ちょっと説明も必要なので「Nature Remo Cloud API について(その2)」ではそこの説明をする。

ここまではOKだ



赤外線リモコンの代わりに、スマホを使って家電を操作できます。外出先からでも家の家電を操作することができるので、家に帰る前にエアコンをつけたりすることができます。Google Home、Amazon Echo、Apple HomePod などのスマートスピーカーと連携させることで、スマート家電ではない家電も音声で操作できるようになります。※スマートスピーカーがなくてもスマホから家電を操作することは可能です。


Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。
 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.02

jsonデータを整形するjq(その2)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

jsonデータを整形するjq(その1)」の続きで jq について紹介します。

まだ jq をダウンロードしていない人は、jq の公式サイト「https://stedolan.github.io/jq/」からダウンロードしてください。

詳しくは「jsonデータを整形するjq(その1)」を参照。

使いやすくするため、名前を変更

ダウンロードした直後のコマンド名は、Windows の場合、jq-win64.exe / jq-win32.exe 。
Linux の場合、jq-linux64 となっています。

コマンドラインで使うので、短い方が使いやすい。Windows ならファイル名を jq.exe にし、Linux なら jq に変更しましょう。

パスを通す

コマンドラインで使うので、フルパスのファイル名(例えば、D:\Download\jq\jq.exe )を指定するのは面倒です。
パスを通しましょう。

  1. Windows の場合、[設定]-[システム]-[詳細設定]-[システムの詳細設定]を選択
  2. [環境変数]ボタンを選択
  3. システム環境変数の方にある Path をダブルクリック
  4. [新規]ボタンを選択
  5. jq.exe のパス(例えば、D:\Download\jq\ )を入力し、[OK]ボタンを選択
  6. システムのプロパティ画面で[OK]ボタンを選択
  7. 念の為、マシンを再起動

実際に使っている例がある記事

Nature Remo 3 本体のセンサーの情報を jq で絞り込み取得する

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

2022.02.01

jsonデータを整形するjq(その1)

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

2022/02/03追記
Nature Remo の API では、json 形式のデータを使います。json は、データ構造を持つ形式ですが、適度に改行を入れた状態でないと読みづらいです。Nature Remo の API は、curl コマンドを使って json データを連携する方法で紹介する予定です。そのため、先に json データを見やすくする方法を紹介しようと思います。

curl コマンドを使用して json 形式のデータを取得した際、見やすく改行を入れてくれるコマンド jq について紹介します。

jq のダウンロード

jq の公式サイトからダウンロードします。
https://stedolan.github.io/jq/

Jq_offical

「 Download jq 1.6 ▼」ボタンをクリックし、インストールするOSを選択します。
コンボボックスに存在しない OS や 32 bit 版のインストールが必要な場合は、
「 Other platforms, older versions, and source 」を選択します。

使い方などは「jsonデータを整形するjq(その2)」で

ここまではOKだ

 このエントリーをはてなブックマークに追加

| |コメント (0)

« 2022年1月 | トップページ | 2022年3月 »