Hoppa till huvudinnehåll

MQTT

Yggio tillhandahåller en MQTT-broker, vilket gör det enkelt att publicera och prenumerera på realtidsdatastreamar.

Ta emot data (Som datakonsument)

Om du vill ta emot data från enheter behöver du prenumerera på ett ämne (topic) i Yggios MQTT-broker.

Format för MQTT-topic:

yggio/output/v2/[ID]/iotnode/[iotnodeId]
  • [ID]: Din identifierare – antingen ett användar-ID, klientapplikations-ID eller ID för en uppsättning grundläggande autentiseringsuppgifter (basic credentials).
  • [iotnodeId]: Det unika ID:t för IoT-noden som skickar data.

För att ta emot all data kopplad till ditt ID kan du prenumerera på:

yggio/output/v2/[ID]/#

Steg för att ta emot data:

  1. Skapa en kanal:
    Skapa en kanal med ditt användar-ID eller dina grundläggande autentiseringsuppgifter. Se denna guide för instruktioner.
  2. Autentisering:
    Autentisera dig med en användartoken. Se autentiseringssektionen nedan för ett exempel.
  3. Prenumerera på ditt topic:
    Använd en MQTT-klient för att prenumerera. Här är ett exempel med mosquitto, men vilken MQTT-klient som helst fungerar.

Exempel:

mosquitto_sub -h mqtt.yggio.net -p 8883  -u "<ditt-userID>" -P "<din-access-token>"  -t "yggio/output/v2/<ditt-userID>/#"

Skicka data (Som dataleverantör)

För att skicka data till Yggio via MQTT behöver du registrera autentiseringsuppgifter för enheten samt ett topic där enheten publicerar data.

Format för MQTT-topic:

yggio/generic/v2/[ditt-sub-topic]/[valfritt-sub-topic]

Steg för att skicka data:

  1. Skapa ett "Basic Credentials Set": Detta görs genom att skapa en uppsättning grundläggande autentiseringsuppgifter (basic credentials set) via Yggios REST API. Se denna guide för instruktioner.

  2. Reservera ett MQTT-topic:
    Detta topic identifierar datakällan (din enhet eller tjänst) i Yggio. Hur du reserverar ett MQTT-topic →

  3. Publicera din data
    Börja skicka data i JSON-format till ditt reserverade topic.

    Exempel JSON payload:

      {
    "temperature": 23.5,
    "unit": "C"
    }
  4. Varför det reserverade topic är viktigt Yggio använder detta topic för att koppla data till en specifik enhetsentitet. Topic sparas som ett hemligt fält och gör det möjligt att göra anspråk på enheten senare i Yggios användargränssnitt.

Autentisering

För att hämta en användartoken måste du göra en inloggningsförfrågan. Du hittar detaljerad information i vår Swagger-dokumentation.

Här är ett exempel på ett curl-kommando du kan modifiera och använda:

curl -X 'POST'   'https://YGGIO_DOMAIN/api/auth/local'   -H 'accept: application/json'   -H 'Content-Type: application/json'   -d '{
"username": "DITT_ANVÄNDARNAMN",
"password": "DITT_LÖSENORD"
}'

Vid lyckad inloggning får du ett svar som ser ut så här:

{
"token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6..."
}

Denna token är avgörande för att få åtkomst till autentiserade slutpunkter och hämta data säkert. Se till att lagra den säkert och använda den i kommande förfrågningar.


basicCredentialsSet

I situationer där det inte är möjligt för klienten att uppdatera token under en prenumeration, kan du koppla kanalen till en "uppsättning grundläggande autentiseringsuppgifter". Nedan visas ett exempel på hur du skapar en sådan uppsättning samt ett fungerande mosquitto_sub-kommando.

curl -X 'POST' \
'https://staging.yggio.net/api/basic-credentials-sets' \
-H 'accept: application/json' \
-H 'Authorization: Bearer DITT_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"username": "Min_basicCredentialsSet",
"password": "väldigt-hemligt-lösenord"
}'

Svar:

{
"_id": "123456789abcdef",
"username": "Min_basicCredentialsSet"
}

Använd _id i mosquitto_sub:

mosquitto_sub -h mqtt.staging.yggio.net -t "yggio/output/v2/123456789abcdef/#" -u Min_basicCredentialsSet -P väldigt-hemligt-lösenord 

reservedMqttTopic

Exempel på hur man skapar ett reserverat MQTT-topic och använder det med mosquitto_pub:

curl -X 'POST' \
'https://staging.yggio.net/api/reserved-mqtt-topics' \
-H 'accept: application/json' \
-H 'Authorization: Bearer DITT_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"topic": "yggio/generic/v2/any/unique/topic/321",
"basicCredentialsSetId": "123456789abcdefg"
}'

Svar:

{
"_id": "abababababa1212121212",
"topic": "yggio/generic/v2/any/unique/topic/321"
}

Publicera:

mosquitto_pub -h mqtt.staging.yggio.net -u "Min_basicCredentialsSet" -P "väldigt-hemligt-lösenord" -t "yggio/generic/v2/any/unique/topic/321" -m '{"health":"running"}'

Generiska enheter

För generiska enheter fungerar det reserverade MQTT-topic som identifierare för den skapade entiteten i Yggio. Användaren kan "claim:a" denna entitet i UI genom att ange secret-värdet under installation.

När den har blivit claim:ad ärver entiteten rättigheterna från basicCredentialsSet.

Exempel

Exempel 1 – Enkel enhet

// basicCredentialsSet
{
_id: '123456789abcdefg'
username: 'min-enhet',
password: 'väldigt-hemligt-lösenord'
}

// reservedMqttTopic
{
topic: 'yggio/generic/v2/any/unique/topic/321',
basicCredentialsSetId: '123456789abcdefg'
}

Publiceringar:

mosquitto_pub -h mqtt.staging.yggio.net -u "min-enhet" -P "väldigt-hemligt-lösenord" -t "yggio/generic/v2/any/unique/topic/321" -m '{"health":"running"}'
mosquitto_pub -h mqtt.staging.yggio.net -u "min-enhet" -P "väldigt-hemligt-lösenord" -t "yggio/generic/v2/any/unique/topic/321/stats" -m '{"battery":100, "antennaStatus": "sending"}'
mosquitto_pub -h mqtt.staging.yggio.net -u "min-enhet" -P "väldigt-hemligt-lösenord" -t "yggio/generic/v2/any/unique/topic/321/temperature" -m '{"value":22}'

Alla ovanstående publiceringar kommer att resultera i uppdateringen eller skapandet av nedanstående entitet. Resultat:

{
_id: 'abababababa1212121212',
secret: 'yggio/generic/v2/any/unique/topic/321',
health: "running",
stats: { antennaStatus: "sending", battery: 100 },
temperature: { value: 22 }
}

Exempel 2 – Gateway eller "moln" med sub-noder

// basicCredentialsSet
{
_id: '123456789abcdefg',
username: 'min-gateway',
password: 'väldigt-hemligt-lösenord'
}

// reservedMqttTopics
[
{ topic: 'yggio/generic/v2/any/unique/gatewaytopic/4321', basicCredentialsSetId: '123456789abcdefg' },
{ topic: 'yggio/generic/v2/any/unique/gatewaytopic/4321/devices/1', basicCredentialsSetId: '123456789abcdefg' },
{ topic: 'yggio/generic/v2/any/unique/gatewaytopic/4321/devices/2', basicCredentialsSetId: '123456789abcdefg' }
]
Publiceringar:
mosquitto_pub -h mqtt.staging.yggio.net -u "min-gateway" -P "väldigt-hemligt-lösenord" -t "yggio/generic/v2/any/unique/gatewaytopic/4321" -m '{"health":"running"}'
mosquitto_pub -h mqtt.staging.yggio.net -u "min-gateway" -P "väldigt-hemligt-lösenord" -t "yggio/generic/v2/any/unique/gatewaytopic/4321/devices/1" -m '{"lightSwitch": "on"}'
mosquitto_pub -h mqtt.staging.yggio.net -u "min-gateway" -P "väldigt-hemligt-lösenord" -t "yggio/generic/v2/any/unique/gatewaytopic/4321/devices/2" -m '{"lightSwitch": "off"}'

Alla ovanstående publiceringar kommer att resultera i uppdateringen eller skapandet av nedanstående entiteter.

{
_id: 'aaaaaaaaaaa111111111111'
secret: 'yggio/generic/v2/any/unique/gatewaytopic/4321',
health: "running",
}
{
_id: 'bbbbbbbbbbbb22222222222'
secret: 'yggio/generic/v2/any/unique/gatewaytopic/4321/devices/1',
lightSwitch: "on",
}
{
_id: 'cccccccccccc33333333333'
secret: 'yggio/generic/v2/any/unique/gatewaytopic/4321/devices/2',
lightSwitch: "off",
}

Värt att notera är att en publicering till t.ex. .../devices/1 skulle inte skapa en ny entitet. Istället skulle den uppdatera gatewayn i det här fallet. Detta beror på att det inte har funnits en "reservation" för det ämnet, dvs. inget reserveratMqttTopic existerar.

Så en publicering på detta viset...

mosquitto_pub -h mqtt.staging.yggio.net -u "my-gateway-name" -P "very-very-super-secret-password" -t "yggio/generic/v2/any/unique/gatewaytopic/4321/devices/3" -m '{"lightSwitch": "on"}'

...skulle uppdatera en enhet till...

{
secret: 'yggio/generic/v2/any/unique/gatewaytopic/4321',
health: "running",
}

...to this...

{
_id: 'aaaaaaaaaaa111111111111'
secret: 'yggio/generic/v2/any/unique/gatewaytopic/4321',
health: "running",
devices: {
3: {
lightSwitch: "on"
}
}
}

Generellt MQTT-kommando

{
"name": "<Connector namn>",
"basicCredentialsSetId": "<basicCredentialsSetId>",
"integration": "Generic"
}

I denna JSON-konfiguration:

  • "name": Ange ett namn för din connector.
  • "basicCredentialsSetId": Ange ID:t för den uppsättning grundläggande autentiseringsuppgifter som ska användas.

Alternativt, så kan du konfigurera connectorn att använda en extern MQTT-broker för downlink-kommunikation:

{
"name": "<Connector namn>",
"mqttServer": {
"host": "mqtt.example.org",
"port": <1883 eller 8883>,
"protocol": "mqtt or mqtts",
"username": "<Användarnamn>",
"password": "<Lösenord>"
},
"downlink": {
"topic": "<mqtt-topic>"
},
"integration": "Generic"
}
  • "name": Ange ett namn för din connector.
  • "mqttServer": Ange detaljerna för din externa MQTT-broker,
    • Exempel: värd, port, protokoll, användarnamn och lösenord.
  • "downlink": Ange MQTT-topic där downlink-meddelanden kommer att skickas.
  • "integration": Ange integrationstypen, som i detta fall är "Generic".

För att skicka downlink kommandon till en connector via Yggios interna MQTT-broker, följ dessa steg:

  • Skapa en uppsättning grundläggande autentiseringsuppgifter (basic credentials set) med hjälp av Yggios REST API. input:

    curl --location "https://$YGGIO_URL/api/basic-credentials-sets" \
    --header "Authorization: Bearer $YGGIO_TOKEN" \
    --header "Content-Type: application/json" \
    --data '{
    "username": "MittAnvändarnamn",
    "password": "MittLösenord"
    }'

    output:

    {
    "_id": "64d5f0fa0c5b9c88f70c6ff0",
    "username": "MittAnvändarnamn",
    "password": "MittLösenord"
    }
  • Skapa en connector med hjälp av Yggios REST API. input:

    curl --location "https://$YGGIO_URL/api/connectors" \
    --header "Authorization: Bearer $YGGIO_TOKEN" \
    --header "Content-Type: application/json" \
    --data '{
    "name": "MinConnector",
    "basicCredentialsSetId": "64d5f0fa0c5b9c88f70c6ff0",
    "integration": "Generic"
    }'

    output:

    {"_id":"64d5f1260c5b9c88f70c6ff5","name":"MinConnector","basicCredentialsSetId":"64d5f0fa0c5b9c88f70c6ff0","integration":"Generic"}
  • Prenumerera på topic yggio/push/v1/<BasicCredentialsSetId>/#

mosquitto_sub -v -h "mqtt.$YGGIO_URL" -u "MittAnvändarnamn" -P "MittLösenord" -t "yggio/push/v1/64d5f0fa0c5b9c88f70c6ff0/#"

Skicka kommando:

curl --location --request PUT "https://$YGGIO_URL/api/connectors/command" \
--header "Authorization: Bearer $YGGIO_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"command": "sendDownlink",
"integrationName": "Generic",
"connectorId": "64d5f1260c5b9c88f70c6ff5",
"data": {
"mqttTopic": "subTopic",
"message": "mittMeddelande"
}
}'

Utdata från kommandot:

yggio/push/v1/64d5f0fa0c5b9c88f70c6ff0/subTopic mittMeddelande

Glöm inte att ersätta $YGGIO_URL med den faktiska URL:en för din Yggio-server.

Axis-installation

Börja med att ansluta din Axis-kamera till ström och nätverk (ethernet).

Identifiera IPv4-adressen för den anslutna kameran och gå till https://[KAMERA-IP] från en dator som är ansluten till samma nätverk.

root-password

Logga in.

Gå till:

  1. Enhetsvy (Device view)
  2. Underhåll (Maintenance)
    axis-maintenance

Följ instruktionerna för att uppdatera firmware. Yggio stödjer upp till version 10.8.x.


Axis-prenumeration till MQTT

  1. Gå till vårt REST API via Swagger
  2. Auktorisera dig via POST /auth/local
  3. Ta token från svaret och klistra in det i Authorize
  4. Scrolla ner till BasicCredentialsSets och gör ett POST /basic-credentials-sets
  5. Spara användarnamn, lösenord och basicCredentialsSetId på en säker plats
  6. Spara _id från svaret och använd det i nästa steg
  7. Gå till POST /reserved-mqtt-topics, klistra in _id i basicCredentialsSetId
  8. Använd yggio/generic/v2 följt av dina egna ämnen (topics), separerade med /
    Se MQTT (data provider) för exempel

Axis-kamerans lokala webbgränssnitt

  1. Enhetsvy (Device View)
  2. MQTT
  3. Värd (host): staging.yggio.net
  4. Protokoll: MQTT över TCP
  5. Port: 1883
  6. Användarnamn från BasicCredentialsSets
  7. Lösenord från BasicCredentialsSets
  8. Spara
  9. Anslut
    axis-mqtt-connect

Axis-händelser

  1. Enhetsvy (Device View)
  2. Händelser (Events)
  3. MQTT-händelser
  4. Use default condition prefixAV (OFF)
  5. Klistra in ämnet (topic) från föregående steg
  6. Lägg till ett villkor och välj A3DPCCountingEvent
  7. Spara
    axis-mqtt-events

Axis-uppskattad beläggning

  1. Beläggning (Occupancy)
  2. Uppskatta beläggningPÅ (ON)
  3. Tillåt händelserPÅ (ON)
    axis-occupancy

Axis-räknare

Du kommer att se data som skickas från enheten här:
counter


Konfigurera enhet i Yggio

När ovanstående steg är genomförda och enheten har skickat sitt första meddelande till det reserverade MQTT-topic, kommer en enhet att skapas i Yggio.

  • Enhetens namn: MQTT - <det topic du valt>
  • Ange modellnamn: axis-p8815-2-3d-people-counter
    device-monitor

Gå till fliken Data, där hittar du din peopleCounter-data.