Azure IoT Central çözümünde komutları kullanma
Bu nasıl yapılır kılavuzu, bir cihaz şablonunda tanımlanan komutların nasıl kullanılacağını gösterir.
Operatör ioT Central kullanıcı arabirimini kullanarak bir cihazdaki komutu çağırabilir. Komutlar bir cihazın davranışını denetler. Örneğin, bir operatör bir cihazı yeniden başlatmak veya tanılama verilerini toplamak için bir komut çağırabilir.
Bir cihaz:
- Bir komuta hemen yanıt verin.
- Komutu aldığında IoT Central'a yanıt verin ve daha sonra uzun süre çalışan komut tamamlandığında IoT Central'a bildirin.
Varsayılan olarak komutlar, cihaza ulaşılamıyorsa cihazın bağlı olmasını ve başarısız olmasını bekler. Cihaz şablonu kullanıcı arabiriminde Çevrimdışıysa kuyruk seçeneğini seçerseniz, bir cihaz çevrimiçi olana kadar bir komut kuyruğa alınabilir. Bu çevrimdışı komutlar , bu makalenin devamında ayrı bir bölümde açıklanmıştır.
IoT Pug ve Play komut kuralları hakkında bilgi edinmek için bkz. IoT Tak Çalıştır kuralları.
Bir cihazın IoT Central ile yaptığı komut verileri hakkında daha fazla bilgi edinmek için bkz . Telemetri, özellik ve komut yükleri.
IoT Central REST API'sini kullanarak komutları yönetmeyi öğrenmek için bkz . Cihazları denetlemek için IoT Central REST API'sini kullanma..
Cihaz SDK'larını kullanmadan bir cihazda komut uygulamayı öğrenmek için bkz . MQTT protokolunu kullanarak IoT hub'ı ile iletişim kurma.
Komutlarınızı tanımlama
Standart komutlar, cihaza bir şey yapması talimatı vermek için cihaza gönderilir. Komut, ek bilgiler içeren parametreler içerebilir. Örneğin, bir cihazdaki vanayı açma komutu, vananın ne kadar açıldığını belirten bir parametreye sahip olabilir. Komutlar, cihaz komutu tamamladığında bir dönüş değeri de alabilir. Örneğin, bir cihazdan bazı tanılamaları çalıştırmasını isteyen bir komut, bir tanılama raporunu dönüş değeri olarak alabilir.
Komutlar bir cihaz şablonunun parçası olarak tanımlanır. Aşağıdaki ekran görüntüsünde Termostat cihaz şablonundaki Get Max-Min rapor komut tanımı gösterilmektedir. Bu komut hem istek hem de yanıt parametrelerine sahiptir:
Aşağıdaki tabloda bir komut özelliğinin yapılandırma ayarları gösterilmektedir:
Alan | Veri Akışı Açıklaması |
---|---|
Görünen Ad | Pano kutucuklarında ve cihaz formlarında kullanılan komut değeri. |
Veri Akışı Adı | Komutun adı. IoT Central bu alan için görünen addan bir değer oluşturur, ancak gerekirse kendi değerinizi seçebilirsiniz. Bu alanın alfasayısal olması gerekir. Cihaz kodu bu Ad değerini kullanır. |
Yetenek Türü | Komut. |
Çevrimdışıysa kuyruk | Bu komutun çevrimdışı bir komut olup olmayacağı. |
Açıklama | Komut özelliğinin açıklaması. |
Yorum | Komut özelliği hakkındaki tüm açıklamalar. |
İstek | Cihaz komutunun yükü. |
Response | Cihaz komut yanıtının yükü. |
Azure IoT Central'ın bir cihaz şablonunda komutları tanımlamak için kullandığı Dijital İkiz Tanım Dili (DTDL) hakkında bilgi edinmek için bkz. IoT Tak Çalıştır kuralları > Komutları.
Görünen ad ve açıklama gibi isteğe bağlı alanlar, arabirime ve özelliklere daha fazla ayrıntı eklemenize olanak sağlar.
Standart komutlar
Standart bir komutu işlemek için, cihaz IoT Central'dan komutu alır almaz bir yanıt değeri gönderir. IoT Central uygulamanız tarafından çağrılan standart komutları işlemek için Azure IoT cihaz SDK'sını kullanabilirsiniz.
Birden çok dilde uygulanan uygulamalar için bkz . İstemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama.
Aşağıdaki ekran görüntüsünde başarılı komut yanıtının IoT Central kullanıcı arabiriminde nasıl görüntülediği gösterilmektedir:
Not
Standart komutlar için 30 saniyelik bir zaman aşımı vardır. Bir cihaz 30 saniye içinde yanıt vermezse IoT Central komutun başarısız olduğunu varsayar. Bu zaman aşımı süresi yapılandırılamaz.
Uzun süre çalışan komutlar
Uzun süre çalışan bir komutta cihaz komutu hemen tamamlamaz. Bunun yerine, cihaz komutun alındığını kabul eder ve ardından komutun tamamlandığını onaylar. Bu yaklaşım, bir cihazın IoT Central bağlantısını açık tutmadan uzun süre çalışan bir işlemi tamamlamasına olanak tanır.
Not
Uzun süre çalışan komutlar IoT Tak Çalıştır kurallarının bir parçası değildir. IoT Central'ın uzun süre çalışan komutları uygulamak için kendi kuralı vardır.
Bu bölümde, bir cihazın komutun tamamlandığını belirten bir onay gönderilmesini nasıl geciktirebileceği gösterilir.
Aşağıdaki kod parçacığı, bir cihazın uzun süre çalışan bir komutu nasıl uygulayabileceğini gösterir:
Not
Bu makalede kolaylık sağlamak için Node.js kullanılır.
client.onDeviceMethod('rundiagnostics', commandHandler);
// ...
const commandHandler = async (request, response) => {
switch (request.methodName) {
case 'rundiagnostics': {
console.log('Starting long-running diagnostics run ' + request.payload);
await sendCommandResponse(request, response, 202, 'Diagnostics run started');
// Long-running operation here
// ...
const patch = {
rundiagnostics: {
value: 'Diagnostics run complete at ' + new Date().toLocaleString()
}
};
deviceTwin.properties.reported.update(patch, function (err) {
if (err) throw err;
console.log('Properties have been reported for component');
});
break;
}
default:
await sendCommandResponse(request, response, 404, 'unknown method');
break;
}
};
yöntemini ayarlamak için onDeviceMethod
çağrısı commandHandler
. Bu komut işleyicisi:
- Komutun adını denetler.
- Yanıtı IoT Central'a geri göndermek için çağrılar
sendCommandResponse
. Bu yanıt,202
bekleyen sonuçları belirten yanıt kodunu içerir. - Uzun süre çalışan işlemi tamamlar.
- IoT Central'a komutun tamamlandığını bildirmek için komutuyla aynı ada sahip bildirilen bir özellik kullanır.
Aşağıdaki ekran görüntüsünde, komutun tamamlandığını belirten özellik güncelleştirmesini aldığında IoT Central kullanıcı arabirimi gösterilmektedir:
Çevrimdışı komutlar
Bu bölümde, bir cihazın çevrimdışı komutu nasıl işlediği gösterilir. Bir cihaz çevrimiçiyse, alındığı anda çevrimdışı komutu işleyebilir. Bir cihaz çevrimdışıysa, IoT Central'a bir sonraki bağlanışında çevrimdışı komutu işler. Cihazlar çevrimdışı bir komuta yanıt olarak dönüş değeri gönderemez.
Not
Çevrimdışı komutlar IoT Tak Çalıştır kurallarının bir parçası değildir. IoT Central'ın çevrimdışı komutları uygulamak için kendi kuralı vardır.
Not
Bu makalede kolaylık sağlamak için Node.js kullanılır.
Aşağıdaki ekran görüntüsünde GenerateDiagnostics adlı çevrimdışı bir komut gösterilmektedir. İstek parametresi, StartTime adlı datetime özelliğine ve Bank adlı bir tamsayı numaralandırma özelliğine sahip bir nesnedir:
Aşağıdaki kod parçacığı, istemcinin çevrimdışı komutları nasıl dinleyebileceğini ve ileti içeriğini nasıl görüntüleyebileceğini gösterir:
client.on('message', function (msg) {
console.log('Body: ' + msg.data);
console.log('Properties: ' + JSON.stringify(msg.properties));
client.complete(msg, function (err) {
if (err) {
console.error('complete error: ' + err.toString());
} else {
console.log('complete sent');
}
});
});
Önceki kod parçacığından alınan çıkış, Yükü StartTime ve Banka değerleriyle gösterir. Özellik listesi, yöntem-adı liste öğesinde komut adını içerir:
Body: {"StartTime":"2021-01-06T06:00:00.000Z","Bank":2}
Properties: {"propertyList":[{"key":"iothub-ack","value":"none"},{"key":"method-name","value":"GenerateDiagnostics"}]}
Not
Çevrimdışı komutlar için varsayılan yaşam süresi 24 saattir ve ardından iletinin süresi dolar.
Atanmamış cihazlardaki komutlar
Cihaz şablonuna atanmamış bir cihazda komutları çağırabilirsiniz. Atanmamış bir cihazda komut çağırmak için Cihazlar bölümünde Cihaza gidin, Cihazı yönet'i ve ardından Komut'u seçin. Yöntem adını, yükü ve diğer gerekli değerleri girin. Aşağıdaki ekran görüntüsünde, komut çağırmak için kullandığınız kullanıcı arabirimi gösterilmektedir:
Sonraki adımlar
Azure IoT Central uygulamanızda komutları kullanmayı öğrendiğinize göre, komut parametreleri hakkında daha fazla bilgi edinmek için Telemetri, özellik ve komut yükleri bölümüne bakın ve farklı dillerde eksiksiz kod örneklerini görmek için istemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama.