點(diǎn)擊鏈接加入群聊【Node-RED與IoT開發(fā)交流】https://jq.qq.com/?_wv=1027&k=5owlJfm
新創(chuàng)立的群,歡迎加入!
Node-RED Tutorial Home
介紹
建立你的第一個流
基礎(chǔ)節(jié)點(diǎn)和流
核心節(jié)點(diǎn)
例子:
使用Node-RED搭建一個天氣預(yù)報(bào)面板
基于 SIMATIC IOT2040 的 Node-RED S7 通信
Node-RED:講座4 – 瀏覽核心節(jié)點(diǎn)
本講座將介紹Node-RED默認(rèn)安裝的核心節(jié)點(diǎn),然后向您展示基于云的Node RED服務(wù)(FRED)支持的擴(kuò)展節(jié)點(diǎn)。
對于每個節(jié)點(diǎn),您將看到其功能的簡要概述,并指出本講座系列中的哪個示例使用該節(jié)點(diǎn),以便您可以更詳細(xì)地查看如何使用該節(jié)點(diǎn)。 本講座主要是參考部分。 但是,您可以快速瀏覽節(jié)點(diǎn),以便在開始制作自己的流程時,了解您可以使用的基本功能。
Node-RED的默認(rèn)節(jié)點(diǎn)集
當(dāng)您在Raspberry Pi或Beagleboard等設(shè)備上安裝Node-RED時,會啟動一組默認(rèn)的節(jié)點(diǎn)。 默認(rèn)安裝中有8個主要類別的節(jié)點(diǎn):輸入,輸出,功能,社交,存儲,分析,高級和Raspberry Pi(見圖4.1和4.2)讓我們再來看看每個類別。
輸入節(jié)點(diǎn)
默認(rèn)情況下安裝了7個基本輸入節(jié)點(diǎn)。 它們涵蓋了物聯(lián)網(wǎng)應(yīng)用程序可能使用的基本通信機(jī)制。 從較低級別的互聯(lián)網(wǎng)協(xié)議(如UDP和TCP)到高級HTTP以及發(fā)布/訂閱MQTT。
節(jié)點(diǎn)名稱 | 簡述 | 樣例 |
---|---|---|
inject | 將時間戳或用戶配置的文本注入到消息中。 可以配置為手動注入,以設(shè)置的間隔或特定時間(使用Cron)進(jìn)行注入。 | Examples 2.1, 3.6, 3.7, 3.8, 5.1-5.4, 6.1-6.8 |
catch | 捕獲相同選項(xiàng)卡上的節(jié)點(diǎn)拋出的錯誤。 如果節(jié)點(diǎn)在處理消息時引發(fā)錯誤,則流程通常會停止。 該節(jié)點(diǎn)可用于捕獲返回消息的錯誤,并顯示錯誤屬性,詳細(xì)說明錯誤以及源節(jié)點(diǎn)和類型。 | Examples |
mqtt | 訂閱MQTT代理并監(jiān)聽主題,將主題上發(fā)布的任何數(shù)據(jù)作為新消息返回。 支持服務(wù)質(zhì)量水平設(shè)置和最后的數(shù)據(jù)保留. | Examples 3.1-3.5 |
http | 接收HTTP請求,允許Node-RED充當(dāng)基本的Web服務(wù)器。 HTTP身份作為輸出消息以及任何響應(yīng)傳遞。 消息可以包含標(biāo)準(zhǔn)的URL編碼數(shù)據(jù)或JSON。 | Example 1.3, 5.7 |
websocket | 為瀏覽器提供一個端點(diǎn),以建立與Node-RED的Websocket連接。 提供瀏覽器/服務(wù)器組合的雙工連接。 | Example 3.7 |
tcp | 用于接受指定端口上的傳入TCP請求或連接到遠(yuǎn)程TCP端口。 將包含TCP數(shù)據(jù)的消息生成為緩沖區(qū),字符串或base64編碼的單個或多個流。 | Examples lecture 7 |
udp | 用于接收指定端口上的傳入U(xiǎn)DP數(shù)據(jù)包(或組播數(shù)據(jù)包)。 生成包含UDP數(shù)據(jù)的消息作為緩沖,字符串或base64編碼的字符串。 | Examples lecture 7 |
serial in | 從本地設(shè)備上的串行端口讀取。 可以配置為讀取緩沖區(qū),在特定的時間段或等待換行。 | Examples lecture 7 |
輸出節(jié)點(diǎn)
輸出節(jié)點(diǎn)基本上是輸入節(jié)點(diǎn)的基本集合的鏡像,并提供了一種在同一組協(xié)議(即mqtt,http,udp等)上發(fā)送數(shù)據(jù)的方法。
節(jié)點(diǎn)名稱 | 簡述 | 樣例 |
---|---|---|
debug | 提供一種查看調(diào)試窗格中顯示的消息的簡單方法。 可以配置為僅顯示msg.payload或整個msg對象。 | Various, examples 2.1, 2.2, 3.1-3.6, 5.1-5.4, 6.1-6.5 |
mqtt | 訂閱一個MQTT代理,并將其在傳入消息中接收的任何數(shù)據(jù)(msg.payload)發(fā)布到主題。 支持服務(wù)質(zhì)量水平和最后的數(shù)據(jù)保留。 | Example 3.6 |
http | 將響應(yīng)發(fā)送回HTTP輸入節(jié)點(diǎn)收到的HTTP請求。 響應(yīng)主體由msg.payload確定,并且可以定義標(biāo)題和狀態(tài)代碼。 | Examples |
websocket | 在配置的websocket上發(fā)送msg.payload。 如果定義了msg. session,則發(fā)送給始發(fā)客戶端,否則廣播到所有連接的客戶端 | Example 3.7 |
tcp | 回復(fù)配置的TCP端口。 也可以用來發(fā)送到特定端口。 | Example 3.8 |
udp | 向配置的主機(jī)(IP地址)和端口發(fā)送UDP消息。 支持廣播 像大多數(shù)節(jié)點(diǎn)一樣,通過UI或消息屬性進(jìn)行配置。 | Examples |
serial out | 發(fā)送到定義的串行端口。 可以配置為在任何消息有效載荷之后發(fā)送可選的換行符。 | Examples lecture 7 |
功能節(jié)點(diǎn)
功能類別包含執(zhí)行特定處理功能的各種節(jié)點(diǎn)。 這些范圍從簡單的延遲和切換節(jié)點(diǎn)到可編程功能節(jié)點(diǎn),可以適應(yīng)幾乎任何編程需要。
節(jié)點(diǎn)名稱 | 簡述 | 樣例 |
---|---|---|
function | 通用可編程功能節(jié)點(diǎn)。 使用標(biāo)準(zhǔn)JavaScript語法,節(jié)點(diǎn)可以被定制以對其生成一個或多個輸出消息的輸入消息進(jìn)行復(fù)雜處理。 | Examples 2.1, 2.2, 3.8, 5.1-5.4, 5.7, 6.1-6.8 |
template | 配置了一個任意復(fù)雜的模板(使用胡塞爾格式),該節(jié)點(diǎn)接收一個包含名稱:值對的輸入消息并將其插入到模板中。 用于構(gòu)建郵件,HTML,配置文件等 | Example 1.3 |
delay | 一種通過特定方法或隨機(jī)時間延遲消息的通用節(jié)點(diǎn)。 也可以配置為限制消息流(例如每秒10 msg)。 | Examples 5.6, 6.8 |
trigger | 每當(dāng)接收到輸入消息時,創(chuàng)建兩個輸出消息,間隔可配置的時間間隔。 也可以用作監(jiān)控定時器。 | Example 1.1 |
comment | 一個簡單的視覺評論配置了標(biāo)題和主體。 | Example 2.1 |
http request | 允許您構(gòu)建并發(fā)送HTTP請求到特定的URL。 方法(PUT,GET等),標(biāo)題和有效載荷都可以通過UI或以編程方式進(jìn)行配置. | Examples 1.3, 6.1, 6.6 |
tcp request | 一個簡單的TCP請求節(jié)點(diǎn)。 它將msg.payload發(fā)送到服務(wù)器tcp端口,并期望響應(yīng)。 可以配置等待數(shù)據(jù),等待特定字符,或立即返回。 | Example 3.8 |
switch | 該節(jié)點(diǎn)根據(jù)其屬性路由消息。 屬性使用UI進(jìn)行配置,并且可以是應(yīng)用于消息屬性的各種邏輯(>,<,> =等)。 | Examples 3.2-3.5, 5.5 |
change | 更改節(jié)點(diǎn)可用于設(shè)置,更改或刪除傳入郵件的屬性。 各種可配置規(guī)則允許復(fù)雜的更改,包括msg.payload中的搜索和替換 | Examples 3.3-3.5 |
range | 一個簡單的縮放節(jié)點(diǎn),將數(shù)字輸入映射到新的輸出。 適用于輸入值的轉(zhuǎn)換或界限范圍,例如 溫度。 未定義的非數(shù)字?jǐn)?shù)據(jù)。 | Example 3.5 |
csv | 該節(jié)點(diǎn)解析msg.payload并嘗試轉(zhuǎn)換為/從CSV轉(zhuǎn)換。 如果它接收到一個字符串,它會輸出一個JavaScript對象,如果它接收到一個JavaScript對象,它將輸出一個CSV字符串。 | Examples |
html | 使用可配置的選擇器(CSS選擇器語法)從msg.payload中的html文檔中提取元素。 本質(zhì)上允許您解析HTML并返回匹配的元素的數(shù)組。 | Example 6.1 |
json | 此節(jié)點(diǎn)轉(zhuǎn)換為/從JSON對象。 如果它收到一個JavaScript對象,它會輸出JSON,如果它接收到JSON,它將輸出一個JavaScript對象。 | Examples 3.1-3.5, 5.7, 6.6 |
xml | 此節(jié)點(diǎn)轉(zhuǎn)換為/從XML格式轉(zhuǎn)換。 如果它接收到一個JavaScript對象,它會輸出一個XML字符串,如果它接收到一個XML字符串,它會輸出一個JavaScript對象。 | Examples |
rbe | 按異常報(bào)告。 只有當(dāng)其輸入與前一個輸入(字符串或數(shù)字)不同時,或者如果輸入以可配置的量(死區(qū)模式)改變,則僅產(chǎn)生數(shù)字。 | Example 3.4 |
社交節(jié)點(diǎn)
基本的社交媒體節(jié)點(diǎn)支持與電子郵件和Twitter的交互。 它們使流可以發(fā)送或接收電子郵件,或發(fā)送或接收推文。
節(jié)點(diǎn)名稱 | 簡述 | 樣例 |
---|---|---|
email in | 可以配置為從IMAP服務(wù)器重復(fù)讀取返回新的電子郵件。 將msg.topic設(shè)置為電子郵件主題,如果電子郵件為HTML,則將msg.payload設(shè)置為發(fā)送電子郵件文本正文或msg.html。 | Example |
twitter in | 返回推文作為消息。 可用于搜索公眾或用戶的流,其中包含特定用戶所配置的搜索字詞或所有推文或由經(jīng)過身份驗(yàn)證的用戶收到的直接消息的推文。 | Example 1.1 |
email out | 通過配置的IMAP服務(wù)器將傳入的消息作為電子郵件發(fā)送。 主題和收件人全部可配置。 將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為附件。 | Example 1.2 |
twitter out | 推薦配置的帳戶上的msg.payload。 可以發(fā)送直接消息,并將作為圖像發(fā)送二進(jìn)制數(shù)據(jù)。 | Example 2.2 |
儲存節(jié)點(diǎn)
由于針對的是Raspberry Pi等設(shè)備,因此存儲的默認(rèn)節(jié)點(diǎn)設(shè)置非常有限,專注于基于文件的存儲。
您應(yīng)該注意,F(xiàn)RED,因?yàn)樗且粋€云服務(wù),不支持基本的文件節(jié)點(diǎn)。 而是用Mongo到Dropbox的各種存儲節(jié)點(diǎn)替代這些。 但是,為了完整,默認(rèn)節(jié)點(diǎn)在這里被覆蓋,以便您可以使用它們,如果您自己安裝Node-RED的話(參見第7講)。
節(jié)點(diǎn)名稱 | 簡述 | 樣例 |
---|---|---|
tail | 尾部(即要添加的東西的手表)到配置的文件。 (僅適用于Linux / Mac)這將不適用于Windows文件系統(tǒng),因?yàn)樗蕾囉趖ail -F命令。 | Examples |
file in | 讀取指定的文件并發(fā)送內(nèi)容為msg.payload,文件名為msg.filename。可以在節(jié)點(diǎn)中配置文件名。 如果留空,則應(yīng)在傳入消息中設(shè)置msg.filename。 | Examples |
file | 將msg.payload寫入指定的文件,例如 創(chuàng)建日志。 可以在節(jié)點(diǎn)中配置文件名。 如果留空,則應(yīng)在傳入消息中設(shè)置msg.filename。 默認(rèn)行為是附加到文件。 這可以改變?yōu)槊看胃采w文件; 例如,如果要輸出“靜態(tài)”網(wǎng)頁或報(bào)告。 | Examples |
分析節(jié)點(diǎn)
分析節(jié)點(diǎn)對傳入的消息執(zhí)行標(biāo)準(zhǔn)分析。 在默認(rèn)節(jié)點(diǎn)集中,唯一提供的節(jié)點(diǎn)是情緒節(jié)點(diǎn),可用于根據(jù)消息中使用的單詞(例如電子郵件或推文)來嘗試確定傳入消息的情緒。
節(jié)點(diǎn)名稱 | 簡述 | 樣例 |
---|---|---|
sentiment | 情緒節(jié)點(diǎn)分析了msg.payload,并根據(jù)字分析對消息的情緒進(jìn)行了評分。 它添加了一個msg.sentiment對象,其中包含生成的AFINN-111情緒分?jǐn)?shù)為msg.sentiment.score。 分?jǐn)?shù)通常在-5到+5之間。 | Example 5.5 |
高級節(jié)點(diǎn)
一組提供各種功能的雜項(xiàng)節(jié)點(diǎn)。
節(jié)點(diǎn)名稱 | 簡述 | 樣例 |
---|---|---|
watch | 觀看目錄或文件進(jìn)行更改。 您可以輸入逗號分隔的目錄和/或文件的列表。 你需要在包含空格的地方放置引號“...”。 在Windows上,必須在所有目錄名中使用雙反斜杠\。實(shí)際更改的文件的完整文件名將放入msg.payload,而在msg.topic中返回監(jiān)視列表的字符串版本。msg.file只包含被更改的文件的短文件名。 msg.type的類型更改,通常是文件或目錄,而msg.size保存文件大小(以字節(jié)為單位)。 | Examples |
feedparse | 該節(jié)點(diǎn)監(jiān)視RSS / atom feed的新條目,并將新條目作為消息傳遞。 它可以被配置為以特定間隔查詢饋送。 | Examples |
exec | 調(diào)用一個系統(tǒng)命令,并提供3個輸出:stdout,stderr和返回碼。 默認(rèn)情況下,使用調(diào)用命令的exec()在等待完成時阻塞,然后一次返回完整的結(jié)果以及任何錯誤。 | Examples |
Raspberry Pi 節(jié)點(diǎn)
節(jié)點(diǎn)名稱 | 簡述 | 樣例 |
---|---|---|
rpi_gpio in | 樹莓Pi輸入節(jié)點(diǎn)。 根據(jù)輸入引腳的狀態(tài),產(chǎn)生一個0或1的msg.payload。 您也可以使能輸入上拉電阻或下拉電阻。msg.topic設(shè)置為pi / {引腳號} 需要RPi.GPIO python庫版本0.5.8(或更好)為了工作。注意:我們正在使用連接器P1上的實(shí)際物理引腳號,因?yàn)樗鼈兏菀锥ㄎ弧?/td> | Examples lecture 7 |
rpi_gpio out | Raspberry Pi輸出節(jié)點(diǎn)。 預(yù)期使用0或1(或true或false)的msg.payload。 將選定的物理引腳設(shè)置為高電平或低電平,具體取決于傳遞的值。引腳在部署時的初始值也可設(shè)置為0或1.當(dāng)使用PWM模式時,需要輸入值為0 - 100。需要RPi.GPIO Python庫版本0.5.8(或更好)才能工作。 | Examples 1.1, lecture 7 |
rpi_mouse | Raspberry Pi鼠標(biāo)按鈕節(jié)點(diǎn)。 當(dāng)選擇的鼠標(biāo)按鈕被按下并釋放時,生成1或0的msg.payload。 還將msg.button設(shè)置為代碼值,1 = left,2 = right,4 = middle,因此您可以計(jì)算出按下哪個按鈕或組合 | Examples lecture 7 |
總結(jié):
在本講座中,您將看到安裝時可用的默認(rèn)Node-RED節(jié)點(diǎn)的摘要,以及FRED添加的擴(kuò)展節(jié)點(diǎn)集。 正如你所看到的,有各種各樣的節(jié)點(diǎn)允許您構(gòu)建很少或沒有編程的復(fù)雜流。
您也看到并不是所有的節(jié)點(diǎn)總是可用的,例如,除了在Pi上實(shí)際運(yùn)行Node-RED之外,Raspberry Pi節(jié)點(diǎn)不起作用。 所以它總是用于檢查您是否可以運(yùn)行在您環(huán)境中的節(jié)點(diǎn)。
然而,考慮到可用的大量節(jié)點(diǎn),以及社區(qū)每天創(chuàng)建新節(jié)點(diǎn)的事實(shí),您可能會找到一個滿足您需求的節(jié)點(diǎn)。 如果沒有,您可以回到靈活的功能節(jié)點(diǎn),甚至創(chuàng)建自己的節(jié)點(diǎn),這一塊將在高級講座中討論。