LoginSignup
0
0

More than 1 year has passed since last update.

WEBアプリでSmartHome Hue編 Node-RED+Hue+RaspberryPi

Posted at

環境

 RaspberryPi / Linux raspberrypi 5.10.63
 Philips Hue / Version4.8.0

構成

スクリーンショット 2021-11-23 3.17.32.png

スクリーンショット 2021-11-23 19.25.37.png

Node-RED

・Node-REDのセットアップ
セットアップは公式を参照。
私は、macにもインストールしてmacである程度フローを構築してから、
VPNでJSONでラズベリーパイに渡して組んでいきました。
[https://nodered.jp/docs/user-guide/]

・Hueノードの追加
node-red-contrib-hueplusをインストール
[https://flows.nodered.org/node/node-red-contrib-hueplus]

Bridgeには自分で名前をつけて、編集ボタンをクリック。
スクリーンショット 2021-11-19 13.57.07.png
BridgeにIPアドレスを入力し、その状態でHueBridge側のリンクボタンを押して、API KEY横のボタンを押すと自動的にAPI keyが割当られる。
スクリーンショット 2021-11-19 13.58.31.png

・Dashboardノードの追加
node-red-dashboardをインストール
[https://flows.nodered.org/node/node-red-dashboard]
下記のようなダッシュボードが用意されているのを今回は活用。
dashboarde.png

Hue API

・Hue APIから自宅のID取得
"http://Hue BridgeのIPアドレス/debug/clip.html"
にアクセスするとAPIデバッグ画面を表示。
スクリーンショット 2021-11-19 13.54.17.png

・Light API
URLに下記を入力し、GETすると下記の様に現在の電球ごとの状態が返される。
/api/APIkey/lights
API keyには先程、Node-REDのhueノード追加した際取得した値を入れる。

{
    "1": {
        "state": {
            "on": true,
            "bri": 254,
            "hue": 15648,
            "sat": 105,
            "effect": "none",
            "xy": [
                0.4349,
                0.4036
            ],
            "ct": 331,
            "alert": "lselect",
            "colormode": "ct",
            "mode": "homeautomation",
            "reachable": false
        },
        "swupdate": {
            "state": "noupdates",
            "lastinstall": "2021-08-23T05:50:49"
        },
        "type": "Extended color light",
        "name": "Hue color lamp 1",
        "modelid": "LCT007",
        "manufacturername": "Signify Netherlands B.V.",
        "productname": "Hue color lamp",
        "capabilities": {
            "certified": true,
            "control": {
                "mindimlevel": 2000,
                "maxlumen": 800,
                "colorgamuttype": "B",
                "colorgamut": [
                    [
                        0.675,
                        0.322
                    ],
                    [
                        0.409,
                        0.518
                    ],
                    [
                        0.167,
                        0.04
                    ]
                ],
                "ct": {
                    "min": 153,
                    "max": 500
                }
            },
            "streaming": {
                "renderer": true,
                "proxy": true
            }
        },
        "config": {
            "archetype": "sultanbulb",
            "function": "mixed",
            "direction": "omnidirectional",
            "startup": {
                "mode": "custom",
                "configured": true,
                "customsettings": {
                    "bri": 254,
                    "ct": 331
                }
            }
        },
        "uniqueid": "00:17:88:01:02:31:38:2f-0b",
        "swversion": "67.88.1"
    },
    "2": {
        "state": {
        .... 以下省略

・scene API
URLに下記を入力し、GETすると下記の様に現在hueアプリで設定していたシーンが返される。
/api/APIkey/scenes

実際運用上、電球ごとにAPIを叩くことは少ないと思うので、Hueアプリで設定したシーンをAPIで叩くほうが使いやすいと思うので、scenes APIで各シーンの名前をNODEに入れる。
例えば、下記では、HueアプリでRelaxというシーンを組んでいるので、それを呼び出したい場合、
A21E1OATRrZxC1pを入れる。

    "A21E1OATRrZxC1p": {
        "name": "Relax",
        "type": "GroupScene",
        "group": "1",
        "lights": [
            "1",
            "6",
            "7"
        ],
        "owner": "a5e05d2b-cc6f-4a46-9130-ca0b4f7faa07",
        "recycle": false,
        "locked": false,
        "appdata": {
            "version": 1,
            "data": "hj5dO_r01_d01"
        },
        "picture": "",
        "image": "a1f7da49-d181-4328-abea-68c9dc4b5416",
        "lastupdated": "2021-02-19T08:49:31",
        "version": 2

Node-REDでダッシュボード作成

下記のようにリビングに対して、シーンを再生するUIを作成。

スクリーンショット 2021-11-22 13.11.22.png

各NODEは下記のように設定。
ここでは、scenes APIで記載したシーン名を入力。ここは、Hueアプリで設定したRelaxという名前ではなく、secnesAPIで紐付いた名前を入れる。
スクリーンショット 2021-11-22 13.08.52.png

どのグループかを選択。
スクリーンショット 2021-11-22 13.10.45.png

この状態でデプロイし、webでアクセスすると下記のUIが表示される。
下記にアクセス。ラズベリーパイは安定性のため、有線LANで常時稼働状態で運用しており、常時再生できるようにしています。
http://Raspberry PiのローカルIPアドレス:1880/ui

IMG_2918.jpg

API経由で再生するとタイムラグ出るかと思ったけど全然問題ない。
homekitやIFTTTは使いづらかったり、細かい設定がしにくいので、これからダッシュボードにいろんな機能を付加していこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0