Önceden yapılandırılmış uzaktan izleme çözümünde gezinme
IoT Paketi önceden yapılandırılmış uzaktan izleme çözümü, uzak konumlarda çalışan birden fazla makine için uçtan uca izleme çözümünün bir uygulamasıdır. Bu çözüm, iş senaryosunun genel uygulamasını sağlamak üzere temel Azure hizmetlerini bir araya getirir. Çözümü kendi uygulamanız için bir başlangıç noktası olarak kullanabilir ve özel iş gereksinimlerinizi karşılayacak şekilde özelleştirebilirsiniz.
Bu makalede uzaktan izleme çözümünün nasıl çalıştığını anlamanız için çözümün temel öğelerinden bazıları açıklanmaktadır. Bu bilgiler şunları yapmanıza yardımcı olur:
- Çözümdeki sorunları giderme.
- Çözümü kendinize özel gereksinimleri karşılayacak şekilde nasıl özelleştireceğinizi planlama.
- Azure hizmetlerini kullanan kendi IoT çözümünüzü tasarlama.
Mantıksal mimari
Aşağıdaki diyagram önceden yapılandırılmış çözümün mantıksal bileşenlerinin ana hatların vermektedir:
Mikro Hizmetler ve Docker Kapsayıcıları
Uzaktan İzleme, mikro hizmetler mimarisinden yararlanmak için sunulmuş önceden yapılandırılmış çözümlerimizin ilkidir. Çözüm, hem .NET’te hem de Java’da kullanılabilir. Mikro hizmetler, geliştirme hızından taviz vermeden ölçek ve esneklik elde etmek için (kapsayıcıların tek tek ölçeklendirilmesine izin vererek) yaygın bir düzen olarak ortaya çıkmıştır. Mikro hizmetler, kodu bölümlere ayırıp düzgün tanımlanmış arabirimler sağlayarak çözümün anlaşılmasını kolaylaştırır ve çözümü daha az tek parçalı hale getirir. Para kazandıran tamamlanmış çözümler derlemek için geçerli çözümümüzü genişletmek isteyen iş ortakları için seçenekleri de genişletir.
Docker Kapsayıcıları hakkında daha fazla bilgi edinin
Sanal cihazlar
Önceden yapılandırılmış çözümde, sanal cihaz bir soğutma cihazını temsil eder (örneğin, bir yapının klimaları veya bir tesisin havalandırma birimi). Önceden yapılandırılmış çözümü dağıttığınızda bir Azure WebJob içinde çalışan dört sanal cihazı da otomatik olarak sağlamış olursunuz. Sanal cihazlar herhangi bir fiziksel cihaza dağıtmaya gerek olmadan çözümün davranışını keşfetmenizi kolaylaştırır. Gerçek bir fiziksel cihaz dağıtmak için Cihazınızı önceden yapılandırılmış uzaktan izleme çözümüne bağlama öğreticisine bakın.
Cihazdan buluta iletiler
Her sanal cihaz IoT Hub'ına aşağıdaki ileti türlerini gönderebilir:
İleti | Açıklama |
---|---|
Başlangıç | Cihaz başlatıldığında, arka uca kendisiyle ilgili bilgiler içeren bir device-info iletisi gönderir. Bu veriler, cihaz kimliği ile cihazın desteklediği komut ve yöntemlerin listesini içerir. |
Varlık | Bir cihaz, cihazın bir sensörün varlığını algılayıp algılamadığını bildirmek üzere düzenli aralıklarla bir varlık iletisi gönderir. |
Telemetri | Bir cihaz, düzenli aralıklarla cihazın sanal sensörlerinden toplanan sıcaklık ve nem sanal değerlerini bildiren bir telemetri iletisi gönderir. |
Not
Çözüm, cihaz tarafından desteklenen komutların listesini cihaz ikizinde değil, Cosmos DB veritabanında depolar.
Özellikler ve cihaz ikizleri
Sanal cihazlar IoT hub içindeki ikize aşağıdaki cihaz özelliklerini bildirilen özellikler olarak gönderir. Cihaz başlangıçta ve bir Cihaz Durumunu Değiştir komut ya da yöntemine yanıt olarak bildirilen özellikleri gönderir.
Özellik | Amaç |
---|---|
Config.TelemetryInterval | Cihazın telemetri gönderme sıklığı (saniye) |
Config.TemperatureMeanValue | Sanal sıcaklık telemetrisi için ortalama değeri belirtir |
Device.DeviceID | Çözümde cihaz oluşturulduğunda sağlanan veya atanan kimlik |
Device.DeviceState | Cihaz tarafından bildirilen durum |
Device.CreatedTime | Çözümde cihazın oluşturulduğu zaman |
Device.StartupTime | Cihazın başlatıldığı saat |
Device.LastDesiredPropertyChange | En son istenen özellik değişikliğinin sürüm numarası |
Device.Location.Latitude | Cihazın enlem konumu |
Device.Location.Longitude | Cihazın boylam konumu |
System.Manufacturer | Cihaz üreticisi |
System.ModelNumber | Cihazın model numarası |
System.SerialNumber | Cihazın seri numarası |
System.FirmwareVersion | Geçerli cihazdaki üretici yazılımı sürümü |
System.Platform | Cihazın platform mimarisi |
System.Processor | Cihazı çalıştıran işlemci |
System.InstalledRAM | Cihazda yüklü RAM miktarı |
Benzetici, örnek değerlerle sanal cihazlarda bu özelliklerin çekirdeğini oluşturur. Simülatör sanal cihazı her başlattığında, cihaz IoT Hub'ına önceden tanımlanmış meta verileri bildirilen özellik olarak gönderir. Bildirilen özellikler yalnızca cihaz tarafından güncelleştirilebilir. Bildirilen bir özelliği değiştirmek için çözüm portalında istenen bir özelliği ayarlayın. Aşağıdaki işlemler cihazın sorumluluğundadır:
- İstenen özellikleri IoT hub'ından düzenli olarak alma.
- Yapılandırmasını istenen özellik değeriyle güncelleştirme.
- Yeni değeri bildirilen özellik olarak hub’a geri gönderme.
Çözüm panosundan, cihaz ikizini kullanarak bir cihaz üzerindeki özellikleri ayarlamak üzere istenen özellikleri kullanabilirsiniz. Genellikle, cihaz iç durumunu güncelleştirmek üzere istenen özellik değerini hub’dan okur ve değişikliği bildirilen bir özellik olarak geri bildirir.
Not
Sanal cihaz kodu, IoT Hub’ına geri gönderilen bildirilen özellikleri güncelleştirmek üzere yalnızca istenen Desired.Config.TemperatureMeanValue ve Desired.Config.TelemetryInterval özelliklerini kullanır. Diğer tüm istenen özellik değişiklik istekleri, sanal cihazda yok sayılır.
Yöntemler
Sanal cihazlar IoT hub aracılığıyla çözüm portalından çağrılan aşağıdaki yöntemleri (doğrudan yöntemler) işleyebilir:
Yöntem | Açıklama |
---|---|
InitiateFirmwareUpdate | Cihazdan üretici yazılımı güncelleştirmesi yapmasını ister |
Yeniden başlatma | Cihazdan yeniden başlatma ister |
FactoryReset | Cihazdan fabrika sıfırlaması yapmasını ister |
Bazı yöntemler ilerleme durumunu bildirmek üzere bildirilen özellikleri kullanır. Örneğin, InitiateFirmwareUpdate yöntemi, güncelleştirmeyi cihaz üzerinde zaman uyumsuz olarak çalıştırma işlemini taklit eder. Yöntem cihaz üzerinde hemen döndürülürken, zaman uyumsuz görev bildirilen özellikleri kullanarak çözüm panosuna durum güncelleştirmeleri göndermeye devam eder.
Komutlar
Sanal cihazlar IoT hub aracılığıyla çözüm portalından gönderilen aşağıdaki komutları (buluttan cihaza iletiler) işleyebilir:
Komut | Açıklama |
---|---|
PingDevice | Canlı olup olmadığını denetlemek için cihaza bir ping gönderir |
StartTelemetry | Cihazın telemetri göndermesini başlatır |
StopTelemetry | Cihazın telemetri göndermesini durdurur |
ChangeSetPointTemp | Çevresinde rastgele verilerin oluşturulduğu ayar noktası değerini değiştirir |
DiagnosticTelemetry | Ek bir telemetri değeri (externalTemp) göndermek için cihaz benzeticisini tetikler |
ChangeDeviceState | Cihazla ilgili genişletilmiş durum özelliğini değiştirir ve cihazdan cihaz bilgi iletisi gönderir |
Not
Bu komutlar (buluttan cihaza iletiler) ile yöntemlerin (doğrudan yöntemler) bir karşılaştırması için bkz. Buluttan cihaza iletişim kılavuzu.
IoT Hub
IoT hub, cihazlardan buluta gönderilen verileri alır ve Azure Stream Analytics (ASA) işlerinde kullanılabilir hale getirir. ASA işinin kullandığı her akış, cihazlarınızdaki ileti akışını okumak için ayrı bir IoT Hub tüketici grubu kullanır.
IoT hub çözümde aynı zamanda şunları yapar:
- Portala bağlanmasına izin verilen tüm cihazların kimliklerini ve kimlik doğrulama anahtarlarını depolayan bir kimlik kayıt defteri tutar. Cihazları kimlik kayıt defterinden etkinleştirebilir ve devre dışı bırakabilirsiniz.
- Çözüm portalı adına cihazlarınıza komut gönderir.
- Çözüm portalı adına cihazlarınızda komut çağırır.
- Tüm kayıtlı cihazlar için cihaz ikizlerini tutar. Cihaz ikizi bir cihaz tarafından bildirilen özellik değerlerini depolar. Cihaz ikizi ayrıca cihaz bir kez daha bağlandığında alabilmesi için çözüm portalında ayarlanmış istenen özellikleri depolar.
- Birden fazla cihaza ait özellikleri ayarlamak veya birden fazla cihaz üzerinde yöntem çağırmak için işleri zamanlar.
Azure Stream Analytics
Uzaktan izleme çözümünde Azure Stream Analytics (ASA), IoT hub tarafından alınan cihaz iletilerini işleme veya depolama amacıyla diğer arka uç bileşenlerine gönderir. Farklı ASA işleri, iletilerin içeriğine göre belirli işlevler gerçekleştirir.
İş 1: Cihaz bilgileri gelen ileti akışından cihaz bilgileri iletilerine filtre uygular ve bunları olay hub'ı uç noktasına gönderir. Cihaz, başlangıçta ve SendDeviceInfo komutuna yanıt olarak cihaz bilgi iletileri gönderir. Bu iş device-info iletilerini tanımlamak için aşağıdaki sorgu tanımını kullanır:
SELECT * FROM DeviceDataStream Partition By PartitionId WHERE ObjectType = 'DeviceInfo'
Bu iş daha ayrıntılı işleme için Olay Hub’ına çıktısını gönderir.
İş 2: Kurallar cihaz başına eşiklere karşılık gelen sıcaklık ve nem telemetrisi değerlerini değerlendirir. Eşik değerleri çözüm portalında yer alan kurallar düzenleyicisinde ayarlanır. Her cihaz/değer çifti, Akış Analizi’nin Başvuru Verileri olarak okuduğu blob’daki zaman damgası tarafından depolanır. İş, boş olmayan değerleri cihaz için ayarlanan eşikle karşılaştırır. '>' koşulunu aşarsa, iş eşiğin aşıldığını belirten bir alarm olayı verir ve cihaz, değer ve zaman damgası değerlerini sağlar. Bu iş bir alarm tetiklemesi gereken telemetri iletilerini belirlemek üzere aşağıdaki sorgu tanımını kullanır:
WITH AlarmsData AS
(
SELECT
Stream.IoTHub.ConnectionDeviceId AS DeviceId,
'Temperature' as ReadingType,
Stream.Temperature as Reading,
Ref.Temperature as Threshold,
Ref.TemperatureRuleOutput as RuleOutput,
Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
Ref.Temperature IS NOT null AND Stream.Temperature > Ref.Temperature
UNION ALL
SELECT
Stream.IoTHub.ConnectionDeviceId AS DeviceId,
'Humidity' as ReadingType,
Stream.Humidity as Reading,
Ref.Humidity as Threshold,
Ref.HumidityRuleOutput as RuleOutput,
Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
Ref.Humidity IS NOT null AND Stream.Humidity > Ref.Humidity
)
SELECT *
INTO DeviceRulesMonitoring
FROM AlarmsData
SELECT *
INTO DeviceRulesHub
FROM AlarmsData
İş daha ayrıntılı işleme için çıktısını Olay Hub’ına gönderir ve her bir uyarının ayrıntılarını, çözüm portalının uyarı bilgilerini okuyabileceği blob depolamaya kaydeder.
ş 3: Telemetri, gelen cihaz telemetrisi akışını iki yolla çalıştırır. İlk olarak tüm telemetri iletilerini cihazlardan uzun süreli depolama için kalıcı blob depolamaya gönderir. İkincisi beş dakikalık bir kayan pencerede ortalama, en düşük ve en yüksek nem değerlerini ölçer ve bu verileri blob depolamaya gönderir. Çözüm portalı blob depolama alanından telemetri verilerini okuyarak grafikleri doldurur. Bu iş şu sorgu tanımını kullanır:
WITH
[StreamData]
AS (
SELECT
*
FROM [IoTHubStream]
WHERE
[ObjectType] IS NULL -- Filter out device info and command responses
)
SELECT
IoTHub.ConnectionDeviceId AS DeviceId,
Temperature,
Humidity,
ExternalTemperature,
EventProcessedUtcTime,
PartitionId,
EventEnqueuedUtcTime,
*
INTO
[Telemetry]
FROM
[StreamData]
SELECT
IoTHub.ConnectionDeviceId AS DeviceId,
AVG (Humidity) AS [AverageHumidity],
MIN(Humidity) AS [MinimumHumidity],
MAX(Humidity) AS [MaxHumidity],
5.0 AS TimeframeMinutes
INTO
[TelemetrySummary]
FROM [StreamData]
WHERE
[Humidity] IS NOT NULL
GROUP BY
IoTHub.ConnectionDeviceId,
SlidingWindow (mi, 5)
Event Hubs
ASA işleri cihaz bilgisi ve kurallar verilerini, WebJob’da çalışan Olay İşleyicisi’ne güvenli bir şekilde iletmek üzere Event Hubs’a gönderir.
Azure depolama
Çözüm, çözümdeki cihazlarda bulunan tüm ham ve özet telemetri verilerini kalıcı hale getirmek için Azure Blob Depolama kullanır. Portal, blob depolama alanından telemetri verilerini okuyarak grafikleri doldurur. Uyarıları görüntülemek için çözüm portalı, telemetri değerleri yapılandırılmış eşik değerlerini aştığında kayıt altına alan blob depolama alanından verileri okur. Çözüm, çözüm portalında sizin ayarladığınız eşik değerlerini kaydetmek için de blob depolama alanını kullanır.
Web İşleri
WebJobs cihaz benzeticilerini barındırmaya ek olarak çözüm içinde komut yanıtlarını işleyen bir Azure WebJob içinde çalışan Olay İşleyicisi’ni de barındırır. Cihaz komut geçmişini (Cosmos DB veritabanında depolanır) güncelleştirmek için komut yanıtı iletilerini kullanır.
Cosmos DB
Çözüm, kendisine bağlı cihazlarla ilgili bilgileri depolamak için bir Cosmos DB veritabanı kullanır. Bu bilgiler çözüm portalından cihazlara gönderilen komutların ve çözüm portalından çağrılan yöntemlerin geçmişini içerir.
Çözüm portalı
Çözüm portalı, önceden yapılandırılmış çözümün bir parçası olarak dağıtılan bir web uygulamasıdır. Çözüm portalındaki temel sayfalar pano ve cihaz listesidir.
Pano
Web uygulamasındaki bu sayfa, cihazlardaki telemetri verilerini görselleştirmek için PowerBI javascript denetimlerini kullanır (bkz. PowerBI-visuals repo). Çözüm, blob depolama alanına telemetri verilerini yazmak için ASA telemetri işini kullanır.
Cihaz listesi
Çözüm portalındaki bu sayfadan şunları yapabilirsiniz:
- Yeni bir cihaz hazırlayın. Bu eylem, benzersiz cihaz kimliğini ayarlar ve kimlik doğrulaması anahtarını oluşturur. Hem IoT Hub kimlik kayıt defterine hem de çözüme özel Cosmos DB veritabanına cihaz hakkındaki bilgileri yazar.
- Cihaz özelliklerini yönetin. Bu eylem, mevcut özellikleri görüntülemeyi ve yeni özelliklerle güncelleştirmeyi kapsar.
- Cihaza komut gönderme.
- Cihaz için komut geçmişini görüntüleme.
- Cihazları etkinleştirin ve devre dışı bırakın.
Sonraki adımlar
Aşağıdaki TechNet blog gönderileri önceden yapılandırılmış uzaktan izleme çözümü hakkında daha ayrıntılı bilgi sağlar:
- IoT Paketi - Başlık Altında - Uzaktan İzleme
- IoT Paketi - Uzaktan İzleme - Canlı ve Sanal Cihaz Ekleme
Aşağıdaki makaleleri okuyarak IoT Paketi ile çalışmaya başlayabilirsiniz: