Node-red 配置ddsu666 modbus通讯

参考:https://bbs.iobroker.cn/t/topic/1657

硬件需求:

1.ddsu666 智能电表已经配置为modbus通讯模式

2.485转TTL模块+USB串口

软件需求:

nodered


Docker安装nodered

修改/dev/ttyUSB0权限 sudo chmod 777 /dev/ttyUSB0

sudo apt install build-essential git curl

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

docker run -it -p 1880:1880 --device=/dev/ttyUSB0 --name mynodered nodered/node-red

nodered 安装 node-red-contrib-modbus节点

http://127.0.0.1:1880 访问nodered 节点管理->安装 node-red-contrib-modbus节点

nodered配置如下

[

    {

        "id": "6238296b06f69a38",

        "type": "tab",

        "label": "Flow 1",

        "disabled": false,

        "info": ""

    },

    {

        "id": "27d49c8d9d77de90",

        "type": "debug",

        "z": "6238296b06f69a38",

        "name": "",

        "active": true,

        "tosidebar": true,

        "console": true,

        "tostatus": true,

        "complete": "true",

        "targetType": "full",

        "statusVal": "payload",

        "statusType": "auto",

        "x": 1310,

        "y": 260,

        "wires": []

    },

    {

        "id": "8bbf1d74c4d8a84d",

        "type": "function",

        "z": "6238296b06f69a38",

        "name": "瞬时电压",

        "func": "var b = parseInt(msg.payload[0].toString(16)+msg.payload[1].toString(16),16);\nvar s = b&0x80000000/0x80000000;\nvar e = (b&0x7f800000)/0x800000-127;\nvar c = (b&0x7fffff)/0x800000;\nvar r = Math.pow(-1,s)*(1+c)*Math.pow(2,e);\nif(r<0) return null;\nelse msg.payload = r;\nmsg.topic= '瞬时电压';\nreturn msg;",

        "outputs": 1,

        "timeout": "",

        "noerr": 0,

        "initialize": "",

        "finalize": "",

        "libs": [],

        "x": 1000,

        "y": 160,

        "wires": [

            [

                "27d49c8d9d77de90"

            ]

        ],

        "info": "1234"

    },

    {

        "id": "87aa8f7c61c5d66c",

        "type": "function",

        "z": "6238296b06f69a38",

        "name": "瞬时电流",

        "func": "var b = parseInt(msg.payload[2].toString(16)+msg.payload[3].toString(16),16);\nvar s = b&0x80000000/0x80000000;\nvar e = (b&0x7f800000)/0x800000-127;\nvar c = (b&0x7fffff)/0x800000;\nvar r = Math.pow(-1,s)*(1+c)*Math.pow(2,e);\nif(r<0) return null;\nelse msg.payload =r;\nmsg.topic= '瞬时电流';\nreturn msg;",

        "outputs": 1,

        "timeout": "",

        "noerr": 0,

        "initialize": "",

        "finalize": "",

        "libs": [],

        "x": 1000,

        "y": 220,

        "wires": [

            [

                "27d49c8d9d77de90"

            ]

        ]

    },

    {

        "id": "757946ed0949a518",

        "type": "function",

        "z": "6238296b06f69a38",

        "name": "有功功率",

        "func": "var b = parseInt(msg.payload[4].toString(16)+msg.payload[5].toString(16),16);\nvar s = b&0x80000000/0x80000000;\nvar e = (b&0x7f800000)/0x800000-127;\nvar c = (b&0x7fffff)/0x800000;\nvar r = Math.pow(-1,s)*(1+c)*Math.pow(2,e)*1000;\nif(r<0) return null;\nelse msg.payload =r;\nmsg.topic= '有功功率';\nreturn msg;",

        "outputs": 1,

        "timeout": "",

        "noerr": 0,

        "initialize": "",

        "finalize": "",

        "libs": [],

        "x": 1000,

        "y": 280,

        "wires": [

            [

                "27d49c8d9d77de90"

            ]

        ]

    },

    {

        "id": "cabbb5f59a04fc56",

        "type": "function",

        "z": "6238296b06f69a38",

        "name": "功率因数",

        "func": "var b = parseInt(msg.payload[10].toString(16)+msg.payload[11].toString(16),16);\nvar s = b&0x80000000/0x80000000;\nvar e = (b&0x7f800000)/0x800000-127;\nvar c = (b&0x7fffff)/0x800000;\nvar r = Math.pow(-1,s)*(1+c)*Math.pow(2,e);\nif(r<0) return null;\nelse msg.payload =r;\nmsg.topic= '功率因数';\nreturn msg;",

        "outputs": 1,

        "timeout": "",

        "noerr": 0,

        "initialize": "",

        "finalize": "",

        "libs": [],

        "x": 1000,

        "y": 340,

        "wires": [

            [

                "27d49c8d9d77de90"

            ]

        ]

    },

    {

        "id": "fc5583a057e1b6d7",

        "type": "modbus-getter",

        "z": "6238296b06f69a38",

        "name": "",

        "showStatusActivities": true,

        "showErrors": true,

        "showWarnings": true,

        "logIOActivities": false,

        "unitid": "",

        "dataType": "HoldingRegister",

        "adr": "8192",

        "quantity": "12",

        "server": "ebec70e5.2bab8",

        "useIOFile": false,

        "ioFile": "",

        "useIOForPayload": false,

        "emptyMsgOnFail": true,

        "keepMsgProperties": true,

        "delayOnStart": false,

        "startDelayTime": "",

        "x": 340,

        "y": 320,

        "wires": [

            [

                "8bbf1d74c4d8a84d",

                "87aa8f7c61c5d66c",

                "757946ed0949a518",

                "cabbb5f59a04fc56"

            ],

            [

                "15c00fdbe99d22aa",

                "f57e3cab512d1186",

                "a61e306e76ff120f"

            ]

        ]

    },

    {

        "id": "0519c4d54494fec7",

        "type": "inject",

        "z": "6238296b06f69a38",

        "name": "start",

        "props": [

            {

                "p": "payload"

            },

            {

                "p": "topic",

                "vt": "str"

            }

        ],

        "repeat": "",

        "crontab": "",

        "once": false,

        "onceDelay": 0.1,

        "topic": "",

        "payload": "",

        "payloadType": "date",

        "x": 110,

        "y": 320,

        "wires": [

            [

                "fc5583a057e1b6d7"

            ]

        ]

    },

    {

        "id": "89dc947368207782",

        "type": "modbus-getter",

        "z": "6238296b06f69a38",

        "name": "",

        "showStatusActivities": false,

        "showErrors": false,

        "showWarnings": true,

        "logIOActivities": false,

        "unitid": "",

        "dataType": "HoldingRegister",

        "adr": "8206",

        "quantity": "2",

        "server": "ebec70e5.2bab8",

        "useIOFile": false,

        "ioFile": "",

        "useIOForPayload": false,

        "emptyMsgOnFail": false,

        "keepMsgProperties": false,

        "delayOnStart": false,

        "startDelayTime": "",

        "x": 800,

        "y": 440,

        "wires": [

            [

                "31bb3f7ef4a62609"

            ],

            []

        ]

    },

    {

        "id": "31bb3f7ef4a62609",

        "type": "function",

        "z": "6238296b06f69a38",

        "name": "电网频率",

        "func": "var b = parseInt(msg.payload[0].toString(16)+msg.payload[1].toString(16),16);\nvar s = b&0x80000000/0x80000000;\nvar e = (b&0x7f800000)/0x800000-127;\nvar c = (b&0x7fffff)/0x800000;\nvar r = Math.pow(-1,s)*(1+c)*Math.pow(2,e);\nif(r<0) return null;\nelse msg.payload =r;\nmsg.topic= '电网频率';\nreturn msg;",

        "outputs": 1,

        "timeout": "",

        "noerr": 0,

        "initialize": "",

        "finalize": "",

        "libs": [],

        "x": 1000,

        "y": 400,

        "wires": [

            [

                "27d49c8d9d77de90"

            ]

        ]

    },

    {

        "id": "18a1a2faa7d194a4",

        "type": "modbus-getter",

        "z": "6238296b06f69a38",

        "name": "",

        "showStatusActivities": false,

        "showErrors": false,

        "showWarnings": true,

        "logIOActivities": false,

        "unitid": "",

        "dataType": "HoldingRegister",

        "adr": "16384",

        "quantity": "2",

        "server": "ebec70e5.2bab8",

        "useIOFile": false,

        "ioFile": "",

        "useIOForPayload": false,

        "emptyMsgOnFail": false,

        "keepMsgProperties": false,

        "delayOnStart": false,

        "startDelayTime": "",

        "x": 800,

        "y": 540,

        "wires": [

            [

                "af288ae2bf508e07"

            ],

            []

        ]

    },

    {

        "id": "af288ae2bf508e07",

        "type": "function",

        "z": "6238296b06f69a38",

        "name": "总用电量",

        "func": "var b = parseInt(msg.payload[0].toString(16)+msg.payload[1].toString(16),16);\nvar s = b&0x80000000/0x80000000;\nvar e = (b&0x7f800000)/0x800000-127;\nvar c = (b&0x7fffff)/0x800000;\nvar r = Math.pow(-1,s)*(1+c)*Math.pow(2,e);\nif(r<0) return null;\nelse msg.payload =r;\nmsg.topic= '总用电量';\nreturn msg;",

        "outputs": 1,

        "timeout": "",

        "noerr": 0,

        "initialize": "",

        "finalize": "",

        "libs": [],

        "x": 1000,

        "y": 520,

        "wires": [

            [

                "27d49c8d9d77de90"

            ]

        ]

    },

    {

        "id": "a61e306e76ff120f",

        "type": "delay",

        "z": "6238296b06f69a38",

        "name": "",

        "pauseType": "delay",

        "timeout": "20",

        "timeoutUnits": "seconds",

        "rate": "1",

        "nbRateUnits": "1",

        "rateUnits": "second",

        "randomFirst": "1",

        "randomLast": "5",

        "randomUnits": "seconds",

        "drop": false,

        "allowrate": false,

        "outputs": 1,

        "x": 320,

        "y": 800,

        "wires": [

            [

                "fc5583a057e1b6d7"

            ]

        ]

    },

    {

        "id": "edc5fac1588b374b",

        "type": "comment",

        "z": "6238296b06f69a38",

        "name": "DDSU666 modbus电表数据读取 地址01",

        "info": "",

        "x": 330,

        "y": 100,

        "wires": []

    },

    {

        "id": "15c00fdbe99d22aa",

        "type": "delay",

        "z": "6238296b06f69a38",

        "name": "",

        "pauseType": "delay",

        "timeout": "1",

        "timeoutUnits": "seconds",

        "rate": "1",

        "nbRateUnits": "1",

        "rateUnits": "second",

        "randomFirst": "1",

        "randomLast": "5",

        "randomUnits": "seconds",

        "drop": false,

        "allowrate": false,

        "outputs": 1,

        "x": 580,

        "y": 440,

        "wires": [

            [

                "89dc947368207782"

            ]

        ]

    },

    {

        "id": "f57e3cab512d1186",

        "type": "delay",

        "z": "6238296b06f69a38",

        "name": "",

        "pauseType": "delay",

        "timeout": "4",

        "timeoutUnits": "seconds",

        "rate": "1",

        "nbRateUnits": "1",

        "rateUnits": "second",

        "randomFirst": "1",

        "randomLast": "5",

        "randomUnits": "seconds",

        "drop": false,

        "allowrate": false,

        "outputs": 1,

        "x": 580,

        "y": 540,

        "wires": [

            [

                "18a1a2faa7d194a4"

            ]

        ]

    },

    {

        "id": "ebec70e5.2bab8",

        "type": "modbus-client",

        "name": "",

        "clienttype": "serial",

        "bufferCommands": true,

        "stateLogEnabled": true,

        "queueLogEnabled": true,

        "failureLogEnabled": true,

        "tcpHost": "127.0.0.1",

        "tcpPort": "502",

        "tcpType": "DEFAULT",

        "serialPort": "/dev/ttyUSB0",

        "serialType": "RTU",

        "serialBaudrate": "9600",

        "serialDatabits": "8",

        "serialStopbits": "1",

        "serialParity": "none",

        "serialConnectionDelay": "100",

        "serialAsciiResponseStartDelimiter": "",

        "unit_id": "1",

        "commandDelay": "1",

        "clientTimeout": "1000",

        "reconnectOnTimeout": true,

        "reconnectTimeout": "2000",

        "parallelUnitIdsAllowed": true

    }

]



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容