{"version":"pipe_v3","updated_at":"2026-05-28","layout":{"accDoor":5,"smoke":6,"gpsTime":7,"lat":8,"lon":9,"speed":10,"gpsDate":11,"sensr":12,"nudtc":13,"ems":14,"tcu":15,"abs":16},"broker":{"host":"168.107.39.21","port_tls":8883,"username":"olym_choi","client_id_rule":"olym_choi / device_{IMEI}","qos_default":1},"topics":[{"direction":"device_to_server","feature":"pipe v3 uplink (올림포스)","topic":"car/a/{IMEI}"},{"direction":"device_to_server","feature":"pipe v3 uplink (에스카)","topic":"car/b/{IMEI}"},{"direction":"device_to_server","feature":"pipe v3 uplink (모비먼트)","topic":"car/c/{IMEI}"},{"direction":"server_to_device","feature":"pipe / JSON downlink","topic":"car/{letter}/{IMEI}"}],"platform_channels":[{"letter":"a","platform":"olympos","label":"올림포스"},{"letter":"b","platform":"scar","label":"에스카"},{"letter":"c","platform":"mobiment","label":"모비먼트"}],"uplink":{"template":"0|car/a/{IMEI}|1|{approval}|{battery}|{accDoor}|{smoke}|{time}|{lat}|{lon}|{speed}|{date}|{SENSR}|...","example":"0|car/a/869016079659179|1|1|1|1|0|143025|37.4421000|126.9020000|65.00|20260528|O,F,26850,...|1,0,0,0|P1201|NONE|NONE","fields":[{"index":0,"name":"dir","desc":"0=업링크"},{"index":1,"name":"topic","desc":"car/a/{IMEI}"},{"index":2,"name":"dataCategory","desc":"1=telemetry"},{"index":3,"name":"approval","desc":"1=승인 2=미승인 (pipe parts[3])"},{"index":4,"name":"battery/end_gpio","desc":"END 배터리 GPIO"},{"index":5,"name":"accDoor","desc":"0/1/2 문 상태"},{"index":6,"name":"smoke","desc":"0/1 흡연"},{"index":7,"name":"gpsTime","desc":"HHmmss"},{"index":8,"name":"lat","desc":"위도"},{"index":9,"name":"lon","desc":"경도"},{"index":10,"name":"speed","desc":"km/h"},{"index":11,"name":"gpsDate","desc":"yyyyMMdd"},{"index":12,"name":"SENSR","desc":"OBD 15필드 CSV"},{"index":13,"name":"nudtc","desc":"DTC counts"},{"index":14,"name":"ems","desc":"EMS DTC"},{"index":15,"name":"tcu","desc":"TCU DTC"},{"index":16,"name":"abs","desc":"ABS DTC"}],"intervals":{"accPushDrivingSec":60,"accPushParkedSec":180,"endUplinkDrivingSec":120,"endUplinkParkedSec":300}},"downlink":{"pipe_template":"1|car/a/{IMEI}|1|1|{ctrl}|000000|0|0|0|00000000|{door}|","json_preferred":true,"json_example":{"cmd_id":1,"type":"battery","action":"connect"},"control_codes":[{"code":0,"action":"대기"},{"code":1,"action":"배터리 연결"},{"code":2,"action":"배터리 차단"},{"code":3,"action":"SW reset"}],"platform_commands":["approval grant/revoke","engine connect/disconnect","door open/close","dis level"]},"webhook":{"url":"https://vehicle-rawdata.pages.dev/api/mqtt/raw","method":"POST","rule_sql":"SELECT topic, payload FROM \"car/a/#\"","body_template":"{\"topic\":\"car/a/{IMEI}\",\"payload\":\"0|...\"}"},"mqtt_log_kinds":["uplink","uplink_raw","ack","downlink_echo","unknown"],"server_tables":["vehicles","mqtt_logs","fanout_log","api_request_logs"]}