MQTT API
Version 2.0
MQTT-integrationen publicerar data relaterad till en organisation. Även om HTTP API är bra för att hämta historisk data och aktuellt tillstånd, är MQTT API mer lämpat om du omedelbart vill agera på en händelse.
Anslutningsinformation
- MQTT Version: 3.1.1
- Host:
mqtt.bintel.se
- Port: 8883
- SSL/TLS: Ja, TLS v1.2 eller TLS v1.3
- Certifikat: CA signerat servercertifikat
Din applikation bör implementeras för att hantera korta avbrott i tjänsten. Server kan starta om utan föregående meddelande under korta perioder för att tillämpa uppdateringar eller ladda om certifikat. För att hantera detta rekommenderas att din applikation har en funktion för automatisk återanslutning.
Om ni har "clean session" inställd på "false" kommer servern att bevara din session och lagra meddelanden i kö på dina QoS 1- och 2-prenumerationer i upp till 24 timmar.
Autentisering
- Användarnamn:
[Organizations-ID]
- Lösenord:
[API Nyckel]
- Klient-ID:
[Organizations-ID]:*
Ditt Organizations-ID finns under insights.bintel.se/settings, det är också här du hanterar dina API-nycklar.
MQTT Klient-ID måste börja med Organisations-ID följt av :
. Detta förhindrar olika användare från att störa varandra genom att använda samma Klient-ID.
Prenumeration
Meddelanden kommer att skickas med ett ämne med följande basformat:
v2/[Organizations-ID]/
Om ni vill prenumerera på all data för er organisation kan ni prenumerera på
v2/[Organizations-ID]/#
Detta är det mest generiska ämnet som en kund får prenumerera på. Vi rekommenderar dock inte att använda detta ämne eftersom nya meddelandetyper kan tillkomma i framtiden.
Meddelandetyper
Nedan följer en lista över de olika meddelandetyperna som publiceras av tjänsten. Nyttolasten kommer alltid att vara i JSON-format och följer schemat som refereras till i varje typ nedan.
Alla meddelanden publiceras med QoS 2 men ni kan välja att prenumerera med vilken tjänstkvalitet som bäst passar ditt use-case.
Behållarhändelser
Skickas av: Server
Ämne: v2/[Organizations-ID]/container/event/[Behållare-ID]/
Schema: container-event.schema.json
Detaljerad beskrivning av händelser från en behållare finns här.
Exempel:
{
"time": "2021-12-24T08:00:00.000Z",
"container": {
"id": "5d5575d638817e246cef4d0b",
"name": "Example Container",
"externalId": "CON123",
"coordinates": { "latitude": 55.716994, "longitude": 13.225053, "altitude": 0 },
"devices": [
{ "id": "5d7a0b958086466694f5be78", "bintelId": "123456" }
],
},
"event": {
"eventType": "pickup-requested"
}
}
Behållaruppdateringar
Skickas av: Server
Ämne: v2/[Organizations-ID]/container/update/[Behållare-ID]
Schema: container-update.schema.json
Detaljerad beskrivning av data från en behållare finns här. Även om flera datauppdateringar sker samtidigt skickas de fortfarande som separata meddelanden.
Exempel:
{
"time": "2021-12-24T08:00:00.000Z",
"container": {
"id": "5d5575d638817e246cef4d0b",
"name": "Example Container",
"externalId": "CON123",
"coordinates": { "latitude": 55.716994, "longitude": 13.225053, "altitude": 0 },
"devices": [
{ "id": "5d7a0b958086466694f5be78", "bintelId": "123456" }
],
},
"update": {
"tag": "fill-percent",
"value": 0.6
}
}
Behållarrapport
Skickas av: Klient
Ämne: v2/[Organizations-ID]/container/report
Schema: container-report.schema.json
Antingen id
eller "externalId
måste finnas för att identifiera behållaren.
Tillgängliga rapporttyper kan hittas här.
time
bör ange det ögonblick då rapporten ursprungligen skapades.
source
är valfritt men rekommenderas. Den används för att ange källan till rapporten. Som i det här exemplet genererades rapporten från ett system i en lastbil som utförde en tömning. Det finns inga hårda begränsningar för detta fält men det bör hållas konsekvent, dvs så länge källan är densamma bör detta värde inte ändras.
weight
är också ett valfritt fält och kan användas för att leverera viktinformation till systemet när det är tillgängligt. Vikten ska vara i kilogram. Om ingen viktdata finns tillgänglig bör detta fält utelämnas.
discrepancies
är också ett valfritt fält och kan användas för att tillhandahålla avvikelser associerade med upphämtningen. Avvikelsenamnen bör vara konsekventa för samma avvikelsetyp men behöver inte följa en fördefinierad uppsättning. Avvikelser kan rapporteras i samband med alla typer av rapporter.
Exempel:
{
"id": "5d5575d638817e246cef4d0b",
"time": "2019-12-24T08:00:00.000Z",
"reportType": "pickup-performed",
"source": "in-truck-computer",
"weight": 42.0,
"discrepancies": ["littering"]
}
eller
{
"externalId": "CON123",
"time": "2019-12-24T08:00:00.000Z",
"reportType": "pickup-performed",
"source": "in-truck-computer",
"weight": 42.0,
"discrepancies": ["overfilled"]
}