| @@ -18,6 +18,7 @@ import ( | |||||
| "github.com/AFASystems/presence/internal/pkg/logger" | "github.com/AFASystems/presence/internal/pkg/logger" | ||||
| "github.com/AFASystems/presence/internal/pkg/model" | "github.com/AFASystems/presence/internal/pkg/model" | ||||
| mqtt "github.com/eclipse/paho.mqtt.golang" | mqtt "github.com/eclipse/paho.mqtt.golang" | ||||
| "github.com/google/uuid" | |||||
| "github.com/segmentio/kafka-go" | "github.com/segmentio/kafka-go" | ||||
| ) | ) | ||||
| @@ -126,7 +127,10 @@ func main() { | |||||
| opts := mqtt.NewClientOptions() | opts := mqtt.NewClientOptions() | ||||
| opts.AddBroker(fmt.Sprintf("tcp://%s:%d", cfg.MQTTHost, 1883)) | opts.AddBroker(fmt.Sprintf("tcp://%s:%d", cfg.MQTTHost, 1883)) | ||||
| opts.SetClientID("go_mqtt_client") | |||||
| cId := fmt.Sprintf("bridge-%s", uuid.New().String()) | |||||
| opts.SetClientID(cId) | |||||
| opts.SetAutoReconnect(true) | opts.SetAutoReconnect(true) | ||||
| opts.SetConnectRetry(true) | opts.SetConnectRetry(true) | ||||
| opts.SetConnectRetryInterval(1 * time.Second) | opts.SetConnectRetryInterval(1 * time.Second) | ||||
| @@ -20,6 +20,7 @@ require ( | |||||
| github.com/eclipse/paho.golang v0.23.0 // indirect | github.com/eclipse/paho.golang v0.23.0 // indirect | ||||
| github.com/eclipse/paho.mqtt.golang v1.5.1 // indirect | github.com/eclipse/paho.mqtt.golang v1.5.1 // indirect | ||||
| github.com/felixge/httpsnoop v1.0.3 // indirect | github.com/felixge/httpsnoop v1.0.3 // indirect | ||||
| github.com/google/uuid v1.6.0 // indirect | |||||
| github.com/jackc/pgpassfile v1.0.0 // indirect | github.com/jackc/pgpassfile v1.0.0 // indirect | ||||
| github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect | github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect | ||||
| github.com/jackc/pgx/v5 v5.6.0 // indirect | github.com/jackc/pgx/v5 v5.6.0 // indirect | ||||
| @@ -17,6 +17,8 @@ github.com/eclipse/paho.mqtt.golang v1.5.1 h1:/VSOv3oDLlpqR2Epjn1Q7b2bSTplJIeV2I | |||||
| github.com/eclipse/paho.mqtt.golang v1.5.1/go.mod h1:1/yJCneuyOoCOzKSsOTUc0AJfpsItBGWvYpBLimhArU= | github.com/eclipse/paho.mqtt.golang v1.5.1/go.mod h1:1/yJCneuyOoCOzKSsOTUc0AJfpsItBGWvYpBLimhArU= | ||||
| github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= | github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= | ||||
| github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= | github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= | ||||
| github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= | |||||
| github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | |||||
| github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= | github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= | ||||
| github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= | github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= | ||||
| github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= | github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= | ||||
| @@ -0,0 +1,16 @@ | |||||
| #!/bin/bash | |||||
| SERVER_URL="http://localhost:1902" | |||||
| curl -X POST "${SERVER_URL}/configs/beacons" \ | |||||
| -H "Content-Type: application/json" \ | |||||
| -d '{ | |||||
| "name": "Eddystone", | |||||
| "min": 4, | |||||
| "max": 255, | |||||
| "pattern": ["0x16", "0xAA", "0xFE", "0x20"], | |||||
| "configs": { | |||||
| "battery": {"offset": 6, "length": 2, "order": "bigendian"}, | |||||
| "temperature": {"offset": 8, "length": 2, "order": "fixedpoint"} | |||||
| } | |||||
| }' | |||||
| @@ -0,0 +1,61 @@ | |||||
| #!/bin/bash | |||||
| # Server URL | |||||
| SERVER_URL="http://localhost:1902" | |||||
| TRACKER_UUID="1a6c6f1e-9a3d-4a66-9f0b-6d5f0e1c1a01" | |||||
| echo "===================================" | |||||
| echo "Tracks API Query Examples" | |||||
| echo "===================================" | |||||
| echo "" | |||||
| echo "1. Basic query (default: last 10 tracks from last 24 hours):" | |||||
| echo "GET /reslevis/getTracks/${TRACKER_UUID}" | |||||
| curl -s -X GET "${SERVER_URL}/reslevis/getTracks/${TRACKER_UUID}" | jq '.' | |||||
| echo -e "\n" | |||||
| echo "2. Get last 50 tracks:" | |||||
| echo "GET /reslevis/getTracks/${TRACKER_UUID}?limit=50" | |||||
| curl -s -X GET "${SERVER_URL}/reslevis/getTracks/${TRACKER_UUID}?limit=50" | jq '.' | |||||
| echo -e "\n" | |||||
| echo "3. Get tracks from the last 7 days (limit 20):" | |||||
| FROM_DATE=$(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ) | |||||
| TO_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) | |||||
| echo "GET /reslevis/getTracks/${TRACKER_UUID}?from=${FROM_DATE}&to=${TO_DATE}&limit=20" | |||||
| curl -s -X GET "${SERVER_URL}/reslevis/getTracks/${TRACKER_UUID}?from=${FROM_DATE}&to=${TO_DATE}&limit=20" | jq '.' | |||||
| echo -e "\n" | |||||
| echo "4. Get tracks from a specific date range:" | |||||
| FROM_DATE="2026-01-20T00:00:00Z" | |||||
| TO_DATE="2026-01-21T23:59:59Z" | |||||
| echo "GET /reslevis/getTracks/${TRACKER_UUID}?from=${FROM_DATE}&to=${TO_DATE}&limit=10" | |||||
| curl -s -X GET "${SERVER_URL}/reslevis/getTracks/${TRACKER_UUID}?from=${FROM_DATE}&to=${TO_DATE}&limit=100" | jq '.' | |||||
| echo -e "\n" | |||||
| echo "5. Get tracks from today only:" | |||||
| FROM_DATE=$(date -u -d 'today 00:00:00' +%Y-%m-%dT%H:%M:%SZ) | |||||
| TO_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) | |||||
| echo "GET /reslevis/getTracks/${TRACKER_UUID}?from=${FROM_DATE}&to=${TO_DATE}&limit=10" | |||||
| curl -s -X GET "${SERVER_URL}/reslevis/getTracks/${TRACKER_UUID}?from=${FROM_DATE}&to=${TO_DATE}" | jq '.' | |||||
| echo -e "\n" | |||||
| echo "6. Get tracks from the last hour:" | |||||
| FROM_DATE=$(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) | |||||
| TO_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) | |||||
| echo "GET /reslevis/getTracks/${TRACKER_UUID}?from=${FROM_DATE}&to=${TO_DATE}&limit=5" | |||||
| curl -s -X GET "${SERVER_URL}/reslevis/getTracks/${TRACKER_UUID}?from=${FROM_DATE}&to=${TO_DATE}&limit=5" | jq '.' | |||||
| echo -e "\n" | |||||
| echo "7. Raw JSON output (no jq formatting):" | |||||
| curl -s -X GET "${SERVER_URL}/reslevis/getTracks/${TRACKER_UUID}?limit=2" | |||||
| echo -e "\n" | |||||
| echo "===================================" | |||||
| echo "Query Parameters Summary:" | |||||
| echo "===================================" | |||||
| echo "limit - Maximum number of tracks to return (default: 10)" | |||||
| echo "from - Start timestamp in RFC3339 format (default: 24 hours ago)" | |||||
| echo "to - End timestamp in RFC3339 format (default: now)" | |||||
| echo "" | |||||
| echo "Note: Replace '${TRACKER_UUID}' with an actual tracker UUID" | |||||
| echo " You can get tracker UUIDs from: GET /reslevis/getTrackers" | |||||