您可以在任何節點的任何數量的輸入電線 - 要知道,你的節點會一次只能看到一個輸入信息。沒有固有的味精聚集,因爲有多條輸入線。
相反,聚合多個輸入消息的任務由某些節點處理 - 其中一些節點內置於核心節點 - 紅色服務器,另一些由社區提供。你應該選擇哪一個取決於具體的用例。例如,應該將兩個對象添加到數組中,還是合併爲一個大對象?只有你會知道你想要什麼 - node-red不做任何假設,但給你不同的節點來處理許多常見的用例。對於任何其他用例,總是存在通用的function
節點,您可以在其中使用JavaScript來實現您需要的任何行爲。
對於您的原始問題,您正在尋找一種方法將來自不同傳感器的2個有效載荷合併到一個對象中。可以使用核心join
和change
節點,也可以使用和node-red-contrib-aggregator
節點,該節點位於flow library站點上。
以下是使用join
節點組合兩個傳感器輸入,並且然後使用一個switch
節點與表達payload.temp > 70 and payload.smoke
的一個例子,以確定是否發送MSG向下流動:
[{「ID」: 「87df68f8.51ad58」, 「類型」: 「注入」, 「Z」: 「f9a2eec9.c2e26」, 「名」: 「」, 「主題」: 「煙」, 「有效載荷」: 「真」, 「載荷類型」 : 「布爾」, 「重複」: 「」, 「crontab的」: 「」, 「一次」:假 「onceDelay」:0.1, 「×」:160, 「Y」:1180, 「線」:[[」 da4182a8.47939 「]]},{」 ID 「:」 3ad419ec.1453a6" , 「類型」: 「注入」, 「Z」: 「f9a2eec9.c2e26」, 「名」: 「」, 「主題」:「煙」, 「有效載荷」: 「假」, 「載荷類型」: 「布爾」, 「重複」: 「」, 「crontab的」: 「」, 「一次」:假 「onceDelay」:0.1, 「×」:170, 「Y」:1140, 「線」:[[ 「da4182a8.47939」]]},{ 「ID」 : 「a45b3cb0.f3312」, 「類型」: 「注入」, 「Z」: 「f9a2eec9.c2e26」, 「名」: 「」, 「主題」: 「溫度」, 「有效載荷」: 「65」,「載荷類型「:」 NUM」, 「重複」: 「」, 「crontab的」: 「」, 「一次」:假 「onceDelay」:0.1, 「×」:160, 「Y」:1220, 「線」:[[ 「da4182a8.47939」]]},{ 「ID」: 「a3b07d81.e6b17」, 「類型」: 「注射」, 「Z」:「f9a2eec9。c2e26" , 「名」: 「」, 「主題」: 「溫度」, 「有效載荷」: 「75」, 「載荷類型」: 「民」, 「重複」: 「」, 「crontab中」: 「」,「一次「:假」 onceDelay 「:0.1,」 × 「:160,」 Y 「:1260,」 線 「:[[」 da4182a8.47939 「]]},{」 ID 「:」 da4182a8.47939" ,「類型「:」join「,」z「:」f9a2eec9.c2e26「,」name「:」join payloads「,」mode「:」custom「,」build「:」object「,」property「:」payload「屬性類型 「:」 味精 「 」關鍵「: 」主題「, 」木匠「: 」\ n「, 」joinerType「: 」海峽「, 」積聚「:真, 」超時「: 」「, 」數「:」 2" , 「reduceRight」:假 「reduceExp」: 「」, 「reduceInit」: 「」, 「reduceInitType」: 「」, 「reduceFixup」: 「」, 「×」:430, 「Y」:1200,」電線 「:[[」 315c9ce3.570d64" , 「50f981b4.be654」]]},{ 「ID」: 「315c9ce3.570d64」, 「類型」: 「開關」, 「Z」: 「f9a2eec9.c2e26」,」 name「:」Trigger Alarm?「,」property「:」payload.temp> 70 and payload.smoke「,」propertyType「:」jsonata「,」rules「:[{」t「:」true「}],」 checkall 「:」 真」, 「修理」:假 「輸出」:1, 「×」:640, 「Y」:1200, 「線」:[[ 「50f981b4.be654」]]},{ 「ID」 : 「50f981b4.be654」, 「類型」: 「調試」, 「Z」: 「f9a2eec9.c2e26」, 「名」: 「」, 「主動」:真實的, 「tosidebar」:真正的 「控制檯」:假的, 「tostatus」:假的, 「完全」: 「假」, 「X」:690 ,「y」:1260,「wires」:[]}]
我想你需要保存第一個輸入的地方,當第二個輸入進來時,你需要第一個輸入來使用它如果聲明。在此設置中,您無法一次獲得兩個輸入。如果你沒有使用MQTT你可以做不同的事情,你的FireState需要在一定的時間間隔內詢問你的傳感器當前的值並在if語句中使用它們。 – Molda