SWPFルールパラメータ設定_操作説明書

← 一覧へ戻る SWPFルールパラメータ設定_操作説明書

SWPF ルールパラメータ設定 操作説明書

0. この説明書について

この説明書は、SWPF の「かんたん設定」で ルールパラメータ設定 を行うときに起動する Rule Builder / RULE ヘルパー の操作説明書です。

対象読者は、プログラミング経験がほぼないユーザーを想定しています。 そのため、画面に出てくる IFTHENELSETEMPLATEEXPRESSIONLITERAL などの用語も、できるだけ一から説明します。

この画面で行うことは、簡単に言うと次の内容です。

もし ○○ なら
  □□ を実行する
それ以外なら
  △△ を実行する

たとえば、温度によって通知内容を変える場合は次のようになります。

もし TEMP が 30 以上なら
  暑いとき用の通知を実行する
それ以外で、TEMP が 5 以下なら
  寒いとき用の通知を実行する
それ以外なら
  何もしない

1. RULE ヘルパーでできること

RULE ヘルパーは、自動化処理を どの条件で実行するか を設定する画面です。

SWPF の自動化では、あらかじめ「実行できる処理」が用意されています。 RULE ヘルパーでは、その処理を 条件に応じて実行するかどうか を決めます。

flowchart TD A[入力データを受け取る] --> B[Rule Builderで条件判定] B --> C{条件に合う?} C -- はい --> D[指定したTEMPLATEを実行] C -- いいえ --> E[別のTEMPLATEを実行 または 何もしない]

1.1 画面で設定する主な内容

画面の項目何を設定するか
もし(IF)判定条件TEMP >= 30
成立するなら(THEN)条件に合ったときの処理HOT を実行
それ以外なら(ELSE)条件に合わなかったときの処理別のIFを続ける、または何もしない
TEMPLATE実行する処理の名前DISCOMFORT_INDEX, HOT, COLD
かつ(AND)複数条件をすべて満たすTEMP >= 30 かつ HUMID >= 70
または(OR)複数条件のどれかを満たすTEMP >= 30 または CO2 >= 1000

2. 最初に理解しておく用語

条件設定の説明に入る前に、RULE ヘルパーで出てくる用語を説明します。


2.1 RULE JSON とは

RULE JSON は、RULE ヘルパーで作った条件を保存するためのデータです。

ユーザーは通常、JSON を直接書く必要はありません。 画面で条件を入力すると、SWPF が内部的に RULE JSON を作成します。

flowchart LR A[画面で条件を入力] --> B[RULEヘルパー] B --> C[RULE JSONを自動作成] C --> D[SWPFが実行時に判定]

画面では次のように入力します。

TEMP >= 30

内部的には、次のような意味の RULE JSON として保存されます。

{
  "if": {
    "op": ">=",
    "a": { "var": "TEMP" },
    "b": 30
  },
  "then": {
    "templateid": "HOT"
  },
  "else": {
    "nop": true
  }
}

この説明書では、基本的に JSON を直接編集する前提ではなく、画面上でどう入力するか を中心に説明します。


2.2 IF / THEN / ELSE とは

IFTHENELSE は、条件分岐を表す言葉です。

用語画面表示意味
IFもし(IF)判定する条件
THEN成立するなら(THEN)条件に合った場合に実行する内容
ELSEそれ以外なら(ELSE)条件に合わなかった場合に実行する内容
flowchart TD A[IF: TEMP >= 30] --> B{条件に合う?} B -- はい --> C[THEN: HOTを実行] B -- いいえ --> D[ELSE: 何もしない または別条件へ]

具体例

もし TEMP が 30 以上なら
  HOT を実行する
それ以外なら
  何もしない

このような考え方で条件を作ります。


2.3 AND / OR とは

複数の条件を組み合わせるときに使います。

AND: かつ

AND は、すべての条件を満たしたときだけ成立します。

TEMP >= 30
かつ
HUMID >= 70

この場合、温度が30以上で、さらに湿度も70以上のときだけ成立します。

flowchart TD A[TEMP >= 30 ?] --> B{はい?} B -- いいえ --> X[不成立] B -- はい --> C[HUMID >= 70 ?] C -- はい --> D[成立] C -- いいえ --> X

OR: または

OR は、どれか1つでも条件を満たせば成立します。

TEMP >= 30
または
CO2 >= 1000

この場合、温度が30以上、または CO2 が1000以上のどちらかに合えば成立します。

flowchart TD A[TEMP >= 30 ?] --> B{はい?} B -- はい --> D[成立] B -- いいえ --> C[CO2 >= 1000 ?] C -- はい --> D C -- いいえ --> X[不成立]

2.4 TEMPLATE とは

TEMPLATE は、条件に合ったときに実行する処理の名前です。

たとえば、次のような TEMPLATE があるとします。

TEMPLATE名役割の例
DISCOMFORT_INDEX不快指数を計算する
HOT暑いとき用のメッセージを作る
COLD寒いとき用のメッセージを作る
DEFAULT通常時の処理を行う

RULE ヘルパーでは、THEN または ELSE で TEMPLATE を選ぶことで、条件に応じて実行する処理を指定します。

flowchart TD A[IF: TEMP >= 30] --> B{成立?} B -- はい --> C[TEMPLATE: HOT] B -- いいえ --> D[TEMPLATE: COLD または NOP]

重要

RULE ヘルパーで選ぶ TEMPLATE は、プラグインそのものではなく、TEMPLATE_JSON に定義された処理名です。

flowchart LR A[RULEヘルパー] --> B[TEMPLATE名を選ぶ] B --> C[TEMPLATE_JSONの定義を参照] C --> D[COMMAND / EXPRESSION / LITERALを実行]

COMMANDEXPRESSIONLITERAL については、次の項目で説明します。


2.5 COMMAND / EXPRESSION / LITERAL とは

TEMPLATE には、主に3種類の定義タイプがあります。

種類画面表示何をするか
COMMANDCOMMAND(プラグイン)プラグインを実行するメール送信、ChatGPT診断
EXPRESSIONEXPRESSION(式)計算式を実行する不快指数を計算する
LITERALLITERAL(固定値)固定値を結果として使う「通常状態です」などの固定文
flowchart TD A[TEMPLATE] --> B[COMMAND: プラグインを実行] A --> C[EXPRESSION: 式で計算] A --> D[LITERAL: 固定値を返す]

COMMAND(プラグイン)

COMMAND は、プラグインを実行するタイプです。

たとえば、メール送信プラグインを使って通知メールを送る場合に使用します。

{
  "type": "COMMAND",
  "plugin": "mail_send",
  "input": {
    "message": "気温は {TEMP}℃です。"
  }
}

初心者向けに言うと、COMMAND は 実際に何かの処理を動かすボタンのようなものです。


EXPRESSION(式)

EXPRESSION は、計算式を実行するタイプです。

たとえば、温度 TEMP と湿度 HUMID から不快指数を計算する場合に使います。

{
  "type": "EXPRESSION",
  "label": "Discomfort Index",
  "expr": "0.81 * TEMP + 0.01 * HUMID * (0.99 * TEMP - 14.3) + 46.3",
  "result_key": "discomfort_index"
}

初心者向けに言うと、EXPRESSION は 電卓の式を登録しておき、必要なときに計算するものです。

flowchart LR A[TEMP] --> C[EXPRESSION] B[HUMID] --> C C --> D[discomfort_index]

LITERAL(固定値)

LITERAL は、固定された値を結果として使うタイプです。

{
  "type": "LITERAL",
  "label": "固定メッセージ",
  "value": "通常状態です。",
  "result_key": "fixed_message"
}

初心者向けに言うと、LITERAL は 毎回同じ文章や値を返すメモ のようなものです。

COMMAND / EXPRESSION / LITERAL の使い分け

やりたいこと選ぶタイプ
メールを送るCOMMAND
ChatGPTを呼び出すCOMMAND
温度と湿度から計算するEXPRESSION
固定メッセージを用意するLITERAL

2.6 NOP / END とは

THEN または ELSE では、TEMPLATE 以外の動作も選べます。

選択肢意味よく使う場面
NOP何もしない条件に合わないときは処理しない
END終了するそこで処理を終わらせたい場合

通常ユーザーは、条件に合わない場合は NOP を使うのが分かりやすいです。

もし TEMP >= 30 なら
  HOT を実行する
それ以外なら
  NOP(何もしない)

3. RULE ヘルパー画面の見方

RULE ヘルパーを開くと、次のような画面が表示されます。

3.0 実際の画面例

ここでは、実際の RULE ヘルパー画面を見ながら、どこを確認すればよいかを説明します。 RULE ヘルパーは表示言語を切り替えられるため、同じルールでも、通常の日本語表示と、子ども向けファンタジー表示のように、表現を変えて確認できます。

3.0.1 ルールパラメータ設定画面(日本語)

ルールパラメータ設定画面(日本語)

この画面は、日本語表示の RULE ヘルパーです。 画面上部には、条件を追加するための 「+ 条件を追加」 ボタン、表示言語を選ぶリスト、入力状態を示す OK(全ブロック完了) が表示されています。

画面中央では、条件を上から順番に作ります。 この例では、最初に TEMP <= 15 を判定し、条件に合えば DISCOMFORT_INDEXCOLD を実行します。 条件に合わなかった場合は、それ以外なら(ELSE)IF(継続) を選び、次の条件として TEMP >= 30 を判定しています。

もし TEMP が 15 以下なら
  DISCOMFORT_INDEX と COLD を実行する
それ以外で TEMP が 30 以上なら
  DISCOMFORT_INDEX と HOT を実行する

初心者の方は、まず次の順番で画面を見ると分かりやすくなります。

flowchart TD A[1. IF行を見る] --> B[2. 条件の左側・比較・右側を見る] B --> C[3. THEN行で実行するTEMPLATEを見る] C --> D[4. ELSE行で次の動作を見る] D --> E[5. 画面上部のOK表示を確認する] E --> F[6. 適用して終了を押す]

右下の 「適用して終了」 を押すと、ここで作成したルールが呼び出し元のルールパラメータ設定に反映されます。 変更を反映しない場合は、「保存せずに終了」 を押します。

3.0.2 ルールパラメータ設定画面(子ども向けファンタジー)

ルールパラメータ設定画面(子ども向けファンタジー)

この画面は、同じ RULE ヘルパーを、子ども向けファンタジー風の表示に切り替えた例です。 表示される言葉はやさしい表現に変わりますが、設定している内容は通常の日本語表示と同じです。

たとえば、日本語表示の もし(IF)成立するなら(THEN)それ以外なら(ELSE) は、表示言語を変えることで、より直感的な言葉に置き換えて確認できます。 そのため、プログラミングに慣れていないユーザーでも、

どんなときに?
そのとき何をする?
そうでなければ何をする?

という流れで条件を理解しやすくなります。

ただし、画面の見た目や言葉が変わっても、入力する基本構造は同じです。

通常の考え方画面で設定する内容意味
どんなときに?IF の条件TEMP <= 15 などの判定条件
そのとき何をする?THEN の動作COLD などの TEMPLATE を実行
そうでなければ?ELSE の動作次の IF に進む、または NOP にする

表示言語を変えても、最後は必ず画面上部の OK表示 を確認し、問題なければ 「適用して終了」 を押してください。

RULEヘルパーで低温条件を先に判定し、それ以外で高温条件を判定している画面

この画面では、次のようなルールを設定しています。

もし TEMP <= 15 なら
  DISCOMFORT_INDEX と COLD を実行する
それ以外なら
  さらに IF を続ける
    もし TEMP >= 30 なら
      DISCOMFORT_INDEX と HOT を実行する

つまり、温度が低い場合は COLD、温度が高い場合は HOT を実行する構成です。


3.1 画面上部

画面上部には、次の操作があります。

項目説明
+ 条件を追加新しい条件ブロックを追加します
表示言語日本語、英語などの表示を切り替えます
OK / NG 表示全体の入力が完了しているか表示します
×画面を閉じます

OK(全ブロック完了) と表示されていれば、最低限必要な項目が入力されています。


3.2 IF 行

IF 行では、条件を入力します。

もし(IF)  TEMP  >=  30
入力欄入れる内容
左側判定したい値の名前TEMP
中央比較方法>=
右側比較する値30

この例は、次の意味です。

TEMP が 30 以上なら成立

3.3 THEN 行

THEN 行では、IF 条件に合った場合に何をするかを選びます。

成立するなら(THEN...)  TEMPLATE  DISCOMFORT_INDEX

ここで TEMPLATE を選ぶと、右側で実行する TEMPLATE を選択できます。 TEMPLATE の意味は、2.4 TEMPLATE とは を参照してください。

複数の TEMPLATE を実行したい場合は、+ 追加 を押して行を増やします。

TEMPLATE  DISCOMFORT_INDEX
TEMPLATE  HOT

この場合、条件に合ったときに DISCOMFORT_INDEXHOT の両方を実行します。


3.4 ELSE 行

ELSE 行では、IF 条件に合わなかった場合に何をするかを選びます。

それ以外なら(ELSE...)  IF(継続)

IF(継続) を選ぶと、さらに下に新しい IF 条件を続けられます。

flowchart TD A[IF: TEMP <= 15] --> B{成立?} B -- はい --> C[COLDを実行] B -- いいえ --> D[次のIFへ] D --> E[IF: TEMP >= 30] E --> F{成立?} F -- はい --> G[HOTを実行] F -- いいえ --> H[NOP]

これにより、次のような分岐を作れます。

寒い場合
暑い場合
それ以外の場合

4. 条件設定の基本操作

ここからは、実際に条件を作る手順を説明します。 この章では、TEMPLATE や EXPRESSION などの用語は説明済みとして扱います。意味が分からない場合は、2.4 TEMPLATE とは2.5 COMMAND / EXPRESSION / LITERAL とは を参照してください。


4.1 例1: 温度が30以上ならHOTを実行する

作りたい条件は次のとおりです。

もし TEMP が 30 以上なら
  HOT を実行する
それ以外なら
  何もしない

入力手順

  1. IF 行の左側に TEMP と入力します。
  2. 比較方法で >= を選びます。
  3. 右側に 30 と入力します。
  4. THEN 行で TEMPLATE を選びます(TEMPLATE参照)。
  5. TEMPLATE の候補から HOT を選びます。
  6. ELSE 行は NOP を選びます。
  7. 右下の 適用して終了 を押します。
flowchart TD A[IF: TEMP >= 30] --> B{成立?} B -- はい --> C[TEMPLATE: HOT] B -- いいえ --> D[NOP: 何もしない]

4.2 例2: 低温ならCOLD、高温ならHOTを実行する

作りたい条件は次のとおりです。

もし TEMP が 15 以下なら
  DISCOMFORT_INDEX と COLD を実行する
それ以外で、TEMP が 30 以上なら
  DISCOMFORT_INDEX と HOT を実行する
それ以外なら
  何もしない

画面例は次のとおりです。

RULEヘルパーでTEMPが15以下ならCOLD、そうでなければTEMPが30以上ならHOTを実行する設定画面

入力手順

  1. 最初の IF 行に TEMP <= 15 を入力します。
  2. 最初の THEN 行で TEMPLATE を選びます(TEMPLATE参照)。
  3. TEMPLATE に DISCOMFORT_INDEX を選びます(EXPRESSION参照)。
  4. + 追加 を押して、次の TEMPLATE 行に COLD を選びます(LITERALまたはCOMMAND参照)。
  5. 最初の ELSE 行で IF(継続) を選びます。
  6. 追加された IF 行に TEMP >= 30 を入力します。
  7. 2つ目の THEN 行で DISCOMFORT_INDEXHOT を選びます。
  8. 最後の ELSE は必要に応じて NOP を選びます。
  9. OK(全ブロック完了) になっていることを確認します。
  10. 適用して終了 を押します。

この設定では、先に寒い条件を判定し、寒くない場合だけ次に暑い条件を判定します。


4.3 例3: 高温を先に判定し、それ以外で低温を判定する

次の画面では、高温条件を先に判定しています。

RULEヘルパーでTEMPが30以上ならHOT、そうでなければTEMPが5以下ならTOOCOLDを実行する設定画面

この画面の意味は次のとおりです。

もし TEMP >= 30 なら
  DISCOMFORT_INDEX と HOT を実行する
それ以外で、TEMP <= 5 なら
  TOOCOLD を実行する
flowchart TD A[IF: TEMP >= 30] --> B{成立?} B -- はい --> C[DISCOMFORT_INDEX と HOT] B -- いいえ --> D[IF: TEMP <= 5] D --> E{成立?} E -- はい --> F[TOOCOLD] E -- いいえ --> G[NOP または未設定]

注意点

条件は上から順番に判定されます。 そのため、どの条件を先に書くかで、実行される処理が変わる場合があります。

たとえば、次のような条件では、先に「危険な条件」や「優先したい条件」を上に置くと分かりやすくなります。

1. TEMP >= 35 なら危険通知
2. TEMP >= 30 なら暑い通知
3. それ以外なら通常

4.4 複数条件をANDでつなぐ

AND を使うと、複数の条件をすべて満たす場合だけ成立します。

TEMP >= 30
かつ(AND)
HUMID >= 70

この場合、温度が高く、さらに湿度も高い場合だけ成立します。

操作手順

  1. 1行目に TEMP >= 30 を入力します。
  2. かつ(AND) ボタンを押します。
  3. 追加された行に HUMID >= 70 を入力します。
  4. THEN に実行したい TEMPLATE を選びます(TEMPLATE参照)。
flowchart TD A[TEMP >= 30] --> B{成立?} B -- いいえ --> X[不成立] B -- はい --> C[HUMID >= 70] C -- はい --> D[成立] C -- いいえ --> X

4.5 複数条件をORでつなぐ

OR を使うと、複数条件のどれか1つでも満たせば成立します。

TEMP >= 30
または(OR)
CO2 >= 1000

操作手順

  1. 1行目に TEMP >= 30 を入力します。
  2. または(OR) ボタンを押します。
  3. 追加された行に CO2 >= 1000 を入力します。
  4. THEN に実行したい TEMPLATE を選びます(TEMPLATE参照)。
flowchart TD A[TEMP >= 30] --> B{成立?} B -- はい --> D[成立] B -- いいえ --> C[CO2 >= 1000] C -- はい --> D C -- いいえ --> X[不成立]

4.6 条件行を削除する

不要な条件行は、右側の 削除 ボタンで削除できます。

ただし、条件を削除すると分岐の意味が変わることがあります。 削除後は、必ず OK(全ブロック完了) になっているか確認してください。


4.7 THEN / ELSE に複数のTEMPLATEを設定する

THEN または ELSE で TEMPLATE を選んだ場合、+ 追加 ボタンで複数の処理を並べられます。

TEMPLATE  DISCOMFORT_INDEX
TEMPLATE  HOT

この場合、条件に合ったときに、上から順番に複数の TEMPLATE が実行されます。

flowchart LR A[条件成立] --> B[DISCOMFORT_INDEX] B --> C[HOT]

使いどころ

たとえば、次のような場合に使います。

1. まず EXPRESSION で不快指数を計算する
2. 次に COMMAND または LITERAL で通知文を作る

EXPRESSION の意味は 2.5 COMMAND / EXPRESSION / LITERAL とは を参照してください。


5. 比較演算子の選び方

IF 行の中央では、比較方法を選びます。

演算子意味説明
==等しいTEMP == 25TEMP が 25 のとき成立
!=等しくないSTATUS != normalSTATUS が normal 以外のとき成立
>より大きいTEMP > 30TEMP が 30 より大きいとき成立
>=以上TEMP >= 30TEMP が 30 以上のとき成立
<より小さいTEMP < 10TEMP が 10 より小さいとき成立
<=以下TEMP <= 15TEMP が 15 以下のとき成立
contains含むMESSAGE contains error文字列の中に error が含まれるとき成立
in含まれるSTATUS in warning,errorSTATUS が候補の中にあるとき成立
ALWAYS TRUE常に成立条件なしで実行必ず実行したいときに使う

数値と文字列の違い

右側に 30 のような数値を入れると、数値として扱われます。 normalerror のような文字を入れると、文字列として扱われます。

初心者の場合は、まず次の使い方から始めると分かりやすいです。

TEMP >= 30
TEMP <= 15
CO2 >= 1000
STATUS == error

6. よく使う条件パターン

6.1 しきい値を超えたら通知する

もし CO2 >= 1000 なら
  CO2_ALERT を実行する
それ以外なら
  NOP
flowchart TD A[CO2 >= 1000] --> B{成立?} B -- はい --> C[CO2_ALERT] B -- いいえ --> D[NOP]

6.2 温度の範囲で分ける

もし TEMP <= 15 なら
  COLD
それ以外で TEMP >= 30 なら
  HOT
それ以外なら
  NORMAL
flowchart TD A[TEMP <= 15] --> B{成立?} B -- はい --> C[COLD] B -- いいえ --> D[TEMP >= 30] D --> E{成立?} E -- はい --> F[HOT] E -- いいえ --> G[NORMAL]

6.3 複数条件で判定する

もし TEMP >= 30 かつ HUMID >= 70 なら
  DISCOMFORT_ALERT
それ以外なら
  NOP
flowchart TD A[TEMP >= 30] --> B[AND] C[HUMID >= 70] --> B B --> D{両方成立?} D -- はい --> E[DISCOMFORT_ALERT] D -- いいえ --> F[NOP]

7. 画面下部のボタン

画面右下には、次のボタンがあります。

ボタン意味
適用して終了入力したルールを保存して画面を閉じます
保存せずに終了入力内容を反映せずに画面を閉じます

適用して終了

設定した条件を反映したい場合に押します。

flowchart LR A[条件を入力] --> B[OKを確認] B --> C[適用して終了] C --> D[呼び出し元のRULE_JSONへ反映]

保存せずに終了

変更を取り消したい場合に押します。


8. 入力チェックとOK表示

画面上部には、入力状態が表示されます。

OK(全ブロック完了)

この表示になっていれば、RULE ヘルパーとして必要な項目が入力されています。

NG になりやすい例

状態原因
IF の左側が空何を判定するか分からない
IF の右側が空何と比較するか分からない
THEN が未設定条件成立時に何をするか分からない
ELSE が未設定条件不成立時に何をするか分からない
TEMPLATE が空実行する処理が指定されていない

空行について

IF 条件は AND/OR で複数行を追加できます。 最後の空行は無視されますが、空行が途中にある場合や、空行が多すぎる場合は NG になることがあります。


9. TEMPLATE候補が表示されない場合

THEN または ELSE で TEMPLATE を選んだとき、候補が表示されない場合があります。

主な原因は次のとおりです。

原因対処
TEMPLATE_JSON が空先に TEMPLATE_JSON を設定してください
TEMPLATEキーが未定義TEMPLATE_JSON に HOTCOLD などのキーを作成してください
EXPRESSION / LITERAL の定義が壊れているTEMPLATE定義タイプを確認してください
画面を開いたあとにTEMPLATE_JSONを変更したRULEヘルパーを開き直してください

RULE ヘルパーは、呼び出し元画面の TEMPLATE_JSON から候補を読み込みます。

flowchart LR A[TEMPLATE_JSON] --> B[TEMPLATE候補] B --> C[RULEヘルパーのTEMPLATE選択欄]

10. COMMAND / EXPRESSION / LITERAL と RULE ヘルパーの関係

RULE ヘルパーでは、THEN / ELSE で TEMPLATE を選びます。 その TEMPLATE の中身が COMMAND なのか、EXPRESSION なのか、LITERAL なのかは、TEMPLATE_JSON 側で決まります。

flowchart TD A[RULEヘルパー: THENでHOTを選択] --> B[TEMPLATE_JSONのHOTを参照] B --> C{HOTのtypeは?} C -- COMMAND --> D[プラグインを実行] C -- EXPRESSION --> E[式を計算] C -- LITERAL --> F[固定値を返す]

RULEヘルパー:
  TEMP >= 30 のとき HOT を実行

TEMPLATE_JSON:
  HOT は LITERAL(固定値)として「暑いです」を返す

この場合、RULE ヘルパーは HOT という名前を選ぶだけです。 HOT が実際に何をするかは、TEMPLATE_JSON の HOT 定義で決まります。


11. 初心者向けの推奨設定手順

はじめて設定する場合は、次の順番で操作してください。

flowchart TD A[1. TEMPLATE_JSONで必要なTEMPLATEを確認] --> B[2. RULEヘルパーを開く] B --> C[3. IF条件を1つ入力] C --> D[4. THENでTEMPLATEを選ぶ] D --> E[5. ELSEは最初はNOPにする] E --> F[6. OK表示を確認] F --> G[7. 適用して終了]

最初から複雑な AND/OR や IF(継続)を使わず、まずは次のような1条件から始めるのがおすすめです。

もし TEMP >= 30 なら HOT
それ以外なら NOP

慣れてきたら、次のように条件を追加します。

もし TEMP <= 15 なら COLD
それ以外で TEMP >= 30 なら HOT
それ以外なら NORMAL

12. よくある間違い

12.1 THEN に何も設定していない

IF 条件だけ入力しても、条件に合ったときの処理がなければ実行できません。

NG:
もし TEMP >= 30
成立するなら 空欄
OK:
もし TEMP >= 30
成立するなら TEMPLATE HOT

12.2 ELSE を空のままにしている

ELSE は、条件に合わなかった場合の動作です。

何もしない場合でも、NOP を選んでおくと分かりやすくなります。

もし TEMP >= 30 なら HOT
それ以外なら NOP

12.3 TEMPLATE とプラグインを混同している

RULE ヘルパーで選ぶのは、プラグイン名ではなく TEMPLATE名です。

RULEヘルパーで選ぶもの:
  HOT
  COLD
  DISCOMFORT_INDEX

TEMPLATE_JSONの中身:
  HOT が COMMAND / EXPRESSION / LITERAL のどれなのかを定義する

12.4 EXPRESSION や LITERAL に plugin がないことをエラーだと思ってしまう

EXPRESSIONLITERAL は、プラグインを使わない定義です。 そのため、plugin が空でも問題ありません。

typeplugin が必要か
COMMAND必要
EXPRESSION不要
LITERAL不要

12.5 IF(継続)を使いすぎて分かりにくくなる

IF(継続)を使うと、条件を何段にも分けられます。 ただし、深くしすぎると読みにくくなります。

初心者の場合は、まず2段階程度までにするのがおすすめです。

1段目: TEMP <= 15
2段目: TEMP >= 30

13. 画面例の読み方

次の画面は、寒い条件を先に判定する例です。

RULEヘルパーで低温条件から順に設定している画面

読み方は次のとおりです。

1. TEMP <= 15 を判定する
2. 成立したら DISCOMFORT_INDEX と COLD を実行する
3. 成立しなければ、次の IF に進む
4. TEMP >= 30 を判定する
5. 成立したら DISCOMFORT_INDEX と HOT を実行する

次の画面は、暑い条件を先に判定する例です。

RULEヘルパーで高温条件から順に設定している画面

読み方は次のとおりです。

1. TEMP >= 30 を判定する
2. 成立したら DISCOMFORT_INDEX と HOT を実行する
3. 成立しなければ、次の IF に進む
4. TEMP <= 5 を判定する
5. 成立したら TOOCOLD を実行する

どちらも正しい作り方ですが、条件は上から順番に判定されます。 優先したい条件を上に置くと、あとで確認しやすくなります。


14. 最後の確認チェックリスト

適用して終了 を押す前に、次を確認してください。

  • [ ] IF の左側に、判定したい値の名前が入っている
  • [ ] 比較演算子が正しい
  • [ ] IF の右側に、比較する値が入っている
  • [ ] THEN に、条件成立時の動作が設定されている
  • [ ] ELSE に、条件不成立時の動作が設定されている
  • [ ] TEMPLATE を選んだ場合、TEMPLATE名が空ではない
  • [ ] 複数TEMPLATEを実行する場合、順番が正しい
  • [ ] 画面上部が OK(全ブロック完了) になっている
  • [ ] 変更を反映する場合は 適用して終了 を押す

15. まとめ

RULE ヘルパーは、SWPF の自動化処理に対して、次のような条件を作る画面です。

もし 条件に合うなら
  指定したTEMPLATEを実行する
それ以外なら
  別の条件へ進む、別のTEMPLATEを実行する、または何もしない

最初は、次の3つだけを意識すれば問題ありません。

1. IF に条件を書く
2. THEN に実行したい TEMPLATE を選ぶ
3. ELSE は迷ったら NOP にする

慣れてきたら、AND / OR、IF(継続)、EXPRESSION、LITERAL を使って、より柔軟な条件分岐を作成できます。

 

当サイトまたはIoTカスタムモジュール、開発支援に関するお問い合わせはこちらのメールフォームからお気軽にお問い合わせください。