Konfigurera Azure IoT Edge för Azure Sphere

Azure IoT Edge tillhandahåller ett filtrerings- och databehandlingslager mellan en nedströms enhet, till exempel Azure Sphere och Azure IoT Hub. Överväg att använda Azure IoT Edge om din Azure Sphere-enhet producerar en stor mängd data eller data som kräver efterbearbetning.

I det här avsnittet beskrivs stegen för att konfigurera en Azure IoT Edge-enhet med Azure Sphere. Azure Sphere stöder både versionerna 1.1 och 1.2 av Azure IoT Edge. Det finns betydande skillnader i anvisningarna. De viktigaste skillnaderna är:

  • Paketnamnet har ändrats från iotedge till aziot-edge.
  • Standardkonfigurationsfilen har ett nytt namn och en ny plats. I Azure IoT Edge 1.1 var konfigurationsfilen /etc/iotedge/config.yaml. I Azure IoT Edge 1.2 är konfigurationsfilen /etc/aziot/config.toml.
  • Azure IoT Edge 1.2 kräver ett fullständigt kvalificerat domännamn (FQDN) som är tillgängligt via en DNS-server i nätverket.

När du har slutfört uppgifterna i det här avsnittet konfigureras Azure Sphere-enheten för att skicka data till en Azure IoT Hub via en Azure IoT Edge-enhet som fungerar som en transparent gateway. Du kan lägga till ytterligare datafiltrering och bearbetning med en modul på Azure IoT Edge-enheten genom att följa Azure IoT Edge Module-guiden.

Innan du börjar

Stegen i det här avsnittet förutsätter att:

  • Din Azure Sphere-enhet är ansluten till datorn via USB.
  • Du har en Azure-prenumeration.
  • Du har skapat en Azure IoT Hub instans och manuellt etablerat en enhet. Observera att du måste använda katalogen CA-certifikatet för IoT Hub senare i proceduren (steg 6).
  • Du har skapat en resursgrupp och alla resurser som är relaterade till Azure IoT Hub- och IoT Edge-tjänsterna måste tillhöra resursgruppen.

Viktigt

Även om du kan skapa en Azure-prenumeration utan kostnad måste du ange ett kreditkortsnummer för registreringen. Azure tillhandahåller flera nivåer av prenumerationstjänst. Standardnivån, som kräver en månatlig serviceavgift, väljs som standard när du skapar en Azure IoT Hub instans. Om du vill undvika en månadskostnad väljer du den kostnadsfria nivån. På nivån Kostnadsfri ingår de tjänster som krävs för att använda din enhet med en Azure IoT Hub instans, inklusive Enhetstvilling. Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

Översikt

För att konfigurera en Azure IoT Edge enhet och konfigurera den så att den fungerar med en Azure Sphere-enhet krävs en process i flera steg och du bör planera cirka 8 timmar för att arbeta igenom stegen, särskilt om du inte är bekant med Azure IoT Edge. Om det är första gången du arbetar med Azure IoT Edge följer du snabbstartsinstruktionerna i varje avsnitt för att konfigurera en IoT Edge enhet som körs på en virtuell Linux-dator.

De här stegen måste bara slutföras en gång per Azure Sphere-katalog och Azure IoT Edge-enhet. Varje Azure Sphere-enhet måste dock konfigureras manuellt i Azure IoT Hub och Azure IoT Edge-enheten måste anges som överordnad Azure Sphere-enheten.

Installationsstegen kan delas upp i tre logiska grupper:

  • Skapa och konfigurera IoT Edge-enheten som en transparent gateway

    • Steg 1. Skapa en Azure IoT Edge enhet.
    • Steg 2. Konfigurera Azure IoT Edge gateway-enheten som en server.
    • Steg 3. Öppna Azure IoT Edge gatewayenhetsportar för kommunikation.
    • Steg 4. Uppdatera gatewayens värdnamn i config.toml (Azure IoT Edge version 1.2) eller config.yaml (Azure IoT Edge version 1.1).
  • Konfigurera Azure Sphere-enheten i Azure IoT Hub

    • Steg 5. Ange Azure IoT Edge-enheten som överordnad Azure Sphere-enheten.
  • Upprätta en betrodd anslutning mellan Azure Sphere-enheten och den IoT Edge enheten

    • Steg 6. Ange ca-certifikatet för katalogen för Azure Sphere-enheten till Azure IoT Edge-enheten.
    • Steg 7. Ange rotcertifikatutfärdarcertifikatet för Azure IoT Edge-enhet till Azure Sphere-enheten.

Steg 1. Skapa en Azure IoT Edge-enhet

Du måste konfigurera en Azure IoT Edge-enhet och registrera den med Azure IoT Hub, om du inte redan har gjort det.

Du kan använda DPS (Device Provisioning Service) för att tillhandahålla Azure IoT Edge-enheten. Du kan dock inte använda DPS för att etablera Azure Sphere-enheten. Automatisk etablering av enheter nedströms Azure IoT Edge-enheten med Azure IoT Hub DPS stöds inte.

Du kan följa stegen i IoT Edge Snabbstart för att konfigurera en Azure IoT Edge-enhet som körs på en virtuell Linux-dator eller Windows-enhet och registrera den med Azure IoT Hub.

Följ anvisningarna i Snabbstart för att:

  • Registrera en Azure IoT Edge-enhet till din Azure IoT Hub instans. Skapa inte en ny IoT-hubb i det här steget, registrera bara din Azure IoT Edge-enhet på den IoT-hubb som du redan har skapat.
  • Installera och starta Azure IoT Edge körning på din Azure IoT Edge-enhet.

Observera

I IoT Edge Snabbstart slutar du innan du distribuerar en modul.

Steg 2. Konfigurera IoT Edge gatewayenhet som en server

Följ anvisningarna för att konfigurera en Azure IoT Edge-enhet för att fungera som en transparent gateway (Azure IoT Edge 1.2) eller Azure IoT Edge 1.1, men sluta när du kommer till avsnittet "Öppna portar på gatewayenhet". Även om de här anvisningarna bestämmer dig för att kopiera certifikatfilerna till din IoT Edge enhet ska du inte kopiera filerna till den virtuella datorn förrän i steg 8 i den här proceduren.

Som en del av stegen du slutförde för att konfigurera enhetsgatewayen som en server har du redan:

  • Konfigurerat Azure IoT Edge enhetscertifikat.
  • Distribuerade Azure IoT Edge hubb-modulen.
  • Konfigurerad dirigering av meddelanden via Azure IoT Edge.

Som en del av de här stegen har du också skapat följande certifikat:

  • Rotcertifikatutfärdare: certs/azure-iot-test-only.root.ca.cert.pem
  • Certifikat för enhetscertifikatutfärdare och privat nyckel (används för att registrera IoT Edge enhet i IoT Hub):
    • certs/iot-edge-device-identity-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-identity-<cert-name>.key.pem
  • IoT Edge certifikatutfärdarcertifikat och privat nyckel (som ska kopieras till en IoT Edge enhet och refereras till i konfigurationsfilen):
    • certs/iot-edge-device-ca-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-ca-<cert-name>.key.pem

Om du följer Snabbstart använder du Linux-instruktionerna för att konfigurera democertifikaten om datorn som du skapar certifikaten på är en Linux-baserad dator. Använd Windows-anvisningarna för att generera democertifikaten om datorn som du skapar certifikaten på är en Windows-baserad dator. Se avsnittet om hur du kopierar rotcertifikat till en virtuell Linux-dator eller till en lokal Windows-dator.

Azure-IoT Edge rotcertifikatutfärdarcertifikatet ändras i steg 7, men du behöver det ursprungliga certifikatet i steg 8. Behåll en kopia av det ursprungliga certifikatet så att du kan återanvända det.

Observera

När du uppdaterar certifikatavsnittet i filen config.toml (Azure IoT Edge 1.2) eller config.yaml (Azure IoT Edge 1.1) kontrollera att certificates: raden i config.toml (Azure IoT Edge 1.2) eller config.yaml (Azure IoT Edge 1.1) inte har något föregående blanksteg och att vart och ett av de kapslade certifikaten har indrag av två blanksteg.

När du har uppdaterat filen kontrollerar du att edgehub-modulen körs på din Azure IoT Edge-enhet:

sudo iotedge list

Mer information finns i Hur en IoT Edge enhet kan användas som gateway (Azure IoT Edge 1.2) eller Azure IoT Edge 1.1.

Om du använder testcertifikat ska du sluta innan du genererar certifikatet för nedströms,enligt beskrivningen i Skapa certifikat för underordnade enheter (Azure IoT Edge 1.2) eller Azure IoT Edge 1.1.

Steg 3. Öppna Azure IoT Edge gatewayenhetsportar för kommunikation

Gatewayenheter måste kunna ta emot meddelanden från sina nedströms enheter. För att ett gatewayscenario ska fungera måste minst ett av IoT-hubbens protokoll som stöds vara öppna för inkommande trafik från nedströmsenheter.

Azure Sphere använder protokoll-MQTT. Det här protokollet använder port 8883.

Mer information finns i Öppna portar på gatewayenhet (Azure IoT Edge 1.2) eller Azure IoT Edge 1.1.

Följ de här anvisningarna för att öppna port 8883 på en virtuell Windows-dator när du har konfigurerat en Edge-enhet i Snabbstart:

  1. Om det behövs loggar du in på din Azure Portal med ditt Azure-konto.
  2. Navigera till den virtuella datorn som du skapade i avsnittet Steg 1: Skapa en Azure-IoT Edge enhet.
  3. I avsnittet Inställningar till vänster väljer du Nätverk och sedan Lägg till regel för inkommande port.
  4. Ändra värdet till 8883 under Målportintervalli regelbladet Lägg till inkommande port.
  5. Under Protokoll väljer du TCP.
  6. Under Namn ändrar du värdet till MQTT.
  7. Låt alla andra inställningar vara standardinställningar och välj sedan Lägg till.

Följ dessa steg för att öppna port 8883 på en virtuell Linux-dator när du har konfigurerat en Azure IoT Edge-enhet i Snabbstart:

  1. Kör följande kommando för att kontrollera om porten för MQTT är öppen:

    sudo netstat -lptu

  2. Om det behövs använder du följande kommando för att öppna porten:

    sudo ufw allow 8883

Då definieras en regel för inkommande säkerhet som tillåter kommunikation för MQTT-protokollet till Azure IoT Edge Gateway.

Steg 4. Uppdatera gatewayens värdnamn

I det här steget används olika procedurer beroende på vilken version av Azure IoT Edge du använder: Azure IoT Edge 1.2 eller Azure IoT Edge 1.1.

Azure IoT Edge 1.2: Uppdatera gatewayens värdnamn i config.toml

Azure IoT Edge runtime har stöd för värdnamn som är mindre än 64 tecken. Fysiska datorer har vanligtvis inte långa värdnamn, men om du använder en virtuell dator som Azure IoT Edge-enhet, som i exemplet i Snabbstart, måste du konfigurera värdnamnet manuellt.

Information om hur du felsöker ett ogiltigt värdnamn finns i vanliga felmatchningar.

Följ de här anvisningarna för att konfigurera värdnamnet för Azure IoT Edge-enhet när du har konfigurerat MQTT-porten i Snabbstart:

  1. Hitta det fullständigt kvalificerade domännamnet (FQDN) för din IoT Edge gateway genom att gå till din IoT Edge-enhet (Linux VM) i Azure-portalen och kopiera värdet för DNS-namnet från översiktssidan.

  2. Om det behövs loggar du in på Azure IoT Edge-enheten.

  3. Öppna filen config.toml i en textredigerare.

    /etc/aziot/config.toml

  4. Klistra in FQDN i avsnittet värdnamn i config.toml. Kontrollera att hela namnet är gemener.

    hostname: "<iotedge_machinename>.<mydomain>"
    

    Observera

    Enligt design med Azure IoT Edge v1.2 och senare måste värdnamnet vara ett FQDN-namn (en IP-adress är inte längre tillåten, som i v1.1), och därför är en DNS-server med lämplig A-post i samma nätverk obligatorisk.

  5. Starta om demonen iotedge .

    sudo systemctl restart iotedge

  6. Om du ser fel (färgad text med "[FEL]") i statusen kan du undersöka daemonloggar för detaljerad felinformation.

    sudo journalctl -u iotedge --no-pager --no-full

  7. För att undvika varningar konfigurerar du DNS-konfigurationen för moduler på Azure IoT Edge-enheten så att den innehåller en konfigurationsfil i /etc/docker/daemon.json, till exempel:

    {
         "dns": ["<IP address of your DNS server>"]
    }
    

Azure IoT Edge 1.1: Uppdatera gatewayens värdnamn i config.yaml

Azure IoT Edge runtime har stöd för värdnamn som är mindre än 64 tecken. Fysiska datorer har vanligtvis inte långa värdnamn, men om du använder en virtuell dator som Azure IoT Edge-enhet, som i exemplet i Snabbstart, måste du konfigurera värdnamnet manuellt.

Information om hur du felsöker ett ogiltigt värdnamn finns i vanliga felmatchningar.

Följ de här anvisningarna för att konfigurera värdnamnet för Azure IoT Edge-enhet när du har konfigurerat MQTT-porten i Snabbstart:

  1. Gå till den virtuella datorn i Azure Portal. Kopiera värdet för datorns DNS-namn (FQDN) från avsnittet Översikt .

  2. Om det behövs loggar du in på Azure IoT Edge-enheten.

  3. Öppna filen config.yaml i en textredigerare.

    /etc/iotedge/config.yaml

  4. Klistra in FQDN i avsnittet värdnamn i config.yaml. Kontrollera att hela namnet är gemener.

    `hostname: "<machinename>.<region>.cloudapp.azure.com"`
    

    Observera

    Du kan behöva använda namnet på den nakna datorn för värdnamnet (antingen IP-adressen eller det faktiska värdnamnet) om en DNS-lösare finns i nätverket, eftersom Azure Sphere inte har stöd för netbios.

  5. Starta om demonen iotedge .

    sudo systemctl restart iotedge

  6. Om du ser fel (färgad text med "[FEL]") i statusen kan du undersöka daemonloggar för detaljerad felinformation.

    sudo journalctl -u iotedge --no-pager --no-full

  7. För att undvika varningar konfigurerar du DNS-konfigurationen för moduler på Azure IoT Edge-enheten så att den innehåller en konfigurationsfil i /etc/docker/daemon.json, till exempel:

    {
        "dns": ["<IP address of your DNS server>"]
    }
    

Steg 5. Ange Azure IoT Edge-enheten som överordnad Azure Sphere-enheten

Följ dessa steg för att ange Azure IoT Edge-enheten som överordnad Azure Sphere-enheten:

  1. Navigera till Azure Sphere-enheten som manuellt etablerades ovan.
  2. Välj Enhets-ID.
  3. Välj kugghjulsikonen under Ingen överordnad enhet.
  4. Välj den Azure IoT Edge enhet som du vill ange som överordnad enhet.
  5. Välj OK och sedan Spara.

Azure-IoT Edge-enheten blir nu överordnad Azure Sphere-enheten.

Steg 6. Ange ca-certifikatet för katalogen för Azure Sphere-enheten till den IoT Edge enheten

För att verifiera Azure Sphere-enhetscertifikat måste Azure IoT Edge-enheten ha en egen kopia av katalogen CA.

  1. Ladda ned ca-certifikatet för katalogen om du inte redan har gjort det. Obs! Du bör redan ha slutfört detta som en del av konfigurationen av Azure IoT Hub.

    • Logga in med din Azure-inloggning i kommandotolken:

      az login
      
    • Ladda ned CA-certifikatet för azure sphere-katalogen. Med det här kommandot laddas certifikatet ned till en fil med namnet CAcertificate.cer i den aktuella arbetskatalogen. Kontrollera att du laddar ned filen till en katalog där du har skrivbehörighet, annars misslyckas nedladdningen. Utdatafilen måste ha filnamnstillägget .cer.

      az sphere ca-certificate download --resource-group MyResourceGroup --catalog MyCatalog --output-file CACertificate.cer
      
  2. Konvertera ca-certifikatet för katalogen till PEM-format. Exempelinstruktioner för att konvertera formatet på en Windows-dator är följande:

    • Leta reda på certifikatets sökväg på datorn och dubbelklicka på certifikatet för att öppna det.
    • Öppna fliken Information och välj Kopiera till fil.
    • Välj Nästa i guiden Exportera certifikat.
    • Välj bas-64-kodat X.509-format (CER) och välj sedan Nästa.
    • Ange filnamnet för certifikatet som ska exporteras och välj sedan Nästa.
    • Välj Slutför för att slutföra guiden.
    • Byt namn på den nedladdade certifikatfilen så att filnamnstillägget .pem visas.
  3. Lägg till katalogcertifikatet i Azure IoT Edge-rotcertifikatet. Kom ihåg att du skapade Azure IoT Edge-certifikaten i steg 2.

    • Om det behövs loggar du in på Azure IoT Edge-enheten.
    • Leta reda på sökvägen till rotcertifikatutfärdaren för IoT Edge enhet och öppna den i en textredigerare. Om du följde Snabbstart och sedan använde skripten i Azure IoT Edge git-lagringsplats för att skapa democertifikat får rotcertifikatutfärdarcertifikatet namnet azure-iot-test-only.root.ca.cert.pem.
    • Öppna CERTIFIKATutfärdarcertifikatet för Azure Sphere-katalogen (i PEM-format) i en textredigerare. Kopiera innehållet och klistra in det i slutet av IoT Edge rotcertifikatutfärdarcertifikatet.
    • Spara ändringarna i Azure IoT Edge rotcertifikatutfärdarcertifikatet och stäng sedan filen.
    • Starta om Azure IoT Edge-enheten. För en Linux Azure-IoT Edge-enhet kör du: sudo systemctl restart iotedge.
    • Kontrollera att modulerna körs på din Azure IoT Edge-enhet. För en Linux Azure-IoT Edge-enhet kör du: sudo iotedge list.

Steg 7. Ange rotcertifikatutfärdarcertifikatet för Azure IoT Edge-enhet till Azure Sphere-enheten

För att verifiera Azure IoT Edge-enhetscertifikat måste Azure Sphere-enheten (nedströms enheten) ha en egen kopia av Certifikatutfärdarcertifikat för Azure IoT Edge-enhetsrot, som du konfigurerade i steg 2.

Mer information finns i Ansluta en nedströms enhet till en Azure IoT Edge gateway.

  1. Leta reda på det ursprungliga rotcertifikatet för Azure IoT Edge enhet.

    • Kom ihåg att det ursprungliga rotcertifikatet för Azure IoT Edge enhet är det som du skapade i steg 2.
    • Om du följde Snabbstart och sedan använde skripten i IoT Edge git-lagringsplats för att skapa democertifikat kallas rotcertifikatutfärdarcertifikatet för certifikatutfärdare för azure-iot-test-only.root.ca.cert.pem.
  2. Kopiera Azure IoT Edge-rotcertifikatet till Azure Sphere-enheten genom att lägga till det i programpaketet.

Steg 8. Kopiera IoT-rotcertifikatet till en fjärrdator

Följ de här anvisningarna om du vill kopiera Azure IoT Edge rotcertifikat till en virtuell fjärrdator för Linux eller till en lokal Windows-dator:

  • Du kan installera WinSCP-verktyget för att överföra filerna. Verktyget tillhandahåller ett GUI så att det är enklare att använda än en kommandoradsmetod.

  • Om du vill använda kommandoraden använder du kommandoradsverktyget SCP (Secure Copy).

  • Om du vill överföra en fil från en lokal Windows-dator till en virtuell fjärrdator med Linux kör du följande kommando i Windows PowerShell:

    powershell -Command scp -r <path-to-file-name> <userName@remote-ip>:<path-to-destination-directory>
    

    Exempel på syntax:

    scp C:\Documents\cert.pem AzureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/

  • Om du vill överföra en fil från en virtuell fjärrdator med Linux till en lokal Windows-dator kör du följande kommando i Windows PowerShell:

    powershell -Command scp -r <userName@remote-ip>:<path-to-file-name> <path-to-destination-dir>
    

    Exempel på syntax:

    scp azureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/cert.pem C:\Documents\

Felsökning

Om du har problem med att köra Azure IoT Edge i din miljö kan du använda följande artiklar för felsökning och diagnostik:

Nästa steg

  • När du har slutfört stegen i det här avsnittet kan du köra Azure IoT-exemplet genom att följa anvisningarna för anslutning med Azure IoT Edge.