feat: integrate vehicle CAN control into self-expand console
This commit is contained in:
@@ -0,0 +1,434 @@
|
||||
{
|
||||
"suite": "vehicle_frontend_dry_run",
|
||||
"passed": true,
|
||||
"summary": {
|
||||
"passed": 40,
|
||||
"failed": 0,
|
||||
"total": 40
|
||||
},
|
||||
"duration_ms": 1149,
|
||||
"frontend_url": "http://127.0.0.1:8011",
|
||||
"native_url": "http://127.0.0.1:8765",
|
||||
"results": [
|
||||
{
|
||||
"id": "frontend-health",
|
||||
"passed": true,
|
||||
"detail": "frontend, CAN_DEV and native gateway are connected",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"id": "native-monitor-runtime",
|
||||
"passed": true,
|
||||
"detail": "adapter is receiving all required feedback families in monitor-only mode",
|
||||
"tx_count": 0,
|
||||
"feedback_ids": [
|
||||
"0x388",
|
||||
"0x404",
|
||||
"0x407",
|
||||
"0x41A",
|
||||
"0x42E",
|
||||
"0x494",
|
||||
"0x4FA"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "frontend-source-matrix",
|
||||
"passed": true,
|
||||
"detail": "all 24 tested actions are present in the visible frontend",
|
||||
"missing": []
|
||||
},
|
||||
{
|
||||
"id": "preset:seat-vent-on",
|
||||
"passed": true,
|
||||
"detail": "打开主驾座椅通风",
|
||||
"expected_commands": [
|
||||
"seat driver vent low"
|
||||
],
|
||||
"actual_commands": [
|
||||
"seat driver vent low"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:seat-heat-on",
|
||||
"passed": true,
|
||||
"detail": "打开主驾座椅加热",
|
||||
"expected_commands": [
|
||||
"seat driver heat low"
|
||||
],
|
||||
"actual_commands": [
|
||||
"seat driver heat low"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:seat-vent-off",
|
||||
"passed": true,
|
||||
"detail": "关闭主驾座椅通风",
|
||||
"expected_commands": [
|
||||
"seat driver vent off"
|
||||
],
|
||||
"actual_commands": [
|
||||
"seat driver vent off"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:seat-heat-off",
|
||||
"passed": true,
|
||||
"detail": "关闭主驾座椅加热",
|
||||
"expected_commands": [
|
||||
"seat driver heat off"
|
||||
],
|
||||
"actual_commands": [
|
||||
"seat driver heat off"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:climate-on",
|
||||
"passed": true,
|
||||
"detail": "打开空调",
|
||||
"expected_commands": [
|
||||
"ac on"
|
||||
],
|
||||
"actual_commands": [
|
||||
"ac on"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:climate-24",
|
||||
"passed": true,
|
||||
"detail": "把空调温度调到24度",
|
||||
"expected_commands": [
|
||||
"ac temp driver 24",
|
||||
"ac temp passenger 24"
|
||||
],
|
||||
"actual_commands": [
|
||||
"ac temp driver 24",
|
||||
"ac temp passenger 24"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:climate-fan3",
|
||||
"passed": true,
|
||||
"detail": "把空调风量调到3档",
|
||||
"expected_commands": [
|
||||
"ac fan 3"
|
||||
],
|
||||
"actual_commands": [
|
||||
"ac fan 3"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:climate-auto",
|
||||
"passed": true,
|
||||
"detail": "把空调设置为自动模式",
|
||||
"expected_commands": [
|
||||
"ac control auto"
|
||||
],
|
||||
"actual_commands": [
|
||||
"ac control auto"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:outlet-driver-left",
|
||||
"passed": true,
|
||||
"detail": "把主驾左风口调到中间位置",
|
||||
"expected_commands": [
|
||||
"outlet driver-left percent 50 50"
|
||||
],
|
||||
"actual_commands": [
|
||||
"outlet driver-left percent 50 50"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:outlet-driver-right",
|
||||
"passed": true,
|
||||
"detail": "把主驾右风口调到中间位置",
|
||||
"expected_commands": [
|
||||
"outlet driver-right percent 50 50"
|
||||
],
|
||||
"actual_commands": [
|
||||
"outlet driver-right percent 50 50"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:outlet-passenger-left",
|
||||
"passed": true,
|
||||
"detail": "把副驾左风口调到中间位置",
|
||||
"expected_commands": [
|
||||
"outlet passenger-left percent 50 50"
|
||||
],
|
||||
"actual_commands": [
|
||||
"outlet passenger-left percent 50 50"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:outlet-passenger-right",
|
||||
"passed": true,
|
||||
"detail": "把副驾右风口调到中间位置",
|
||||
"expected_commands": [
|
||||
"outlet passenger-right percent 50 50"
|
||||
],
|
||||
"actual_commands": [
|
||||
"outlet passenger-right percent 50 50"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:shade-open",
|
||||
"passed": true,
|
||||
"detail": "打开遮阳帘",
|
||||
"expected_commands": [
|
||||
"shade open"
|
||||
],
|
||||
"actual_commands": [
|
||||
"shade open"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:shade-close",
|
||||
"passed": true,
|
||||
"detail": "关闭遮阳帘",
|
||||
"expected_commands": [
|
||||
"shade close"
|
||||
],
|
||||
"actual_commands": [
|
||||
"shade close"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:shade-half",
|
||||
"passed": true,
|
||||
"detail": "把遮阳帘打开一半",
|
||||
"expected_commands": [
|
||||
"shade half"
|
||||
],
|
||||
"actual_commands": [
|
||||
"shade half"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:shade-stop",
|
||||
"passed": true,
|
||||
"detail": "停止遮阳帘",
|
||||
"expected_commands": [
|
||||
"shade stop"
|
||||
],
|
||||
"actual_commands": [
|
||||
"shade stop"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:light-indoor",
|
||||
"passed": true,
|
||||
"detail": "打开车内室内灯",
|
||||
"expected_commands": [
|
||||
"light indoor on"
|
||||
],
|
||||
"actual_commands": [
|
||||
"light indoor on"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:light-reading",
|
||||
"passed": true,
|
||||
"detail": "打开全部阅读灯",
|
||||
"expected_commands": [
|
||||
"light reading all on"
|
||||
],
|
||||
"actual_commands": [
|
||||
"light reading all on"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:light-ambient",
|
||||
"passed": true,
|
||||
"detail": "打开车内氛围灯",
|
||||
"expected_commands": [
|
||||
"light ambient on"
|
||||
],
|
||||
"actual_commands": [
|
||||
"light ambient on"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:light-brightness",
|
||||
"passed": true,
|
||||
"detail": "把氛围灯亮度调到3档",
|
||||
"expected_commands": [
|
||||
"light ambient brightness 3"
|
||||
],
|
||||
"actual_commands": [
|
||||
"light ambient brightness 3"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:window-open",
|
||||
"passed": true,
|
||||
"detail": "打开全部车窗",
|
||||
"expected_commands": [
|
||||
"window all open"
|
||||
],
|
||||
"actual_commands": [
|
||||
"window all open"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:window-close",
|
||||
"passed": true,
|
||||
"detail": "关闭全部车窗",
|
||||
"expected_commands": [
|
||||
"window all close"
|
||||
],
|
||||
"actual_commands": [
|
||||
"window all close"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:window-front-left-50",
|
||||
"passed": true,
|
||||
"detail": "把左前车窗打开到50%",
|
||||
"expected_commands": [
|
||||
"window front-left position 50"
|
||||
],
|
||||
"actual_commands": [
|
||||
"window front-left position 50"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "preset:door-rear-lock",
|
||||
"passed": true,
|
||||
"detail": "锁上后排门锁",
|
||||
"expected_commands": [
|
||||
"door rear lock"
|
||||
],
|
||||
"actual_commands": [
|
||||
"door rear lock"
|
||||
],
|
||||
"http_status": 200,
|
||||
"report_status": "validated"
|
||||
},
|
||||
{
|
||||
"id": "reject:01",
|
||||
"passed": true,
|
||||
"detail": "raw 123#0102",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "reject:02",
|
||||
"passed": true,
|
||||
"detail": "status",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "reject:03",
|
||||
"passed": true,
|
||||
"detail": "help",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "reject:04",
|
||||
"passed": true,
|
||||
"detail": "quit",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "reject:05",
|
||||
"passed": true,
|
||||
"detail": "window front-left position 101",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "reject:06",
|
||||
"passed": true,
|
||||
"detail": "ac fan 8",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "reject:07",
|
||||
"passed": true,
|
||||
"detail": "ac temp driver 17",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "reject:08",
|
||||
"passed": true,
|
||||
"detail": "seat driver horizontal forward 99",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "reject:09",
|
||||
"passed": true,
|
||||
"detail": "light ambient color 128",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "reject:10",
|
||||
"passed": true,
|
||||
"detail": "outlet driver-left percent 101 50",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "reject:11",
|
||||
"passed": true,
|
||||
"detail": "shade position 101",
|
||||
"http_status": 400
|
||||
},
|
||||
{
|
||||
"id": "monitor-only-command-gate",
|
||||
"passed": true,
|
||||
"detail": "monitor-only gateway rejects command execution",
|
||||
"http_status": 403
|
||||
},
|
||||
{
|
||||
"id": "zero-transmit-invariant",
|
||||
"passed": true,
|
||||
"detail": "dry-run suite did not transmit CAN frames",
|
||||
"before_tx": 0,
|
||||
"after_tx": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,827 @@
|
||||
{
|
||||
"suite": "vehicle_frontend_hil",
|
||||
"passed": true,
|
||||
"summary": {
|
||||
"passed": 17,
|
||||
"failed": 0,
|
||||
"total": 17
|
||||
},
|
||||
"duration_ms": 45237,
|
||||
"frontend_url": "http://127.0.0.1:8011",
|
||||
"native_url": "http://127.0.0.1:8765",
|
||||
"baseline": {
|
||||
"tx_count": 163,
|
||||
"states": {
|
||||
"0x4FA": {
|
||||
"frame_id": "0x4FA",
|
||||
"data_hex": "0A 80 AA 00 00 81 00 00",
|
||||
"domain": "seat",
|
||||
"vent": 2,
|
||||
"heat": 1,
|
||||
"massage_mode": 1,
|
||||
"massage_strength": 8,
|
||||
"sequence": 1314633,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9626111013,
|
||||
"observed_at": 1786084229.3435156
|
||||
},
|
||||
"0x342": {
|
||||
"frame_id": "0x342",
|
||||
"data_hex": "00 00 1F B1 C8 FF 37 31",
|
||||
"domain": "vehicle_gear",
|
||||
"gear_raw": 1,
|
||||
"gear": "P",
|
||||
"sequence": 1314517,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9626079269,
|
||||
"observed_at": 1786084229.312931
|
||||
},
|
||||
"0x42E": {
|
||||
"frame_id": "0x42E",
|
||||
"data_hex": "66 14 0A 03 C8 02 00 C6",
|
||||
"domain": "light",
|
||||
"front_brightness": 6,
|
||||
"rear_brightness": 6,
|
||||
"front_color": 20,
|
||||
"rear_color": 20,
|
||||
"ambient": 0,
|
||||
"indoor": 2,
|
||||
"sequence": 1312812,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9625587697,
|
||||
"observed_at": 1786084228.8202698
|
||||
},
|
||||
"0x494": {
|
||||
"frame_id": "0x494",
|
||||
"data_hex": "15 15 15 05 8C 28 20 3C",
|
||||
"domain": "seat_position",
|
||||
"initialized": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"sequence": 1312071,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9625362995,
|
||||
"observed_at": 1786084228.5947418
|
||||
},
|
||||
"0x407": {
|
||||
"frame_id": "0x407",
|
||||
"data_hex": "55 96 18 10 F5 93 02 84",
|
||||
"domain": "door",
|
||||
"front_left": 1,
|
||||
"front_right": 1,
|
||||
"rear_left": 1,
|
||||
"rear_right": 1,
|
||||
"logical": 1,
|
||||
"sequence": 1312906,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9625615956,
|
||||
"observed_at": 1786084228.8488448
|
||||
},
|
||||
"0x41A": {
|
||||
"frame_id": "0x41A",
|
||||
"data_hex": "00 00 45 08 20 22 C1 FD",
|
||||
"domain": "shade",
|
||||
"position": 0,
|
||||
"initialized": 1,
|
||||
"closed": 1,
|
||||
"action": 1,
|
||||
"location": 2,
|
||||
"thermal_protection": 0,
|
||||
"sequence": 1311822,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9625291349,
|
||||
"observed_at": 1786084228.5238948
|
||||
},
|
||||
"0x388": {
|
||||
"frame_id": "0x388",
|
||||
"data_hex": "00 00 00 00 00 00 55 00",
|
||||
"domain": "window",
|
||||
"positions": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"closed": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"sequence": 1313099,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9625669988,
|
||||
"observed_at": 1786084228.9020505
|
||||
},
|
||||
"0x404": {
|
||||
"frame_id": "0x404",
|
||||
"data_hex": "5F 65 22 6C 15 15 A5 DD",
|
||||
"domain": "climate",
|
||||
"power": 1,
|
||||
"control": 1,
|
||||
"mode": 2,
|
||||
"fan": 2,
|
||||
"driver_temp": 21,
|
||||
"passenger_temp": 21,
|
||||
"rear_temp": 165,
|
||||
"sequence": 1313550,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9625799565,
|
||||
"observed_at": 1786084229.0324008
|
||||
}
|
||||
}
|
||||
},
|
||||
"final": {
|
||||
"tx_count": 286,
|
||||
"states": {
|
||||
"0x4EB": {
|
||||
"frame_id": "0x4EB",
|
||||
"data_hex": "07 00 F0 00 01 54 7C 67",
|
||||
"domain": "vehicle_speed",
|
||||
"speed_raw": 0,
|
||||
"speed_kmh": 0.0,
|
||||
"sequence": 1468280,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9671275646,
|
||||
"observed_at": 1786084274.5100746
|
||||
},
|
||||
"0x4FA": {
|
||||
"frame_id": "0x4FA",
|
||||
"data_hex": "0A 80 AA 00 00 81 00 00",
|
||||
"domain": "seat",
|
||||
"vent": 2,
|
||||
"heat": 1,
|
||||
"massage_mode": 1,
|
||||
"massage_strength": 8,
|
||||
"sequence": 1466882,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9670865843,
|
||||
"observed_at": 1786084274.099304
|
||||
},
|
||||
"0x342": {
|
||||
"frame_id": "0x342",
|
||||
"data_hex": "00 00 1F B1 C8 FF 77 F1",
|
||||
"domain": "vehicle_gear",
|
||||
"gear_raw": 1,
|
||||
"gear": "P",
|
||||
"sequence": 1468333,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9671292513,
|
||||
"observed_at": 1786084274.525217
|
||||
},
|
||||
"0x42E": {
|
||||
"frame_id": "0x42E",
|
||||
"data_hex": "66 14 0A 03 C8 02 00 C6",
|
||||
"domain": "light",
|
||||
"front_brightness": 6,
|
||||
"rear_brightness": 6,
|
||||
"front_color": 20,
|
||||
"rear_color": 20,
|
||||
"ambient": 0,
|
||||
"indoor": 2,
|
||||
"sequence": 1465162,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9670355441,
|
||||
"observed_at": 1786084273.5876253
|
||||
},
|
||||
"0x494": {
|
||||
"frame_id": "0x494",
|
||||
"data_hex": "15 15 15 05 8C 28 20 3C",
|
||||
"domain": "seat_position",
|
||||
"initialized": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"sequence": 1465739,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9670525807,
|
||||
"observed_at": 1786084273.7587523
|
||||
},
|
||||
"0x407": {
|
||||
"frame_id": "0x407",
|
||||
"data_hex": "55 96 18 10 F5 93 02 84",
|
||||
"domain": "door",
|
||||
"front_left": 1,
|
||||
"front_right": 1,
|
||||
"rear_left": 1,
|
||||
"rear_right": 1,
|
||||
"logical": 1,
|
||||
"sequence": 1466518,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9670757939,
|
||||
"observed_at": 1786084273.9912667
|
||||
},
|
||||
"0x41A": {
|
||||
"frame_id": "0x41A",
|
||||
"data_hex": "00 00 45 08 20 22 C1 FD",
|
||||
"domain": "shade",
|
||||
"position": 0,
|
||||
"initialized": 1,
|
||||
"closed": 1,
|
||||
"action": 1,
|
||||
"location": 2,
|
||||
"thermal_protection": 0,
|
||||
"sequence": 1466795,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9670841070,
|
||||
"observed_at": 1786084274.073042
|
||||
},
|
||||
"0x388": {
|
||||
"frame_id": "0x388",
|
||||
"data_hex": "00 00 00 00 00 00 55 00",
|
||||
"domain": "window",
|
||||
"positions": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"closed": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"sequence": 1466494,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9670750738,
|
||||
"observed_at": 1786084273.9829726
|
||||
},
|
||||
"0x404": {
|
||||
"frame_id": "0x404",
|
||||
"data_hex": "5F 65 22 6C 15 15 A5 DD",
|
||||
"domain": "climate",
|
||||
"power": 1,
|
||||
"control": 1,
|
||||
"mode": 2,
|
||||
"fan": 2,
|
||||
"driver_temp": 21,
|
||||
"passenger_temp": 21,
|
||||
"rear_temp": 165,
|
||||
"sequence": 1465910,
|
||||
"can_fd": true,
|
||||
"timestamp_us": 9670577289,
|
||||
"observed_at": 1786084273.80955
|
||||
}
|
||||
}
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"id": "climate-power",
|
||||
"passed": true,
|
||||
"action": "关闭空调",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac off"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
"restore": "打开空调",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac on"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "climate-temperature",
|
||||
"passed": true,
|
||||
"action": "把空调温度调到24度",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac temp driver 24",
|
||||
"ac temp passenger 24"
|
||||
],
|
||||
"message": "2 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
"restore": "把空调温度调到21度",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac temp driver 21",
|
||||
"ac temp passenger 21"
|
||||
],
|
||||
"message": "2 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "climate-fan",
|
||||
"passed": true,
|
||||
"action": "把空调风量调到3档",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac fan 3"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
"restore": "把空调风量调到2档",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac fan 2"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "climate-control",
|
||||
"passed": true,
|
||||
"action": "把空调设置为自动模式",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac control auto"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
"restore": "把空调设置为手动模式",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac control manual"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "seat-ventilation",
|
||||
"passed": true,
|
||||
"action": "关闭主驾座椅通风",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"seat driver vent off"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
"restore": "打开主驾座椅通风",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"seat driver vent low"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "seat-heating",
|
||||
"passed": true,
|
||||
"action": "打开主驾座椅加热",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"seat driver heat low"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
"restore": "关闭主驾座椅加热",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"seat driver heat off"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "light-indoor",
|
||||
"passed": true,
|
||||
"action": "关闭车内室内灯",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"light indoor off"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
"restore": "打开车内室内灯",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"light indoor on"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "light-ambient",
|
||||
"passed": true,
|
||||
"action": "关闭车内氛围灯",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"light ambient off"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
"restore": "打开车内氛围灯",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"light ambient on"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "door-rear-lock",
|
||||
"passed": true,
|
||||
"action": "锁上后排门锁",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "accepted",
|
||||
"target_state_confirmed": false,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"door rear lock"
|
||||
],
|
||||
"message": "1 条 CAN 命令已由适配器提交;部分动作尚无目标状态反馈,请核对实体设备。"
|
||||
},
|
||||
"restore": "解锁后排门锁",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"door rear unlock"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "window-front-left",
|
||||
"passed": true,
|
||||
"action": "把左前车窗打开到50%",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"window front-left position 50"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
"restore": "关闭全部车窗",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"window all close"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "shade",
|
||||
"passed": true,
|
||||
"action": "把遮阳帘打开一半",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"shade half"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
"restore": "关闭遮阳帘",
|
||||
"restore_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"shade close"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "outlet-driver-left",
|
||||
"passed": true,
|
||||
"action": "把主驾左风口调到中间位置",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "accepted",
|
||||
"target_state_confirmed": false,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"outlet driver-left percent 50 50"
|
||||
],
|
||||
"message": "1 条 CAN 命令已由适配器提交;部分动作尚无目标状态反馈,请核对实体设备。"
|
||||
},
|
||||
"restore": null,
|
||||
"restore_result": null
|
||||
},
|
||||
{
|
||||
"id": "outlet-driver-right",
|
||||
"passed": true,
|
||||
"action": "把主驾右风口调到中间位置",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "accepted",
|
||||
"target_state_confirmed": false,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"outlet driver-right percent 50 50"
|
||||
],
|
||||
"message": "1 条 CAN 命令已由适配器提交;部分动作尚无目标状态反馈,请核对实体设备。"
|
||||
},
|
||||
"restore": null,
|
||||
"restore_result": null
|
||||
},
|
||||
{
|
||||
"id": "outlet-passenger-left",
|
||||
"passed": true,
|
||||
"action": "把副驾左风口调到中间位置",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "accepted",
|
||||
"target_state_confirmed": false,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"outlet passenger-left percent 50 50"
|
||||
],
|
||||
"message": "1 条 CAN 命令已由适配器提交;部分动作尚无目标状态反馈,请核对实体设备。"
|
||||
},
|
||||
"restore": null,
|
||||
"restore_result": null
|
||||
},
|
||||
{
|
||||
"id": "outlet-passenger-right",
|
||||
"passed": true,
|
||||
"action": "把副驾右风口调到中间位置",
|
||||
"action_result": {
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "accepted",
|
||||
"target_state_confirmed": false,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"outlet passenger-right percent 50 50"
|
||||
],
|
||||
"message": "1 条 CAN 命令已由适配器提交;部分动作尚无目标状态反馈,请核对实体设备。"
|
||||
},
|
||||
"restore": null,
|
||||
"restore_result": null
|
||||
},
|
||||
{
|
||||
"id": "live-transmit-proof",
|
||||
"passed": true,
|
||||
"before_tx": 163,
|
||||
"after_tx": 286
|
||||
},
|
||||
{
|
||||
"id": "final-state-restored",
|
||||
"passed": true,
|
||||
"differences": {},
|
||||
"restore_results": [
|
||||
{
|
||||
"utterance": "打开空调",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac on"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "把空调温度调到21度",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac temp driver 21",
|
||||
"ac temp passenger 21"
|
||||
],
|
||||
"message": "2 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "把空调风量调到2档",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac fan 2"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "把空调设置为手动模式",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac control manual"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "空调吹面吹脚",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"ac mode face-feet"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "打开主驾座椅通风",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"seat driver vent low"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "关闭主驾座椅加热",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"seat driver heat off"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "打开车内室内灯",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"light indoor on"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "打开车内氛围灯",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"light ambient on"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "解锁后排门锁",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"door rear unlock"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "关闭遮阳帘",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"shade close"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "把氛围灯亮度调到5档",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"light ambient brightness 5"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
},
|
||||
{
|
||||
"utterance": "关闭全部车窗",
|
||||
"http_status": 200,
|
||||
"success": true,
|
||||
"report_status": "confirmed",
|
||||
"target_state_confirmed": true,
|
||||
"physical_state_confirmed": false,
|
||||
"commands": [
|
||||
"window all close"
|
||||
],
|
||||
"message": "1 条 CAN 命令均收到目标状态反馈(不等同于实体机构确认)。"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user