照度センサーとスマート電球で部屋の照明を調光してみる

​​​​​​​​​​​​​​

コネクシオのテックブログをご覧いただきありがとうございます。
テックブログでは、ちょっと役立つ技術情報やコネクシオの製品を使ってできることを紹介しています。

在宅勤務が続いている方は、以前よりも自宅の照明を点ける時間が長くなっているのではないでしょうか。そこで、部屋の明るさに応じて照明がちょうど良い明るさを保ってくれたらいいな…と感じたことから、当社のIoTゲートウェイCONEXIOBlackBearで自動的に照明を調光する仕組みを考えてみました!

目次[非表示]

  1. スマート電球について
    1. CONEXIOBlackBearで明るさを制御するには
  2. 照度センサーについて
  3. やってみよう
    1. CONEXIOBlackBearで照度を取得する
    2. 自動で調光する
    3. おわりに

▼CONEXIOBlackBearについてはこちら

  CONEXIOBlackBear | コネクシオIoTソリューション コネクシオは”海外利用可能”・”車載可能”な堅牢性、AI連携を想定したエッジコンピューティング・ゲートウェイ『CONEXIOBlackBear』を開発しました。IoTゲートウェイ|エッジコンピューティング|海外利用|車載利用|コネクシオブラックベア コネクシオ IoTソリューション


スマート電球について

今回使用したのはPhilips社のスマート電球「Philips Hue」です。

  スマートライトで暮らしが変わる | Philips Hue JP スマートライトなら、リラックスタイムもディナータイムも明かりで模様替え。 Philips Hue JP


専用の「Hueブリッジ」をインターネットに接続し、「Hueブリッジ」からZigBeeネットワークで接続した電球を自由に操作できます。スマート電球自体の設置も既存の電球と取り換えるだけなので、手軽で簡単に電源のオン・オフや調光ができました。電球の光量は256段階で指定できます。


CONEXIOBlackBearで明るさを制御するには

Philips Hueは、REST(Representational State Transfer)という技術を用いて制御します。

この技術はWebサービスで良く使われるもので、サービスを提供するURLにHTTPを使ってアクセスすれば、そのサービスを利用できるというものです。

例えばCONEXIOBlackBearの場合、以下のようなコマンドを実行することで、スマート電球を調光できます。
(詳細は省略しますが、電気の状態”on”と光量”bri”を指定する命令を送信することで電球を調光しています)

# curl -X PUT <IPアドレス>/api/<UserName>/lights/1/state -d '{"on": true, "bri": 25}'


照度センサーについて

調光に必要な照度データは、当社で使用実績があるオムロン社の環境センサー「2JCIE-BU01」で計測しました。

  2JCIE-BU | 環境センサ(USB型) | オムロン電子部品サイト - Japan 身の回りの様々な環境情報をセンシング | USBまたはBluetooth®通信を介してネットワークに接続し、測定データの送信が可能 革新的なオムロン独自のアルゴリズムにより、加速度振動から高精度な地震判定が可能 VOCセンサにより、室内の空気質を継続的にモニタリングする事が可能 https://www.omron.co.jp/ecb/product-detail?partNumber=2JCIE-BU


このセンサーがBLE通信で出力するアドバタイズの中に、下記のような照度などの環境データが記載されています。このセンサーは下図のようなUSBドングルタイプで、小型で電源を供給するだけで起動でき、設定不要ですぐにデータを計測できます。

【2JCIE-BU01が出力する環境データ】
温度、湿度、照度、気圧、騒音、3軸加速度、eTVOC(※)、不快指数、 熱中症警戒度、振動情報
※equivalent Total Volatile Organic Compound:室内環境下における総揮発性有機化合物濃度


BLE通信については、Qiitaに投稿した記事でご紹介していますので、参考にしていただければと思います。

▼参考記事:「BLEセンサーを初心者がつなげてみた!」

  【CONEXIOBlackBearでこんなことをやってみた】BLEセンサーを初心者がつなげてみた! - Qiita BLE接続は難しい? BLEは「Bluetooth Low Energy」のことで、通常のBluetoothよりも省電力での接続を実現できます。最初はBLEの意味すらわからず、プログラミングを本格的に始めて1年程度の私でしたが、やっ... Qiita



やってみよう

それでは、ご紹介した電球、センサー、CONEXIOBlackBearを使い設定を行っていきます。


CONEXIOBlackBearで照度を取得する

今回の実験では、自宅の部屋の照度データを測定しました。
直射日光が当たらない場所に環境センサを配置し、AC電源から電力供給を行いました。この状況で照度データの測定値を比較したところ、暗いと感じたのが平均30ルクスであり、十分明るいと感じたのが平均60ルクスでした。

照度データの取得には、先ほどご紹介したQiita記事を参考に、bluepyを使用しました。


自動で調光する

以下のような電球を自動制御するプログラムを作成して、1分周期で動かしてみました。

制御の内容としては
「30ルクス以下の時は光量に255を指定して電球を一番明るく点灯」
「30ルクス超60ルクス以下の時は光量に128を指定して中位の光量で点灯」
「60ルクス超なら消灯」

させるというものです。いざプログラムを書いてみると30ステップ以下で簡単に実現でき、無事部屋の照度に応じて調光することができました!

プログラムの内容は以下の通りです。

from bluepy import btle
import struct
import subprocess
scanner = btle.Scanner(0)
devices = scanner.scan(2.0)
#環境センサの特定及びデータの取得
for device in devices:
 for (adTypeCode, description, valueText) in device.getScanData():
  if description == ‘xxxx' and valueText[0:4] == ‘xxxx':
   #照度データをバイナリから数値に変換
   binary = bytes.fromhex(valueText[16:20])
   light = struct.unpack('h', binary)
   print(‘light’, light)#照度の表示(ルクス)
   #照度に対する調光制御の内容
   if int(light[0]) > 60:
    subprocess.run(['curl', '-X', 'PUT', '<IPアドレス>
/api/<UserName>/lights/1/state ‘, ’-d‘, ’{“on”: false}‘])#消灯

   elif int(light[0]) > 30 and int(light[0]) <= 60:
    subprocess.call(['curl', '-X', 'PUT', '<IPアドレス>
/api/<UserName>/lights/1/state ‘, ’-d‘, ’{“on”: true, “bri”: 128}‘])#中光量

     else:
    subprocess.call(['curl', '-X', 'PUT', '<IPアドレス>
/api/<UserName>/lights/1/state ‘, ’-d‘, ’{“on”: true, “bri”: 255}‘])#最大光量



おわりに

これほど少ない作業で簡単に自動調光ができるとは思っていませんでした。
今回は照度に応じて電球を操作しましたが、同じセンサーでも

「熱中症警戒度に応じて水分補給を促すメールを送る」
「温度に応じて扇風機をつける」

など様々な応用方法が考えられそうです。
皆様もスマート化(自動化)にぜひ挑戦してみてください! 


​​​​​​​
環境データを簡単に可視化するIoTソリューション「EDConnectワイヤレス」についてはこちら

  EDConnectワイヤレス | 環境データ可視化ソリューション 温度・湿度・照度・電力など多様なデータを見える化!配線工事不要で設置が簡単なIoTセンシングキットです。|コネクシオ株式会社 コネクシオ IoTソリューション


コネクシオのソリューションが5分でわかる!
工業・農業・オフィス・車両・インフラなど、
各分野から抜粋した代表例をご紹介
ご質問やご要望はこちらから
お気軽にお問い合わせください

お役立ち資料
最新記事
サイト内検索