LoginSignup
10
2

More than 3 years have passed since last update.

Node-RED uibuilder で個人的にハマったところ

Last updated at Posted at 2019-12-31

はじめに

はじめまして、プログラミング歴1年にも満たない新人エンジニアです。

現在携わっているプロジェクトでNode-REDを使っているのですが、
そのNode-REDを使ってuiの作成をすることがあり、その際にuibuilderを使って作成しています。仕事で使用した際に、個人的にハマったところを中心に今回はまとめてみたので、よかったら参考にしてみてください。

Node-RED uibuilderの概要

ここでは基本的なことだけ書くので詳しくはNode-RED uibuilderのgithubなどを参考にしてください。

  • マルチユーザに対応したuiが作成できる
  • デフォルトでvue.jsやbootstrapがインストールされており、別のライブラリのインストールも可能
  • uibuilderノードでファイルの作成、削除が可能
  • websocketでの通信の方法
    • リクエストの送信 uibuilder.send({"key":value});
    • レスポンスの受信uibuilder.onChange('msg',function(newValue){ });

個人的にハマったところ

vue.jsを使わない場合のhtml

xmlをhtmlファイルに置く際に、vue.jsのインスタンスの中に入れられなかったので生のhtmlに置いて扱いました。その際に、ハマったことを書いときます。

uibuilderのフロントエンドは自動起動しない

これはuibuilder ver2.x以降に変更されたことらしいですが、uibuilder.start()を書いとかないとフロントエンドのライブラリは使えません。
デフォルトでvue.jsを使う際はすでに書かれているので、自分で書く必要はないため全然気にしていなかったのですが、生のhtmlで書く時や、デフォルのプログラムを消される際は注意してください。

サーバ起動時や接続時のリクエスト、レスポンスの方法

uibuilderノードには端子が二つ付いていて、上の端子が通常の通信時の処理を書き、下の端子はサーバの接続時や画面のリロード時などに行う処理を書きます。ただ、その際にmsg.uibuilderCtrlオブジェクトを削除する必要があります。削除しないとそのまま制御メッセージとして受け取られてしまうため、クライアントのリロード時や接続時にデータを渡すことができないので注意してください。
キャプチャ.PNG

ライブラリインストール時のパス

uibuilderでライブラリをインストールし、htmlにrequireするときにパスを書く必要がありますが、そのパスもuibuilderで決まられたURLがあります。例えば、デフォルトで入っているvue.jsやbootstrapのインストールした際のローカルのパスだと.node-red\node_modules\直下にあります。しかし、htmlにrequireする際のパスは../uibuilder/vendor/となります。これはuibuilderノードのShow Detailed Informationに書いてあるので、ライブラリをインストールしてrequireする際はそちらを参考にしてみてください。

*ちなみに、仕事ではクラウド上でNode-REDを使っているのですが、ローカルのNode-REDだと普通に見れたのですが、なぜか作業用のほうだとこのShow Detailed Informationのページが開けませんでした。なので、確認する際はローカルのNode-REDを起動して確認するのをおススメします。

おわりに

私が個人的にNode-REDのuibuilderを使っていて、詰まったところを中心に今回まとめてみました。調べればわかることだしそもそもマイナーなことを書いているので参考になるかわかりませんが、少しでもお役に立てればというのと、普段dashboardを使ってる方に少しでもuibuilderに興味を持ってもらえればと思います。

10
2
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
10
2