数据推送 TCP
RHILEX 支持将采集到的数据推送到 TCP 服务端。
实例
新建 TCP 北向资源
新建规则
在接入设备操作界面给设备配置脚本:
编写脚本
Lua
Actions = {
function(args)
local dataT, err = json:J2T(args)
if (err ~= nil) then
Throw(err)
return true, args
end
for _, value in pairs(dataT) do
local params = {}
params[value['tag']] = value.value
local json = json:T2J({
id = time:TimeMs(),
method = "thing.event.property.post",
params = params
})
local err = data:ToTcp("$UUID", json)
if err ~= nil then
Throw(err)
end
end
return true, args
end
}
其中 UUID
参数是一开始建立的 TCP 北向资源的 ID,可以在快捷选择模板里面创建。
测试服务
下面给出一个简单的 Python TCP Server 示例:
Python
import socket
def main():
server_address = ("localhost", 5556)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
server_socket.bind(server_address)
server_socket.listen(5)
print("Server is listening on port 5556...")
client_socket, client_address = server_socket.accept()
print("Connected to client:", client_address)
while True:
data = client_socket.recv(1024)
if not data:
break
print("Received:", data.decode())
except Exception as e:
print("Error:", e)
finally:
client_socket.close()
server_socket.close()
if __name__ == "__main__":
main()
脚本解析
使用到的核心函数:
json:J2T
:将 JSON String 转为 Lua 的表json:T2J
:将 Lua 的表转转为 JSON Stringdata:ToTcp
:数据转发到 TCP Server 所有用到的函数均可在:规则指南 (opens in a new tab) 找到详细资料。