2017-07-21 7 views
2

ノード・レッドのグリップを取得するには、条件付きグローバル関数を作成する必要があります。ノード赤 - 数値の多入力関数が必要

私は今起こるに必要なもの0または1

のいずれかの数値に設定された2つの別々のglobal.payloadsを持っているがglobal.payloadが値1に等しい場合、それならば、この流れに従う、です値0に等しい場合は、この値に従います。

私はfunction文の構文とちょっと混乱しています。どんな助力も感謝しています。

+0

2つの別々のグローバルペイロードで作業しているというご意見を参考にして、以下の私の新しい回答は、おそらくあなたが達成しようとしていることを反映しています。 – TomServo

答えて

1

あなたは現在の答えを受け入れていないので、私はこれを試してみると思いました。 これは、2つの別々のグローバルコンテキストからの入力を処理するために必要なものだと思います。私は証明するために、2つの別々のinjectノードとそれらをここにシミュレートしています:

enter image description here

checkconfinjectノードがmeshstatusノードのための1または同じ0を発します。それらの注入ノードのためにあなたの実際の入力を置き換えます。実際の作業は、関数の内部で行われます。

var c = context.get('c') || 0; // initialize variables 
var m = context.get('m') || 0; 

if (msg.topic == "checkconf") // update context based on topic of input 
{ 
    c = {payload: msg.payload}; 
    context.set("c", c); // save last value in local context 
} 

if (msg.topic == 'meshstatus') // same here 
{ 
    m = {payload: msg.payload}; 
    context.set('m', m); // save last value in local context 
} 

// now do the test to see if both inputs are triggered... 
if (m.payload == 1) // check last value of meshstatus first 
{ 
    if (c.payload == 1) // now check last value of checkconf 
     return {topic:'value', payload: "YES"}; 
} 
else 
    return {topic:'value', payload: "NO"}; 

if文は、2つの入力を区別できるように、入力として使用するものは何でもの「トピック」プロパティを設定してください。がんばろう!

1

機能ノードではなく、スイッチノードを使用してこれを行うことができます。

enter image description here

+0

フィードバックのおかげで、こんにちは感謝...私は実際に2 global.payloads ... 1つはglobal.payload(checkconf)と呼ばれ、もう1つはglobal.payload(meshstatus)と呼ばれる条件を評価する必要があります.payload(meshstatus)が1に設定されている場合は、global.payload(checkconf)も1と等しいかどうかを確認します。if if then thenこれを行い、そうでなければこれを行います。これを解決する:-S – blupacetek

関連する問題