Hoppa till huvudinnehåll

Hantera Iotnodes

Detta dokument innehåller några exempel på några vanliga API-anrop för att hantera iotnoder. En mer detaljerad beskrivning av varje endpoint finns i Swagger-dokumentationen.

Iotnodes (dvs. entites) kan interageras med på två sätt, antingen genom vanlig Yggio API eller genom NGSI v2 API. För mer information om NGSI v2 API, se NGSI-avsnittet.

Alla exempel som kräver åtkomsttoken kommer att anges som "Bearer <token>" där <token> bör ersättas med ditt eget åtkomsttoken.

Uppdatera en iotnode

I detta exempel uppdaterar vi beskrivningen av enheten.

curl -sS -X PUT https://public.yggio.net/api/iotnodes/<device_id> \
-H 'authorization: Bearer <token>' \
-H 'content-type: application/json' \
-d @- <<EOF
{
"description": "My new description"
}
EOF

Hämta iotnodes med q-query filter

Med anpassade förfrågningar (eller "q-queries") kan du utföra kraftfull filtrering av enheter.

I detta exempel använder vi en q-query för att hämta alla enheter med contextMap.Place satt till Building1.

GET https://public.yggio.net.yggio.net/api/iotnodes?q=contextMap.Place:Building1

En detaljerad guide om q-queries finns i Yggio-kontrollpanelen.

Hämta iotnodes med paginering

Maximalt 2000 iotnodes kan hämtas på en förfrågan. Paginering görs med metoden "cursor pagination".

För att använda paginering måste cursorId, cursorDirection och orderBy tillhandahållas.

Full paginering stöds endast för attributen _id, name och reportedAt.

För att använda paginering med andra attribut måste du också filtrera på attributet du sorterar efter.

För att hämta nästa sida måste du inkludera orderBy, cursorDirection=next och ställa cursorId till det attribut du sorterar efter för den sista iotnoden i föregående svar.

Exempel: orderBy=name cursorDirection=next cursorId=NameOfLastDevice

För att hämta föregående sida måste du inkludera orderBy, cursorDirection=prev och ställa cursorId till det attribut du sorterar efter för den första iotnoden i föregående svar.

Exempel: orderBy=name cursorDirection=prev cursorId=NameOfFirstDevice

Ett praktiskt exempel för att hämta ALLA iotnodes med paginering

const TOKEN = 'x'; // Auth token
const SERVER_URL = 'https://example.yggio.net';

const BASE_URL = `${SERVER_URL}/api/iotnodes?limit=1000&orderBy=_id`;

const REQUEST_OPTIONS = {
headers: {
Authorization: `Bearer ${TOKEN}`,
accept: 'application/json',
}
};

let cursorId;
let allIotnodes = [];

while (true) {

let URL = BASE_URL;

if (cursorId) {
URL = `${BASE_URL}&cursorDirection=next&cursorId=${cursorId}`;
}

const response = await fetch(URL, REQUEST_OPTIONS);

const iotnodes = await response.json();

allIotnodes = allIotnodes.concat(iotnodes);

if (iotnodes.length === 0) {
break;
}

cursorId = iotnodes[iotnodes.length - 1]._id;

}

// allIotnodes now contains all iotnodes