Node-REDの起動から、はじめてのアプリ開発まで手順を紹介します
Node-REDはブラウザで動きます。起動させてみましょう。
1.PCのブラウザで、リモートのラズパイに接続できるか検査
自分のラズパイ番号でアクセスします。WEBページが表示されたら成功。

2. Node-RED起動コマンド
$ node-red start
9 Aug 17:39:13 - [info] サーバは http://127.0.0.1:1880/ で実行中です
3. PCのブラウザで、Node-REDにログインする
Node-RED 開発画面が表示されたら成功。

アプリ開発してみる
はじめてのNode-REDアプリは、現在の東京の天気を表示する「天気アプリ」を作ってみよう。
1. [フロー1]が、プログラムコードを書くところ。フロー名を変更する

2. お天気APIを試してみる[Open-Meteo API]
Open-Meteo APIは、無料で使えて、アカウント登録が不要な、いつでも使えるWEBサービス(API)です。
APIとは、Application Programming Interface(アプリケーション・プログラミング・インターフェース)の略で、「アプリやプログラム同士が会話するためのルール」です。
ブラウザで下記URLにアクセスする。
東京の位置は、緯度 35.68, 経度 139,76 です。今の天気を取得します。

https://api.open-meteo.com/v1/forecast?latitude=35.68&longitude=139.76¤t_weather=true
下記のようなデータを取得できたら成功。よく読むと、温度や風速などが記載されています。最後の[weathercode]が天気コードです。0, 1が快晴。2, 3が曇り。45は霧など。
{"latitude":35.7,"longitude":139.75,"generationtime_ms":0.0463724136352539,"utc_offset_seconds":0,"timezone":"GMT","timezone_abbreviation":"GMT","elevation":12,"current_weather_units":{"time":"iso8601","interval":"seconds","temperature":"°C","windspeed":"km/h","winddirection":"°","is_day":"","weathercode":"wmo code"},"current_weather":{"time":"2025-08-09T10:00","interval":900,"temperature":27.4,"windspeed":5.4,"winddirection":172,"is_day":0,"weathercode":1}}
3. 使うフローを並べる。ノード同士は線でつなぐ。
[inject][http request][json][function][text]

4.[http request]に天気APIを設定する
1から4まで入力し[完了]を押す

- メソッド: GET
- URL: (下記URL)
- 出力形式: JSONオブジェクト
- 名前: 天気API

5.[Function]にJavaScriptコードを書く
名前とJavaScriptコードを書いて[完了]する。

const weather = msg.payload.current_weather;
msg.payload = `現在の気温は ${weather.temperature}℃、風速は ${weather.windspeed}m/s です。`;
return msg;

6.[Text]にJavaScriptコードを書く
グループの新規ui_group、タブの新規ui_tab、そして名前の3つを選び、[追加]ボタンを押す。たぶん3回。


7.[デプロイ]する。フローを、ラズパイに書き込む。

8. PCのブラウザで、Node-REDのダッシュボード(UI)を表示する
自分のラズパイ番号です。

9. 動作をテストする。[タイムスタンプ]の左ボタンを押す。

10. デバッグを表示する。温度を読めないというエラー

10.5. Functionのエラーのないコード
// JSON文字列をオブジェクトに変換
const data = JSON.parse(msg.payload);
// 天気情報を取り出す
const weather = data.current_weather;
const temp = weather.temperature;
const wind = weather.windspeed;
const code = weather.weathercode;
// 天気コードを日本語に変換(任意)
const weatherNames = {
0: "快晴 ☀️",
1: "晴れ 🌤️",
2: "曇り ☁️",
3: "雨 🌧️",
45: "霧 🌫️",
61: "小雨 🌦️",
80: "にわか雨 ⛈️"
};
const name = weatherNames[code] || "不明な天気";
// 表示用の文字列を設定
msg.payload = `現在の天気は ${name}、気温は ${temp}℃、風速は ${wind}km/h です`;
return msg;
11. APIの結果を検査する。[debug]ノードを追加する

12. デプロイしたら、タイムスタンプのボタンを再実行する

13. ダッシュボードに天気が表示される(はず)
ブラウザでダッシュボードを表示します。

14. ダッシュボードにボタンを表示してみる。[ui_button]を追加


ダッシュボードを表示してみる。横長の緑色のボタンが表示されます。ボタンには「天気API更新」と表示されているはず。

15. [天気API更新]ボタンの見た目をレイアウト変更する
天気アプリのレイアウトを変更し、横幅を小さい[2]にして、ブラウザで変化したことを確認します。

16. [function]を追加し、JSONノードにつなぐ。chartを追加する。

17. 2つめのfunctionノードには下記を追加します。名前は「気温と風速を抽出」
const data = JSON.parse(msg.payload).current_weather;
const tempMsg = {
topic: "気温(℃)",
payload: data.temperature
};
const windMsg = {
topic: "風速(km/h)",
payload: data.windspeed
};
return [tempMsg, windMsg];
18. 風速を追加する。[function]の出力を[2]にする

まとめ
■できたこと
1.ダッシュボード作成とレイアウト変更
2.ノードの設定とデバッグ
3.ノードでのJavaScriptプログラミング
■作ったアプリ
1.天気, 気温, 風速を表示する
2.ボタンで更新し、温度と風速のグラフを表示する