Dubhe GNSS测试应用平台

POST脚本

Dubhe有一个单独的HTTPs服务器接收数据,默认是19909,POST数据的JSON格式:

{
"lat":"32.12",
"lon":"105.2",
"alt":"485.8 m",
"speed":"3.2 km/h",
"sn":"YOUR_CUSTOM_SN",
"timestamp":"2026-02-14 09:39:39"
}

⚠️ 上报GPS数据成功除正确获取GPS信息外,还要求:

  1. Token必须与服务器的Token一致;
  2. 在后台填报的SN,必须与每台设备上报的SN一致;
  3. 使用mTLS验证,确保客户端从服务器下载的证书匹配,RouterOS 需导入 CA + 客户端证书/私钥。

⚠️ 要求RouterOS支持gps安装包,访问/system/gps,卫星定位需要在户外空旷地域使用,至少需要连接3颗卫星。特别提醒 室内无法连接卫星

下面是RouterOS和Linux参考的命令:

RouterOS脚本:

 :local host "YOUR_SERVER_IP"
 :local port "19909"
 :local token "YOUR_INGEST_TOKEN"
 :local sn "YOUR_CUSTOM_SN"

:local lat
:local lon
:local timestamp
:local alt
:local speed
/system gps monitor once do={
:set $lat $("latitude")
:set $lon $("longitude")
:set $timestamp $("date-and-time")
:set $alt $("altitude")
:set $speed $("speed")
}
:log info ("-----GPS get latitude:" . $lat . ",longitude:" . $lon . ",altitude:" . $alt . ",speed:" . $speed . ",timestamp:" . $timestamp)
:if ([:len $lat] = 0 || [:len $lon] = 0) do={
       :log warning "GPS empty, skip report"
       :return
}
:local json ("{\"lat\":\"" . $lat . "\",\"lon\":\"" . $lon . "\",\"alt\":\"" . $alt . "\",\"speed\":\"" . $speed . "\",\"sn\":\"" . $sn . "\",\"timestamp\":\"" . $timestamp . "\"}")
      /tool fetch \
          url=("https://" . $host . ":" . $port . "/api/ingest") \
          http-method=post \
          http-data=$json \
          http-header-field=("Content-Type: application/json","X-Token: " . $token) \
          check-certificate=yes \
         certificate=client.crt_0  \
          mode=https \
          output=none
 :log info ("GPS reported OK!")

Winbox配置

进入 /system/script 创建gps脚本,将上面的代码写入

进入 /system/scheduler 创建计划任务,每5秒上报一次GPS信息

Linux命令:

 curl -k --cert client.crt --key client.key --cacert ca.crt \
    -H "Content-Type: application/json" \
    -H "X-Token: YOUR_INGEST_TOKEN" \
    -d '{"lat":"32.12","lon":"105.2","alt":"485.8","speed":"3.2","sn":"YOUR_CUSTOM_SN","timestamp":"2026-02-14 09:39:39"}' \
    https://YOUR_SERVER:19909/api/ingest