type
status
date
slug
summary
tags
category
icon
password

🔎产品介绍

💿
产品外观
全网实在找不到相关产品介绍,不确定是小作坊自己做的还是已经灭绝的老物件,所以上小黄鱼图
notion image
产品介绍
见上图小黄鱼收购一个8口分监分控且带8个千兆交换机的智能PDU,PDU集成小屏幕可以依次显示8路插座电流、输入电压、总负载等数据。
notion image
具备web后台管理控制,见下图
//未开放端口,等回家了上传
notion image
!不具备485远程控制协议,买回来之后才发现,找卖家要协议说设备太老了只支持websocket,只有重头研究该协议了。
 

📖方案概述

💡
使用nodered通过websocket接入

关于websocket,来自AI:

WebSocket协议是一种基于TCP的网络协议,它允许客户端和服务器之间建立持久连接,实现全双工通信。以下是对WebSocket协议的简单介绍及其使用方法:

一、WebSocket协议简介

  1. 全双工通信:与传统的HTTP请求/响应模式不同,WebSocket协议允许服务器与客户端之间在任何时间点双向自由流动数据,实现了真正的全双工通信。
  1. 持久连接:WebSocket通过一次握手后建立起持久连接,避免了HTTP协议中每次请求都需要建立新连接的繁琐过程,从而降低了通信延迟和开销。
  1. 数据类型支持:WebSocket协议不仅支持文本数据的传输,还支持二进制数据(如ArrayBuffer或Blob对象)的传输,这使得它在处理多媒体数据和实时通信方面更具优势。
  1. 跨域支持:WebSocket协议可以跨域使用,允许不同源的客户端与服务器进行通信,而无需像HTTP协议那样使用额外的跨域处理机制。
  1. 安全性:WebSocket协议可以使用SSL/TLS协议进行加密(即wss://协议),确保数据的安全传输。

二、WebSocket使用方法

  1. 创建WebSocket连接
      • 在客户端,可以使用JavaScript的WebSocket构造函数来创建一个WebSocket连接。例如:
      这里,'ws://localhost:8080'是WebSocket服务器的URL。如果是加密连接,则使用'wss://'协议。
  1. 处理连接事件
      • WebSocket提供了几个重要的事件来处理连接的打开、关闭、错误以及接收消息等情况。例如:
  1. 发送消息
      • 一旦WebSocket连接打开,就可以使用send方法向服务器发送消息。例如:
  1. 接收消息
      • 当服务器向客户端发送消息时,客户端的onmessage事件会被触发,并可以通过事件对象的data属性来获取消息内容。
  1. 关闭连接
      • 可以使用close方法来关闭WebSocket连接。例如:

三、进阶用法与注意事项

  1. 二进制数据的发送与接收
      • WebSocket支持发送和接收二进制数据。在发送二进制数据时,可以使用ArrayBufferBlob对象。在接收二进制数据时,需要将binaryType属性设置为'arraybuffer''blob'
  1. 心跳检测和重连机制
      • 为了保持WebSocket连接的稳定性,可以实现心跳检测和重连机制。心跳检测可以通过定时发送自定义的心跳消息来实现,而重连则可以在onclose事件处理器中添加重连逻辑。
  1. 安全性考虑
      • 在使用WebSocket进行通信时,安全性是一个重要的考虑因素。建议使用wss://协议来确保数据的安全传输。此外,还需要注意防范中间人攻击、数据篡改等安全风险。
  1. 跨域问题
      • 虽然WebSocket协议本身支持跨域通信,但在某些情况下(如浏览器安全策略的限制),可能仍然需要使用CORS等机制来进行跨域访问控制。
综上所述,WebSocket协议为Web应用带来了前所未有的交互性和实时性。通过掌握WebSocket的基本用法和进阶技巧,可以构建出更加动态和响应迅速的Web应用。

我的理解:

使用TCP/IP方式进行通讯,分为客户端和服务端,二者需要握手产生连接,每次开始运行只需要握手一次。

🤔 协议分析

💡
协议文本见附件
详情参考附件,这里有几点特别提出:
notion image
如图所示提出新更新版本的指令方式有所改变,我的那款需要按照新方式配置。
但是状态响应结果似乎又不太一样,所以状态响应那一块需要自行测试获取逻辑(我的没用那个)

⌨️ 流程代码

📌
点击展开/折叠

🛠️ 节点配置

如下
📌

前期准备

nodered 相关节点
  • 默认nodered
配置websocket服务端地址及端口
在PDU管理后台页面中配置服务端地址及IP(nodered本地IP),并且为了保持PDU持续连接,需要将PDU的IP地址设为静态地址。
notion image
//等回家补
📌

NodeRED配置

点击打开/折叠
右键导入流程后,配置监听服务端连接端口(如无异常默认即可):
notion image
 

状态响应情况概述:

由于我只接入了初次连接及开关控制之后检测对应插座开关状态,然后定时循环获取电流及电量,可以看出在获取数据时并没有开关状态相关的数据:
notion image
所以当使用PDU的web后台控制开关之后,开关的状态不能很好的实时反应到homeassistant的开关状态中;
我是在配置完其他页面的时候才意识到这个问题的,然后回过头来写了状态反馈的脚本程序,但是测试了几次发现规律不太对;
基于设备已经接入插座不方便频繁开关电源且我很少会登录web后台操作PDU所以决定不再配置该内容,如果有人恰好找到同款且想加入该功能,我也预留了配置节点,如下:
notion image
 
 
Home assistant硬件篇-4X4 HDMI矩阵2024-12月重游北京
Loading...