如何通过http get和post传输json文件来控制联网的电源插座

步骤1:rest json http(s)协议
这部分是技术性的,但是请耐心等待。如果我没有解释这部分,那么您将难以理解我们将在节点red中发送的json文件中的值。
适用于每个输出(电源插座)的操作:
在所有m2m协议中,netio电源插座使用的动作都可以应用于单个输出。例如,可以将“切换”或“短路”动作写入任何输出。
但是,action变量只能用于写入值,而不能用于读取当前插座状态。
这些是可以应用于每个输出的操作:
0 =关闭输出(关闭)
1 =打开输出(打开)
2 =短时间关闭输出(短关闭)
3 =短时间关闭输出(短打开)
4 =输出从一关闭状态到另一个(切换)
5 =输出状态不变(不变)
6 =忽略
示例– json文件切换输出编号。 1:
{
“输出”:[{
“ id”:1,
“操作”:4
}]
}
id-此数字表示我们将使用的输出
操作-此部分是操作输出将生成(例如1(打开输出))
步骤2:流
现在是主要部分。这就是节点红色环境的样子。
我们已经导入了url api流(您看到的项目。稍后我将向您展示如何导入流和该项目)该项目包括两部分:
netio an30(json rest api)流程
仪表板(您可以通过其操作程序的图形界面)
步骤3:仪表板
这是此可指导的node-red中的仪表板的外观。
此项目的仪表板分为四个部分:
设备状态-显示设备信息,例如型号, mac地址或固件版本。
(post)控制输出1-包含5个控制输出1的按钮。每个按钮执行不同的操作
(get)o1-o4输出状态-此部分显示每个按钮的当前状态从您的设备输出。
设备管理-在这一部分中,您可以找到各种图表,它们显示了netio 4aall设备中的当前计量值
第4步:导入流(项目,脚本等)
在菜单(右上角)中,选择“导入”,然后选择“剪贴板”。
然后,将下面的文本复制到指定的字段,然后单击“导入”。
安装缺少的节点
节点已加载到选定的流程。可能会显示一条错误消息,其中包含正在导入但尚未安装在node-red中的节点列表。在这种情况下,需要安装缺少的节点。
如果缺少节点,请在菜单中选择“管理调色板”,单击“安装并查找并安装您缺少的节点。”
导入文本:
[ {“ id”:“ 56b9510c.98c6f”,“ type”:“ tab”,“ label”:“ netio an30(rest json)”,“ disabled”:false,“ info”:“”},{“ id” :“ 6a66b637.da1558”,“类型”:“ http请求”,“ z”:“ 56b9510c.98c6f”,“名称”:“ http请求(post)”,“方法”:“ post”,“ ret”:名为 “txt”, “url”: “http://netio-4all.netio-products.com:8080/netio.json”, “tls”: “”, “×”:430, “y”:100,”电线 “:[[” 9cc48ba4.233128 “]]},{” id “:” 9cc48ba4.233128“ , “类型”: “调试”, “z”: “56b9510c.98c6f”, “姓名”: “”, “活性”:真 “tosidebar”:真 “控制台”:假 “tostatus”:假, “完成”: “有效载荷”, “×”:630, “y”:100, “线”:[] },{“ id”:“ aa32bf8.f83704”,“ type”:“ http request”,“ z”:“ 56b9510c.98c6f”,“ name”:“ http request(get)”,“ method”:“ get “ ”沤“: ”txt“, ”url“: ”http://netio-4all.netio-products.com:8080/netio.json“, ”tls“: ”“, ”x“:520,” y “:240,” 线 “:[[” 23bf436c.8d90bc “]]},{” id “:” 23bf436c.8d90bc “ ”类型“: ”json“, ”z“: ”56b9510c.98c6f“,” name“:” json parse“,” pr operty “:” 有效载荷 “ ”动作“: ”“, ”漂亮“:假, ”ד:710, ”y“:240, ”线“:[[ ”3481543c.05cefc“]]},{” id “:” 3481543c.05cefc“,”类型“:”功能“,” z“:” 56b9510c.98c6f“,”名称“:”功能“,” func“:” msg.model = msg.payload.agent.model ; \ nmsg.version = msg.payload.agent.version; \ nmsg.time = msg.payload.agent.time; \ nmsg.jsonversion = msg.payload.agent.jsonver; \ nmsg.serialnumber = msg.payload.agent .serialnumber; \ n \ ntry {msg.voltage = msg.payload.globalmeasure.voltage} \ n catch(err1){msg.voltage = 0;} \ ntry {msg.frequency = msg.payload.globalmeasure.frequency} \ n catch(err2){msg.frequency = 0;} \ ntry {msg.totalcurrent = msg.payload.globalmeasure.totalcurrent/1000} \ n catch(err3){msg.totalcurrent = 0;} \ ntry {msg.overallpowerfactor = msg.payload.globalmeasure.overallpowerfactor} \ n catch(err4){msg.overallpowerfactor = 0;} \ ntry {msg.totalload = msg.payload.globalmeasure.totalload} \ n catch(err5){msg.totalload = 0 ;} \ n \ nmsg.o1_state = msg.payload.outputs [0] .state; \ nmsg.o2_state = msg.payload.outputs [1] .state; \ nms g.o3_state = msg.payload.outputs [2] .state; \ nmsg.o4_state = msg.payload.outputs [3] .state; \ n \ nif(msg.o1_state)msg.o1_color = \“#09ef28 \” ; \ n其他msg.o1_color = \“橙色\”; \ nif(msg.o2_state)msg.o2_color = \“#09ef28 \”; \ n其他msg.o2_color = \“橙色\”; \ nif(msg。 o3_state)msg.o3_color = \“#09ef28 \”; \ n其他msg.o3_color = \“ orange \”; \ nif(msg.o4_state)msg.o4_color = \“#09ef28 \”; \ n其他msg.o4_color = \“橙色\”; \ n \ n返回msg;“,”输出“:1,” noerr“:0,” x“:860,” y“:240,”电线“:[[”“ d764a23a.3c531” ]]},{ “id”: “76fd06c4.0f36f8”, “类型”: “ui_text”, “z”: “56b9510c.98c6f”, “基团”: “470e04a4.87c72c”, “命令”:1,”宽度“:0,”高度“:0,”名称“:” netio模型“,”标签“:” netio模型:“,”格式“:” {{msg.model}}“,”布局“:”行-center “ ”ד:660, ”y“:360, ”线“:[]},{ ”id“: ”8345c1eb.4a0e6“, ”类型“: ”ui_text“, ”z“:” 56b9510c。 98c6f“,” group“:” 470e04a4.87c72c“,” order“:2,” width“:0,” height“:0,” name“:”“,” label“:” model firmware“,” format“ : “{{msg.version}}”, “布局”: “行中心”, “×”:660, “y”:400, “线”:[]},{ “id”:“7ed7e52e.27477c “ ”类型“:” ui_t ext“,” z“:” 56b9510c.98c6f“,” group“:” 470e04a4.87c72c“,” order“:3,” width“:0,” height“:0,” name“:”序列号“, “ label”:“序列号”,“格式”:“ {{msg.serialnumber}}”,“ layout”:“ col-center”,“ x”:660,“ y”:440,“ wires”:[ ]},{ “id”: “4852076c.3868e8”, “类型”: “ui_text”, “z”: “56b9510c.98c6f”, “基团”: “470e04a4.87c72c”, “命令”:4“,宽度“:0,”高度“:0,”名称“:” json版本“,”标签“:” json版本:“,”格式“:” {{msg.jsonversion}}“,”布局“:”行-中心 “ ”ד:660, ”y“:480, ”线“:[]},{ ”id“: ”7472ee86.79bc3“, ”类型“: ”ui_gauge“, ”z“:” 56b9510c.98c6f “,”名称“:”当前(设备)“,”组“:” a7539552.a04768“,”订单“:4,”宽度“:0,”高度“:0,” gtype“:”量规“,” title“:” current({{msg.model}})“,” label“:” a“,” format“:” {{msg.totalcurrent}}“,” min“:0,” max“:” 100 “ ”色彩“:[ ”#00b500“, ”#e6e600“, ”#ca3838“], ”seg1“: ”“, ”seg2“: ”“, ”ד:300, ”y“:400,” wire“:[]},{” id“:” 3068d819.5ff718“,” type“:” ui_gauge“,” z“:” 56b9510c.98c6f“,” name“:”总体功率因数“,” group“: “ a7539552.a04768”,“顺序”:3,“宽度”:0,“高度”:0,“ gtype”:“量规”,“标题”:“总功率因数” “标签”: “”, “格式”: “{{msg.overallpowerfactor}}”, “分钟”:0, “最大”: “1”, “色彩”:[ “#00b500”, “#e6e600” , “#ca3838”], “seg1”: “”, “seg2”: “”, “×”:320, “y”:440, “线”:[]},{ “id”:“323990ed.14cf5 ”, “类型”: “ui_gauge”, “z”: “56b9510c.98c6f”, “名称”: “电压”, “基团”: “a7539552.a04768”, “命令”:6, “宽度”:0, “高度”:0, “gtype”: “计”, “标题”: “电压”, “标签”: “v”, “格式”: “{{msg.voltage}}”, “分钟”:0, “最大”: “500”, “色彩”:[ “#00b500”, “#e6e600”, “#ca3838”], “seg1”: “”, “seg2”: “”, “×”:280,” y “:480,” 线 “:[]},{” id “:” 3e88e47a.74d26c”, “类型”: “ui_gauge”, “z”: “56b9510c.98c6f”, “姓名”: “频率”, “基团”: “a7539552.a04768”, “命令”:5 “宽度”:0, “高度”:0, “gtype”: “计”, “标题”: “频率”, “标签”:“赫兹”, “格式”: “{{msg.frequency}}”, “分钟”:0, “最大”: “100”, “色彩”:[ “#00b500”, “#e6e600”, “#ca3838”] “seg1”: “”, “seg2”: “”, “×”:290, “y”:520, “线”:[]},{ “id”: “9b0f772f.e0fc58”, “类型”: “ ui_chart”,“ z”:“ 56b9510c.98c6f”,“ name”:“当前图表(设备)”,“ group”:“ a7539552.a04768”,“ order”:2,“ width”:0,“ height “:0,”标签“:”当前“,”图表类型“:”行“,”传奇“:” t芸香”, “xformat”: “hh:mm”, “内插”: “线性”, “无数据”: “”, “点”:假 “ymin”: “0”, “ymax”: “32”, “removeolder”:1, “removeolderpoints”: “”, “removeolderunit”: “60”, “切断”:0, “useonecolor”:假, “色彩”:[ “#ff0000”, “#aec7e8”,“# ff7f0e”, “#2ca02c”, “#98df8a”, “#0000a0”, “#ff9896”, “#9467bd”, “#c5b0d5”], “useoldstyle”:假, “×”:320, “y”: 360,“ wires”:[[],[]]},{“ id”:“ 51626bea.79f244”,“ type”:“ link in”,“ z”:“ 56b9510c.98c6f”,“ name”:“ ”, “链接”:[ “d764a23a.3c531”]中, “x”:75, “y”:400, “线”:[[ “7472ee86.79bc3”, “3068d819.5ff718”, “323990ed.14cf5”, “ 3e88e47a.74d26c”,“ 3567a4c0.0ee3cc”,“ c3c29296.4505d”]]}},{“ id”:“ d764a23a.3c531”,“ type”:“ link out”,“ z”:“ 56b9510c.98c6f” , “姓名”: “链接”, “链接”:[ “51626bea.79f244”, “57f3c961.d9b3e8”, “bda11677.919808”]中, “x”:955, “y”:240, “线”:[ ]},{“ id”:“ bda11677.919808”,“ type”:“ link in”,“ z”:“ 56b9510c.98c6f”,“ name”:“”,“ links”:[“ d764a23a.3c531” ]中, “x”:495, “y”:440, “线”:[[ “76fd06c4.0f36f8”, “8345c1eb.4a0e6”, “7ed7e52e.27477c”, “4852076c.3868e8”]]},{“id “:” 3567a4c0.0ee3cc “ ”类型“: ”功能“, ”z“:” 56b9510c.98c6f “,”名称“:”当前图表“,”功能“:” msg.payload = msg.totalcurrent; \ nreturn msg;“,”输出“:1,” noerr“:0,” x“:160,” y “:300,” 线 “:[[” 9b0f772f.e0fc58 “]]},{” id “:” c3c29296.4505d “ ”类型“: ”ui_gauge“, ”z“: ”56b9510c.98c6f“,” 名称“:”“,” group“:” a7539552.a04768“,” order“:1,” width“:0,” height“:0,” gtype“:” gage“:” gage“,” title“:” total load“, “标签”: “w”, “格式”: “{{msg.totalload}}”, “分钟”:0, “最大值”: “10000”, “色彩”:[ “#00b500”, “#e6e600” , “#ca3838”], “seg1”: “”, “seg2”: “”, “×”:290, “y”:560, “线”:[]},{ “id”:“ded04c51.0b31e “,” type“:” inject“,” z“:” 56b9510c.98c6f“,” name“:” 1 second repeat“,” topic“:”“,” payload“:”“,” payloadtype“:” date “ ”重复“: ”1“, ”crontab的“: ”“, ”一次“:假 ”oncedelay“: ”1“, ”ד:310, ”y“:240, ”线“:[[” aa32bf8.f83704“]]}},{” id“:” 763762d6.d52dec“,” type“:” ui_button“,” z“:” 56b9510c.98c6f“,” name“:”输出1 = on“,”组“:” ab94b758.4be768“,”顺序“:1,”宽度“:0,”高度“:0,” passthru“:false,”标签“:”输出1 = on“,”工具提示“:”“, “颜色”: “”, “bgcolor”: “”, “图标”: “”, “有效载荷”: “{\” 输出\ “:[{\” id \ “:1,\” 操作\“:1 }]}”, “载荷类型”: “json” , “主题”: “”, “×”:100, “y”:40, “线”:[[ “6a66b637.da1558”]]},{ “id”: “3930df24.761ab”, “类型”: “ ui_button”,“ z”:“ 56b9510c.98c6f”,“ name”:“输出1 = off”,“ group”:“ ab94b758.4be768”,“ order”:2,“ width”:0,“ height” :0,“ passthru”:false,“ label”:“输出1 = off”,“ tooltip”:“”,“ color”:“”,“ bgcolor”:“”,“ icon”:“”,“有效载荷“:”{\ “输出\”:[{\ “id \”:1,\ “操作\”:0}]}”, “载荷类型”: “json”, “主题”: “”, “×” :100, “y”:80, “线”:[[ “6a66b637.da1558”]]},{ “id”: “3f0ec8e0.d39668”, “类型”: “ui_button”, “z”:“56b9510c。 98c6f“,” name“:”输出1 =短on“,” group“:” ab94b758.4be768“,” order“:3,” width“:0,” height“:0,” passthru“:false,” label“:”输出1 =短on“,” tooltip“:”“,” color“:”“,” bgcolor“:”“,” icon“:”“,”有效载荷“:” {\“ outputs \” :[{\ “id \”:1,\ “操作\”:3}]}”, “载荷类型”: “json”, “主题”: “”, “×”:120, “y”:120, “线”:[[ “6a66b637.da1558”]]},{ “id”: “26a70e42.0b8e12”, “类型”: “ui_button”, “z”: “56b9510c.98c6f”, “姓名”:“输出1 =短路关“,”组“:” ab94b758.4be768“,”顺序“:4,”宽度“:0,”高度“:0,”通过“:false,”标签“:”输出1 =短路关(雷斯塔rt)”, “提示”: “”, “色彩”: “”, “bgcolor”: “”, “图标”: “”, “有效载荷”: “{\” 输出\ “:[{\” id \ “:1,\” 操作\ “:4}]}”, “载荷类型”: “json”, “主题”: “”, “×”:120, “y”:160, “线”:[[” 6a66b637.da1558“]]},{” id“:” 4b19bca6.15d3f4“,” type“:” ui_button“,” z“:” 56b9510c.98c6f“,” name“:”输出1 =切换“,”组“:” ab94b758.4be768“,”订单“:5,”宽度“:0,”高度“:0,” passthru“:false,”标签“:”输出1 =切换“,”工具提示“:”“, “颜色”: “”, “bgcolor”: “”, “图标”: “”, “有效载荷”: “{\” 输出\ “:[{\” id \ “:1,\” 操作\“:2 }]} “ ”载荷类型“: ”json“, ”主题“: ”“, ”ד:110, ”y“:200, ”线“:[[ ”6a66b637.da1558“]]},{” id “:” 57f3c961.d9b3e8“,” type“:”链接输入“,” z“:” 56b9510c.98c6f“,”名称“:”“,”链接“:[” d764a23a.3c531“],” x“: 795, “y”:420, “线”:[[ “33465792.5b26e8”, “26696a86.9322d6”, “7c1508d2.f869a8”, “c6c0aad.141fa58”]]},{ “id”: “33465792.5b26e8”, “类型”: “ui_text”, “z”: “56b9510c.98c6f”, “基团”: “a5e4e892.40d1b8”, “命令”:1, “宽度”: “0”, “高度”: “0” 时, “ name”:“ o1状态”,“ label”:“ o1 =”,“ format”:“ {{msg.o1_state}}”,“ layout”:“行中心”,“ x”:920,“ y “:360,” 线 “:[]},{” id “:” 26 696a86.9322d6” , “类型”: “ui_text”, “z”: “56b9510c.98c6f”, “基团”: “a5e4e892.40d1b8”, “命令”:2 “宽度”: “0”, “高度” :“ 0”,“名称”:“ o2状态”,“标签”:“ o2 =”,“格式”:“ {{msg.o2_state}}”,“布局”:“行中心”,“ x” :920, “y”:400, “线”:[]},{ “id”: “7c1508d2.f869a8”, “类型”: “ui_text”, “z”: “56b9510c.98c6f”, “基团”: “ a5e4e892.40d1b8”,“订单”:3,“宽度”:“ 0”,“高度”:“ 0”,“名称”:“ o3状态”,“标签”:“ o3 =”,“格式”: “ {{msg.o3_state}}”,“布局”:“行中心”,“ x”:920,“ y”:440,“电线”:[]},{“ id”:“ c6c0aad.141fa58” “类型”: “ui_text”, “z”: “56b9510c.98c6f”, “基团”: “a5e4e892.40d1b8”, “命令”:4 “宽度”: “0”, “高度”: “0” ,“名称”:“ o4状态”,“标签”:“ o4 =”,“格式”:“ {{msg.o4_state}}”,“布局”:“行中心”,“ x”:920,“ y“:480,” wires“:[]},{” id“:” 470e04a4.87c72c“,” type“:” ui_group“,” z“:”“,” name“:”设备状态“,”标签“:” 23994b37.39eb44“ , “订单”:1, “disp”:真, “宽度”: “6”, “崩溃”:假},{ “id”: “a7539552.a04768”, “类型”: “ ui_group”,“ z”:“”,“名称”:“设备管理”,“标签”:“ 23994b37.39eb44”,“订单”:4,“显示”:true,“宽度”:“ 6”, “崩溃”:假的},{“ id”:“ ab94b758.4be768”,“ type”:“ ui_group”,“ z”:“”,“ name”:“控制输出1”,“ tab”:“ 23994b37.39eb44”,“ order “:2,” disp “:真,” 宽度 “:” 6” , “崩溃”:假},{ “id”: “a5e4e892.40d1b8”, “类型”: “ui_group”, “z”: “” ,“名称”:“ o1-o4输出状态”,“标签”:“ 23994b37.39eb44”,“订单”:3,“显示”:true,“宽度”:“ 6”,“折叠”:false}, {“ id”:“ 23994b37.39eb44”,“ type”:“ ui_tab”,“ z”:“”,“ name”:“ netio an30(rest json)”,“ icon”:“ dashboard”,“ order” :2,“ disabled”:false,“ hidden”:false}]
第5步:它们如何协同工作
该流程基本上分为两部分:post和get。
post:写入o1
在仪表板中创建了五个按钮流将显示在仪表板中。
单击仪表板中的output 1 = on按钮后,有效负载将设置为netio.json文件,该文件指定输出和操作(为每个按钮定义)。
http请求(post)块将netio.json文件作为请求发送到ip地址。
服务器响应(状态)作为输出返回。
msg.payload块显示http请求(post)的结果。
get:从o1 – o4读取
“ 1秒重复”块以一秒为周期激活http请求(get)块,该块随后将netio.json作为get请求发送,并返回具有套接字状态的完整json文件如从服务器收到的。
json解析块将json文件从http请求(get)块转换为json对象,以便可以操纵json文件中的属性。
function块接受json对象的各个部分,并将其转换为msg对象的属性,以供以后使用。
“当前图表”块将msg.payload设置为msg对象的msg.totalcurrent属性,因为后续的“当前图表(设备)”块只能显示msg.payload值。
然后跟随各种输出节点,以便在仪表板中显示从json对象获取的msg对象的选定属性。
该msg对象和msg.payload
对于一个简单明了的说明,请参见此处:
http://www.steves-internet-guide.com/node-red-mess 。..
步骤6:http post和get
http请求(post)
此节点发送一个netio.json命令文件作为http请求(post),以控制netio 4all设备。
http请求(get)
此节点发送一个http请求(get)并返回状态响应。
预先填写的地址指向netio 4all在线演示,您可以在其中测试连接而无需在桌面上安装netio设备。
http://netio-4all.netio-products.com
可以在这些节点中设置自己的ip地址。但是,在http请求节点,post和get中都需要更改ip。
步骤7:按钮节点
单击按钮节点会生成一条包含netio.json文件(右图)的消息,然后通过http post节点将其发送到netio智能电源插座。
步骤8:功能节点
功能节点是一个特殊的节点,可以编写自定义javascript函数。
在此指令中,该函数从已解析的json文件(现在为json对象)中选择值,并将其分配给msg对象的属性。
代码分为四个部分:
将值从json对象分配给msg对象的各个属性
在联网电源插座不支持全局测量的情况下的错误处理
网络电源插座不支持全局值的测量,node-red将显示错误,因为此功能离子将找不到各自的特性,例如msg.payload.globalmeasure.voltage,因为它不会出现在json对象中。在这种情况下,味精对象的属性,例如msg.voltage设置为0,并且捕获了错误。
分配输出状态值
根据输出状态设置显示的输出状态值的颜色
步骤9:json节点和注入节点
json节点
json节点解析json文件并将其转换为json对象。/p》
作为服务器对get请求的响应,http request节点返回一个json文件,其中包含netio 4x设备的当前状态,但它只是一个文本文件,因此为了与数据,则需要将json文件解析为json对象。
注入节点
每秒钟,此节点都会激活http请求节点,该节点发送一个get请求。
因此,仪表板中的值将以一秒钟的时间更新
步骤10:文本节点和调试节点
文本节点
显示一个仪表板中的文本字段。在此指令中,文本节点显示电流,电压,型号,固件版本或json版本。
标签显示在仪表板中,名称是节点流中显示的节点名称。 -red。
调试节点
显示消息有效载荷。
步骤11:图表节点
此节点根据有效载荷值在仪表板中绘制当前图表。
此节点可以
因此仅使用 绘制图表。
因此,功能节点用于将msg.payload设置为需要显示的值。
p》
msg.payload = msg.totalcurrent;
步骤12:仪表节点和链接节点
仪表节点
此节点将仪表部件添加到仪表板。
在此指令中,每个仪表都可视化了味精对象的一个属性:电压[v],电流[a],频率[hz]和总真实功率因数(tpf)。
链接节点
链接入节点和链接出节点就像隧道一样工作。 msg.payload到达链接输入节点,然后离开链接输出节点。
我用它使流程更清晰,更易于阅读。

超声波传感器测距离的原理
AC直接驱动LED光源技术
三菱电机开始提供工业设备用NX封装全SiC功率半导体模块样品
哪些部件与组件需要执行SEMI F57的评估
康宁宣布推出史上最坚韧的大猩猩玻璃Gorilla Glass Victus
如何通过http get和post传输json文件来控制联网的电源插座
波士顿动力准备推出Spot机器人 3D摄像头帮助绘制工地等地图
学子专区—ADALM2000实验:将BJT连接为二极管
苹果又曝iPhone6/6S自动关机原因:或为劣质电源适配器所致
浅谈什么是智能电容器
5月新能源车市增长持续 锂电产业排产有望继续回升
全球半导体设备市场规模约600亿美元,前道设备占据主要市场份额
广电总局对开设直播带货的商家进行实名认证
VR新发现,将损害儿童的健康
诺基亚2018年第二季度财报总结
PCIe 5.0进入快车道 加速NAND的迭代升级
AVM为其全新VDSL及Wi-Fi 11AC旗舰网关选用Lantiq技术
8K大战后,三星与LG家电业两巨头江湖恩怨继续上演
VR的神奇功效 帮助妈妈分娩
印度国有电信运营商BSNL启动了4G招标计划