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