--------------------------------------------
|          |                |              |
|  STM32   |   Core Daemon  |  Qt Client   |
|          |                |              |
--------------------------------------------
Qt Client是用户与设备交互的接口, 它作为TCP客户端与核心进程(Core Daemon) TCP服务器通信,TCP端口4003,数据格式是以 \0 或者 \n 结尾的JSON字符串。Core Daemon 与STM32 控制板的协议见《TA01 通信协议》文档。 == TCP客户端向核心进程TCP服务器发送命令 == 向Core Daemon发送命令后,需要对方相应对应的ack命令, 其中的code值含义参考文档中对应的命令的type值含义 连接上需要发送的第一条指令: {"cmd":"hello","user_agent":"ascleway_qt v0.1"} {"cmd":"hello_ack", "switch": int, "work_status": int, "remaining_time":int, "aerogenesis_level": int, "atomize_level": int, "water_tank_water_level": int, "wetet_cup_water_level": int, "atomize_tank_water_level":int, "water_tank_temp:":int, "h2_mems_status":int, "h2_concentration":int, "device_tilt_angle":int, "fan_pwm":int, "fan_fd":int, "atomizer_value":int, "power_set_a_value":int,"power_get_a_value":int, "power_set_d_value":int,"power_get_d_value":int, "power_get_status":int,"mcu_status":int, "wifi_status":0, "bluetooth_status":1, "volume":100} 查询版本: {"cmd":"version"} {"cmd":"version_ack", "core_version":"v0.1.0", "os_version":"v1.0.0","hw_version":"v0.1.0", "bootloader_version":"v0.0.1", "fw_version": "v0.0.1" } 查询网络: {"cmd":"ifconfig_scan", "type": "start"} {"cmd":"ifconfig_scan", "type": "stop"} {"cmd":"ifconfig_scan_ack", "ret": "ok"} {"cmd":"ifconfig_scan_ack", "ret": "failed", "code":1} '''Core主动上报'''WiFi列表(在列表有变化时主动上报): {"cmd":"ifconfig_scan_report", "ret": "ok", "list":[{"name":"ShanghaiNovotech", "signal":5, "ip":"192.168.10.10", "mask":"255.255.255.0", "dns":"8.8.8.8", "gateway":"192.168.10.1", "actived":true}, {"name":"ShanghaiNovotech-5G", "signal":4, "ip":"", "mask":"", "dns":"", "gateway": "", "actived":false}]} 设置网络: {"cmd":"ifconfig", "type": "wireless", "name": "ShanghaiNovotech", "password": "password"} {"cmd":"ifconfig", "type": "wired", "device": "eth0", "ip": "192.168.10.10", "mask":"255.255.255.0", "gateway": "192.168.10.1", "dns": "192.168.10.1"} {"cmd":"ifconfig_ack", "ret": "ok"} {"cmd":"ifconfig_ack", "ret": "failed", "code":1} WiFi开关: {"cmd":"wifi_toggle", "enable": 0} {"cmd":"wifi_toggle", "enable": 1} {"cmd":"wifi_toggle_ack", "ret", "ok", "enable": 0} 蓝牙开关: {"cmd":"bluetooth_toggle", "enable": 1} {"cmd":"bluetooth_toggle", "enable": 0} {"cmd":"bluetooth_toggle_ack", "ret", "ok", "enable": 0} 关机指令: {"cmd":"poweroff", "type":"ui_button"} {"cmd":"poweroff_ack", "ret":"ok"} {"cmd":"poweroff_ack", "ret":"failed", "code":255} 重启设备指令: {"cmd":"reboot", "type":"ui_button"} {"cmd":"reboot_ack", "ret":"ok"} {"cmd":"reboot_ack", "ret":"failed", "code":255} 准备产气(在开始产气之前的阶段发送,产气中阶段qt不会发送此命令): 准备产气用于查询产气的条件,timeout是产气时间(分钟),atomize_level是物化挡位 {"cmd":"prepare_aerogenesis", "type": "start","timeout":480, "atomize_level":4} {"cmd":"prepare_aerogenesis_ack", "type": "start", "ret":"ok"} {"cmd":"prepare_aerogenesis_ack", "type": "start", "ret":"failed", "code":26} 开始产气: {"cmd":"start_aerogenesis","timeout":60} {"cmd":"start_aerogenesis_ack", "ret":"ok"} {"cmd":"start_aerogenesis_ack", "ret":"failed", "code":255} 恢复产气: {"cmd":"resume_aerogenesis"} {"cmd":"resume_aerogenesis_ack", "ret":"ok"} {"cmd":"resume_aerogenesis_ack", "ret":"failed", "code":255} 结束产气: type: "pause" / "stop" {"cmd":"stop_aerogenesis", "type": "stop"} {"cmd":"stop_aerogenesis", "type": "pause"} {"cmd":"stop_aerogenesis_ack", "ret":"ok"} {"cmd":"stop_aerogenesis_ack", "ret":"failed", "code":255} 配置雾化量 level: 0~6 {"cmd":"atomize", "level": 0} {"cmd":"atomize_ack", "ret": "ok"} {"cmd":"atomize_ack", "ret": "failed", "code":255} 查询控制板信息 {"cmd":"infor"} {"cmd":"infor_ack", "switch": int, "work_status": int, "remaining_time":int, "aerogenesis_level": int, "atomize_level": int, "water_tank_water_level": int, "wetet_cup_water_level": int, "atomize_tank_water_level":int, "water_tank_temp:":int, "h2_mems_status":int, "h2_concentration":int, "device_tilt_angle":int, "fan_pwm":int, "fan_fd":int, "atomizer_value":int, "power_set_a_value":int,"power_get_a_value":int, "power_set_d_value":int,"power_get_d_value":int, "power_get_status":int,"mcu_status":int, "wifi_status":0, "bluetooth_status":1, "volume":100} 播放音频 {"cmd":"play_audio","file":"add_water.wav"} {"cmd":"play_audio_ack", "ret": "ok"} {"cmd":"play_audio_ack", "ret": "failed", "code": 1} # 1: File not found 设置音量 {"cmd":"volume_set","value": 100} # From 0 to 100 {"cmd":"volume_set_ack", "ret": "ok"} {"cmd":"volume_set_ack", "ret": "failed", "code": 1} # 1: Value invalid 状态通知 {"cmd":"status_notify","status":"idle"} # status有idle \ normal {"cmd":"status_notify_ack", "ret": "ok"} == 核心进程TCP服务器向TCP客户端主动上报 == 主动上报的命令不需要回应 主动转发上报控制板信息: {"cmd":"ctrl_infor", "switch": int, "work_status": int, "remaining_time":int, "aerogenesis_level": int, "atomize_level": int, "water_tank_water_level": int, "wetet_cup_water_level": int, "atomize_tank_water_level":int, "water_tank_temp:":int, "h2_mems_status":int, "h2_concentration":int, "device_tilt_angle":int, "fan_pwm":int, "fan_fd":int, "atomizer_value":int, "power_setting_a_value":int, "power_set_a_value":int,"power_get_a_value":int, "power_set_d_value":int,"power_get_d_value":int, "power_get_status":int, "mcu_status":int, "wifi_status":0, "bluetooth_status":1} 主动上报结束产气 code为错误类型, 参考 {"cmd":"aerogenesis_end", "code":int} 主动上报氢气浓度 value 为氢气浓度,1 代表氢气浓度为 1% {"cmd":"h2_concentration", "value": int} 主动转发上报故障 code表示错误类型,具体定义见中的上报故障, 目前 19 表示补水超时(用于非产气过程中补水超时) {"cmd":"fault_report", "code": int} 主动转发上报提示 code表示错误类型,具体定义见中的上报提示 {"cmd":"remind_report", "code": int}
type 描述
00 无提示
01 时间到,已停止产气
02 雾化时间到,已停止雾化
03 水位太低,请加水
04 水位将满,请缓慢加水
05 水位已满,请旋紧注水口盖
06 水位太高,请抽水
07 设备准备中,请稍候
08 请加水(停顿 2s)设备加水时间可能较长,请按提示操作
09 请暂停加水
10 雾化槽水位太低,请加水
11 雾化槽水位太高,请抽水
12 侦测到周边环境氢气浓度太高,请等待至恢复正常方可使用
13 设备温度太低,请在室内静置 24 小时再开始使用。若 24 小时后仍然
不能正常产气,请联系售后服务
14 设备温度太高,不能正常产气。请等待一段时间再尝试产气。若反复
出现此现象,请联系售后服务
15 预留
16 预留
17 侦测到空气过于干燥。为了您的健康,请保持适宜的空气湿度
18 预留
19 设备倾斜度过大,不能正常产气。请水平放置设备