diff --git a/cmd/bridge/main.go b/cmd/bridge/main.go index d956de3..7a6d7d3 100644 --- a/cmd/bridge/main.go +++ b/cmd/bridge/main.go @@ -18,6 +18,7 @@ import ( "github.com/AFASystems/presence/internal/pkg/logger" "github.com/AFASystems/presence/internal/pkg/model" mqtt "github.com/eclipse/paho.mqtt.golang" + "github.com/google/uuid" "github.com/segmentio/kafka-go" ) @@ -126,7 +127,10 @@ func main() { opts := mqtt.NewClientOptions() 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.SetConnectRetry(true) opts.SetConnectRetryInterval(1 * time.Second) diff --git a/go.mod b/go.mod index 42d5287..e65b589 100644 --- a/go.mod +++ b/go.mod @@ -20,6 +20,7 @@ require ( github.com/eclipse/paho.golang v0.23.0 // indirect github.com/eclipse/paho.mqtt.golang v1.5.1 // 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/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/pgx/v5 v5.6.0 // indirect diff --git a/go.sum b/go.sum index eb49d90..90a1be9 100644 --- a/go.sum +++ b/go.sum @@ -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/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= 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/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= diff --git a/scripts/adddecoder.sh b/scripts/adddecoder.sh new file mode 100755 index 0000000..6cd38d0 --- /dev/null +++ b/scripts/adddecoder.sh @@ -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"} + } + }' diff --git a/scripts/tracks.sh b/scripts/tracks.sh new file mode 100755 index 0000000..32c8b60 --- /dev/null +++ b/scripts/tracks.sh @@ -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" \ No newline at end of file