Node-REDからArt-Net経由でDMX照明機器を制御してみた

# はじめに

現実空間の人の動き(画像認識)に合わせてムービングライトを動かすことを目標に、まずはArt-Net経由でDMX照明機器を制御してみます。
![スクリーンショット 2023-05-31 8.53.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/bf878583-b694-6cda-2ec9-d0e7a8e966ec.png)

# Art-Net経由でDMX照明機器を動かす

まずは、以前TouchDesignerからArt-NetでIoTデバイス(ESP8266, ESP32)を制御したところからおさらいです。

https://qiita.com/kitazaki/items/fb3f6e6f5b007b8c3b54

今回はPC(macOS)からuDMX(USB-DMX変換ケーブル)経由でDMX照明機器を制御します。

![スクリーンショット 2023-05-29 8.40.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/d30678b7-23f8-bd04-741d-2d3fe1bcdcf1.png)

## 環境

- macOS
  - MacBook Pro (2017, Intel)
  - macOS Big Sur (バージョン 11.7.6)
- USB-DMX変換ケーブル
  - Lixada USB-DMX512 Interface Adapter
- DMX照明機器
  - Lixada 86 RGB LED Light DMX Lighting Projector
- QLC+アプリケーション
  - バージョン 4.12.7
- TouchDesignerアプリケーション
  - バージョン 64-Bit Build 2020.28110
- Node-RED Desktop
  - バージョン 2.1.0
  - 追加モジュール node-red-contrib-artnet
  - 追加モジュール node-red-dashboard

## 手順

### QLC+

PC(macOS)にQLC+アプリケーションをインストールして起動します。

画面右下の「入力/出力設定」タブを選択します。

右側のマッピングで、

- ArtNet 127.0.0.1 入力
- uDMX 出力

を選択します。

左側のUniverse 1で「パススルー」のチェックボックスにチェックを入れます。

![qlc_01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/623753fc-9ed5-b6ee-e483-141a775b5acc.jpeg)

画面右下の「シンプル卓」タブを選択します。
チャンネルのレベルを操作し、DMX照明機器が制御できることを確認します。

![qlc_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/84942dbc-6d12-999a-f38a-c9593d6dfed4.jpeg)

### TouchDesigner

TouchDesignerから制御する場合は以前のQiita記事をご覧ください。

https://qiita.com/kitazaki/items/fb3f6e6f5b007b8c3b54

以下はサンプルフローの全体像です。

![touchdesigner.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/74bdd76d-1a45-6cac-268c-ef7d8301dcd0.jpeg)

サンプルファイル(.toe)はこちらです。

https://github.com/kitazaki/ArtNet_DMX/blob/master/sample_DMX-out_Art-Net.toe

### Node-RED

今回はNode-REDからArt-Net経由でDMX照明機器を制御します。
Node-REDでArt-Netを扱うために、node-red-contrib-artnetモジュールを追加します。

https://flows.nodered.org/node/node-red-contrib-artnet

右上の「メニュー」から「パレットの管理」→「ノードを追加」からnode-red-contrib-artnetを検索して追加します。
追加されると、左のパレットメニューの「出力」カテゴリに「artnet out」ノードが追加されます。

![スクリーンショット 2023-05-31 9.25.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/9eb05f8a-10b9-4003-67af-f88ef1677457.png)

また、Node-REDダッシュボードからDMX照明機器を操作するため、同じ手順でnode-red-dashboardモジュールを追加します。

以下はサンプルフローの全体像です。

![スクリーンショット 2023-05-31 9.22.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/420e11f5-7b12-3ec8-6f57-eb837938d1eb.png)

サンプルファイル(flows.json)はこちらです。

https://github.com/kitazaki/ArtNet_DMX/blob/master/flows_sample_artnet.json

「artnet out」ノードの入力はmsg.payloadにJSON形式でデータを設定します。

```json
{
    "buckets": [
        {
            "channel": 1,
            "value": 10
        },
        {
            "channel": 2,
            "value": 10
        },
        {
            "channel": 3,
            "value": 10
        },
        {
            "channel": 4,
            "value": 10
        }
    ]
}
```

書式の説明はnode-red-contrib-artnetモジュールのページに記載されています。

https://flows.nodered.org/node/node-red-contrib-artnet

Node-REDダッシュボードからも操作できることを確認します。

![スクリーンショット 2023-05-29 8.39.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/2b5f6dcc-413b-6f90-48b6-88d69a891c3d.png)