demacia
发表于 2023-7-5 00:11:17
csl0524 发表于 2023-6-11 10:16
从错误信息看可能是33-42的代码有问题,先确定36、37两行是不是已经改好了?另外就是35行那个开锁的URL可 ...
贴主可以试试nr上自带websocket out组件发生ctrl消息,我不太想开贴发教程了。大体还是仿照你的教程做的
csl0524
发表于 2023-7-5 10:27:32
demacia 发表于 2023-7-5 00:11
贴主可以试试nr上自带websocket out组件发生ctrl消息,我不太想开贴发教程了。大体还是仿照你的教程做的 ...
呃,这个不会,发送ctrl消息要先发起请求得到一个开锁的token,这些步骤不知道如何实现,另外发送ping消息也不会,点击发送就会先断开连接再连接,实际测试也没有收到pong消息,不知道怎么搞。或是你发个流给参考一下吧
demacia
发表于 2023-7-5 12:53:58
csl0524 发表于 2023-7-5 10:27
呃,这个不会,发送ctrl消息要先发起请求得到一个开锁的token,这些步骤不知道如何实现,另外发送ping消 ...
点击发送 断开原因我查过,你估计和我踩了一样的坑。我把替换的websokcet的文件打了发送的消息的日志,websocket-out组件应该调整到载荷模式就行。
之所以断开的原因是锁的服务器那边检测到你发的格式不对,就断开了;websocket-组建会自动重连。
csl0524
发表于 2023-7-5 13:59:57
demacia 发表于 2023-7-5 12:53
点击发送 断开原因我查过,你估计和我踩了一样的坑。我把替换的websokcet的文件打了发送的消息的日志,we ...
我不是计算机专业的,你说的这些都不懂,开锁这个目前可以用暂时不管了,关于定时发送ping消息这个该如何解决?讲具体一些,底子差听不懂:dizzy:
demacia
发表于 2023-7-5 21:59:56
csl0524 发表于 2023-7-5 13:59
我不是计算机专业的,你说的这些都不懂,开锁这个目前可以用暂时不管了,关于定时发送ping消息这个该如何 ...
[
{
"id": "b7765ab3393b31ac",
"type": "websocket out",
"z": "de0de8a7f80fa31e",
"name": "Lock",
"server": "",
"client": "75686c82f9066504",
"x": 835,
"y": 340,
"wires": [],
"l": false
},
{
"id": "24101c5d7889f977",
"type": "inject",
"z": "de0de8a7f80fa31e",
"name": "Ping",
"props": [],
"repeat": "50",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 230,
"y": 340,
"wires": [
[
"18ae6859891c15c0"
]
]
},
{
"id": "3985280296e9b9ef",
"type": "uuid",
"z": "de0de8a7f80fa31e",
"uuidVersion": "v1",
"namespaceType": "",
"namespace": "",
"namespaceCustom": "",
"name": "UUID组件生成Ping消息的MessageId",
"field": "payload.header.messageId",
"fieldType": "msg",
"x": 650,
"y": 340,
"wires": [
[
"b7765ab3393b31ac"
]
]
},
{
"id": "18ae6859891c15c0",
"type": "function",
"z": "de0de8a7f80fa31e",
"name": "构造Ping数据",
"func": "msg.payload = { \n \"header\": { \n \"namespace\": \"Iot.Application\", \n \"name\": \"Ping\", \n \"messageId\": \"\", \n \"payloadVersion\": 1 \n } \n }\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 380,
"y": 340,
"wires": [
[
"3985280296e9b9ef"
]
]
},
{
"id": "75686c82f9066504",
"type": "websocket-client",
"path": "wss://wsapi.kiwiot.com/?access_token=",
"tls": "df5f6c97c8337f73",
"wholemsg": "false",
"hb": "0",
"subprotocol": ""
},
{
"id": "df5f6c97c8337f73",
"type": "tls-config",
"name": "UnSafeTLS",
"cert": "",
"key": "",
"ca": "",
"certname": "",
"keyname": "",
"caname": "",
"servername": "",
"verifyservercert": false,
"alpnprotocol": ""
}
]这个是Ping的逻辑, 依赖了一个UUID组件,
UUID需要node-red安装下,就是在node-red 官网 https://flows.nodered.org/node/node-red-contrib-uuid,在node-red目录下面执行安装下这个组件就行.
demacia
发表于 2023-7-5 22:06:55
正常来说其实那两个替换的websocket文件,最好也是作者以新组件的形式,通过这种npm install方式导入到NR里面去可能作者嫌麻烦,再加上主逻辑大体还是老组件的,核心是websocket组件支持入参设置token参数
csl0524
发表于 2023-7-6 09:23:39
demacia 发表于 2023-7-5 21:59
这个是Ping的逻辑, 依赖了一个UUID组件,
UUID需要node-red安装下,就是在node-red 官网 https://flows.nod ...
按以上代码导入后点击注入还是会断开再连接的,好像也没有收到pong的消息,应该是没有发送成功吧
demacia
发表于 2023-7-8 00:08:04
csl0524 发表于 2023-7-6 09:23
按以上代码导入后点击注入还是会断开再连接的,好像也没有收到pong的消息,应该是没有发送成功吧 ...
csl0524
发表于 2023-7-8 04:22:24
demacia 发表于 2023-7-5 12:53
点击发送 断开原因我查过,你估计和我踩了一样的坑。我把替换的websokcet的文件打了发送的消息的日志,we ...
那我的问题出在哪?这一步中的调到载荷模式怎么搞?还有替换文件打了发送消息的日志什么意思?
csl0524
发表于 2023-7-8 22:46:35
demacia 发表于 2023-7-8 00:08
搞定了,感谢指导,更改以下这处就好