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. entiteter) kan interageras med på två sätt, antingen genom det vanliga Yggio-API:et eller genom NGSI-API:et. För mer information om NGSI-API:et, 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://staging.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://staging.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