#!rsc # RouterOS script: gps-track # Copyright (c) 2018-2019 Christian Hesse <mail@eworm.de> # # track gps data by sending json data to http server :global Identity; :global GpsTrackUrl; :local CoordinateFormat [ /system gps get coordinate-format ]; :local Gps [ / system gps monitor once as-value ]; if ($Gps->"valid" = true) do={ # TODO: remove workaround when trailing zero bytes are gone :if ([ :find ($Gps->"latitude") "\00" ] > 0) do={ :set ($Gps->"latitude") [ :pick ($Gps->"latitude") 0 [ :find ($Gps->"latitude") "\00" ] ]; } :if ([ :find ($Gps->"longitude") "\00" ] > 0) do={ :set ($Gps->"longitude") [ :pick ($Gps->"longitude") 0 [ :find ($Gps->"longitude") "\00" ] ]; } :tool fetch check-certificate=yes-without-crl \ $GpsTrackUrl keep-result=no \ http-method=post http-header-field="Content-Type: application/json" \ http-data=("{" . \ "\"lat\":\"" . ($Gps->"latitude") . "\"," . \ "\"lon\":\"" . ($Gps->"longitude") . "\"," . \ "\"identity\":\"" . $Identity . "\"" . \ "}"); :log debug ("Sending GPS data in " . $CoordinateFormat . " format: " . \ "lat: " . ($Gps->"latitude") . " " . \ "lon: " . ($Gps->"longitude")); } else={ :log debug ("GPS data not valid."); }