Gegevens extern transformeren voor IoT Central
IoT-apparaten verzenden gegevens in verschillende indelingen. Als u de apparaatgegevens wilt gebruiken met uw IoT Central-toepassing, moet u mogelijk een transformatie gebruiken om het volgende te doen:
- Maak de indeling van de gegevens die compatibel zijn met uw IoT Central-toepassing.
- Eenheden converteren.
- Nieuwe metrische gegevens berekenen.
- Verrijk de gegevens uit andere bronnen.
In dit artikel leest u hoe u apparaatgegevens buiten IoT Central kunt transformeren, hetzij bij inkomend of uitgaand verkeer.
Notitie
IoT Central kan gegevens ook intern transformeren, voor meer informatie over kaarttelemetrie over inkomend verkeer naar IoT Central en gegevens transformeren in uw IoT Central-toepassing voor export.
In het volgende diagram ziet u drie routes voor gegevens die transformaties bevatten:
In de volgende tabel ziet u drie voorbeeldtransformatietypen:
Transformatie | Beschrijving | Voorbeeld | Opmerkingen |
---|---|---|---|
Berichtindeling | Converteer of bewerk JSON-berichten. | CSV naar JSON | Bij inkomend verkeer. IoT Central accepteert alleen waarde-JSON-berichten. Zie Voor meer informatie telemetrie, eigenschap en opdracht nettoladingen. |
Berekeningen | Wiskundige functies die Door Azure Functions kunnen worden uitgevoerd. | Eenheidsconversie van Fahrenheit naar Celsius. | Transformeer met behulp van het uitgaande patroon om te profiteren van schaalbare apparaatinkomende apparaten via directe verbinding met IoT Central. Door de gegevens te transformeren, kunt u IoT Central-functies gebruiken, zoals visualisaties en taken. |
Berichtverrijking | Verrijkingen van externe gegevensbronnen zijn niet gevonden in apparaateigenschappen of telemetrie. Zie IoT-gegevens exporteren naar cloudbestemmingen met behulp van Blob Storage voor meer informatie over interne verrijkingen. | Weerinformatie toevoegen aan berichten met behulp van locatiegegevens van apparaten. | Transformeer met behulp van het uitgaande patroon om te profiteren van schaalbare apparaatinkomende apparaten via directe verbinding met IoT Central. |
Vereisten
Als u de stappen in deze handleiding wilt voltooien, hebt u het volgende nodig:
Een actief Azure-abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Een IoT Central-toepassing die is gemaakt op basis van de aangepaste toepassingssjabloon . Zie Een IoT Central-toepassing maken en Over uw toepassing voor meer informatie.
Gegevenstransformatie bij inkomend verkeer
Als u apparaatgegevens bij inkomend verkeer wilt transformeren, zijn er twee opties:
IoT Edge: Gebruik een IoT Edge-module om gegevens van downstreamapparaten te transformeren voordat u de gegevens naar uw IoT Central-toepassing verzendt.
IoT Central-apparaatbrug: de IoT Central-apparaatbrug verbindt andere IoT-apparaatclouds, zoals Sigfox, Deeltje en The Things Network, met IoT Central. De apparaatbrug maakt gebruik van een Azure-functie om de gegevens door te sturen en u kunt de functie aanpassen om de apparaatgegevens te transformeren.
IoT Edge gebruiken om apparaatgegevens te transformeren
In dit scenario transformeert een IoT Edge-module de gegevens van downstreamapparaten voordat deze naar uw IoT Central-toepassing worden doorgestuurd. Op hoog niveau zijn de stappen voor het configureren van dit scenario:
Een IoT Edge-apparaat instellen: Een IoT Edge-apparaat installeren en inrichten als gateway en de gateway verbinden met uw IoT Central-toepassing.
Verbinding maken downstreamapparaat naar het IoT Edge-apparaat: Verbinding maken downstreamapparaten naar het IoT Edge-apparaat en richt deze in voor uw IoT Central-toepassing.
Apparaatgegevens transformeren in IoT Edge: een IoT Edge-module maken om de gegevens te transformeren. Implementeer de module op het IoT Edge-gatewayapparaat waarmee de getransformeerde apparaatgegevens worden doorgestuurd naar uw IoT Central-toepassing.
Controleer: Verzend gegevens van een downstreamapparaat naar de gateway en controleer of de getransformeerde apparaatgegevens uw IoT Central-toepassing bereiken.
In het voorbeeld dat in de volgende secties wordt beschreven, verzendt het downstreamapparaat JSON-gegevens in de volgende indeling naar het IoT Edge-gatewayapparaat:
{
"device": {
"deviceId": "<downstream-deviceid>"
},
"measurements": {
"temp": <temperature>,
"pressure": <pressure>,
"humidity": <humidity>,
"scale": "celsius",
}
}
U gebruikt een IoT Edge-module om de gegevens te transformeren en de temperatuurwaarde van Celsius
daaruit Fahrenheit
te converteren voordat u deze naar IoT Central verzendt:
{
"device": {
"deviceId": "<downstream-deviceid>"
},
"measurements": {
"temp": <temperature>,
"pressure": <pressure>,
"humidity": <humidity>,
"scale": "fahrenheit"
}
}
In de volgende stappen ziet u hoe u dit scenario instelt en configureert:
De aangepaste module bouwen
In dit scenario voert het IoT Edge-apparaat een aangepaste module uit waarmee de gegevens van het downstreamapparaat worden getransformeerd. Voordat u het IoT Edge-apparaat implementeert en configureert, moet u het volgende doen:
- Bouw de aangepaste module.
- Voeg de aangepaste module toe aan een containerregister.
De IoT Edge-runtime downloadt aangepaste modules uit een containerregister, zoals een Azure-containerregister of Docker Hub. De Azure Cloud Shell beschikt over alle hulpprogramma's die u nodig hebt om een containerregister te maken, de module te bouwen en de module te uploaden naar het register:
Een containerregister maken:
Open De Azure Cloud Shell en meld u aan bij uw Azure-abonnement.
Selecteer de Bash-shell .
Voer de volgende opdrachten uit om een Azure-containerregister te maken:
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
Noteer de waarden en
password
noteer deusername
waarden. U gebruikt ze later. U hebt slechts een van de wachtwoorden nodig die worden weergegeven in de opdrachtuitvoer.
De aangepaste module bouwen in Azure Cloud Shell:
Kloon in Azure Cloud Shell de GitHub-opslagplaats die de broncode van de module bevat:
git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
Voer de volgende opdrachten uit in De Azure Cloud Shell om de aangepaste module te bouwen:
cd iot-central-transform-with-iot-edge/custommodule/transformmodule az acr build --registry $REGISTRY_NAME --image transformmodule:0.0.1-amd64 -f Dockerfile.amd64 .
Het uitvoeren van de vorige opdrachten kan enkele minuten duren.
Een IoT Edge-apparaat instellen
In dit scenario wordt een IoT Edge-gatewayapparaat gebruikt om de gegevens van downstreamapparaten te transformeren. In deze sectie wordt beschreven hoe u een IoT Central-apparaatsjabloon maakt voor het gatewayapparaat in uw IoT Central-toepassing. IoT Edge-apparaten gebruiken een implementatiemanifest om hun modules te configureren.
In dit voorbeeld heeft het downstreamapparaat geen apparaatsjabloon nodig. Het downstreamapparaat is geregistreerd in IoT Central, zodat u de referenties kunt genereren die nodig zijn om het IoT Edge-apparaat te verbinden. Omdat de IoT Edge-module de gegevens transformeert, komt alle telemetrie van het downstreamapparaat binnen in IoT Central alsof het IoT Edge-apparaat het heeft verzonden.
Een apparaatsjabloon maken voor het IoT Edge-gatewayapparaat:
Sla een kopie van het implementatiemanifest op uw lokale ontwikkelcomputer op: moduledeployment.json.
Open uw lokale kopie van het moduledeployment.json manifestbestand in een teksteditor.
Zoek de
registryCredentials
sectie en vervang de tijdelijke aanduidingen door de waarden die u hebt genoteerd toen u het Azure-containerregister maakte. Deaddress
waarde ziet er als{your username}.azurecr.io
volgt uit.Zoek de
settings
sectie voor detransformmodule
. Vervang door{your username}
dezelfde waarde die u in de vorige stap hebt gebruikt. De wijzigingen opslaan.Navigeer in uw IoT Central-toepassing naar de pagina Edge-manifesten .
Selecteer + Nieuw. Voer een naam in, zoals Transformer voor uw implementatiemanifest, en upload vervolgens het moduledeployment.json bestand dat u eerder hebt gedownload. Het implementatiemanifest bevat een aangepaste module met de naam transformmodule.
Selecteer Volgende en vervolgens Maken.
Navigeer in uw IoT Central-toepassing naar de pagina Apparaatsjablonen .
Selecteer + Nieuw, selecteer Azure IoT Edge en selecteer vervolgens Volgende: Aanpassen.
Voer het IoT Edge-gatewayapparaat in als de naam van de apparaatsjabloon. Selecteer Dit is een gatewayapparaat.
Selecteer Volgende: Controleren en selecteer vervolgens Maken.
Selecteer Aangepast model op de pagina Een model maken.
Selecteer Modules in het model en importeer vervolgens modules uit het manifest. Selecteer het implementatiemanifest van de transformatiefunctie en selecteer vervolgens Importeren.
Het implementatiemanifest geeft niet de telemetrie op die door de module wordt verzonden. Om de telemetrie-definities toe te voegen aan de sjabloon voor het apparaat:
Selecteer Module transformmodule in de sectie Modules van de ioT Edge-gatewayapparaatsjabloon .
Selecteer Mogelijkheid toevoegen en gebruik de informatie in de volgende tabellen om een nieuw telemetrietype toe te voegen:
Instelling Weergegeven als Display name Apparaat Naam apparaat Type mogelijkheid Telemetrie Semantisch type Geen Schema Object Objectdefinitie:
Weergavenaam Naam Schema Apparaat-ID deviceId String Sla uw wijzigingen op.
Selecteer Mogelijkheid toevoegen en gebruik de informatie in de volgende tabellen om een nieuw telemetrietype toe te voegen:
Instelling Weergegeven als Display name Measurements Naam Metingen Type mogelijkheid Telemetrie Semantisch type Geen Schema Object Objectdefinitie:
Weergavenaam Naam Schema Temperatuur temperatuur Dubbel Druk druk Dubbel Vochtigheid vochtigheid Dubbel Schalen scale String Sla uw wijzigingen op.
Selecteer Relaties in het model. Selecteer geen relaties in de transformmodule .
Selecteer Relatie toevoegen.
Voer downstreamsensor in als de weergavenaam, sensor als de naam en selecteer Any als het doel. Selecteer Opslaan.
Selecteer Publiceren om de apparaatsjabloon te publiceren.
Een gatewayapparaat registreren in IoT Central:
Navigeer in uw IoT Central-toepassing naar de pagina Apparaten .
Selecteer een IoT Edge-gatewayapparaat en selecteer + Nieuw. Voer het IoT Edge-gatewayapparaat in als de apparaatnaam, voer gateway-01 in als apparaat-id, zorg ervoor dat het IoT Edge-gatewayapparaat is geselecteerd als de apparaatsjabloon en Nee is geselecteerd als Dit apparaat simuleren?. Selecteer Transformer als het randmanifest. Selecteer Maken.
Klik in de lijst met apparaten op het IoT Edge-gatewayapparaat en selecteer vervolgens Verbinding maken.
Noteer de waarden voor het id-bereik, de apparaat-id en de primaire sleutel voor het IoT Edge-gatewayapparaat. U gebruikt ze later.
Een downstreamapparaat registreren in IoT Central:
Navigeer in uw IoT Central-toepassing naar de pagina Apparaten .
Selecteer geen apparaatsjabloon. Selecteer + Nieuw. Voer downstream 01 in als de apparaatnaam, voer downstream-01 in als de apparaat-id, zorg ervoor dat de apparaatsjabloon niet is toegewezen en Nee is geselecteerd als Dit apparaat simuleren?. Selecteer Maken.
Klik in de lijst met apparaten op het downstream 01-apparaat en selecteer > Apparaat koppelen aan gateway beheren.
Selecteer in het dialoogvenster Koppelen aan een gateway de apparaatsjabloon voor het IoT Edge-gatewayapparaat en het apparaatexemplaren van het IoT Edge-gatewayapparaat . Selecteer Vastmaken.
Selecteer op het downstream 01-apparaat Verbinding maken.
Noteer de waarden voor het id-bereik, de apparaat-id en de primaire sleutel voor het downstream 01-apparaat. U gebruikt ze later.
De gateway en downstreamapparaten implementeren
Voor het gemak gebruikt dit artikel virtuele Azure-machines om de gateway en downstreamapparaten uit te voeren. Als u de twee virtuele Azure-machines wilt maken, selecteert u de knop Implementeren in Azure die wordt weergegeven na de volgende tabel. Gebruik de informatie in de tabel om het formulier Aangepaste implementatie te voltooien:
Veld | Waarde |
---|---|
Resourcegroep | ingress-scenario |
DNS-labelvoorvoegselgateway | Een unieke DNS-naam voor deze computer, zoals <your name>edgegateway |
Dns-labelvoorvoegsel downstream | Een unieke DNS-naam voor deze computer, zoals <your name>downstream |
Bereik-id | Het id-bereik dat u eerder hebt genoteerd |
IoT Edge-gateway voor apparaat-id | gateway-01 |
IoT Edge-gateway voor apparaatsleutel | De primaire sleutelwaarde die u eerder hebt genoteerd |
Verificatietype | Wachtwoord |
Beheerderswachtwoord of sleutel | Uw keuze voor het wachtwoord voor het AzureUser-account op beide virtuele machines. |
Selecteer Controleren en maken en vervolgens Maken. Het duurt enkele minuten om de virtuele machines in de resourcegroep voor inkomend verkeer te maken.
Ga als volgt te werk om te controleren of het IoT Edge-gatewayapparaat correct wordt uitgevoerd:
Open uw IoT Central-toepassing. Navigeer vervolgens naar het IoT Edge Gateway-apparaat in de lijst met apparaten op de pagina Apparaten .
Selecteer het tabblad Modules en controleer de status van de drie modules. Het duurt enkele minuten voordat de IoT Edge-runtime is opgestart op de virtuele machine. Wanneer de virtuele machine wordt uitgevoerd, wordt de status van de drie modules uitgevoerd. Als de IoT Edge-runtime niet wordt gestart, raadpleegt u Problemen met uw IoT Edge-apparaat oplossen.
Om uw IoT Edge-apparaat als gateway te laten functioneren, heeft het enkele certificaten nodig om de identiteit te bewijzen aan downstreamapparaten. In dit artikel worden democertificaten gebruikt. Gebruik in een productieomgeving certificaten van uw certificeringsinstantie.
De democertificaten genereren en installeren op uw gatewayapparaat:
Gebruik SSH om verbinding te maken met en u aan te melden op de virtuele machine van uw gatewayapparaat. U vindt de DNS-naam voor deze virtuele machine in Azure Portal. Navigeer naar de virtuele edgegateway-machine in de resourcegroep voor inkomend verkeer .
Tip
Mogelijk moet u poort 22 openen voor SSH-toegang op beide virtuele machines voordat u SSH kunt gebruiken om verbinding te maken vanaf uw lokale computer of de Azure Cloud Shell.
Voer de volgende opdrachten uit om de IoT Edge-opslagplaats te klonen en uw democertificaten te genereren:
# 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"
Nadat u de vorige opdrachten hebt uitgevoerd, zijn de volgende bestanden klaar voor gebruik in de volgende stappen:
- ~/certs/certs/azure-iot-test-only.root.ca.cert.pem : het basis-CA-certificaat dat wordt gebruikt om alle andere democertificaten te maken voor het testen van een IoT Edge-scenario.
- ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem : een ca-certificaat voor apparaten waarnaar wordt verwezen vanuit het bestand config.yaml . In een gatewayscenario controleert dit CA-certificaat hoe het IoT Edge-apparaat de identiteit controleert op downstreamapparaten.
- ~/certs/private/iot-edge-device-mycacert.key.pem : de persoonlijke sleutel die is gekoppeld aan het CA-certificaat van het apparaat.
Zie Democertificaten maken om ioT Edge-apparaatfuncties te testen voor meer informatie over deze democertificaten.
Open het bestand config.toml in een teksteditor. Voorbeeld:
sudo nano /etc/aziot/config.toml
Verwijder opmerkingen en wijzig de certificaatinstellingen als volgt:
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"
In het vorige voorbeeld wordt ervan uitgegaan dat u bent aangemeld als AzureUser en een apparaat-CA-certificaat hebt gemaakt met de naam 'mycacert'.
Sla de wijzigingen op en voer de volgende opdracht uit om te controleren of het bestand config.toml juist is:
sudo iotedge check
Start de IoT Edge-runtime opnieuw:
sudo iotedge config apply
Als de IoT Edge-runtime wordt gestart nadat uw wijzigingen zijn gewijzigd, verandert de status van de $edgeAgent en $edgeHub modules in Actief. U kunt deze statuswaarden zien op de pagina Modules voor uw gatewayapparaat in IoT Central.
Als de runtime niet wordt gestart, controleert u de wijzigingen die u hebt aangebracht in config.toml en raadpleegt u Problemen met uw IoT Edge-apparaat oplossen.
Verbinding maken downstreamapparaat naar Een IoT Edge-apparaat
Een downstreamapparaat verbinden met het IoT Edge-gatewayapparaat:
Gebruik SSH om verbinding te maken met en u aan te melden op de virtuele machine van uw downstreamapparaat. U vindt de DNS-naam voor deze virtuele machine in Azure Portal. Navigeer naar de virtuele machine leafdevice in de resourcegroep voor inkomend verkeer .
Tip
Mogelijk moet u poort 22 openen voor SSH-toegang op beide virtuele machines voordat u SSH kunt gebruiken om verbinding te maken vanaf uw lokale computer of de Azure Cloud Shell.
Voer de volgende opdracht uit om de GitHub-opslagplaats te klonen met de broncode voor het downstream-voorbeeldapparaat:
cd ~ git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
Voer de volgende
scp
opdrachten uit om het vereiste certificaat van het gatewayapparaat te kopiëren. Met dezescp
opdracht wordt de hostnaamedgegateway
gebruikt om de virtuele gatewaymachine te identificeren. U wordt gevraagd om uw wachtwoord:cd ~/iot-central-transform-with-iot-edge scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem leafdevice/certs
Navigeer naar de map leafdevice en installeer de vereiste pakketten. Voer vervolgens de
build
enstart
scripts uit om het apparaat in te richten en te verbinden met de gateway: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
Tijdens
sudo apt-get install nodejs
opdrachten kunt u worden gevraagd om installaties toe te staan: drukY
op de vraag of u hierom wordt gevraagd.Voer de apparaat-id, bereik-id en SAS-sleutel in voor het downstreamapparaat dat u eerder hebt gemaakt. Voer voor de hostnaam de naam in
edgegateway
. De uitvoer van de opdracht ziet er als volgt uit: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
Ter vereenvoudiging richt de code voor het downstreamapparaat het apparaat in IoT Central in. Downstreamapparaten maken doorgaans verbinding via een gateway omdat ze geen verbinding kunnen maken met internet en dus geen verbinding kunnen maken met het Device Provisioning Service-eindpunt. Zie Apparaten verbinden via een transparante IoT Edge-gateway voor meer informatie.
Verifiëren
Als u wilt controleren of het scenario wordt uitgevoerd, gaat u naar uw IoT Edge-gatewayapparaat in IoT Central:
Modules selecteren. Controleer of de drie IoT Edge-modules $edgeAgent, $edgeHub en transformmodule worden uitgevoerd.
Selecteer Onbewerkte gegevens. De telemetriegegevens in de kolom Apparaat zien er als volgt uit:
{"deviceId":"downstream-01"}
De telemetriegegevens in de kolom Metingen zien er als volgt uit:
{"temperature":85.21208,"pressure":59.97321,"humidity":77.718124,"scale":"farenheit"}
De temperatuur wordt verzonden in Fahrenheit. Omdat het IoT Edge-apparaat de gegevens van het downstreamapparaat transformeert, wordt de telemetrie gekoppeld aan het gatewayapparaat in IoT Central. Als u de getransformeerde telemetrie wilt visualiseren, maakt u een weergave in de ioT Edge-gatewayapparaatsjabloon en publiceert u deze opnieuw.
Gegevenstransformatie bij uitgaand verkeer
U kunt uw apparaten verbinden met IoT Central, de apparaatgegevens exporteren naar een rekenengine om deze te transformeren en de getransformeerde gegevens vervolgens terugsturen naar IoT Central voor apparaatbeheer en -analyse. Voorbeeld:
- Uw apparaten verzenden locatiegegevens naar IoT Central.
- IoT Central exporteert de gegevens naar een rekenengine die de locatiegegevens verbetert met weergegevens.
- De berekeningsengine verzendt de verbeterde gegevens terug naar IoT Central.
U kunt de IoT Central-apparaatbrug gebruiken als rekenengine om gegevens te transformeren die zijn geëxporteerd uit IoT Central.
Een voordeel van het transformeren van gegevens bij uitgaand verkeer is dat uw apparaten rechtstreeks verbinding maken met IoT Central, waardoor u eenvoudig opdrachten naar apparaten kunt verzenden of apparaateigenschappen kunt bijwerken. Met deze methode kunt u echter meer berichten gebruiken dan uw maandelijkse toewijzing en de kosten voor het gebruik van Azure IoT Central verhogen.
De IoT Central-apparaatbrug gebruiken om apparaatgegevens te transformeren
In dit scenario transformeert een rekenengine apparaatgegevens die zijn geëxporteerd uit IoT Central voordat deze worden teruggestuurd naar uw IoT Central-toepassing. Op hoog niveau zijn de stappen voor het configureren van dit scenario:
De rekenengine instellen: Een IoT Central-apparaatbrug maken om te fungeren als een rekenengine voor gegevenstransformatie.
Apparaatgegevens transformeren in de apparaatbrug: transformeer gegevens in de apparaatbrug door de functiecode van de apparaatbrug te wijzigen voor uw use-case voor gegevenstransformatie.
Gegevensstroom van IoT Central naar de apparaatbrug inschakelen: exporteer de gegevens van IoT Central naar de apparaatbrug voor transformatie. Stuur vervolgens de getransformeerde gegevens terug naar IoT Central. Wanneer u de gegevensexport maakt, gebruikt u berichteigenschapsfilters om alleen niet-vertaalde gegevens te exporteren.
Controleer: Verbinding maken uw apparaat naar de IoT Central-app en controleer op zowel onbewerkte apparaatgegevens als getransformeerde gegevens in IoT Central.
In het voorbeeld dat in de volgende secties wordt beschreven, verzendt het apparaat CSV-gegevens in de volgende indeling naar het IoT Edge-gatewayapparaat:
"<temperature in degrees C>, <humidity>, <latitude>, <longitude>"
U gebruikt de apparaatbrug om de apparaatgegevens te transformeren door:
- De temperatuureenheid wijzigen van centigrade in fahrenheit.
- Verrijk de apparaatgegevens met weergegevens die zijn opgehaald uit de Service Open Weather voor de waarden voor breedtegraad en lengtegraad.
De apparaatbrug verzendt vervolgens de getransformeerde gegevens naar IoT Central in de volgende indeling:
{
"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>
}
}
In de volgende stappen ziet u hoe u dit scenario instelt en configureert:
Uw IoT Central-verbindingsinstellingen ophalen
Voordat u dit scenario instelt, moet u enkele verbindingsinstellingen ophalen uit uw IoT Central-toepassing:
Meld u aan bij uw IoT Central-toepassing.
Navigeer naar verbindingsgroepen voor machtigingen>.
Noteer het id-bereik. U gebruikt deze waarde later.
Selecteer de registratiegroep SaS-IoT-Devices . Noteer de primaire sleutel van de Shared Access Signature. U gebruikt deze waarde later.
Een rekenengine instellen
In dit scenario wordt dezelfde Azure Functions-implementatie gebruikt als de IoT Central-apparaatbrug. Als u de apparaatbrug wilt implementeren, selecteert u de knop Implementeren in Azure die wordt weergegeven na de volgende tabel. Gebruik de informatie in de tabel om het formulier Aangepaste implementatie te voltooien:
Veld | Waarde |
---|---|
Resourcegroep | Een nieuwe resourcegroep maken met de naam egress-scenario |
Regio | Selecteer de regio het dichtst bij u in de buurt. |
Bereik-id | Gebruik het id-bereik dat u eerder hebt genoteerd. |
SAS-sleutel van IoT Central | Gebruik de primaire sleutel van de handtekening voor gedeelde toegang voor de registratiegroep SaS-IoT-Devices . U hebt eerder een notitie gemaakt van deze waarde. |
Selecteer Controleren en maken en vervolgens Maken. Het duurt enkele minuten om de Azure-functie en gerelateerde resources te maken in de resourcegroep voor uitgaand scenario .
Apparaatgegevens transformeren in de apparaatbrug
De apparaatbrug configureren om de geëxporteerde apparaatgegevens te transformeren:
Haal een toepassings-API-sleutel op uit de Open Weather-service. Een account is gratis met beperkt gebruik van de service. Als u een toepassings-API-sleutel wilt maken, maakt u een account in de portal open Weather-service en volgt u de instructies. U gebruikt later uw Open Weather API-sleutel.
Navigeer in Azure Portal naar functie-app in de resourcegroep voor uitgaand scenario .
Selecteer in het linkernavigatievenster in Ontwikkelhulpprogramma's De App Service-editor (preview).
Selecteer Go → om de pagina App Service Editor te openen. Breng de volgende wijzigingen aan:
Open het bestand wwwroot/IoTCIntegration/index.js . Vervang alle code in dit bestand door de code in index.js.
Werk in de nieuwe index.js het variabelebestand bij met de
openWeatherAppId
Open Weather API-sleutel die u eerder hebt verkregen.const openWeatherAppId = '<Your Open Weather API Key>'
Voeg een berichteigenschap toe aan de gegevens die door de functie worden verzonden naar IoT Central. IoT Central gebruikt deze eigenschap om te voorkomen dat de getransformeerde gegevens worden geëxporteerd. Als u deze wijziging wilt aanbrengen, opent u het bestand wwwroot/IoTCIntegration/lib/engine.js . Zoek de volgende code:
if (timestamp) { message.properties.add('iothub-creation-time-utc', timestamp); }
Voeg de volgende code toe vlak na de code in het vorige codefragment:
// add a message property that we can look for in data export to not re-compute computed telemetry message.properties.add('computed', true);
Ter referentie kunt u een voltooid voorbeeld van het engine.js-bestand bekijken.
Selecteer console in de App Service-editor in de linkernavigatiebalk. Voer de volgende opdrachten uit om de vereiste pakketten te installeren:
cd IoTCIntegration npm install
Het kan enkele minuten duren voor deze opdracht is uitgevoerd.
Ga terug naar de overzichtspagina van De Azure-functie en start de functie opnieuw op:
Selecteer Functies in het linkernavigatievenster. Selecteer vervolgens IoTCIntegration. Selecteer Code + Test.
Noteer de functie-URL. U hebt deze waarde later nodig:
Gegevensstroom van IoT Central naar de apparaatbrug inschakelen
In deze sectie wordt beschreven hoe u de Azure IoT Central-toepassing instelt.
Sla eerst het apparaatmodelbestand op uw lokale computer op.
Als u een apparaatsjabloon wilt toevoegen aan uw IoT Central-toepassing, gaat u naar uw IoT Central-toepassing en vervolgens:
Meld u aan bij uw IoT Central-toepassing en navigeer naar de pagina Apparaatsjablonen .
Selecteer + Nieuw, selecteer IoT-apparaat, selecteer Volgende: Aanpassen, voer rekenmodel in als de sjabloonnaam. Selecteer Volgende: Controleren. Selecteer vervolgens Maken.
Selecteer Een model importeren en blader naar het model.json bestand dat u eerder hebt gedownload.
Nadat het model is geïmporteerd, selecteert u Publiceren om de apparaatsjabloon Rekenmodel te publiceren.
Stel de gegevensexport in om gegevens naar uw apparaatbrug te verzenden:
Selecteer Gegevensexport in uw IoT Central-toepassing.
Selecteer + Nieuwe bestemming om een bestemming te maken die moet worden gebruikt met de apparaatbrug. Roep de doel-compute-functie aan voor doeltype, selecteer Webhook. Voor de Callback-URL selecteert u plakken in de functie-URL die u eerder hebt genoteerd. Laat de autorisatie staan op Geen verificatie.
De wijzigingen opslaan.
Selecteer + Nieuwe export en maak een gegevensexport met de naam Compute-export.
Voeg een filter toe om alleen apparaatgegevens te exporteren voor de apparaatsjabloon die u gebruikt. Selecteer + Filter, selecteer apparaatsjabloon voor items, selecteer de operator Is gelijk aan en selecteer de apparaatsjabloon rekenmodel die u hebt gemaakt.
Voeg een berichtfilter toe om onderscheid te maken tussen getransformeerde en niet-getransformeerde gegevens. Met dit filter voorkomt u dat getransformeerde waarden naar de apparaatbrug worden verzonden. Selecteer + berichteigenschapsfilter en voer de berekende naamwaarde in en selecteer vervolgens de operator Bestaat niet. De tekenreeks
computed
wordt gebruikt als een trefwoord in de voorbeeldcode van de apparaatbrug.Selecteer voor het doel de compute-functiebestemming die u eerder hebt gemaakt.
De wijzigingen opslaan. Na een minuut of zo wordt de exportstatus weergegeven als In orde.
Verifiëren
Het voorbeeldapparaat dat u gebruikt om het scenario te testen, is geschreven in Node.js. Zorg ervoor dat u Node.js en npm op uw lokale computer hebt geïnstalleerd. Als u deze vereisten niet wilt installeren, gebruikt u de Azure Cloud Shell waarop deze vooraf zijn geïnstalleerd.
Een voorbeeldapparaat uitvoeren waarmee het scenario wordt getest:
Kloon de GitHub-opslagplaats die de voorbeeldcode bevat, voer de volgende opdracht uit:
git clone https://github.com/Azure/iot-central-compute
Als u het voorbeeldapparaat wilt verbinden met uw IoT Central-toepassing, bewerkt u de verbindingsinstellingen in het bestand iot-central-compute/device/device.js . Vervang de bereik-id en de SAS-sleutel van de groep door de waarden die u eerder hebt genoteerd:
// 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>"; //
De wijzigingen opslaan.
Gebruik de volgende opdrachten om de vereiste pakketten te installeren en het apparaat uit te voeren:
cd ~/iot-central-compute/device npm install node device.js
Het resultaat van deze opdracht ziet eruit als de volgende uitvoer:
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"}]
Navigeer in uw IoT Central-toepassing naar het apparaat met de naam computeDevice. In de weergave Onbewerkte gegevens zijn er twee verschillende telemetriestromen die ongeveer om de vijf seconden worden weergegeven. De stream met niet-gemodelleerde gegevens is de oorspronkelijke telemetrie, de stream met gemodelleerde gegevens zijn de gegevens die de functie heeft getransformeerd:
Resources opschonen
Als u de Azure-resources die u hebt gemaakt niet meer nodig hebt tijdens het volgen van de stappen in deze handleiding, verwijdert u de resourcegroepen in Azure Portal.
De twee resourcegroepen die u in deze handleiding hebt gebruikt, zijn inkomend scenario en uitgaand scenario.
Volgende stappen
In dit artikel hebt u geleerd over de verschillende opties voor het transformeren van apparaatgegevens voor IoT Central, zowel op inkomend als uitgaand verkeer. Het artikel bevat stapsgewijze instructies voor twee specifieke scenario's:
- Gebruik een IoT Edge-module om gegevens van downstreamapparaten te transformeren voordat de gegevens naar uw IoT Central-toepassing worden verzonden.
- Gebruik Azure Functions om gegevens buiten IoT Central te transformeren. In dit scenario gebruikt IoT Central een gegevensexport om binnenkomende gegevens te verzenden naar een Azure-functie die moet worden getransformeerd. De functie verzendt de getransformeerde gegevens terug naar uw IoT Central-toepassing.
Nu u hebt geleerd hoe u apparaatgegevens buiten uw Azure IoT Central-toepassing kunt transformeren, kunt u leren hoe u Data Explorer kunt gebruiken om apparaatgegevens in IoT Central te analyseren.