IoT Central için verileri harici olarak dönüştürme
IoT cihazları verileri çeşitli biçimlerde gönderir. Cihaz verilerini IoT Central uygulamanızla kullanmak için aşağıdakiler için bir dönüştürme kullanmanız gerekebilir:
- Verilerin biçimini IoT Central uygulamanızla uyumlu hale getirin.
- Birimleri dönüştürün.
- Yeni ölçümleri hesaplama.
- Diğer kaynaklardan gelen verileri zenginleştirin.
Bu makalede, girişte veya çıkışta IoT Central dışında cihaz verilerinin nasıl dönüştürüldüğü gösterilir.
Not
IoT Central ayrıca verileri dahili olarak da dönüştürebilir. Daha fazla bilgi edinmek için bkz . IoT Central'a girişte telemetriyi eşleme ve Dışarı aktarma için IoT Central uygulamanızın içinde verileri dönüştürme.
Aşağıdaki diyagramda, dönüştürmeleri içeren veriler için üç yol gösterilmektedir:
Aşağıdaki tabloda üç örnek dönüştürme türü gösterilmektedir:
Dönüşüm | Açıklama | Örnek | Notlar |
---|---|---|---|
İleti Biçimi | JSON iletilerine dönüştürme veya iletileri işleme. | CSV'yi JSON'a | Girişte. IoT Central yalnızca değer JSON iletilerini kabul eder. Daha fazla bilgi için bkz . Telemetri, özellik ve komut yükleri. |
Hesaplama | Azure İşlevleri yürütebilen matematik işlevleri. | Fahrenheit'ten Santigrat'a birim dönüştürme. | IoT Central'a doğrudan bağlantı yoluyla ölçeklenebilir cihaz girişlerinden yararlanmak için çıkış desenini kullanarak dönüştürün. Verileri dönüştürmek görselleştirmeler ve işler gibi IoT Central özelliklerini kullanmanıza olanak tanır. |
İleti Zenginleştirme | Cihaz özelliklerinde veya telemetride bulunmayan dış veri kaynaklarından zenginleştirmeler. İç zenginleştirmeler hakkında daha fazla bilgi edinmek için bkz . Blob Depolama kullanarak IoT verilerini bulut hedeflerine dışarı aktarma. | Cihazlardan alınan konum verilerini kullanarak iletilere hava durumu bilgileri ekleyin. | IoT Central'a doğrudan bağlantı yoluyla ölçeklenebilir cihaz girişlerinden yararlanmak için çıkış desenini kullanarak dönüştürün. |
Önkoşullar
Bu nasıl yapılır kılavuzundaki adımları tamamlamak için şunları yapmanız gerekir:
Etkin bir Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Özel uygulama şablonundan oluşturulan bir IoT Central uygulaması . Daha fazla bilgi edinmek için bkz . IoT Central uygulaması oluşturma ve Uygulamanız hakkında.
Girişte veri dönüştürme
Girişte cihaz verilerini dönüştürmek için iki seçenek vardır:
IoT Edge: Verileri IoT Central uygulamanıza göndermeden önce aşağı akış cihazlarından verileri dönüştürmek için IoT Edge modülü kullanın.
IoT Central cihaz köprüsü: IoT Central cihaz köprüsü , Sigfox, Parçacık ve Nesnelerin Ağı gibi diğer IoT cihaz bulutlarını IoT Central'a bağlar. Cihaz köprüsü, verileri iletmek için bir Azure işlevi kullanır ve işlevi özelleştirerek cihaz verilerini dönüştürebilirsiniz.
Cihaz verilerini dönüştürmek için IoT Edge kullanma
Bu senaryoda IoT Edge modülü, ioT Central uygulamanıza iletmeden önce aşağı akış cihazlarından verileri dönüştürür. Üst düzeyde, bu senaryoyu yapılandırma adımları şunlardır:
IoT Edge cihazı ayarlama: IoT Edge cihazını ağ geçidi olarak yükleyip sağlayın ve ağ geçidini IoT Central uygulamanıza bağlayın.
Aşağı akış cihazını IoT Edge cihazına bağlama: Aşağı akış cihazlarını IoT Edge cihazına bağlayın ve ioT Central uygulamanıza sağlayın.
IoT Edge'de cihaz verilerini dönüştürme: Verileri dönüştürmek için bir IoT Edge modülü oluşturun. Modülü, dönüştürülen cihaz verilerini IoT Central uygulamanıza ileden IoT Edge ağ geçidi cihazına dağıtın.
Doğrulama: Aşağı akış cihazından ağ geçidine veri gönderin ve dönüştürülen cihaz verilerinin IoT Central uygulamanıza ulaştığını doğrulayın.
Aşağıdaki bölümlerde açıklanan örnekte aşağı akış cihazı JSON verilerini IoT Edge ağ geçidi cihazına aşağıdaki biçimde gönderir:
{
"device": {
"deviceId": "<downstream-deviceid>"
},
"measurements": {
"temp": <temperature>,
"pressure": <pressure>,
"humidity": <humidity>,
"scale": "celsius",
}
}
Verileri dönüştürmek ve sıcaklık değerini Celsius
IoT Central'a göndermeden önce değerine dönüştürmek için Fahrenheit
bir IoT Edge modülü kullanırsınız:
{
"device": {
"deviceId": "<downstream-deviceid>"
},
"measurements": {
"temp": <temperature>,
"pressure": <pressure>,
"humidity": <humidity>,
"scale": "fahrenheit"
}
}
Aşağıdaki adımlar, bu senaryoyu nasıl ayarlayıp yapılandırabileceğinizi gösterir:
Özel modülü oluşturma
Bu senaryoda IoT Edge cihazı, verileri aşağı akış cihazından dönüştüren özel bir modül çalıştırır. IoT Edge cihazını dağıtmadan ve yapılandırmadan önce şunları yapmanız gerekir:
- Özel modülü oluşturun.
- Özel modülü kapsayıcı kayıt defterine ekleyin.
IoT Edge çalışma zamanı, Azure kapsayıcı kayıt defteri veya Docker Hub gibi bir kapsayıcı kayıt defterinden özel modüller indirir. Azure Cloud Shell kapsayıcı kayıt defteri oluşturmak, modülü derlemek ve modülü kayıt defterine yüklemek için ihtiyacınız olan tüm araçlara sahiptir:
Kapsayıcı kayıt defteri oluşturmak için:
Azure Cloud Shell'i açın ve Azure aboneliğinizde oturum açın.
Bash kabuğunu seçin.
Azure kapsayıcı kayıt defteri oluşturmak için aşağıdaki komutları çalıştırın:
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
ve
password
değerlerini notusername
edin, bunları daha sonra kullanırsınız. Komut çıkışında gösterilen parolalardan yalnızca birine ihtiyacınız vardır.
Azure Cloud Shell'de özel modülü oluşturmak için:
Azure Cloud Shell'de modül kaynak kodunu içeren GitHub deposunu kopyalayın:
git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
Özel modülü oluşturmak için Azure Cloud Shell'de aşağıdaki komutları çalıştırın:
cd iot-central-transform-with-iot-edge/custommodule/transformmodule az acr build --registry $REGISTRY_NAME --image transformmodule:0.0.1-amd64 -f Dockerfile.amd64 .
Önceki komutların çalıştırılması birkaç dakika sürebilir.
IoT Edge cihazı ayarlama
Bu senaryoda, herhangi bir aşağı akış cihazından verileri dönüştürmek için bir IoT Edge ağ geçidi cihazı kullanılır. Bu bölümde, IoT Central uygulamanızda ağ geçidi cihazı için IoT Central cihaz şablonunun nasıl oluşturulacağı açıklanmaktadır. IoT Edge cihazları modüllerini yapılandırmak için bir dağıtım bildirimi kullanır.
Bu örnekte aşağı akış cihazının bir cihaz şablonuna ihtiyacı yoktur. Aşağı akış cihazı IoT Central'a kaydedilir, böylece IoT Edge cihazına bağlanmak için gereken kimlik bilgilerini oluşturabilirsiniz. IoT Edge modülü verileri dönüştürdüğünden, tüm aşağı akış cihaz telemetrisi IoT Edge cihazı göndermiş gibi IoT Central'a ulaşır.
IoT Edge ağ geçidi cihazı için bir cihaz şablonu oluşturmak için:
Dağıtım bildiriminin bir kopyasını yerel geliştirme makinenize kaydedin: moduledeployment.json.
moduledeployment.json bildirim dosyasının yerel kopyasını bir metin düzenleyicisinde açın.
registryCredentials
bölümünü bulun ve yer tutucuları, Azure kapsayıcı kayıt defterini oluştururken not ettiğiniz değerlerle değiştirin.address
değeri gibi{your username}.azurecr.io
görünür.settings
içintransformmodule
bölümünü bulun. değerini önceki adımda kullandığınız değerle değiştirin{your username}
. Değişiklikleri kaydedin.IoT Central uygulamanızda Edge bildirimleri sayfasına gidin.
+ Yeni'yi seçin. Dağıtım bildiriminiz için Transformer gibi bir ad girin ve daha önce indirdiğiniz moduledeployment.json dosyasını karşıya yükleyin. Dağıtım bildirimi, dönüştürme modülü adlı özel bir modül içerir.
İleri'yi ve ardından Oluştur'u seçin.
IoT Central uygulamanızda Cihaz şablonları sayfasına gidin.
+ Yeni'yi, Azure IoT Edge'i ve ardından İleri: Özelleştir'i seçin.
Cihaz şablonu adı olarak IoT Edge ağ geçidi cihazını girin. Bu bir ağ geçidi cihazıdır'ı seçin.
İleri: Gözden Geçir'i ve ardından Oluştur'u seçin.
Model oluştur sayfasında Özel model'i seçin.
Modelde Modüller'i ve ardından Bildirimden modülleri içeri aktar'ı seçin. Transformer dağıtım bildirimini ve ardından İçeri Aktar'ı seçin.
Dağıtım bildirimi modülün gönderdiği telemetriyi belirtmez. Telemetri tanımlarını cihaz şablonuna eklemek için:
IoT Edge ağ geçidi cihaz şablonunun Modüller bölümünde Modül dönüştürme modülünü seçin.
Yetenek ekle'yi seçin ve yeni bir telemetri türü eklemek için aşağıdaki tablolardaki bilgileri kullanın:
Ayar Value Görünen ad Cihaz Veri Akışı Adı device Yetenek türü Telemetri Anlam türü Hiçbiri Şema Object Nesne tanımı:
Görünen ad Veri Akışı Adı Şema Cihaz Kimliği deviceId String Değişikliklerinizi kaydedin.
Yetenek ekle'yi seçin ve yeni bir telemetri türü eklemek için aşağıdaki tablolardaki bilgileri kullanın:
Ayar Value Görünen ad Ölçümler Veri Akışı Adı Ölçüm Yetenek türü Telemetri Anlam türü Hiçbiri Şema Object Nesne tanımı:
Görünen ad Veri Akışı Adı Şema Sıcaklık sıcaklık Çift Basınç basınç Çift Nem Nem oranı Çift Ölçek scale String Değişikliklerinizi kaydedin.
Modelde İlişkiler'i seçin. transformmodule modülünde İlişkiler'i seçmeyin.
İlişki ekle'yi seçin.
Görünen ad olarak Aşağı Akış Algılayıcısı, ad olarak algılayıcı girin ve hedef olarak Herhangi biri'ni seçin. Kaydet'i seçin.
Cihaz şablonunu yayımlamak için Yayımla'yı seçin.
IoT Central'a bir ağ geçidi cihazı kaydetmek için:
IoT Central uygulamanızda Cihazlar sayfasına gidin.
IoT Edge ağ geçidi cihazı'nın ardından + Yeni'yi seçin. Cihaz adı olarak IoT Edge ağ geçidi cihazını girin, cihaz kimliği olarak gateway-01 girin, cihaz şablonu olarak IoT Edge ağ geçidi cihazının seçildiğinden ve Bu cihazın simülasyonu yap olarak Hayır'ın seçildiğinden emin olun. Kenar bildirimi olarak Transformer'ı seçin. Oluştur'u belirleyin.
Cihaz listesinde IoT Edge ağ geçidi cihazına tıklayın ve bağlan'ı seçin.
IoT Edge ağ geçidi cihazının Kimlik kapsamı, Cihaz Kimliği ve Birincil anahtar değerlerini not edin. Bunları daha sonra kullanacaksınız.
IoT Central'a aşağı akış cihazı kaydetmek için:
IoT Central uygulamanızda Cihazlar sayfasına gidin.
Cihaz şablonu seçmeyin. + Yeni'yi seçin. Cihaz adı olarak Aşağı Akış 01 yazın, cihaz kimliği olarak aşağı akış-01 girin, cihaz şablonunun Atanmamış olduğundan ve Bu cihazın benzetimi yapılsın mı? olarak Hayır'ın seçildiğinden emin olun. Oluştur'u belirleyin.
Cihaz listesinde Aşağı akış 01 cihazına tıklayın ve ardından Cihazı > ağ geçidine ekle'yi seçin.
Ağ geçidine ekle iletişim kutusunda IoT Edge ağ geçidi cihaz şablonunu ve IoT Edge ağ geçidi cihaz örneği'ni seçin. İliştir'i seçin.
Aşağı akış 01 cihazında Bağlan'ı seçin.
Aşağı Akış 01 cihazının Kimlik kapsamı, Cihaz Kimliği ve Birincil anahtar değerlerini not edin. Bunları daha sonra kullanacaksınız.
Ağ geçidi ve aşağı akış cihazlarını dağıtma
Kolaylık olması için bu makalede ağ geçidi ve aşağı akış cihazlarını çalıştırmak için Azure sanal makineleri kullanılmaktadır. İki Azure sanal makinesini oluşturmak için aşağıdaki tablodan sonra gösterilen Azure'a Dağıt düğmesini seçin. Özel dağıtım formunu tamamlamak için tablodaki bilgileri kullanın:
Alan | Değer |
---|---|
Kaynak grubu | ingress-scenario |
DNS Etiketi Ön Ek Ağ Geçidi | Bu makine için benzersiz bir DNS adı, örneğin <your name>edgegateway |
DNS Etiket Ön Eki Aşağı Akışı | Bu makine için benzersiz bir DNS adı, örneğin <your name>downstream |
Kapsam Kimliği | Daha önce not aldığınız kimlik kapsamı |
Cihaz Kimliği IoT Edge Ağ Geçidi | gateway-01 |
Cihaz Anahtarı IoT Edge Ağ Geçidi | Daha önce not aldığınız birincil anahtar değeri |
Kimlik Doğrulaması Türü | Parola |
Yönetici Parolası Veya Anahtarı | Her iki sanal makinede de AzureUser hesabı için seçtiğiniz parola. |
Gözden Geçir + Oluştur'u ve ardından Oluştur'u seçin. Giriş senaryosu kaynak grubunda sanal makinelerin oluşturulması birkaç dakika sürer.
IoT Edge ağ geçidi cihazının doğru çalışıp çalışmadığını denetlemek için:
IoT Central uygulamanızı açın. Ardından Cihazlar sayfasındaki cihaz listesinde IoT Edge Ağ Geçidi cihazına gidin.
Modüller sekmesini seçin ve üç modülün durumunu denetleyin. IoT Edge çalışma zamanının sanal makinede başlatılması birkaç dakika sürer. Sanal makine çalışırken, üç modülün durumu Çalışıyor şeklindedir. IoT Edge çalışma zamanı başlatılmazsa bkz . IoT Edge cihazınızda sorun giderme.
IoT Edge cihazınızın ağ geçidi işlevi görmesi için, aşağı akış cihazlarına kimliğini kanıtlamak için bazı sertifikalara ihtiyacı vardır. Bu makalede tanıtım sertifikaları kullanılır. Üretim ortamında, sertifika yetkilinizin sertifikalarını kullanın.
Tanıtım sertifikalarını oluşturmak ve ağ geçidi cihazınıza yüklemek için:
Ağ geçidi cihazı sanal makinenize bağlanmak ve bu makinede oturum açmak için SSH kullanın. Bu sanal makinenin DNS adını Azure portalında bulabilirsiniz. Giriş senaryosu kaynak grubunda edgegateway sanal makinesine gidin.
İpucu
Yerel makinenizden veya Azure Cloud Shell'den bağlanmak üzere SSH kullanabilmeniz için önce her iki sanal makinenizde de SSH erişimi için 22 numaralı bağlantı noktasını açmanız gerekebilir.
IoT Edge deposunu kopyalamak ve tanıtım sertifikalarınızı oluşturmak için aşağıdaki komutları çalıştırın:
# 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"
Önceki komutları çalıştırdıktan sonra, aşağıdaki dosyalar sonraki adımlarda kullanılmaya hazırdır:
- ~/certs/certs/azure-iot-test-only.root.ca.cert.pem - IoT Edge senaryolarını test etmek için diğer tüm tanıtım sertifikalarını yapmak için kullanılan kök CA sertifikası.
- ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem - config.yaml dosyasının başvurduğunu bir cihaz CA sertifikası. Bir ağ geçidi senaryosunda bu CA sertifikası, IoT Edge cihazının aşağı akış cihazlarına kimliğini nasıl doğrular?
- ~/certs/private/iot-edge-device-mycacert.key.pem - Cihaz CA sertifikasıyla ilişkili özel anahtar.
Bu tanıtım sertifikaları hakkında daha fazla bilgi edinmek için bkz . IoT Edge cihaz özelliklerini test etmek için tanıtım sertifikaları oluşturma.
config.toml dosyasını bir metin düzenleyicisinde açın. Örneğin:
sudo nano /etc/aziot/config.toml
Sertifika ayarlarını şu şekilde açıklamayı kaldırın ve değiştirin:
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"
Önceki örnekte AzureUser olarak oturum açtığınız ve "mycacert" adlı sertifikalı bir cihaz CA'sı oluşturduğunuz varsayılır.
Değişiklikleri kaydedin ve config.toml dosyasının doğru olduğunu doğrulamak için aşağıdaki komutu çalıştırın:
sudo iotedge check
IoT Edge çalışma zamanını yeniden başlatın:
sudo iotedge config apply
Değişikliklerinizden sonra IoT Edge çalışma zamanı başarıyla başlatılırsa, $edgeAgent ve $edgeHub modüllerinin durumu Çalışıyor olarak değişir. Bu durum değerlerini IoT Central'daki ağ geçidi cihazınızın Modüller sayfasında görebilirsiniz.
Çalışma zamanı başlatılmazsa config.toml dosyasında yaptığınız değişiklikleri denetleyin ve bkz. IoT Edge cihazınızda sorun giderme.
Aşağı akış cihazını IoT Edge cihazına bağlama
Aşağı akış cihazını IoT Edge ağ geçidi cihazına bağlamak için:
Aşağı akış cihazı sanal makinenize bağlanmak ve bu makinede oturum açmak için SSH kullanın. Bu sanal makinenin DNS adını Azure portalında bulabilirsiniz. Giriş senaryosu kaynak grubunda leafdevice sanal makinesine gidin.
İpucu
Yerel makinenizden veya Azure Cloud Shell'den bağlanmak üzere SSH kullanabilmeniz için önce her iki sanal makinenizde de SSH erişimi için 22 numaralı bağlantı noktasını açmanız gerekebilir.
GitHub deposunu örnek aşağı akış cihazının kaynak koduyla kopyalamak için aşağıdaki komutu çalıştırın:
cd ~ git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
Gerekli sertifikayı ağ geçidi cihazından kopyalamak için aşağıdaki
scp
komutları çalıştırın. Buscp
komut, ağ geçidi sanal makinesini tanımlamak için konak adınıedgegateway
kullanır. Parolanız istenir:cd ~/iot-central-transform-with-iot-edge scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem leafdevice/certs
leafdevice klasörüne gidin ve gerekli paketleri yükleyin. Ardından cihazı sağlamak ve ağ geçidine bağlamak için ve
start
betiklerini çalıştırınbuild
: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
Komutlar sırasında
sudo apt-get install nodejs
yüklemelere izin vermeniz istenebilir: istenirse basınY
.Daha önce oluşturduğunuz aşağı akış cihazının cihaz kimliğini, kapsam kimliğini ve SAS anahtarını girin. Konak adı olarak girin
edgegateway
. Komutun çıkışı şöyle görünü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
Kolaylık olması için aşağı akış cihazının kodu cihazı IoT Central'da sağlar. Aşağı akış cihazları genellikle İnternet'e bağlanamadığından ve Cihaz Sağlama Hizmeti uç noktasına bağlanamadığından ağ geçidi üzerinden bağlanır. Daha fazla bilgi edinmek için bkz . IoT Edge saydam ağ geçidi aracılığıyla cihazları bağlama.
Doğrulama
Senaryonun çalıştığını doğrulamak için IoT Central'da IoT Edge ağ geçidi cihazınıza gidin:
Modüller'i seçin. $edgeHub ve transformmodule $edgeAgent üç IoT Edge modülünün çalıştığını doğrulayın.
Ham veriler'i seçin. Cihaz sütunundaki telemetri verileri şöyle görünür:
{"deviceId":"downstream-01"}
Ölçümler sütunundaki telemetri verileri şöyle görünür:
{"temperature":85.21208,"pressure":59.97321,"humidity":77.718124,"scale":"fahrenheit"}
Sıcaklık Fahrenheit cinsinden gönderilir. IoT Edge cihazı aşağı akış cihazından verileri dönüştürdüğünden, telemetri IoT Central'daki ağ geçidi cihazıyla ilişkilendirilir. Dönüştürülmüş telemetriyi görselleştirmek için IoT Edge ağ geçidi cihaz şablonunda bir görünüm oluşturun ve yeniden yayımlayın.
Çıkışta veri dönüştürme
Cihazlarınızı IoT Central'a bağlayabilir, cihaz verilerini dönüştürmek üzere bir işlem altyapısına aktarabilir ve ardından dönüştürülen verileri cihaz yönetimi ve analizi için IoT Central'a geri gönderebilirsiniz. Örneğin:
- Cihazlarınız konum verilerini IoT Central'a gönderir.
- IoT Central, verileri konum verilerini hava durumu bilgileriyle geliştiren bir işlem altyapısına aktarır.
- İşlem altyapısı, gelişmiş verileri IoT Central'a geri gönderir.
IoT Central'dan dışarı aktarılan verileri dönüştürmek için işlem altyapısı olarak IoT Central cihaz köprüsünü kullanabilirsiniz.
Çıkışta verileri dönüştürmenin bir avantajı, cihazlarınızın doğrudan IoT Central'a bağlanmasıdır ve bu da cihazlara komut göndermeyi veya cihaz özelliklerini güncelleştirmeyi kolaylaştırır. Ancak bu yöntemle aylık servis biriminizden daha fazla ileti kullanabilir ve Azure IoT Central'ı kullanma maliyetini artırabilirsiniz.
Cihaz verilerini dönüştürmek için IoT Central cihaz köprüsünü kullanma
Bu senaryoda işlem altyapısı IoT Central'dan dışarı aktarılan cihaz verilerini IoT Central uygulamanıza geri göndermeden önce dönüştürür. Üst düzeyde, bu senaryoyu yapılandırma adımları şunlardır:
İşlem altyapısını ayarlama: Veri dönüştürme için işlem altyapısı görevi görmesi için bir IoT Central cihaz köprüsü oluşturun.
Cihaz köprüsündeki cihaz verilerini dönüştürme: Veri dönüştürme kullanım örneğinin cihaz köprüsü işlev kodunu değiştirerek cihaz köprüsündeki verileri dönüştürün.
IoT Central'dan cihaz köprüsüne veri akışını etkinleştirme: Verileri dönüştürme için IoT Central'dan cihaz köprüsüne aktarın. Ardından, dönüştürülen verileri IoT Central'a geri iletin. Veri dışarı aktarmayı oluşturduğunuzda ileti özelliği filtrelerini kullanarak yalnızca aktarılmamış verileri dışarı aktarın.
Doğrulama: Cihazınızı IoT Central uygulamasına bağlayın ve IoT Central'da hem ham cihaz verilerini hem de dönüştürülmüş verileri denetleyin.
Aşağıdaki bölümlerde açıklanan örnekte, cihaz AŞAĞıDAKI biçimdeki CSV verilerini IoT Edge ağ geçidi cihazına gönderir:
"<temperature in degrees C>, <humidity>, <latitude>, <longitude>"
Cihaz verilerini şu şekilde dönüştürmek için cihaz köprüsünü kullanırsınız:
- Sıcaklık birimini centigrad'dan fahrenheit'e değiştirme.
- Enlem ve boylam değerleri için Açık Hava Durumu hizmetinden alınan hava durumu verileriyle cihaz verilerini zenginleştirme.
Ardından cihaz köprüsü, dönüştürülen verileri aşağıdaki biçimde IoT Central'a gönderir:
{
"temp": <temperature in degrees F>,
"humidity": <humidity>,
"lat": <latitude>,
"lon": <longitude>,
"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>
}
}
Aşağıdaki adımlar, bu senaryoyu nasıl ayarlayıp yapılandırabileceğinizi gösterir:
IoT Central bağlantı ayarlarınızı alma
Bu senaryosunu ayarlamadan önce IoT Central uygulamanızdan bazı bağlantı ayarları almanız gerekir:
IoT Central uygulamanızda oturum açın.
İzinler > Cihaz bağlantı grupları'na gidin.
Kimlik kapsamını not edin. Bu değeri daha sonra kullanacaksınız.
SaS-IoT-Devices kayıt grubunu seçin. Paylaşılan erişim imzası birincil anahtarını not edin. Bu değeri daha sonra kullanacaksınız.
İşlem altyapısı ayarlama
Bu senaryoda IoT Central cihaz köprüsüyle aynı Azure İşlevleri dağıtımı kullanılır. Cihaz köprüsünü dağıtmak için aşağıdaki tablodan sonra gösterilen Azure'a Dağıt düğmesini seçin. Özel dağıtım formunu tamamlamak için tablodaki bilgileri kullanın:
Alan | Değer |
---|---|
Kaynak grubu | adlı yeni bir kaynak grubu oluşturma egress-scenario |
Bölge | Size en yakın bölgeyi seçin. |
Kapsam Kimliği | Daha önce not aldığınız kimlik kapsamını kullanın. |
IoT Central SAS Anahtarı | SaS-IoT-Devices kayıt grubu için paylaşılan erişim imzası birincil anahtarını kullanın. Bu değeri daha önce not edinmiştiniz. |
Gözden Geçir + Oluştur'u ve ardından Oluştur'u seçin. Çıkış senaryosu kaynak grubunda Azure işlevinin ve ilgili kaynakların oluşturulması birkaç dakika sürer.
Cihaz köprüsündeki cihaz verilerini dönüştürme
Dışarı aktarılan cihaz verilerini dönüştürmek üzere cihaz köprüsünü yapılandırmak için:
Open Weather hizmetinden bir uygulama API anahtarı alın. Bir hesap, hizmetin sınırlı kullanımıyla ücretsizdir. Uygulama API anahtarı oluşturmak için Açık Hava Durumu hizmeti portalında bir hesap oluşturun ve yönergeleri izleyin. Daha sonra Açık Hava Durumu API'nizi kullanacaksınız.
Azure portalında çıkış senaryosu kaynak grubunda İşlev Uygulaması'na gidin.
Sol gezinti bölmesindeki Geliştirme Araçları'nda App Service Düzenleyicisi (Önizleme) öğesini seçin.
App Service Düzenleyicisi sayfasını açmak için → git'i seçin. Aşağıdaki değişiklikleri yapın:
wwwroot/IoTCIntegration/index.js dosyasını açın. Bu dosyadaki tüm kodu index.js koduyla değiştirin.
Yeni index.js değişken dosyasını daha önce aldığınız Açık Hava Durumu API anahtarıyla güncelleştirin
openWeatherAppId
.const openWeatherAppId = '<Your Open Weather API Key>'
İşlev tarafından IoT Central'a gönderilen verilere bir ileti özelliği ekleyin. IoT Central, dönüştürülen verilerin dışarı aktarılmasını önlemek için bu özelliği kullanır. Bu değişikliği yapmak için wwwroot/IoTCIntegration/lib/engine.js dosyasını açın. Şu kodu bulun:
if (timestamp) { message.properties.add('iothub-creation-time-utc', timestamp); }
Önceki kod parçacığındaki kodun hemen arkasına aşağıdaki kodu ekleyin:
// add a message property that we can look for in data export to not re-compute computed telemetry message.properties.add('computed', true);
Başvuru için, engine.js dosyasının tamamlanmış bir örneğini görüntüleyebilirsiniz.
App Service Düzenleyicisi'nde sol gezinti bölmesinde Konsol'a tıklayın. Gerekli paketleri yüklemek için aşağıdaki komutları çalıştırın:
cd IoTCIntegration npm install
Bu komutun çalıştırılması birkaç dakika sürebilir.
Azure İşlevine Genel Bakış sayfasına dönün ve işlevi yeniden başlatın:
Sol gezinti bölmesinde İşlevler'i seçin. Ardından IoTCIntegration'ı seçin. Kod + Test'i seçin.
İşlev URL'sini not edin, daha sonra bu değere ihtiyacınız vardır:
IoT Central'dan cihaz köprüsüne veri akışını etkinleştirme
Bu bölümde Azure IoT Central uygulamasının nasıl ayarlanacağı açıklanmaktadır.
İlk olarak, cihaz modeli dosyasını yerel makinenize kaydedin.
IoT Central uygulamanıza cihaz şablonu eklemek için IoT Central uygulamanıza gidin ve ardından:
IoT Central uygulamanızda oturum açın ve Cihaz şablonları sayfasına gidin.
+ Yeni'yi seçin, IoT Cihazı'nı seçin, İleri: Özelleştir'i seçin, şablon adı olarak İşlem modeli girin. İleri: Gözden Geçir'i seçin. Daha sonra, Oluştur'u seçin.
Modeli içeri aktar'ı seçin ve daha önce indirdiğiniz model.json dosyasına göz atın.
Model içeri aktarıldıktan sonra Yayımla'yı seçerek İşlem modeli cihaz şablonunu yayımlayın.
Cihaz köprünüze veri göndermek için veri dışarı aktarmayı ayarlayın:
IoT Central uygulamanızda Veri dışarı aktarma'yı seçin.
Cihaz köprüsüyle kullanılacak bir hedef oluşturmak için + Yeni hedef'i seçin. Hedef İşlem işlevini çağırın, Hedef türü için Web kancası'nı seçin. Geri Arama URL'si için, daha önce not aldığınız işlev URL'sini yapıştır'ı seçin. Yetkilendirmeyi Kimlik Doğrulaması Yok olarak bırakın.
Değişiklikleri kaydedin.
+ Yeni dışarı aktarma'ya tıklayın ve İşlem dışarı aktarma adlı bir veri dışarı aktarma oluşturun.
Yalnızca kullandığınız cihaz şablonunun cihaz verilerini dışarı aktarmak için bir filtre ekleyin. + Filtre'yi seçin, Cihaz şablonu öğesini seçin, Eşittir işlecini seçin ve oluşturduğunuz İşlem modeli cihaz şablonunu seçin.
Dönüştürülen ve dönüştürülmeyen veriler arasında ayrım yapmak için bir ileti filtresi ekleyin. Bu filtre, dönüştürülmüş değerlerin cihaz köprüsüne geri gönderilmesini engeller. + İleti özellik filtresi'ni seçin ve hesaplanan ad değerini girin ve ardından Yok işlecini seçin. Dize
computed
, cihaz köprüsü örnek kodunda anahtar sözcük olarak kullanılır.Hedef için daha önce oluşturduğunuz İşlem işlevi hedefini seçin.
Değişiklikleri kaydedin. Bir dakika kadar sonra Dışarı Aktarma durumu Sağlıklı olarak gösterilir.
Doğrulama
Senaryoyu test etmek için kullandığınız örnek cihaz Node.js yazılır. Yerel makinenizde Node.js ve npm'nin yüklü olduğundan emin olun. Bu önkoşulları yüklemek istemiyorsanız önceden yüklenmiş oldukları Azure Cloud Shell'i kullanın.
Senaryoyu test eden bir örnek cihaz çalıştırmak için:
Örnek kodu içeren GitHub deposunu kopyalayın ve aşağıdaki komutu çalıştırın:
git clone https://github.com/Azure/iot-central-compute
Örnek cihazı IoT Central uygulamanıza bağlamak için iot-central-compute/device/device.js dosyasındaki bağlantı ayarlarını düzenleyin. Kapsam kimliği ve grup SAS anahtarını daha önce not aldığınız değerlerle değiştirin:
// 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ğişiklikleri kaydedin.
Gerekli paketleri yüklemek ve cihazı çalıştırmak için aşağıdaki komutları kullanın:
cd ~/iot-central-compute/device npm install node device.js
Bu komutun sonucu aşağıdaki çıktıya benzer:
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"}]
IoT Central uygulamanızda computeDevice adlı cihaza gidin. Ham veri görünümünde, yaklaşık beş saniyede bir gösterilen iki farklı telemetri akışı vardır. Modellenmemiş veri içeren akış, özgün telemetridir. Modellenmiş veri içeren akış, işlevin dönüştürdüğü verilerdir:
Kaynakları temizleme
Bu kılavuzdaki adımları izlerken oluşturduğunuz Azure kaynaklarına artık ihtiyacınız yoksa Azure portalındaki kaynak gruplarını silin.
Bu kılavuzda kullandığınız iki kaynak grubu giriş senaryosu ve çıkış senaryosudur.
Özet
Bu makalede hem giriş hem de çıkışta IoT Central için cihaz verilerini dönüştürmeye yönelik farklı seçenekler hakkında bilgi edinmişsinizdir. Makale, iki özel senaryo için izlenecek yollar içerir:
- Veriler IoT Central uygulamanıza gönderilmeden önce aşağı akış cihazlarından verileri dönüştürmek için IoT Edge modülü kullanın.
- IoT Central dışındaki verileri dönüştürmek için Azure İşlevleri kullanın. Bu senaryoda IoT Central, dönüştürülecek bir Azure işlevine gelen verileri göndermek için bir veri dışarı aktarma kullanır. İşlev, dönüştürülen verileri IoT Central uygulamanıza geri gönderir.