Bu konu, Veri Türü parametresi Özel olarak ayarlanmış ürünler için Thing Specification Language (TSL) verilerini ayrıştıran bir betiğin nasıl yazılacağını ve betiğin nasıl gönderileceğini açıklar. Ayrıca, yukarı ve aşağı yönlü özellik verilerini ayrıştırmak için kullanılabilecek örnek betikler sunar.
Önkoşullar
Ürünü oluştururken ürünün Veri Türü parametresini Custom olarak ayarlamış olmanız gerekir. Daha fazla bilgi için bkz. Create a product.
Arka plan bilgileri
Veri Türü parametresi ICA Standard Data Format (Alink JSON) olarak ayarlanır. Bu durumda, cihazlar Alink JSON formatında veri oluşturur ve bu verileri IoT Platform'a bildirir. Alink JSON veri formatı hakkında daha fazla bilgi için bkz. Device properties, events, and services.
Veri Türü parametresi Custom olarak ayarlanır. Bu durumda, cihazlar IoT Platform ile iletişim kurarken IoT Platform, gönderdiğiniz veri ayrıştırma betiklerini kullanarak yukarı yönlü TSL verilerini Alink JSON formatlı verilere dönüştürür ve aşağı yönlü TSL verilerini özel formatta cihaz verilerine dönüştürür.
Bu örnekte varsayılan modülün özellikleri kullanılır. Özel bir modül kullanıyorsanız, her tanımlayıcıyı şu formatta belirtmeniz gerekir: ${Module identifier}:${Property identifier}. Örnek: model1:prop_int16.
Adım 1: Betik yazma
Create a product. IoT Platform console içinde bir ürün oluşturun ve Data Type parametresini Custom olarak ayarlayın.
-
Add a TSL feature: Ürün için bir TSL modeli tanımlayın.
Bu örnekte üç özellik tanımlanmıştır. Aşağıdaki tabloda bu özellikler açıklanmaktadır.
Identifier
Data type
Valid value
Read/write type
prop_float
FLOAT
-100~100
Read and write
prop_int16
INT32
-100~100
Read and write
prop_bool
BOOLEAN
0: enabled and 1: disabled
Read and writeBetik, TSL modeline dayalı olarak yukarı ve aşağı yönlü TSL verilerini ayrıştıracak şekilde yazılır.
Bu örnekte, veri iletişimi için kullanılan parametrelerin değerlerinin uzunlukları belirtilmiştir. Aşağıdaki tabloda bu uzunluklar açıklanmaktadır.
-
Cihazların veri bildirmek için gönderdiği istekler
Parameter
Number of bytes
Frame Type
1 byte
The ID of the request
4 bytes
prop_int16
2 bytes
prop_bool
1 byte
prop_float
4 bytes -
Veri bildirme isteklerine verilen yanıtlar
Parameter
Number of bytes
Frame Type
1 byte
The ID of the request
4 bytes
Result code
1 byte -
Özellikleri yapılandırmaya yönelik istekler
Parameter
Number of bytes
Frame Type
1 byte
The ID of the request
4 bytes
prop_int16
2 bytes
prop_bool
1 byte
prop_float
4 bytes -
Özellik yapılandırma isteklerine verilen yanıtlar
Parameter
Number of bytes
Frame Type
1 byte
The ID of the request
4 bytes
Result code
1 byte
-
-
Bir betik yazın.
Products sayfasında yönetmek istediğiniz ürünü bulun ve Actions sütununda View seçeneğine tıklayın.
product details sayfasında Message Analysis seçeneğine tıklayın.
-
Bir programlama dili seçin ve Edit Script alanında bir betik yazın.
Supported scripting language
The function that converts upstream data in a custom format to Alink JSON-formatted data:
The function that converts Alink JSON-formatted data to downstream data in a custom format:
Sample code
JavaScript (ECMAScript 5)
rawDataToProtocol
protocolToRawData
Python 2.7
raw_data_to_protocol
protocol_to_raw_data
PHP 7.2
rawDataToProtocol
protocolToRawDataNotÖzel konulara gönderilen verileri ayrıştırmak için kullanılabilecek bir betik yazmanız gerekir. Betiğin nasıl yazılacağı hakkında bilgi için bkz. Submit a message parsing script.
Özel konulara gönderilen verileri ve TSL verilerini ayrıştırmak için kullanılabilecek tam örnek betikler hakkında bilgi için bkz. Sample JavaScript code used to parse custom data, Complete sample code for parsing pass-through or custom data in Python ve Sample PHP code used to parse custom data.
Adım 2: Betiği çevrimiçi test etme
Bu örnekte belirtilen ve döndürülen onaltılık dize ve JSON formatlı veriler yalnızca test amaçlıdır ve gerçek senaryolarda hata ayıklama için kullanılamaz.
Betiği yazdıktan sonra, Simulation Type parametresini yapılandırın ve betiği test etmek için Input Simulation sekmesinde simüle edilmiş veriler belirtin.
-
Bir cihazın IoT Platform'a bildirdiği simüle edilmiş özellik verilerini kullanarak betiği test edin.
Simulation Type parametresini Upstreamed Device Data olarak ayarlayın, aşağıdaki simüle edilmiş verileri girin ve ardından Run seçeneğine tıklayın.
NotBu örnekte simüle edilmiş JavaScript verileri kullanılır. Örnek JavaScript betikleri hakkında daha fazla bilgi için bkz. Sample JavaScript script.
Örnek Python ve PHP betikleri hakkında bilgi için bkz. Python sample script ve PHP sample script.
JSON formatlı verileri onaltılık verilere dönüştürmek için dizeleri onaltılık verilere dönüştüren bir araç kullanabilirsiniz. Örneğin, dönüştürülen onaltılık veri
00002233441232013fa00000ise aşağıdaki verileri belirtin:0x00002233441232013fa00000Veri ayrıştırma motoru, geçiş verilerini betikte tanımlanan kurallara göre JSON formatlı verilere dönüştürür.
Parsing Results seçeneğine tıklayın. Parsing Results sekmesi ayrıştırılmış verileri görüntüler.
{ "method": "thing.event.property.post", "id": "2241348", "params": { "prop_float": 1.25, "prop_int16": 4658, "prop_bool": 1 }, "version": "1.0" } -
IoT Platform'un bir cihaza döndürdüğü simüle edilmiş sonuç verilerini kullanarak betiği test edin.
Simulation Type parametresini Received Device Data olarak ayarlayın, aşağıdaki JSON formatlı verileri girin ve ardından Run seçeneğine tıklayın.
{ "id": "12345", "version": "1.0", "code": 200, "method": "thing.event.property.post", "data": {} }Veri ayrıştırma motoru JSON formatlı verileri aşağıdaki verilere dönüştürür:
0x0200003039c8 -
IoT Platform'un bir cihaza özellikleri değiştirmesini istemek için gönderdiği simüle edilmiş verileri kullanarak betiği test edin.
Simulation Type parametresini Received Device Data olarak ayarlayın, aşağıdaki JSON formatlı verileri girin ve ardından Run seçeneğine tıklayın.
{ "method": "thing.service.property.set", "id": "12345", "version": "1.0", "params": { "prop_float": 123.452, "prop_int16": 333, "prop_bool": 1 } }Veri ayrıştırma motoru JSON formatlı verileri aşağıdaki verilere dönüştürür:
0x0100003039014d0142f6e76d -
Bir cihazın özellikleri değiştirdikten sonra IoT Platform'a döndürdüğü simüle edilmiş sonuç verilerini kullanarak betiği test edin.
Simulation Type parametresini Upstreamed Device Data olarak ayarlayın, aşağıdaki verileri girin ve ardından Run seçeneğine tıklayın.
0x0300223344c8Veri ayrıştırma motoru geçiş verilerini aşağıdaki JSON formatlı verilere dönüştürür:
{ "code": "200", "data": {}, "id": "2241348", "version": "1.0" }
Adım 3: Betiği gönderme
IoT Platform betikleri çalıştırabilmek için önce betikleri IoT Platform'a göndermeniz gerekir. Taslak durumundaki betikler çağrılamaz.
Betiğin verileri beklendiği gibi ayrıştırdığını onayladıktan sonra, betiği IoT Platform'a göndermek için Submit seçeneğine tıklayın. IoT Platform, yukarı ve aşağı yönlü verileri ayrıştırmak için bu betiği kullanabilir.
Adım 4: Fiziksel bir cihaz kullanarak hata ayıklama
Betiği işinizde kullanmadan önce, IoT Platform'un betiği çağırıp çağıramadığını ve yukarı/aşağı yönlü verileri ayrıştırıp ayrıştıramadığını kontrol etmek amacıyla fiziksel bir cihaz kullanarak IoT Platform ile iletişim kurun.
Bir cihazı yapılandırmak ve IoT Platform'a bağlamak için IoT Platform Link SDK'yı kullanabilirsiniz. Daha fazla bilgi için bkz. Link SDK.
-
IoT Platform'un yukarı yönlü özellik verilerini ayrıştırmak için betiği çağırabildiğini doğrulayın.
Cihazı kullanarak
0x00002233441232013fa00000gibi özellik verilerini IoT Platform'a bildirin.IoT Platform konsolunda sol gezinme bölmesinden seçeneğini belirleyin.
Devices sayfasında cihazı bulun ve Actions sütununda View seçeneğine tıklayın. Device Details sayfasında sekmesine ve ardından Status sekmesine tıklayın. Bildirilen özellik verilerinin mevcut olup olmadığını kontrol edin.
-
IoT Platform'un aşağı yönlü özellik verilerini ayrıştırmak için betiği çağırabildiğini doğrulayın.
IoT Platform konsoluna oturum açın. Sol gezinme sayfasında seçeneğini belirleyin.
-
Online Debug sayfasında hata ayıklamak istediğiniz ürünü ve cihazı seçin ve ardından Default Module seçeneğini belirleyin. Hata ayıklamak istediğiniz özelliğin tanımlayıcısını seçin (örneğin prop_int16). Yöntemi Set olarak ayarlayın. Aşağıdaki verileri girin ve Send Command seçeneğine tıklayın.
{ "method": "thing.service.property.set", "id": "12345", "version": "1.0", "params": { "prop_float": 123.452, "prop_int16": 333, "prop_bool": 1 } } Cihazın özellikleri yapılandırma komutunu alıp almadığını kontrol edin.
Device Details sayfasında seçeneğini belirleyin. Görüntülenen sekmede geçerli özellik verilerinin cihaz tarafından bildirilip bildirilmediğini kontrol edin.
İsteğe bağlı: Mesaj ayrıştırma betiğini güncelleme
Bir mesaj ayrıştırma betiği gönderdikten sonra, betiği değiştirmek veya silmek için Message Parsing sekmesine dönebilirsiniz. Değişikliklerinizi test etmek ve göndermek için Procedure bölümündeki adımları izleyin. Değişiklikler yaklaşık bir dakika içinde etkili olur. Güncellenen betik, ürünle ilişkili tüm mevcut ve yeni cihazlara uygulanır.
Betiği değiştirip yeniden gönderirseniz, mesaj ayrıştırma hizmeti için ilgili iş mantığını da güncellemeniz gerekir. Aksi takdirde hizmetleriniz kesintiye uğrayabilir.
Betiği silerseniz, ürünle ilişkili cihazlar için mesaj ayrıştırma hizmeti kullanılamaz hale gelir. Bu durum hizmetlerinizi kesintiye uğratabilir.
Dikkatli ilerleyin.
İlgili konular
Veri ayrıştırma süreci hakkında bilgi için bkz. Message parsing.
Özel konulara gönderilen verilerin nasıl ayrıştırılacağı hakkında daha fazla bilgi için bkz. Submit a message parsing script.
Cihazlara mesaj göndermek için kullanılan API işlemleri hakkında bilgi için bkz. Use of TSL models ve Messaging.