91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在Node-RED中如何用ModbusTCP采集存儲(chǔ)Influxdb

IOTRouter ? 來(lái)源:成都縱橫智控 ? 作者:成都縱橫智控 ? 2024-06-28 16:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

(以下來(lái)源成都縱橫智控公眾號(hào)授權(quán)更多可見(jiàn)-https://www.iotrouter.com-智控

-需求概述

注:使用Influxdb數(shù)據(jù)庫(kù)節(jié)點(diǎn),需要插上micro sd卡才可以

本章節(jié)主要實(shí)現(xiàn)一個(gè)流程:EG8200每10秒采集一次Modbus TCP數(shù)據(jù)存入Influxdb數(shù)據(jù)庫(kù),并且每分鐘從Influxdb數(shù)據(jù)庫(kù)中取6條數(shù)據(jù)打包上報(bào)。

Modbus TCP數(shù)據(jù)采集此處不做過(guò)多贅述,可參考其他案例介紹。下文默認(rèn)已經(jīng)采集到Modbus TCP數(shù)據(jù)。

-數(shù)據(jù)上報(bào)格式


[{
  "time": "2023-12-20 14:50:13",
  "value1": 12573,
  "value2": 12568,
  "value3": 12561,
  "value4": 12557,
  "value5": 12552,
  "value6": 12545,
  "value7": 12540,
  "value8": 12535
}, {
  "time": "2023-12-20 14:50:13",
  "value1": 12573,
  "value2": 12568,
  "value3": 12561,
  "value4": 12557,
  "value5": 12552,
  "value6": 12545,
  "value7": 12540,
  "value8": 12535
}, {
  "time": "2023-12-20 14:50:13",
  "value1": 12574,
  "value2": 12569,
  "value3": 12562,
  "value4": 12558,
  "value5": 12553,
  "value6": 12546,
  "value7": 12541,
  "value8": 12536
}, {
  "time": "2023-12-20 14:50:14",
  "value1": 12574,
  "value2": 12569,
  "value3": 12562,
  "value4": 12558,
  "value5": 12553,
  "value6": 12546,
  "value7": 12541,
  "value8": 12536
}, {
  "time": "2023-12-20 14:50:14",
  "value1": 12575,
  "value2": 12570,
  "value3": 12563,
  "value4": 12559,
  "value5": 12554,
  "value6": 12547,
  "value7": 12542,
  "value8": 12537
}, {
  "time": "2023-12-20 14:50:14",
  "value1": 12575,
  "value2": 12570,
  "value3": 12563,
  "value4": 12559,
  "value5": 12554,
  "value6": 12547,
  "value7": 12542,
  "value8": 12537
}]

-需求分析

第一步:配置并連接數(shù)據(jù)庫(kù)

第二步:創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)

第三步:指定使用新創(chuàng)建的數(shù)據(jù)庫(kù)

第四步:讀取Modbus TCP數(shù)據(jù)并存入指定表中

第五步:從數(shù)據(jù)庫(kù)中讀取6個(gè)數(shù)據(jù)

第六步:將讀取出來(lái)的數(shù)據(jù)打包

第七步:將打包的數(shù)據(jù)發(fā)送到MQTT

-需求實(shí)現(xiàn)

第一步:配置并連接數(shù)據(jù)庫(kù)

首次連接EG8200的Influxdb數(shù)據(jù)庫(kù)按照默認(rèn)的配置即可無(wú)需修改

wKgZomZ-cZiADoSDAAE5lU7egz0085.png

第二步:創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)

創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)需要使用到sql語(yǔ)句 CREATE DATABASE myDatabase ,這條語(yǔ)句的意思是創(chuàng)建一個(gè)名字叫做myDatabase的數(shù)據(jù)庫(kù)。按照下面視頻的方式創(chuàng)建,日志窗口打印[empty],說(shuō)明數(shù)據(jù)庫(kù)創(chuàng)建成功

wKgaomZ-cbaAdOVQAAEI_SMs1_o583.png

第三步:指定使用新創(chuàng)建的數(shù)據(jù)庫(kù)

在第一步創(chuàng)建了一個(gè)名字叫做myDatabase的數(shù)據(jù)庫(kù),現(xiàn)在需要使用這個(gè)數(shù)據(jù)庫(kù),將Influxdb的一個(gè)配置名Database改成myDatabase

wKgZomZ-ce-AUa25AAEOLCE9lPY623.png

第四步;DO能控制的設(shè)備

Modbus TCP數(shù)據(jù)采集此處不做過(guò)多贅述,這里已經(jīng)配置好Modbus TCP詳細(xì)使用請(qǐng)參考

從節(jié)點(diǎn)庫(kù)里面拿出一個(gè)寫時(shí)序數(shù)據(jù)庫(kù)節(jié)點(diǎn),選擇前面步驟已經(jīng)添加的配置信息,并將表名填寫在Measurement,

這里使用myTable作為表名

wKgZomZ-chyAXf-uAAFMg4pamUA342.png

第五步:從數(shù)據(jù)庫(kù)中讀取6個(gè)數(shù)據(jù)

通過(guò)函數(shù)節(jié)點(diǎn)構(gòu)造sql讀取指令,通過(guò)時(shí)間查詢最近6條數(shù)據(jù)

wKgZomZ-cieAFKQ7AAFRrGKBIRY017.png

上面視頻中使用到的函數(shù)代碼


if (global.get("startTime") == undefined || global.get("startTime") == null) global.set("startTime", new Date().getTime())
var startTime = global.get("startTime")
var temp = new Date(startTime).toISOString()
var table = "myTable"
msg.query = "SELECT * FROM" + " "" + table + "" " + " WHERE time > '" + temp + "' LIMIT 6"
return msg;

第六步:將讀取出來(lái)的數(shù)據(jù)打包

使用函數(shù)節(jié)點(diǎn)將數(shù)據(jù)封裝成對(duì)應(yīng)的json字符串

wKgZomZ-ckqAIAH5AAGKUggqfVg185.png

上面視頻中使用到的函數(shù)代碼


function dateFormat(fmt, timestamp) {
    let ret;
    const opt = {
        "Y+": timestamp.getFullYear().toString(), // 年
        "m+": (timestamp.getMonth() + 1).toString(),  // 月
        "d+": timestamp.getDate().toString(), // 日
        "H+": timestamp.getHours().toString(), // 時(shí)
        "M+": timestamp.getMinutes().toString(), // 分
        "S+": timestamp.getSeconds().toString() // 秒
        // 有其他格式化字符需求可以繼續(xù)添加,必須轉(zhuǎn)化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
    };
    return fmt;
}
// const fmt = dateFormat("YYYY-mm-dd HH:MM:SS", new Date())
var dataList = msg.payload
if (dataList.length == 0) {
    node.error("數(shù)據(jù)庫(kù)無(wú)數(shù)據(jù)請(qǐng)檢查")
    return
}
dataList.forEach(item => item.time = dateFormat("YYYY-mm-dd HH:MM:SS", new Date(item.time)))
global.set("startTime", new Date(dataList[dataList.length - 1].time).getTime() + 1000)
msg.payload = JSON.stringify(dataList)
return msg

第七步:將打包的數(shù)據(jù)發(fā)送到MQTT

新增MQTT發(fā)布節(jié)點(diǎn)

客戶端ID:網(wǎng)關(guān)SN

用戶名:網(wǎng)關(guān)SN

密碼:EG87654321

發(fā)布主題:${sn}/send

wKgZomZ-co2AC7gLAAGYf4IaLNw616.png

-總結(jié)

本章節(jié)介紹了一個(gè)相對(duì)復(fù)雜的流程,旨在表述網(wǎng)關(guān)所具備的能力,因此并未對(duì)程序的安全性、穩(wěn)定性、靈活性等方面做優(yōu)化。通過(guò)理解本流程,相信你已經(jīng)對(duì)網(wǎng)關(guān)的可視化編程有了一定的熟悉。接下來(lái),深入學(xué)習(xí)每個(gè)節(jié)點(diǎn)的功能用法吧,掌握它們將會(huì)為你制作更復(fù)雜的流程提供更多的選擇和可能!

-注意

MQTT配置節(jié)點(diǎn)導(dǎo)出時(shí),不會(huì)攜帶用戶名和密碼。因此導(dǎo)入時(shí)需要重新錄入用戶名和密碼

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4798

    瀏覽量

    90081
  • node
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    6386
  • ModbusTCP
    +關(guān)注

    關(guān)注

    0

    文章

    255

    瀏覽量

    5507
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Node-RED實(shí)現(xiàn)電表數(shù)據(jù)采集并上云

    本案例將通過(guò)Docker容器安裝DLT-645協(xié)議插件采集實(shí)現(xiàn)電表數(shù)據(jù)上云,前面已經(jīng)講過(guò)ModbusRTU協(xié)議通過(guò)Node-RED上云,如果采用支持ModbusRTU電表可以參考之前的“Docker
    的頭像 發(fā)表于 06-07 08:21 ?4407次閱讀
    <b class='flag-5'>Node-RED</b>實(shí)現(xiàn)電表數(shù)據(jù)<b class='flag-5'>采集</b>并上云

    Node-Red是什么?如何去學(xué)習(xí)Node-Red?

    Node-Red是什么?如何去學(xué)習(xí)Node-Red?有哪些方法可以去學(xué)習(xí)Node-Red?
    發(fā)表于 07-02 06:11

    新手求助如何去學(xué)習(xí)Node-Red

    如何去學(xué)習(xí)Node-Red?怎樣去安裝dashboard這個(gè)UI控件庫(kù)?
    發(fā)表于 09-01 06:53

    第2部分:使用Node-RED的程序

    Understand how to use the Node-RED* interface to add sensors and send data to the AWS* cloud.
    的頭像 發(fā)表于 10-26 07:17 ?7929次閱讀

    運(yùn)用 Node-RED 開(kāi)發(fā) LoRa 應(yīng)用

    之前的課程LoRa G-IoT模塊基礎(chǔ)應(yīng)用,我們已經(jīng)知道如何將從LoRa得到的數(shù)值上傳服務(wù)器,本文我們將學(xué)習(xí)撰寫Node-RED,將數(shù)據(jù)傳送到自己設(shè)計(jì)的網(wǎng)頁(yè)監(jiān)測(cè)接口。
    的頭像 發(fā)表于 12-25 17:54 ?1532次閱讀

    Raspberry Pi利用Node-RED控制LED

    今天的教程,我們將研究如何使用 Node-RED 樹(shù)莓派上部署簡(jiǎn)單的項(xiàng)目。
    的頭像 發(fā)表于 09-01 16:00 ?7827次閱讀
    <b class='flag-5'>在</b>Raspberry Pi<b class='flag-5'>中</b>利用<b class='flag-5'>Node-RED</b>控制LED

    Node-REDARM嵌入式工控機(jī)上的應(yīng)用

    BL302 ARM嵌入式工控機(jī)Node-RED使用教程
    的頭像 發(fā)表于 03-02 18:45 ?5959次閱讀
    <b class='flag-5'>Node-RED</b><b class='flag-5'>在</b>ARM嵌入式工控機(jī)上的應(yīng)用

    Node-red啟動(dòng)電腦攝像頭案例

    通過(guò)Node-red實(shí)現(xiàn)打開(kāi)電腦自帶的攝像頭或者USB攝像頭
    的頭像 發(fā)表于 06-01 06:50 ?7389次閱讀
    <b class='flag-5'>Node-red</b>啟動(dòng)電腦攝像頭案例

    物聯(lián)網(wǎng)與ESP32、Node-REDInfluxDB與WebSocket

    電子發(fā)燒友網(wǎng)站提供《物聯(lián)網(wǎng)與ESP32、Node-REDInfluxDB與WebSocket.zip》資料免費(fèi)下載
    發(fā)表于 07-13 09:51 ?1次下載
    物聯(lián)網(wǎng)與ESP32、<b class='flag-5'>Node-RED</b>和<b class='flag-5'>InfluxDB</b>與WebSocket

    Node-RED安裝本地教程

    Node-RED是一個(gè)基于流的開(kāi)發(fā)工具,廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)、家庭自動(dòng)化和其他數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序。它通過(guò)圖形化的編程界面,使得非專業(yè)程序員也能輕松上手。本文將介紹如何在本地環(huán)境安裝Node-RED,幫助你快速開(kāi)始項(xiàng)目開(kāi)發(fā)
    的頭像 發(fā)表于 06-24 12:10 ?5617次閱讀
    <b class='flag-5'>Node-RED</b>安裝本地教程

    Node-RED如何制作漂亮的界面

    Node-RED深度融合(如成都的縱橫智控和蘇州穩(wěn)聯(lián)科技將Node-RED與物聯(lián)網(wǎng)網(wǎng)關(guān)深度融合,打造可視化、硬件加持的物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái),使用者無(wú)需編碼即可快速實(shí)現(xiàn)各類應(yīng)用,開(kāi)拓物聯(lián)網(wǎng)無(wú)限可能)。未來(lái)或許將會(huì)有越來(lái)越多的企業(yè)步入此行業(yè)
    的頭像 發(fā)表于 06-26 16:50 ?1w次閱讀
    <b class='flag-5'>Node-RED</b>如何制作漂亮的界面

    Node-RED初學(xué)者教程-三分鐘學(xué)習(xí)

    通過(guò)這短短三分鐘的教程,你已經(jīng)掌握了Node-RED的基本操作。你可以利用Node-RED的強(qiáng)大功能來(lái)創(chuàng)建更復(fù)雜的數(shù)據(jù)流和自動(dòng)化任務(wù),無(wú)論是物聯(lián)網(wǎng)應(yīng)用、API集成還是數(shù)據(jù)處理。Node-RED簡(jiǎn)化了編程過(guò)程,讓開(kāi)發(fā)更直觀、更高效
    的頭像 發(fā)表于 06-27 17:09 ?7152次閱讀
    <b class='flag-5'>Node-RED</b>初學(xué)者教程-三分鐘學(xué)習(xí)

    使用Node-RED實(shí)現(xiàn)ModBus TCP到RTU的轉(zhuǎn)換

    ,需要將ModBusTCP數(shù)據(jù)轉(zhuǎn)換為ModBusRTU格式或者是將ModBusRTU格式轉(zhuǎn)換為ModBusTCP數(shù)據(jù)。本文將詳細(xì)介紹如何使用Node-RED來(lái)實(shí)現(xiàn)M
    的頭像 發(fā)表于 08-02 08:21 ?2347次閱讀
    使用<b class='flag-5'>Node-RED</b>實(shí)現(xiàn)ModBus TCP到RTU的轉(zhuǎn)換

    【干貨】什么是Node-RED?一文帶你了解!

    一什么是Node-RED?首先我們來(lái)認(rèn)識(shí)一下什么是Node-RED。Node-RED是一個(gè)基于Node.js的開(kāi)源可視化編程工具,于2013年由IBM公司推出。它可以通過(guò)瀏覽器的圖形化
    的頭像 發(fā)表于 03-13 19:32 ?1975次閱讀
    【干貨】什么是<b class='flag-5'>Node-RED</b>?一文帶你了解!

    【教程】Node-REDChirpstack節(jié)點(diǎn)使用指南

    物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā),LoRaWAN技術(shù)因其低功耗、遠(yuǎn)距離傳輸?shù)忍攸c(diǎn)而備受關(guān)注。Chirpstack作為最流行的LoRaWAN服務(wù)器之一,與Node-RED的集成為我們提供了強(qiáng)大的物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)能力
    的頭像 發(fā)表于 03-27 19:33 ?1285次閱讀
    【教程】<b class='flag-5'>Node-RED</b><b class='flag-5'>中</b>Chirpstack節(jié)點(diǎn)使用指南