Zewnętrzne przekształcanie danych dla usługi IoT Central
Urządzenia IoT wysyłają dane w różnych formatach. Aby używać danych urządzenia z aplikacją usługi IoT Central, może być konieczne użycie przekształcenia w celu:
- Ustaw format danych zgodny z aplikacją usługi IoT Central.
- Konwertowanie jednostek.
- Oblicz nowe metryki.
- Wzbogacanie danych z innych źródeł.
W tym artykule pokazano, jak przekształcać dane urządzenia poza usługą IoT Central w ruchu przychodzącym lub wychodzącym.
Uwaga
Usługa IoT Central może również przekształcać dane wewnętrznie, aby dowiedzieć się więcej, zobacz Mapowanie danych telemetrycznych na ruch przychodzący do usługi IoT Central i Przekształcanie danych wewnątrz aplikacji usługi IoT Central na potrzeby eksportu.
Na poniższym diagramie przedstawiono trzy trasy dla danych, które obejmują przekształcenia:
W poniższej tabeli przedstawiono trzy przykładowe typy przekształceń:
Przekształcenie | opis | Przykład | Uwagi |
---|---|---|---|
Format wiadomości | Konwertowanie na komunikaty JSON lub manipulowanie nimi. | Plik CSV do formatu JSON | W ruchu przychodzącym. Usługa IoT Central akceptuje tylko komunikaty JSON wartości. Aby dowiedzieć się więcej, zobacz Telemetria, właściwość i ładunki poleceń. |
Obliczeń | Funkcje matematyczne, które można wykonywać w usłudze Azure Functions . | Konwersja jednostek z Fahrenheita na Stopnie Celsjusza. | Przekształć przy użyciu wzorca ruchu wychodzącego, aby korzystać ze skalowalnego ruchu przychodzącego urządzenia za pośrednictwem bezpośredniego połączenia z usługą IoT Central. Przekształcanie danych umożliwia korzystanie z funkcji usługi IoT Central, takich jak wizualizacje i zadania. |
Wzbogacanie komunikatów | Nie można odnaleźć wzbogacenia z zewnętrznych źródeł danych we właściwościach lub telemetrii urządzenia. Aby dowiedzieć się więcej na temat wewnętrznych wzbogaceń, zobacz Eksportowanie danych IoT do miejsc docelowych w chmurze przy użyciu usługi Blob Storage. | Dodawanie informacji o pogodzie do komunikatów przy użyciu danych lokalizacji z urządzeń. | Przekształć przy użyciu wzorca ruchu wychodzącego, aby korzystać ze skalowalnego ruchu przychodzącego urządzenia za pośrednictwem bezpośredniego połączenia z usługą IoT Central. |
Wymagania wstępne
Aby wykonać kroki opisane w tym przewodniku z instrukcjami, potrzebne są następujące elementy:
Aktywna subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Aplikacja usługi IoT Central utworzona na podstawie szablonu aplikacji niestandardowej. Aby dowiedzieć się więcej, zobacz Tworzenie aplikacji usługi IoT Central i Informacje o aplikacji.
Przekształcanie danych przy ruchu przychodzącym
Aby przekształcić dane urządzenia w ruchu przychodzącym, dostępne są dwie opcje:
IoT Edge: użyj modułu usługi IoT Edge, aby przekształcić dane z urządzeń podrzędnych przed wysłaniem danych do aplikacji usługi IoT Central.
Mostek urządzeń usługi IoT Central: mostek urządzeń usługi IoT Central łączy inne chmury urządzeń IoT, takie jak Sigfox, Particle i The Things Network, z usługą IoT Central. Mostek urządzenia używa funkcji platformy Azure do przekazywania danych i można dostosować funkcję w celu przekształcenia danych urządzenia.
Przekształcanie danych urządzenia przy użyciu usługi IoT Edge
W tym scenariuszu moduł usługi IoT Edge przekształca dane z urządzeń podrzędnych przed przekazaniem ich do aplikacji usługi IoT Central. Na wysokim poziomie kroki konfigurowania tego scenariusza są następujące:
Konfigurowanie urządzenia usługi IoT Edge: instalowanie i aprowizuj urządzenie usługi IoT Edge jako bramę oraz łączenie bramy z aplikacją usługi IoT Central.
Połączenie urządzenia podrzędnego do urządzenia usługi IoT Edge: Połączenie urządzenia podrzędnego do urządzenia usługi IoT Edge i aprowizować je w aplikacji usługi IoT Central.
Przekształcanie danych urządzenia w usłudze IoT Edge: tworzenie modułu usługi IoT Edge w celu przekształcenia danych. Wdróż moduł na urządzeniu bramy usługi IoT Edge, które przekazuje przekształcone dane urządzenia do aplikacji usługi IoT Central.
Sprawdź: Wysyłanie danych z urządzenia podrzędnego do bramy i weryfikowanie, czy przekształcone dane urządzenia docierają do aplikacji usługi IoT Central.
W przykładzie opisanym w poniższych sekcjach urządzenie podrzędne wysyła dane JSON w następującym formacie do urządzenia bramy usługi IoT Edge:
{
"device": {
"deviceId": "<downstream-deviceid>"
},
"measurements": {
"temp": <temperature>,
"pressure": <pressure>,
"humidity": <humidity>,
"scale": "celsius",
}
}
Moduł usługi IoT Edge służy do przekształcania danych i konwertowania wartości temperatury z Celsius
na Fahrenheit
przed wysłaniem ich do usługi IoT Central:
{
"device": {
"deviceId": "<downstream-deviceid>"
},
"measurements": {
"temp": <temperature>,
"pressure": <pressure>,
"humidity": <humidity>,
"scale": "fahrenheit"
}
}
W poniższych krokach pokazano, jak skonfigurować i skonfigurować ten scenariusz:
Tworzenie modułu niestandardowego
W tym scenariuszu urządzenie usługi IoT Edge uruchamia niestandardowy moduł, który przekształca dane z urządzenia podrzędnego. Przed wdrożeniem i skonfigurowaniem urządzenia usługi IoT Edge należy:
- Skompiluj moduł niestandardowy.
- Dodaj moduł niestandardowy do rejestru kontenerów.
Środowisko uruchomieniowe usługi IoT Edge pobiera niestandardowe moduły z rejestru kontenerów, takiego jak rejestr kontenerów platformy Azure lub docker Hub. Usługa Azure Cloud Shell ma wszystkie narzędzia potrzebne do utworzenia rejestru kontenerów, skompilowania modułu i przekazania modułu do rejestru:
Aby utworzyć rejestr kontenerów:
Otwórz usługę Azure Cloud Shell i zaloguj się do subskrypcji platformy Azure.
Wybierz powłokę Bash .
Uruchom następujące polecenia, aby utworzyć rejestr kontenerów platformy Azure:
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
Zanotuj
username
wartości ipassword
, użyj ich później. Potrzebujesz tylko jednego z haseł wyświetlanych w danych wyjściowych polecenia.
Aby skompilować moduł niestandardowy w usłudze Azure Cloud Shell:
W usłudze Azure Cloud Shell sklonuj repozytorium GitHub zawierające kod źródłowy modułu:
git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
Aby skompilować moduł niestandardowy, uruchom następujące polecenia w usłudze 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 .
Uruchomienie poprzednich poleceń może potrwać kilka minut.
Konfigurowanie urządzenia usługi IoT Edge
Ten scenariusz używa urządzenia bramy usługi IoT Edge do przekształcania danych z dowolnego urządzenia podrzędnego. W tej sekcji opisano sposób tworzenia szablonu urządzenia usługi IoT Central dla urządzenia bramy w aplikacji usługi IoT Central. Urządzenia usługi IoT Edge używają manifestu wdrożenia do konfigurowania swoich modułów.
W tym przykładzie urządzenie podrzędne nie wymaga szablonu urządzenia. Urządzenie podrzędne jest zarejestrowane w usłudze IoT Central, aby można było wygenerować poświadczenia potrzebne do połączenia urządzenia usługi IoT Edge. Ponieważ moduł usługi IoT Edge przekształca dane, wszystkie dane telemetryczne urządzenia podrzędnego docierają do usługi IoT Central tak, jakby urządzenie usługi IoT Edge je wysłało.
Aby utworzyć szablon urządzenia dla urządzenia bramy usługi IoT Edge:
Zapisz kopię manifestu wdrożenia na lokalnym komputerze deweloperskim: moduledeployment.json.
Otwórz lokalną kopię pliku manifestu moduledeployment.json w edytorze tekstów.
Znajdź sekcję
registryCredentials
i zastąp symbole zastępcze wartościami zanotowanymi podczas tworzenia rejestru kontenerów platformy Azure. Wartośćaddress
wygląda następująco:{your username}.azurecr.io
.Znajdź sekcję
settings
dla elementutransformmodule
. Zastąp{your username}
ciąg tą samą wartością, która była używana w poprzednim kroku. Zapisz zmiany.W aplikacji usługi IoT Central przejdź do strony manifestów usługi Edge.
Wybierz + Nowy. Wprowadź nazwę, taką jak Transformer dla manifestu wdrożenia, a następnie przekaż pobrany wcześniej plik moduledeployment.json . Manifest wdrożenia zawiera moduł niestandardowy o nazwie transformmodule.
Wybierz przycisk Dalej , a następnie pozycję Utwórz.
W aplikacji usługi IoT Central przejdź do strony Szablony urządzeń.
Wybierz pozycję + Nowy, wybierz pozycję Azure IoT Edge, a następnie wybierz pozycję Dalej: Dostosuj.
Wprowadź nazwę urządzenia bramy usługi IoT Edge. Wybierz pozycję To jest urządzenie bramy.
Wybierz pozycję Dalej: Przejrzyj, a następnie wybierz pozycję Utwórz.
Na stronie Tworzenie modelu wybierz pozycję Model niestandardowy.
W modelu wybierz pozycję Moduły, a następnie pozycję Importuj moduły z manifestu. Wybierz manifest wdrożenia funkcji Transformer, a następnie wybierz pozycję Importuj.
Manifest wdrożenia nie określa telemetrii wysyłanej przez moduł. Aby dodać definicje telemetrii do szablonu urządzenia:
Wybierz pozycję Transformmodule modułu w sekcji Moduły szablonu urządzenia bramy usługi IoT Edge.
Wybierz pozycję Dodaj możliwość i użyj informacji w poniższych tabelach, aby dodać nowy typ telemetrii:
Ustawienie Wartość Display name Urządzenie Nazwisko device Typ możliwości Telemetria Typ semantyczny Brak Schemat Objekt Definicja obiektu:
Display name Nazwisko Schemat Identyfikator urządzenia deviceId String Zapisz zmiany.
Wybierz pozycję Dodaj możliwość i użyj informacji w poniższych tabelach, aby dodać nowy typ telemetrii:
Ustawienie Wartość Display name Measurements Nazwisko Pomiary Typ możliwości Telemetria Typ semantyczny Brak Schemat Objekt Definicja obiektu:
Display name Nazwisko Schemat Temperatura temperature Liczba rzeczywista Ciśnienie ciśnienie Liczba rzeczywista Wilgotność humidity Liczba rzeczywista Skalowanie scale String Zapisz zmiany.
W modelu wybierz pozycję Relacje. Nie wybieraj pozycji Relacje w module transformmodule.
Wybierz pozycję Dodaj relację.
Wprowadź wartość Czujnik podrzędny jako nazwę wyświetlaną, czujnik jako nazwę, a następnie wybierz pozycję Dowolne jako obiekt docelowy. Wybierz pozycję Zapisz.
Wybierz pozycję Publikuj, aby opublikować szablon urządzenia.
Aby zarejestrować urządzenie bramy w usłudze IoT Central:
W aplikacji usługi IoT Central przejdź do strony Urządzenia .
Wybierz pozycję Urządzenie bramy usługi IoT Edge i wybierz pozycję + Nowy. Wprowadź nazwę urządzenia bramy usługi IoT Edge, wprowadź wartość gateway-01 jako identyfikator urządzenia, upewnij się, że jako szablon urządzenia wybrano urządzenie bramy usługi IoT Edge, a jako szablon urządzenia wybrano wartość Nie. Wybierz pozycję Transformer jako manifest krawędzi. Wybierz pozycję Utwórz.
Na liście urządzeń kliknij urządzenie bramy usługi IoT Edge, a następnie wybierz pozycję Połączenie.
Zanotuj zakres identyfikatorów, identyfikator urządzenia i wartości klucza podstawowego dla urządzenia bramy usługi IoT Edge. Będą one używane później.
Aby zarejestrować urządzenie podrzędne w usłudze IoT Central:
W aplikacji usługi IoT Central przejdź do strony Urządzenia .
Nie wybieraj szablonu urządzenia. Wybierz + Nowy. Wprowadź wartość Podrzędna 01 jako nazwę urządzenia, wprowadź wartość downstream-01 jako identyfikator urządzenia, upewnij się, że szablon urządzenia jest nieprzypisany , a wartość Nie jest wybrana jako Symulowaj to urządzenie?. Wybierz pozycję Utwórz.
Na liście urządzeń kliknij urządzenie podrzędne 01 , a następnie wybierz pozycję Zarządzaj dołączaniem urządzenia > do bramy.
W oknie dialogowym Dołączanie do bramy wybierz szablon urządzenia urządzenia bramy usługi IoT Edge i wystąpienie urządzenia bramy usługi IoT Edge. Wybierz Dołącz.
Na urządzeniu Podrzędny 01 wybierz pozycję Połączenie.
Zanotuj zakres identyfikatorów, identyfikator urządzenia i wartości klucza podstawowego dla urządzenia podrzędnego 01 . Będą one używane później.
Wdrażanie bramy i urządzeń podrzędnych
Dla wygody ten artykuł używa maszyn wirtualnych platformy Azure do uruchamiania bramy i urządzeń podrzędnych. Aby utworzyć dwie maszyny wirtualne platformy Azure, wybierz przycisk Wdróż na platformie Azure widoczny po poniższej tabeli. Użyj informacji w tabeli, aby ukończyć formularz wdrożenia niestandardowego:
Pole | Wartość |
---|---|
Grupa zasobów | ingress-scenario |
Brama prefiksu etykiet DNS | Unikatowa nazwa DNS dla tej maszyny, taka jak <your name>edgegateway |
Prefiks etykiety DNS podrzędny | Unikatowa nazwa DNS dla tej maszyny, taka jak <your name>downstream |
Identyfikator zakresu | Zanotuj wcześniej zanotuj zakres identyfikatorów |
Brama usługi IoT Edge o identyfikatorze urządzenia | gateway-01 |
Brama usługi IoT Edge klucza urządzenia | Wartość klucza podstawowego zanotowana wcześniej |
Typ uwierzytelniania | Hasło |
Hasło lub klucz administratora | Możesz wybrać hasło dla konta azureUser na obu maszynach wirtualnych. |
Wybierz pozycję Przejrzyj i utwórz, a następnie pozycję Utwórz. Utworzenie maszyn wirtualnych w grupie zasobów ingress-scenario zajmuje kilka minut.
Aby sprawdzić, czy urządzenie bramy usługi IoT Edge działa prawidłowo:
Otwórz aplikację usługi IoT Central. Następnie przejdź do urządzenia bramy usługi IoT Edge na liście urządzeń na stronie Urządzenia .
Wybierz kartę Moduły i sprawdź stan trzech modułów. Uruchomienie środowiska uruchomieniowego usługi IoT Edge na maszynie wirtualnej trwa kilka minut. Gdy maszyna wirtualna jest uruchomiona, stan trzech modułów to Uruchomiono. Jeśli środowisko uruchomieniowe usługi IoT Edge nie zostanie uruchomione, zobacz Rozwiązywanie problemów z urządzeniem usługi IoT Edge.
Aby urządzenie usługi IoT Edge działało jako brama, potrzebuje niektórych certyfikatów, aby udowodnić swoją tożsamość wszystkim urządzeniom podrzędnym. W tym artykule używane są certyfikaty demonstracyjne. W środowisku produkcyjnym użyj certyfikatów z urzędu certyfikacji.
Aby wygenerować certyfikaty demonstracyjne i zainstalować je na urządzeniu bramy:
Użyj protokołu SSH, aby nawiązać połączenie i zalogować się na maszynie wirtualnej urządzenia bramy. Nazwę DNS tej maszyny wirtualnej można znaleźć w witrynie Azure Portal. Przejdź do maszyny wirtualnej edgegateway w grupie zasobów ingress-scenario .
Napiwek
Może być konieczne otwarcie portu 22 dla dostępu SSH na obu maszynach wirtualnych, zanim będzie można nawiązać połączenie za pomocą protokołu SSH z komputera lokalnego lub usługi Azure Cloud Shell.
Uruchom następujące polecenia, aby sklonować repozytorium usługi IoT Edge i wygenerować certyfikaty demonstracyjne:
# 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"
Po uruchomieniu poprzednich poleceń następujące pliki są gotowe do użycia w następnych krokach:
- ~/certs/certs/azure-iot-test-only.root.ca.cert.pem — certyfikat głównego urzędu certyfikacji używany do tworzenia wszystkich innych certyfikatów demonstracyjnych na potrzeby testowania scenariusza usługi IoT Edge.
- ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem — certyfikat urzędu certyfikacji urządzenia, do którego odwołuje się plik config.yaml . W scenariuszu bramy ten certyfikat urzędu certyfikacji jest sposobem, w jaki urządzenie usługi IoT Edge weryfikuje swoją tożsamość na urządzeniach podrzędnych.
- ~/certs/private/iot-edge-device-mycacert.key.pem — klucz prywatny skojarzony z certyfikatem urzędu certyfikacji urządzenia.
Aby dowiedzieć się więcej na temat tych certyfikatów demonstracyjnych, zobacz Tworzenie certyfikatów demonstracyjnych w celu przetestowania funkcji urządzeń usługi IoT Edge.
Otwórz plik config.toml w edytorze tekstów. Na przykład:
sudo nano /etc/aziot/config.toml
Usuń komentarz i zmodyfikuj ustawienia certyfikatu w następujący sposób:
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"
W poprzednim przykładzie założono, że logujesz się jako użytkownik AzureUser i utworzono certyfikat urzędu certyfikacji urządzenia o nazwie "mycacert".
Zapisz zmiany i uruchom następujące polecenie, aby sprawdzić, czy plik config.toml jest poprawny:
sudo iotedge check
Uruchom ponownie środowisko uruchomieniowe usługi IoT Edge:
sudo iotedge config apply
Jeśli środowisko uruchomieniowe usługi IoT Edge zostanie pomyślnie uruchomione po wprowadzeniu zmian, stan modułów $edgeAgent i $edgeHub zmieni się na Uruchomiono. Te wartości stanu można wyświetlić na stronie Moduły urządzenia bramy w usłudze IoT Central.
Jeśli środowisko uruchomieniowe nie zostanie uruchomione, sprawdź zmiany wprowadzone w pliku config.toml i zobacz Rozwiązywanie problemów z urządzeniem usługi IoT Edge.
Połączenie urządzenia podrzędnego do urządzenia usługi IoT Edge
Aby połączyć urządzenie podrzędne z urządzeniem bramy usługi IoT Edge:
Użyj protokołu SSH, aby nawiązać połączenie i zalogować się na maszynie wirtualnej urządzenia podrzędnego. Nazwę DNS tej maszyny wirtualnej można znaleźć w witrynie Azure Portal. Przejdź do maszyny wirtualnej leafdevice w grupie zasobów ingress-scenario .
Napiwek
Może być konieczne otwarcie portu 22 dla dostępu SSH na obu maszynach wirtualnych, zanim będzie można nawiązać połączenie za pomocą protokołu SSH z komputera lokalnego lub usługi Azure Cloud Shell.
Aby sklonować repozytorium GitHub z kodem źródłowym przykładowego urządzenia podrzędnego, uruchom następujące polecenie:
cd ~ git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
Aby skopiować wymagany certyfikat z urządzenia bramy, uruchom następujące
scp
polecenia. Toscp
polecenie używa nazwyedgegateway
hosta do identyfikowania maszyny wirtualnej bramy. Zostanie wyświetlony monit o podanie hasła:cd ~/iot-central-transform-with-iot-edge scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem leafdevice/certs
Przejdź do folderu leafdevice i zainstaluj wymagane pakiety. Następnie uruchom
build
skrypty istart
, aby aprowizować i połączyć urządzenie z bramą: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
Podczas
sudo apt-get install nodejs
wykonywania poleceń można poprosić o zezwolenie na instalacje: naciśnij,Y
jeśli zostanie wyświetlony monit.Wprowadź identyfikator urządzenia, identyfikator zakresu i klucz sygnatury dostępu współdzielonego dla utworzonego wcześniej urządzenia podrzędnego. W polu nazwa hosta wprowadź wartość
edgegateway
. Dane wyjściowe polecenia wyglądają następująco: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
Dla uproszczenia kod urządzenia podrzędnego aprowizuje urządzenie w usłudze IoT Central. Zazwyczaj urządzenia podrzędne łączą się za pośrednictwem bramy, ponieważ nie mogą łączyć się z Internetem i nie mogą łączyć się z punktem końcowym usługi Device Provisioning Service. Aby dowiedzieć się więcej, zobacz Jak połączyć urządzenia za pośrednictwem przezroczystej bramy usługi IoT Edge.
Weryfikacja
Aby sprawdzić, czy scenariusz jest uruchomiony, przejdź do urządzenia bramy usługi IoT Edge w usłudze IoT Central:
Wybierz pozycję Moduły. Sprawdź, czy trzy moduły usługi IoT Edge $edgeAgent, $edgeHub i transformmodule są uruchomione.
Wybierz pozycję Nieprzetworzone dane. Dane telemetryczne w kolumnie Urządzenie wyglądają następująco:
{"deviceId":"downstream-01"}
Dane telemetryczne w kolumnie Miary wyglądają następująco:
{"temperature":85.21208,"pressure":59.97321,"humidity":77.718124,"scale":"farenheit"}
Temperatura jest wysyłana w Fahrenheit. Ponieważ urządzenie usługi IoT Edge przekształca dane z urządzenia podrzędnego, dane telemetryczne są skojarzone z urządzeniem bramy w usłudze IoT Central. Aby zwizualizować przekształcone dane telemetryczne, utwórz widok w szablonie urządzenia bramy usługi IoT Edge i opublikuj go ponownie.
Przekształcanie danych w ruchu wychodzącym
Możesz połączyć urządzenia z usługą IoT Central, wyeksportować dane urządzenia do aparatu obliczeniowego, aby je przekształcić, a następnie wysłać przekształcone dane z powrotem do usługi IoT Central na potrzeby zarządzania urządzeniami i analizy. Na przykład:
- Urządzenia wysyłają dane lokalizacji do usługi IoT Central.
- Usługa IoT Central eksportuje dane do aparatu obliczeniowego, który rozszerza dane lokalizacji o informacje o pogodzie.
- Aparat obliczeniowy wysyła rozszerzone dane z powrotem do usługi IoT Central.
Mostek urządzeń usługi IoT Central można użyć jako aparatu obliczeniowego, aby przekształcić dane wyeksportowane z usługi IoT Central.
Zaletą przekształcania danych przy ruchu wychodzącym jest to, że urządzenia łączą się bezpośrednio z usługą IoT Central, co ułatwia wysyłanie poleceń do urządzeń lub aktualizowanie właściwości urządzenia. Jednak w przypadku tej metody można użyć większej liczby komunikatów niż miesięczne przydziały i zwiększyć koszt korzystania z usługi Azure IoT Central.
Przekształcanie danych urządzenia za pomocą mostka urządzeń usługi IoT Central
W tym scenariuszu aparat obliczeniowy przekształca dane urządzenia wyeksportowane z usługi IoT Central przed wysłaniem ich z powrotem do aplikacji usługi IoT Central. Na wysokim poziomie kroki konfigurowania tego scenariusza są następujące:
Konfigurowanie aparatu obliczeniowego: utwórz mostek urządzeń usługi IoT Central, aby pełnić rolę aparatu obliczeniowego na potrzeby przekształcania danych.
Przekształcanie danych urządzenia w mostku urządzenia: przekształcanie danych w mostku urządzenia przez zmodyfikowanie kodu funkcji mostka urządzenia dla przypadku użycia przekształcania danych.
Włącz przepływ danych z usługi IoT Central do mostka urządzenia: wyeksportuj dane z usługi IoT Central do mostka urządzenia w celu przekształcenia. Następnie przekaż przekształcone dane z powrotem do usługi IoT Central. Podczas tworzenia eksportu danych użyj filtrów właściwości komunikatów, aby eksportować tylko nieprzetłumaczone dane.
Sprawdź: Połączenie urządzenie do aplikacji usługi IoT Central i sprawdź, czy dane pierwotne urządzenia i przekształcone dane w usłudze IoT Central.
W przykładzie opisanym w poniższych sekcjach urządzenie wysyła dane CSV w następującym formacie do urządzenia bramy usługi IoT Edge:
"<temperature in degrees C>, <humidity>, <latitude>, <longitude>"
Mostek urządzenia służy do przekształcania danych urządzenia przez:
- Zmiana jednostki temperatury z centigrade na fahrenheit.
- Wzbogacanie danych urządzenia przy użyciu danych pogodowych ściągniętych z usługi Open Weather dla wartości szerokości i długości geograficznej.
Następnie mostek urządzenia wysyła przekształcone dane do usługi IoT Central w następującym formacie:
{
"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>
}
}
W poniższych krokach pokazano, jak skonfigurować i skonfigurować ten scenariusz:
Pobieranie ustawień połączenia usługi IoT Central
Przed skonfigurowaniem tego scenariusza należy pobrać ustawienia połączenia z aplikacji usługi IoT Central:
Zaloguj się do aplikacji usługi IoT Central.
Przejdź do pozycji Uprawnienia > Grupy połączeń urządzeń.
Zanotuj zakres identyfikatorów. Użyjesz tej wartości później.
Wybierz grupę rejestracji SaS-IoT-Devices . Zanotuj klucz podstawowy sygnatury dostępu współdzielonego. Użyjesz tej wartości później.
Konfigurowanie aparatu obliczeniowego
W tym scenariuszu jest używane to samo wdrożenie usługi Azure Functions co mostek urządzeń usługi IoT Central. Aby wdrożyć mostek urządzeń, wybierz przycisk Wdróż na platformie Azure widoczny po poniższej tabeli. Użyj informacji w tabeli, aby ukończyć formularz wdrożenia niestandardowego:
Pole | Wartość |
---|---|
Grupa zasobów | Tworzenie nowej grupy zasobów o nazwie egress-scenario |
Region (Region) | Wybierz region znajdujący się najbliżej Ciebie. |
Identyfikator zakresu | Użyj zakresu identyfikatorów zanotuj wcześniej. |
Klucz sygnatury dostępu współdzielonego usługi IoT Central | Użyj klucza podstawowego sygnatury dostępu współdzielonego dla grupy rejestracji urządzeń SaS-IoT-Devices . Zanotuj tę wartość wcześniej. |
Wybierz pozycję Przejrzyj i utwórz, a następnie pozycję Utwórz. Utworzenie funkcji platformy Azure i powiązanych zasobów w grupie zasobów scenariusza ruchu wychodzącego zajmuje kilka minut.
Przekształcanie danych urządzenia w mostek urządzenia
Aby skonfigurować mostek urządzenia w celu przekształcenia wyeksportowanych danych urządzenia:
Uzyskaj klucz interfejsu API aplikacji z usługi Open Weather. Konto jest bezpłatne z ograniczonym użyciem usługi. Aby utworzyć klucz interfejsu API aplikacji, utwórz konto w portalu usługi Open Weather i postępuj zgodnie z instrukcjami. Później użyjesz klucza interfejsu API Open Weather.
W witrynie Azure Portal przejdź do pozycji Aplikacja funkcji w grupie zasobów scenariusza wychodzącego.
W obszarze nawigacji po lewej stronie w obszarze Narzędzia programistyczne wybierz pozycję Edytor usługi App Service (wersja zapoznawcza).
Wybierz pozycję Przejdź → , aby otworzyć stronę Edytora usługi App Service. Wprowadź następujące zmiany:
Otwórz plik wwwroot/IoTCIntegration/index.js. Zastąp cały kod w tym pliku kodem w index.js.
W nowym index.js zaktualizuj plik zmiennej przy użyciu klucza interfejsu
openWeatherAppId
API Open Weather uzyskanego wcześniej.const openWeatherAppId = '<Your Open Weather API Key>'
Dodaj właściwość komunikatu do danych wysyłanych przez funkcję do usługi IoT Central. Usługa IoT Central używa tej właściwości do zapobiegania eksportowaniu przekształconych danych. Aby wprowadzić tę zmianę , otwórz plik wwwroot/IoTCIntegration/lib/engine.js . Znajdź następujący kod:
if (timestamp) { message.properties.add('iothub-creation-time-utc', timestamp); }
Dodaj następujący kod tuż po kodzie w poprzednim fragmencie kodu:
// add a message property that we can look for in data export to not re-compute computed telemetry message.properties.add('computed', true);
Aby uzyskać odwołanie, możesz wyświetlić ukończony przykład pliku engine.js .
W Edytorze usługi App Service wybierz pozycję Konsola w obszarze nawigacji po lewej stronie. Uruchom następujące polecenia, aby zainstalować wymagane pakiety:
cd IoTCIntegration npm install
Wykonanie tego polecenia może potrwać kilka minut.
Wróć do strony Przegląd funkcji platformy Azure i uruchom ponownie funkcję:
Wybierz pozycję Funkcje w obszarze nawigacji po lewej stronie. Następnie wybierz pozycję IoTCIntegration. Wybierz pozycję Kod i test.
Zanotuj adres URL funkcji. Ta wartość będzie potrzebna później:
Włączanie przepływu danych z usługi IoT Central do mostka urządzenia
W tej sekcji opisano sposób konfigurowania aplikacji usługi Azure IoT Central.
Najpierw zapisz plik modelu urządzenia na komputerze lokalnym.
Aby dodać szablon urządzenia do aplikacji usługi IoT Central, przejdź do aplikacji usługi IoT Central, a następnie:
Zaloguj się do aplikacji usługi IoT Central i przejdź do strony Szablony urządzeń.
Wybierz pozycję + Nowy, wybierz pozycję Urządzenie IoT, wybierz pozycję Dalej: Dostosuj, wprowadź model obliczeniowy jako nazwę szablonu. Wybierz pozycję Dalej: Przejrzyj. Następnie wybierz Utwórz.
Wybierz pozycję Importuj model i przejdź do pobranego wcześniej pliku model.json .
Po zaimportowaniu modelu wybierz pozycję Publikuj, aby opublikować szablon urządzenia modelu obliczeniowego.
Skonfiguruj eksport danych w celu wysyłania danych do mostka urządzenia:
W aplikacji usługi IoT Central wybierz pozycję Eksport danych.
Wybierz pozycję + Nowe miejsce docelowe, aby utworzyć miejsce docelowe do użycia z mostkiem urządzenia. Wywołaj docelową funkcję Compute w polu Typ docelowy wybierz pozycję Element webhook. W polu Adres URL wywołania zwrotnego wybierz pozycję wklej adres URL funkcji zanotuj wcześniej. Pozostaw wartość Autoryzacja jako Brak uwierzytelniania.
Zapisz zmiany.
Wybierz pozycję + Nowy eksport i utwórz eksport danych o nazwie Eksport obliczeniowy.
Dodaj filtr, aby wyeksportować tylko dane urządzenia dla używanego szablonu urządzenia. Wybierz pozycję + Filtr, wybierz pozycję Szablon urządzenia, wybierz operator Równa się, a następnie wybierz utworzony szablon urządzenia modelu obliczeniowego.
Dodaj filtr komunikatu, aby odróżnić przekształcone i nieprzetłumaczone dane. Ten filtr uniemożliwia wysyłanie przekształconych wartości z powrotem do mostka urządzenia. Wybierz pozycję + Filtr właściwości komunikatu i wprowadź obliczoną wartość nazwy, a następnie wybierz operator Nie istnieje. Ciąg
computed
jest używany jako słowo kluczowe w przykładowym kodzie mostka urządzenia.W polu docelowym wybierz wcześniej utworzoną lokalizację docelową funkcji Compute.
Zapisz zmiany. Po minucie stan Eksportuj jest wyświetlany jako W dobrej kondycji.
Weryfikacja
Przykładowe urządzenie używane do testowania scenariusza jest zapisywane w Node.js. Upewnij się, że na komputerze lokalnym zainstalowano Node.js i narzędzie npm. Jeśli nie chcesz instalować tych wymagań wstępnych, użyj usługi Azure Cloud Shell , w której są one wstępnie zainstalowane.
Aby uruchomić przykładowe urządzenie, które testuje scenariusz:
Sklonuj repozytorium GitHub zawierające przykładowy kod, uruchom następujące polecenie:
git clone https://github.com/Azure/iot-central-compute
Aby połączyć przykładowe urządzenie z aplikacją usługi IoT Central, zmodyfikuj ustawienia połączenia w pliku iot-central-compute/device/device.js . Zastąp identyfikator zakresu i klucz sas grupy wartościami zanotowanymi wcześniej:
// 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>"; //
Zapisz zmiany.
Użyj następujących poleceń, aby zainstalować wymagane pakiety i uruchomić urządzenie:
cd ~/iot-central-compute/device npm install node device.js
Wynik tego polecenia wygląda następująco:
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"}]
W aplikacji usługi IoT Central przejdź do urządzenia o nazwie computeDevice. W widoku Nieprzetworzone dane istnieją dwa różne strumienie telemetrii, które są wyświetlane co pięć sekund. Strumień zawierający niemodelowane dane to oryginalna telemetria, strumień z modelowanymi danymi to dane przekształcone przez funkcję:
Czyszczenie zasobów
Jeśli nie potrzebujesz już zasobów platformy Azure utworzonych podczas wykonywania kroków opisanych w tym przewodniku, usuń grupy zasobów w witrynie Azure Portal.
Dwie grupy zasobów używane w tym przewodniku to scenariusz przychodzący i wychodzący.
Następne kroki
W tym artykule przedstawiono różne opcje przekształcania danych urządzenia dla usługi IoT Central, zarówno podczas ruchu przychodzącego, jak i wychodzącego. Artykuł zawiera wskazówki dotyczące dwóch konkretnych scenariuszy:
- Użyj modułu usługi IoT Edge, aby przekształcić dane z urządzeń podrzędnych przed wysłaniem danych do aplikacji usługi IoT Central.
- Przekształcanie danych poza usługą IoT Central przy użyciu usługi Azure Functions. W tym scenariuszu usługa IoT Central używa eksportu danych do wysyłania danych przychodzących do funkcji platformy Azure, która ma zostać przekształcona. Funkcja wysyła przekształcone dane z powrotem do aplikacji usługi IoT Central.
Teraz, gdy wiesz już, jak przekształcać dane urządzenia poza aplikacją usługi Azure IoT Central, możesz dowiedzieć się , jak używać eksploratora danych do analizowania danych urządzenia w usłudze IoT Central.