适用对象:实施工程师、运维工程师
适用程序:
SWS-Communication打包后的 Windows / Linux 服务程序当前打包产物:
- Windows:dist/index-win.exe
- Linux:dist/index-linux
本程序用于接收山外山透析机通过 TCP 主动上报的数据,完成以下工作:
实施前请确认以下条件:
建议部署目录结构如下:
SWS-Gateway/
├─ dist/
│ ├─ index-win.exe # Windows 可执行文件
│ ├─ index-linux # Linux 可执行文件
│ ├─ config.json # 外部配置文件
│ └─ schema.json # 物模型映射文件(必须放置)
├─ logs/ # 日志目录(程序自动创建/写入)
└─ doc/ # 可选文档目录
实施时至少确保以下文件到位:
dist/index-win.exedist/config.jsondist/schema.jsondist/index-linuxdist/config.jsondist/schema.json当前程序启动后会从**可执行文件同目录**读取:
config.jsonschema.json因此:
config.json 必须和可执行文件放在一起schema.json 也必须和可执行文件放在一起否则:
当前程序默认使用外部 config.json 覆盖内置默认配置。
{
"tcp": {
"host": "3.0.0.27",
"port": 10000,
"idleTimeoutMs": 1200000
},
"http": {
"enabled": false,
"host": "0.0.0.0",
"port": 19001,
"rateLimit": {
"singleDeviceMs": 5000,
"allDevicesMs": 60000
}
},
"mqtt": {
"enabled": true,
"url": "mqtt.ihemodialysis.com",
"port": 62283,
"username": "data",
"password": "data#2018",
"defaultTopicPrefix": "touxiji",
"retain": true
},
"aliyun": {
"enabled": false,
"baseURL": "https://things.icoldchain.cn/"
}
}
| 配置项 | 说明 | 建议 |
|---|---|---|
tcp.host |
TCP 监听地址 | 建议设为 0.0.0.0 或服务器实际监听 IP |
tcp.port |
TCP 监听端口 | 根据现场约定,常用 10000 |
tcp.idleTimeoutMs |
设备空闲超时 | 建议 120000 ~ 1200000 |
说明:如果服务器有多个网卡,建议优先使用
0.0.0.0监听所有地址,避免只绑定某一个 IP 后导致透析机无法接入。
| 配置项 | 说明 |
|---|---|
http.enabled |
是否启用 HTTP 查询接口 |
http.port |
HTTP 端口 |
当前默认可关闭,仅在联调或运维场景需要时启用。
| 配置项 | 说明 |
|---|---|
mqtt.enabled |
是否启用 MQTT 上报 |
mqtt.url |
MQTT 服务地址 |
mqtt.port |
MQTT 端口 |
mqtt.username |
用户名 |
mqtt.password |
密码 |
mqtt.defaultTopicPrefix |
Topic 前缀 |
mqtt.retain |
是否保留最后一条消息 |
| 配置项 | 说明 |
|---|---|
aliyun.enabled |
是否启用阿里云物联网 |
aliyun.baseURL |
获取设备三元组的后端接口地址 |
程序已接入 winston 本地日志,默认写入日志文件。
当前默认日志目录配置为:
../logs这意味着:
dist/ 目录下dist 上一级目录的 logs/例如:
SWS-Gateway/
├─ dist/
│ ├─ index-win.exe
│ ├─ config.json
│ └─ schema.json
└─ logs/
├─ gateway-2026-03-16.log
└─ gateway-error-2026-03-16.log
gateway-YYYY-MM-DD.log:业务全量日志gateway-error-YYYY-MM-DD.log:错误日志日志可追踪以下内容:
在 Windows 服务器上创建目录,例如:
D:\SWS-Gateway\
拷贝以下文件:
dist/index-win.exedist/config.jsonschema.json(从项目根目录拷贝到 dist/)建议最终结构:
D:\SWS-Gateway\
├─ dist\
│ ├─ index-win.exe
│ ├─ config.json
│ └─ schema.json
└─ logs\
在 PowerShell 中进入 dist 目录执行:
cd D:\SWS-Gateway\dist
.\index-win.exe
正常情况下应看到:
TCP server listeningMQTT connected如监听 10000 端口,可执行:
New-NetFirewallRule -DisplayName "SWS Gateway TCP 10000" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 10000
推荐使用 nssm 注册服务。
下载 nssm 后执行:
nssm install SWSGateway
在弹出界面中填写:
Path:D:\SWS-Gateway\dist\index-win.exeStartup directory:D:\SWS-Gateway\dist安装完成后执行:
nssm start SWSGateway
查看状态:
nssm status SWSGateway
如果现场不方便安装 nssm,可通过任务计划程序设置“开机自动启动”。
在 Linux 服务器上建议创建目录:
/opt/sws-gateway/
拷贝以下文件:
dist/index-linuxdist/config.jsonschema.json(从项目根目录拷贝到 dist/)建议结构:
/opt/sws-gateway/
├─ dist/
│ ├─ index-linux
│ ├─ config.json
│ └─ schema.json
└─ logs/
chmod +x /opt/sws-gateway/dist/index-linux
cd /opt/sws-gateway/dist
./index-linux
若启动正常,可看到监听日志。
如使用 firewalld:
firewall-cmd --permanent --add-port=10000/tcp
firewall-cmd --reload
如使用 ufw:
ufw allow 10000/tcp
新建文件:
/etc/systemd/system/sws-gateway.service
内容如下:
[Unit]
Description=SWS Dialysis Gateway
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/sws-gateway/dist
ExecStart=/opt/sws-gateway/dist/index-linux
Restart=always
RestartSec=5
User=root
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
启用并启动:
systemctl daemon-reload
systemctl enable sws-gateway
systemctl start sws-gateway
查看状态:
systemctl status sws-gateway
查看日志:
tail -f /opt/sws-gateway/logs/gateway-$(date +%F).log
建议实施工程师按以下顺序联调:
TCP server listeningDevice connectedRaw TCP data receivedDialysis frame parsedMQTT publish success 或 Aliyun postProps success每日建议检查:
gateway-error-*.log 是否有连续错误排查顺序:
tcp.host 是否绑定错误(建议 0.0.0.0)排查顺序:
Device connectedRaw TCP data received排查顺序:
config.json 中 mqtt.enabled 是否为 trueMQTT connectedMQTT publish success排查顺序:
aliyun.enabled 是否为 trueRequest Aliyun device secretAliyun postProps success排查顺序:
logs 目录权限config.log.toFile 是否为 true正式实施时建议遵循:
config.json 和 schema.json 固定随程序一起部署上线前请逐项确认:
config.json 已按现场修改schema.json 已放到可执行文件同目录如需进一步交付实施工程师,建议同时附带:
docs/current-protocol-decoding.mdconfig.json