Transformera data externt för IoT Central

IoT-enheter skickar data i olika format. Om du vill använda enhetsdata med ditt IoT Central-program kan du behöva använda en transformering för att:

  • Gör dataformatet kompatibelt med ditt IoT Central-program.
  • Konvertera enheter.
  • Beräkna nya mått.
  • Utöka data från andra källor.

Den här artikeln visar hur du transformerar enhetsdata utanför IoT Central antingen vid ingress eller utgående.

Kommentar

IoT Central kan också transformera data internt för att lära dig mer i Mappa telemetri vid ingress till IoT Central och Transformera data i ditt IoT Central-program för export.

Följande diagram visar tre vägar för data som innehåller transformeringar:

Sammanfattning av datatransformeringsvägar både ingress och utgående

I följande tabell visas tre exempel på transformeringstyper:

Transformering beskrivning Exempel Kommentar
Meddelandeformat Konvertera till eller ändra JSON-meddelanden. CSV till JSON Vid ingress. IoT Central accepterar endast JSON-värdemeddelanden. Mer information finns i Telemetri, egenskap och kommandonyttolaster.
Beräkningar Matematiska funktioner som Azure Functions kan köra. Enhetskonvertering från Fahrenheit till Celsius. Transformera med hjälp av utgående mönster för att dra nytta av skalbar enhets-ingress via direkt anslutning till IoT Central. Genom att transformera data kan du använda IoT Central-funktioner som visualiseringar och jobb.
Meddelandeberikning Berikningar från externa datakällor hittades inte i enhetsegenskaper eller telemetri. Mer information om interna berikanden finns i Exportera IoT-data till molnmål med bloblagring. Lägg till väderinformation i meddelanden med hjälp av platsdata från enheter. Transformera med hjälp av utgående mönster för att dra nytta av skalbar enhets-ingress via direkt anslutning till IoT Central.

Förutsättningar

För att slutföra stegen i den här guiden behöver du:

Datatransformering vid ingress

Det finns två alternativ för att transformera enhetsdata vid ingress:

  • IoT Edge: Använd en IoT Edge-modul för att transformera data från underordnade enheter innan du skickar data till ditt IoT Central-program.

  • IoT Central-enhetsbrygga: IoT Central-enhetsbryggan ansluter andra IoT-enhetsmoln, till exempel Sigfox, Particle och The Things Network, till IoT Central. Enhetsbryggningen använder en Azure-funktion för att vidarebefordra data och du kan anpassa funktionen för att transformera enhetsdata.

Använda IoT Edge för att transformera enhetsdata

Datatransformering vid ingress med IoT Edge

I det här scenariot transformerar en IoT Edge-modul data från underordnade enheter innan de vidarebefordras till ditt IoT Central-program. På hög nivå är stegen för att konfigurera det här scenariot:

  1. Konfigurera en IoT Edge-enhet: Installera och etablera en IoT Edge-enhet som en gateway och anslut gatewayen till ditt IoT Central-program.

  2. Anslut nedströmsenhet till IoT Edge-enheten: Anslut nedströmsenheter till IoT Edge-enheten och etablera dem i ditt IoT Central-program.

  3. Transformera enhetsdata i IoT Edge: Skapa en IoT Edge-modul för att transformera data. Distribuera modulen till den IoT Edge-gatewayenhet som vidarebefordrar transformerade enhetsdata till ditt IoT Central-program.

  4. Verifiera: Skicka data från en nedströmsenhet till gatewayen och kontrollera att de transformerade enhetsdata når ditt IoT Central-program.

I exemplet som beskrivs i följande avsnitt skickar den underordnade enheten JSON-data i följande format till IoT Edge-gatewayenheten:

{
  "device": {
      "deviceId": "<downstream-deviceid>"
  },
  "measurements": {
    "temp": <temperature>,
    "pressure": <pressure>,
    "humidity": <humidity>,
    "scale": "celsius",
  }
}

Du använder en IoT Edge-modul för att transformera data och konvertera temperaturvärdet från Celsius till Fahrenheit innan du skickar dem till IoT Central:

{
  "device": {
      "deviceId": "<downstream-deviceid>"
  },
  "measurements": {
    "temp": <temperature>,
    "pressure": <pressure>,
    "humidity": <humidity>,
    "scale": "fahrenheit"
  }
}

Sökkod

Följande steg visar hur du konfigurerar och konfigurerar det här scenariot:

Skapa den anpassade modulen

I det här scenariot kör IoT Edge-enheten en anpassad modul som transformerar data från den underordnade enheten. Innan du distribuerar och konfigurerar IoT Edge-enheten måste du:

  • Skapa den anpassade modulen.
  • Lägg till den anpassade modulen i ett containerregister.

IoT Edge-körningen laddar ned anpassade moduler från ett containerregister, till exempel ett Azure-containerregister eller Docker Hub. Azure Cloud Shell har alla verktyg du behöver för att skapa ett containerregister, skapa modulen och ladda upp modulen till registret:

Så här skapar du ett containerregister:

  1. Öppna Azure Cloud Shell och logga in på din Azure-prenumeration.

  2. Välj Bash-gränssnittet.

  3. Kör följande kommandon för att skapa ett Azure-containerregister:

    REGISTRY_NAME="{your unique container registry name}"
    az group create --name ingress-scenario --location eastus
    az acr create -n $REGISTRY_NAME -g ingress-scenario --sku Standard --admin-enabled true
    az acr credential show -n $REGISTRY_NAME
    

    Anteckna username värdena och password och du använder dem senare. Du behöver bara ett av lösenorden som visas i kommandoutdata.

Så här skapar du den anpassade modulen i Azure Cloud Shell:

  1. I Azure Cloud Shell klonar du GitHub-lagringsplatsen som innehåller modulens källkod:

    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  2. Skapa den anpassade modulen genom att köra följande kommandon i Azure Cloud Shell:

    cd iot-central-transform-with-iot-edge/custommodule/transformmodule
    az acr build --registry $REGISTRY_NAME --image transformmodule:0.0.1-amd64 -f Dockerfile.amd64 .
    

    Det kan ta flera minuter att köra föregående kommandon.

Konfigurera en IoT Edge-enhet

I det här scenariot används en IoT Edge-gatewayenhet för att transformera data från underordnade enheter. I det här avsnittet beskrivs hur du skapar en IoT Central-enhetsmall för gatewayenheten i ditt IoT Central-program. IoT Edge-enheter använder ett distributionsmanifest för att konfigurera sina moduler.

I det här exemplet behöver inte den underordnade enheten någon enhetsmall. Den underordnade enheten är registrerad i IoT Central så att du kan generera de autentiseringsuppgifter som krävs för att ansluta IoT Edge-enheten. Eftersom IoT Edge-modulen transformerar data anländer all nedströmsenhetstelemetri till IoT Central som om IoT Edge-enheten har skickat den.

Så här skapar du en enhetsmall för IoT Edge-gatewayenheten:

  1. Spara en kopia av distributionsmanifestet på din lokala utvecklingsdator: moduledeployment.json.

  2. Öppna din lokala kopia av moduledeployment.json-manifestfilen i en textredigerare.

  3. Leta upp avsnittet registryCredentials och ersätt platshållarna med de värden som du antecknade när du skapade Azure-containerregistret. Värdet address ser ut som {your username}.azurecr.io.

  4. Leta reda på avsnittet settings för transformmodule. Ersätt {your username} med samma värde som du använde i föregående steg. Spara ändringarna.

  5. I ditt IoT Central-program går du till sidan Edge-manifest .

  6. Välj + Nytt. Ange ett namn som Transformer för distributionsmanifestet och ladda sedan upp den moduledeployment.json fil som du laddade ned tidigare. Distributionsmanifestet innehåller en anpassad modul som kallas transformmodule.

  7. Välj Nästa och sedan Skapa.

  8. I ditt IoT Central-program går du till sidan Enhetsmallar .

  9. Välj + Ny, välj Azure IoT Edge och välj sedan Nästa: Anpassa.

  10. Ange IoT Edge-gatewayenheten som namnet på enhetsmallen. Välj Det här är en gatewayenhet.

  11. Välj Nästa: Granska och välj sedan Skapa.

  12. På sidan Skapa en modell väljer du Anpassad modell.

  13. I modellen väljer du Moduler och sedan Importera moduler från manifestet. Välj transformeringsdistributionsmanifestet och välj sedan Importera.

Distributionsmanifestet anger inte den telemetri som modulen skickar. Så här lägger du till telemetridefinitionerna i enhetsmallen:

  1. Välj Modultransformeringsmodul i avsnittet Moduler i enhetsmallen för IoT Edge-gatewayen.

  2. Välj Lägg till kapacitet och använd informationen i följande tabeller för att lägga till en ny telemetrityp:

    Inställning Värde
    Visningsnamn Enhet
    Name enhet
    Typ av kapacitet Telemetri
    Semantiktyp Ingen
    Schema Objekt

    Objektdefinition:

    Visningsnamn Name Schema
    Enhets-ID deviceId String

    Spara dina ändringar.

  3. Välj Lägg till kapacitet och använd informationen i följande tabeller för att lägga till en ny telemetrityp:

    Inställning Värde
    Visningsnamn Measurements
    Name Mätningar
    Typ av kapacitet Telemetri
    Semantiktyp Ingen
    Schema Objekt

    Objektdefinition:

    Visningsnamn Name Schema
    Temperatur temperatur Dubbel
    Lufttryck tryck Dubbel
    Luftfuktighet luftfuktighet Dubbel
    Skala scale String

    Spara dina ändringar.

  4. I modellen väljer du Relationer. Välj inte Relationer i modulen transformmodule .

  5. Välj Lägg till relation.

  6. Ange Nedströmssensor som visningsnamn, sensor som namn och välj Alla som mål. Välj Spara.

  7. Välj Publicera för att publicera enhetsmallen.

Så här registrerar du en gatewayenhet i IoT Central:

  1. I ditt IoT Central-program går du till sidan Enheter .

  2. Välj IoT Edge-gatewayenhet och välj + Ny. Ange IoT Edge-gatewayenheten som enhetsnamn, ange gateway-01 som enhets-ID, kontrollera att IoT Edge-gatewayenheten har valts som enhetsmall och Nej har valts som Simulera den här enheten?. Välj Transformera som kantmanifest. Välj Skapa.

  3. I listan över enheter klickar du på IoT Edge-gatewayenheten och väljer sedan Anslut.

  4. Anteckna ID-omfånget, enhets-ID och primärnyckelvärden för IoT Edge-gatewayenheten. Du använder dem senare.

Så här registrerar du en nedströmsenhet i IoT Central:

  1. I ditt IoT Central-program går du till sidan Enheter .

  2. Välj inte en enhetsmall. Välj + Nytt. Ange Nedströms 01 som enhetsnamn, ange downstream-01 som enhets-ID, kontrollera att enhetsmallen är Ej tilldelad och Nej har valts som Simulera den här enheten?. Välj Skapa.

  3. I listan över enheter klickar du på enheten Nedströms 01 och väljer sedan Hantera enhetsanslutning > till gateway.

  4. I dialogrutan Anslut till en gateway väljer du enhetsmallen IoT Edge-gatewayenhet och enhetsinstansen för IoT Edge-gatewayenheten. Välj bifoga.

  5. På enheten Downstream 01 väljer du Anslut.

  6. Anteckna ID-omfånget, enhets-ID och primärnyckelvärden för enheten Downstream 01. Du använder dem senare.

Distribuera gatewayen och underordnade enheter

För enkelhetens skull använder den här artikeln virtuella Azure-datorer för att köra gatewayen och underordnade enheter. Om du vill skapa de två virtuella Azure-datorerna väljer du knappen Distribuera till Azure som visas efter följande tabell. Använd informationen i tabellen för att fylla i formuläret Anpassad distribution :

Fält Värde
Resursgrupp ingress-scenario
DNS-etikettprefixgateway Ett unikt DNS-namn för den här datorn, till exempel <your name>edgegateway
DNS-etikettprefix nedströms Ett unikt DNS-namn för den här datorn, till exempel <your name>downstream
Omfångs-ID ID-omfånget som du antecknade tidigare
IoT Edge-gateway för enhets-ID gateway-01
IoT Edge-gateway för enhetsnyckel Det primära nyckelvärdet som du antecknade tidigare
Autentiseringstyp Lösenord
Administratörslösenord eller nyckel Ditt val av lösenord för AzureUser-kontot på båda de virtuella datorerna.

Knappen Distribuera till Azure

Välj Granska + Skapa och sedan Skapa. Det tar några minuter att skapa de virtuella datorerna i resursgruppen ingress-scenario .

Så här kontrollerar du att IoT Edge-gatewayenheten körs korrekt:

  1. Öppna ditt IoT Central-program. Gå sedan till IoT Edge Gateway-enheten i listan över enheter på sidan Enheter .

  2. Välj fliken Moduler och kontrollera statusen för de tre modulerna. Det tar några minuter innan IoT Edge-körningen startar på den virtuella datorn. När den virtuella datorn körs är statusen för de tre modulerna Körs. Om IoT Edge-körningen inte startar läser du Felsöka din IoT Edge-enhet.

För att din IoT Edge-enhet ska fungera som en gateway behöver den vissa certifikat för att bevisa sin identitet för alla underordnade enheter. I den här artikeln används democertifikat. I en produktionsmiljö använder du certifikat från certifikatutfärdare.

Så här genererar du democertifikaten och installerar dem på din gatewayenhet:

  1. Använd SSH för att ansluta till och logga in på den virtuella gatewayenhetens virtuella dator. Du hittar DNS-namnet för den här virtuella datorn i Azure-portalen. Gå till den virtuella edgegateway-datorn i resursgruppen ingress-scenario .

    Dricks

    Du kan behöva öppna port 22 för SSH-åtkomst på båda dina virtuella datorer innan du kan använda SSH för att ansluta från din lokala dator eller Azure Cloud Shell.

  2. Kör följande kommandon för att klona IoT Edge-lagringsplatsen och generera dina democertifikat:

    # Clone the repo
    cd ~
    git clone https://github.com/Azure/iotedge.git
    
    # Generate the demo certificates
    mkdir certs
    cd certs
    cp ~/iotedge/tools/CACertificates/*.cnf .
    cp ~/iotedge/tools/CACertificates/certGen.sh .
    ./certGen.sh create_root_and_intermediate
    ./certGen.sh create_edge_device_ca_certificate "mycacert"
    

    När du har kört föregående kommandon är följande filer redo att användas i nästa steg:

    • ~/certs/certs/azure-iot-test-only.root.ca.cert.pem – rotcertifikatutfärdarcertifikatet som används för att göra alla andra democertifikat för testning av ett IoT Edge-scenario.
    • ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem – ett certifikat för enhetscertifikatutfärdare som refereras från filen config.yaml . I ett gatewayscenario är det här CA-certifikatet hur IoT Edge-enheten verifierar sin identitet till underordnade enheter.
    • ~/certs/private/iot-edge-device-mycacert.key.pem – den privata nyckel som är associerad med certifikatutfärdarcertifikatet för enheten.

    Mer information om dessa democertifikat finns i Skapa democertifikat för att testa IoT Edge-enhetsfunktioner.

  3. Öppna filen config.toml i en textredigerare. Till exempel:

    sudo nano /etc/aziot/config.toml
    
  4. Avkommentering och ändra certifikatinställningarna på följande sätt:

    trust_bundle_cert = "file:///home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem"
    
    ...
    
    [edge_ca]
    cert = "file:///home/AzureUser/certs/certs/iot-edge-device-ca-mycacert-full-chain.cert.pem"
    pk = "file:///home/AzureUser/certs/private/iot-edge-device-ca-mycacert.key.pem"
    

    I föregående exempel förutsätter vi att du är inloggad som AzureUser och har skapat en enhetscertifikatutfärdare med namnet "mycacert".

  5. Spara ändringarna och kör följande kommando för att kontrollera att filen config.toml är korrekt:

    sudo iotedge check
    
  6. Starta om IoT Edge-körningen:

    sudo iotedge config apply
    

Om IoT Edge-körningen startar efter ändringarna ändras statusen för modulerna $edgeAgent och $edgeHub till Körs. Du kan se dessa statusvärden på sidan Moduler för din gatewayenhet i IoT Central.

Om körningen inte startar kontrollerar du de ändringar du gjorde i config.toml och läser Felsöka din IoT Edge-enhet.

Anslut nedströmsenhet till IoT Edge-enhet

Så här ansluter du en nedströmsenhet till IoT Edge-gatewayenheten:

  1. Använd SSH för att ansluta till och logga in på den underordnade enhetens virtuella dator. Du hittar DNS-namnet för den här virtuella datorn i Azure-portalen. Gå till den virtuella leafdevice-datorn i resursgruppen ingress-scenario .

    Dricks

    Du kan behöva öppna port 22 för SSH-åtkomst på båda dina virtuella datorer innan du kan använda SSH för att ansluta från din lokala dator eller Azure Cloud Shell.

  2. Om du vill klona GitHub-lagringsplatsen med källkoden för den underordnade exempelenheten kör du följande kommando:

    cd ~
    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  3. Om du vill kopiera det nödvändiga certifikatet från gatewayenheten kör du följande scp kommandon. Det här scp kommandot använder värdnamnet edgegateway för att identifiera den virtuella gatewaydatorn. Du uppmanas att ange ditt lösenord:

    cd ~/iot-central-transform-with-iot-edge
    scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem leafdevice/certs
    
  4. Gå till mappen leafdevice och installera de paket som krävs. Kör sedan skripten build och start för att etablera och ansluta enheten till gatewayen:

    cd ~/iot-central-transform-with-iot-edge/leafdevice
    sudo apt update
    curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt-get install nodejs
    npm install
    npm run-script build
    npm run-script start
    

    Under sudo apt-get install nodejs kommandon kan du uppmanas att tillåta installationer: tryck Y om du uppmanas att göra det.

  5. Ange enhets-ID, omfångs-ID och SAS-nyckel för den nedströmsenhet som du skapade tidigare. Som värdnamn anger du edgegateway. Utdata från kommandot ser ut så här:

    Registering device downstream-01 with scope 0ne00284FD9
    Registered device downstream-01.
    Connecting device downstream-01
    Connected device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    

För enkelhetens skull etablerar koden för den underordnade enheten enheten i IoT Central. Vanligtvis ansluter underordnade enheter via en gateway eftersom de inte kan ansluta till Internet och därför inte kan ansluta till enhetsetableringstjänstens slutpunkt. Mer information finns i Ansluta enheter via en transparent IoT Edge-gateway.

Verifiera

Kontrollera att scenariot körs genom att gå till din IoT Edge-gatewayenhet i IoT Central:

Skärmbild som visar transformerade data på enhetssidan.

  • Välj Moduler. Kontrollera att de tre IoT Edge-modulerna $edgeAgent, $edgeHub och transformmodule körs.

  • Välj Rådata. Telemetridata i kolumnen Enhet ser ut så här:

    {"deviceId":"downstream-01"}
    

    Telemetridata i kolumnen Mått ser ut så här:

    {"temperature":85.21208,"pressure":59.97321,"humidity":77.718124,"scale":"farenheit"}
    

Temperaturen skickas i Fahrenheit. Eftersom IoT Edge-enheten transformerar data från den underordnade enheten är telemetrin associerad med gatewayenheten i IoT Central. Om du vill visualisera den transformerade telemetrin skapar du en vy i enhetsmallen för IoT Edge-gatewayen och publicerar om den.

Datatransformering vid utgående

Du kan ansluta dina enheter till IoT Central, exportera enhetsdata till en beräkningsmotor för att transformera dem och sedan skicka transformerade data tillbaka till IoT Central för enhetshantering och analys. Till exempel:

  • Dina enheter skickar platsdata till IoT Central.
  • IoT Central exporterar data till en beräkningsmotor som förbättrar platsdata med väderinformation.
  • Beräkningsmotorn skickar tillbaka de förbättrade data till IoT Central.

Du kan använda IoT Central-enhetsbryggan som beräkningsmotor för att transformera data som exporteras från IoT Central.

En fördel med att transformera data vid utgående trafik är att dina enheter ansluter direkt till IoT Central, vilket gör det enkelt att skicka kommandon till enheter eller uppdatera enhetsegenskaper. Med den här metoden kan du dock använda fler meddelanden än din månatliga tilldelning och öka kostnaden för att använda Azure IoT Central.

Använda IoT Central-enhetsbryggan för att transformera enhetsdata

Datatransformering vid utgående användning med IoT Edge

I det här scenariot transformerar en beräkningsmotor enhetsdata som exporteras från IoT Central innan den skickas tillbaka till ditt IoT Central-program. På hög nivå är stegen för att konfigurera det här scenariot:

  1. Konfigurera beräkningsmotorn: Skapa en IoT Central-enhetsbrygga som fungerar som en beräkningsmotor för datatransformering.

  2. Transformera enhetsdata i enhetsbryggningen: Transformera data i enhetsbryggningen genom att ändra funktionskoden för enhetsbryggningen för ditt användningsfall för datatransformering.

  3. Aktivera dataflöde från IoT Central till enhetsbryggan: Exportera data från IoT Central till enhetsbryggan för transformering. Vidarebefordra sedan transformerade data tillbaka till IoT Central. När du skapar dataexporten använder du filter för meddelandeegenskap för att endast exportera oöversända data.

  4. Kontrollera: Anslut enheten till IoT Central-appen och sök efter både rådata och transformerade data i IoT Central.

I exemplet som beskrivs i följande avsnitt skickar enheten CSV-data i följande format till IoT Edge-gatewayenheten:

"<temperature in degrees C>, <humidity>, <latitude>, <longitude>"

Du använder enhetsbryggningen för att transformera enhetsdata genom att:

  • Ändra temperaturenheten från centigrad till fahrenheit.
  • Utöka enhetsdata med väderdata som hämtats från open weather-tjänsten för latitud- och longitudvärdena.

Enhetsbryggan skickar sedan transformerade data till IoT Central i följande format:

{
  "temp": <temperature in degrees F>,
  "humidity": <humidity>,
  "lat": <latitude>,
  "lon": <logitude>,
  "weather": {
    "weather_temp": <temperature at lat/lon>,
    "weather_humidity": <humidity at lat/lon>,
    "weather_pressure": <pressure at lat/lon>,
    "weather_windspeed": <wind speed at lat/lon>,
    "weather_clouds": <cloud cover at lat/lon>,
    "weather_uvi": <UVI at lat/lon>
  }
}

Följande steg visar hur du konfigurerar och konfigurerar det här scenariot:

Hämta anslutningsinställningarna för IoT Central

Innan du konfigurerar det här scenariot måste du hämta några anslutningsinställningar från ditt IoT Central-program:

  1. Logga in på ditt IoT Central-program.

  2. Gå till Behörigheter Enhetsanslutningsgrupper>.

  3. Anteckna ID-omfånget. Du använder det här värdet senare.

  4. Välj registreringsgruppen SaS-IoT-Devices. Anteckna primärnyckeln för signatur för delad åtkomst. Du använder det här värdet senare.

Konfigurera en beräkningsmotor

I det här scenariot används samma Azure Functions-distribution som IoT Central-enhetsbryggan. Om du vill distribuera enhetsbryggningen väljer du knappen Distribuera till Azure som visas efter följande tabell. Använd informationen i tabellen för att fylla i formuläret Anpassad distribution :

Fält Värde
Resursgrupp Skapa en ny resursgrupp med namnet egress-scenario
Region Välj den region som är närmast dig.
Omfångs-ID Använd det ID-omfång som du antecknade tidigare.
IoT Central SAS-nyckel Använd primärnyckeln för signatur för delad åtkomst för registreringsgruppen SaS-IoT-Devices . Du antecknade det här värdet tidigare.

Distribuera till Azure.

Välj Granska + Skapa och sedan Skapa. Det tar några minuter att skapa Azure-funktionen och relaterade resurser i resursgruppen för utgående scenario .

Transformera enhetsdata i enhetsbryggningen

Så här konfigurerar du enhetsbryggningen för att transformera exporterade enhetsdata:

  1. Hämta en api-nyckel för programmet från tjänsten Open Weather. Ett konto är kostnadsfritt med begränsad användning av tjänsten. Skapa en api-nyckel för program genom att skapa ett konto i open weather-tjänstportalen och följa anvisningarna. Du använder nyckeln för API:et för öppet väder senare.

  2. I Azure-portalen går du till Funktionsapp i resursgruppen för utgående scenario .

  3. I det vänstra navigeringsfältet går du till Utvecklingsverktyg och väljer App Service-redigeraren (förhandsversion).

  4. Välj Gå → för att öppna apptjänstredigerarens sida. Gör följande ändringar:

    1. Öppna filen wwwroot/IoTCIntegration/index.js. Ersätt all kod i den här filen med koden i index.js.

    2. I den nya index.js uppdaterar openWeatherAppId du variabelfilen med api-nyckeln Open Weather som du fick tidigare.

      const openWeatherAppId = '<Your Open Weather API Key>'
      
    3. Lägg till en meddelandeegenskap i de data som skickas av funktionen till IoT Central. IoT Central använder den här egenskapen för att förhindra export av transformerade data. Om du vill göra den här ändringen öppnar du filen wwwroot/IoTCIntegration/lib/engine.js . Leta upp följande kod:

      if (timestamp) {
        message.properties.add('iothub-creation-time-utc', timestamp);
      }
      

      Lägg till följande kod strax efter koden i föregående kodfragment:

      // add a message property that we can look for in data export to not re-compute computed telemetry
      message.properties.add('computed', true);
      

      Som referens kan du visa ett slutfört exempel på filen engine.js .

  5. I App Service-redigeraren väljer du Konsol i det vänstra navigeringsfönstret. Kör följande kommandon för att installera de paket som krävs:

    cd IoTCIntegration
    npm install
    

    Det kan ett par minuter att köra kommandot.

  6. Gå tillbaka till azure-funktionsöversiktssidan och starta om funktionen:

    Starta om funktionen

  7. Välj Funktioner i det vänstra navigeringsfältet. Välj sedan IoTCIntegration. Välj Kod + test.

  8. Anteckna funktions-URL:en. Du behöver det här värdet senare:

    Hämta funktions-URL:en

Aktivera dataflöde från IoT Central till enhetsbryggan

I det här avsnittet beskrivs hur du konfigurerar Azure IoT Central-programmet.

Spara först enhetsmodellfilen på den lokala datorn.

Om du vill lägga till en enhetsmall i ditt IoT Central-program går du till ditt IoT Central-program och sedan:

  1. Logga in på ditt IoT Central-program och gå till sidan Enhetsmallar .

  2. Välj + Ny, välj IoT-enhet, välj Nästa: Anpassa, ange Beräkningsmodell som mallnamn. Välj Nästa: Granska. Välj sedan Skapa.

  3. Välj Importera en modell och bläddra till den model.json fil som du laddade ned tidigare.

  4. När modellen har importerats väljer du Publicera för att publicera enhetsmallen Beräkningsmodell .

Konfigurera dataexporten för att skicka data till enhetsbryggningen:

  1. I ditt IoT Central-program väljer du Dataexport.

  2. Välj + Nytt mål för att skapa ett mål som ska användas med enhetsbryggningen. Anropa beräkningsfunktionen för mål, för Måltyp väljer du Webhook. Som motringnings-URL väljer du klistra in funktions-URL:en som du antecknade tidigare. Lämna auktoriseringen som Ingen autentisering.

  3. Spara ändringarna.

  4. Välj + Ny export och skapa en dataexport med namnet Beräkningsexport.

  5. Lägg till ett filter för att endast exportera enhetsdata för den enhetsmall som du använder. Välj + Filter, välj objekt Enhetsmall, välj operatorn Lika med och välj enhetsmallen Beräkningsmodell som du skapade.

  6. Lägg till ett meddelandefilter för att skilja mellan transformerade och otransformerade data. Det här filtret förhindrar att transformerade värden skickas tillbaka till enhetsbryggningen. Välj + Egenskapsfilter för meddelande och ange det beräknade namnvärdet och välj sedan operatorn Finns inte. Strängen computed används som ett nyckelord i exempelkoden för enhetsbryggningen.

  7. För målet väljer du det beräkningsfunktionsmål som du skapade tidigare.

  8. Spara ändringarna. Efter en minut eller så visas exportstatusen som Felfri.

Verifiera

Exempelenheten som du använder för att testa scenariot skrivs i Node.js. Kontrollera att du har Node.js och npm installerade på den lokala datorn. Om du inte vill installera dessa krav använder du Azure Cloud Shell där de är förinstallerade.

Så här kör du en exempelenhet som testar scenariot:

  1. Klona GitHub-lagringsplatsen som innehåller exempelkoden och kör följande kommando:

    git clone https://github.com/Azure/iot-central-compute
    
  2. Om du vill ansluta exempelenheten till ditt IoT Central-program redigerar du anslutningsinställningarna i filen iot-central-compute/device/device.js . Ersätt omfångs-ID:t och gruppera SAS-nyckeln med de värden som du antecknade tidigare:

    // These values need to be filled in from your Azure IoT Central application
    //
    const scopeId = "<IoT Central Scope Id value>";
    const groupSasKey = "<IoT Central Group SAS key>";
    //
    

    Spara ändringarna.

  3. Använd följande kommandon för att installera de paket som krävs och köra enheten:

    cd ~/iot-central-compute/device
    npm install
    node device.js
    
  4. Resultatet av det här kommandot ser ut som följande utdata:

    registration succeeded
    assigned hub=iotc-2bd611b0....azure-devices.net
    deviceId=computeDevice
    Client connected
    send status: MessageEnqueued [{"data":"33.23, 69.09, 30.7213, -61.1192"}]
    send status: MessageEnqueued [{"data":"2.43, 75.86, -2.6358, 162.935"}]
    send status: MessageEnqueued [{"data":"6.19, 76.55, -14.3538, -82.314"}]
    send status: MessageEnqueued [{"data":"33.26, 48.01, 71.9172, 48.6606"}]
    send status: MessageEnqueued [{"data":"40.5, 36.41, 14.6043, 14.079"}]
    
  5. I ditt IoT Central-program navigerar du till enheten som kallas computeDevice. I vyn Rådata finns det två olika telemetriströmmar som visas ungefär var femte sekund. Strömmen med odefinierade data är den ursprungliga telemetrin, strömmen med modellerade data är de data som funktionen transformerade:

    Skärmbild som visar ursprungliga och transformerade rådata.

Rensa resurser

Om du inte längre behöver de Azure-resurser som du skapade när du följde stegen i den här guiden tar du bort resursgrupperna i Azure-portalen.

De två resursgrupper som du använde i den här guiden är ingress-scenario och egress-scenario.

Nästa steg

I den här artikeln har du lärt dig om de olika alternativen för att transformera enhetsdata för IoT Central, både vid ingress och utgående. Artikeln innehöll genomgångar för två specifika scenarier:

  • Använd en IoT Edge-modul för att transformera data från underordnade enheter innan data skickas till ditt IoT Central-program.
  • Använd Azure Functions för att transformera data utanför IoT Central. I det här scenariot använder IoT Central en dataexport för att skicka inkommande data till en Azure-funktion som ska transformeras. Funktionen skickar tillbaka transformerade data till ditt IoT Central-program.

Nu när du har lärt dig hur du transformerar enhetsdata utanför ditt Azure IoT Central-program kan du lära dig hur du använder datautforskaren för att analysera enhetsdata i IoT Central.