Hoppa till huvudinnehåll

Lektion 3.6 Curl

curl gör samma IoT-plattforms-REST-API-anrop som Postman, men direkt från kommandoraden - perfekt för snabba tester och för skriptning eller automatisering. Denna lektion speglar Postman-lektionen med curl.

Exemplen använder två skalvariabler så att du inte behöver upprepa dig:

export YGGIO_URL="beta.yggio.net"

Övning 1 - Hämta en åtkomsttoken​

curl -sS -X POST "https://$YGGIO_URL/api/auth/local" \
-H "Content-Type: application/json" \
-d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}'

Svaret är { "token": "eyJ..." }. Fånga det i en variabel (med jq):

export YGGIO_TOKEN=$(curl -sS -X POST "https://$YGGIO_URL/api/auth/local" \
-H "Content-Type: application/json" \
-d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}' | jq -r .token)

Alla autentiserade anrop använder därefter headern Authorization: Bearer $YGGIO_TOKEN.

Övning 2 - Lista dina enheter​

curl -sS "https://$YGGIO_URL/api/iotnodes" \
-H "Authorization: Bearer $YGGIO_TOKEN" | jq .

Filtrera till enheter som har ett fält, t.ex. temperature:

curl -sS "https://$YGGIO_URL/api/iotnodes?q=temperature" \
-H "Authorization: Bearer $YGGIO_TOKEN" | jq '.[].name'

Övning 3 - Skicka ett värde till en generisk enhet​

Skapa först en generisk enhet med ett secret (se Lektion 2.3). Denna endpoint autentiserar med enhetens secret, inte Bearer-token:

curl -sS "https://$YGGIO_URL/http-push/generic?identifier=secret" \
-H "Content-Type: application/json" \
-d '{
"secret": "YOURDEVICESECRET",
"temperature": 22,
"relativeHumidity": 48
}'

Enheten uppdateras i IoT-plattformen.

Övning 4 - Uppdatera en enhet (lägg till/ta bort ett fält)​

Använd PUT /api/iotnodes/{_id} med Bearer-token, t.ex. för att lägga till ett tillfälligt secret (som används för CSV-tidsserieimport) och sedan ta bort det igen:

# lägg till ett secret
curl -sS -X PUT "https://$YGGIO_URL/api/iotnodes/DEVICE_ID" \
-H "Authorization: Bearer $YGGIO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"secret":"TEMP_SECRET"}'

# ta bort det igen
curl -sS -X PUT "https://$YGGIO_URL/api/iotnodes/DEVICE_ID" \
-H "Authorization: Bearer $YGGIO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"secret":"$unset"}'

Tips: skicka svaren genom jq för läsbar JSON, och håll din token i en miljövariabel istället för att klistra in den i varje kommando.

Vad du lärde dig​

  • Hur man hämtar en token (POST /api/auth/local) och skickar den som Authorization: Bearer.
  • Hur man läser (GET /api/iotnodes), skickar (POST /http-push/generic) och uppdaterar (PUT /api/iotnodes/{_id}) från kommandoraden.
  • Hur man skriptar dessa anrop med skalvariabler och jq.

Vart härnäst​