Windows üzerinde MQTT.fx kullanarak bir cihazın Alibaba Cloud IoT Platform'a bağlantısını simüle edin ve temel mesajlaşma özelliklerini test edin.
Ön Koşullar
-
Bir ürün ve cihaz oluşturun ve MQTT bağlantı parametrelerini alın. Ürün ve cihaz oluşturma ve MQTT bağlantı parametrelerini alma.
Aşağıdaki tabloda bu örnekte kullanılan cihaz sertifikası ve MQTT bağlantı parametreleri listelenmektedir. Parametre ayrıntıları için bkz. MQTT-TLS bağlantısı.
Parametre
Değer
ProductKeya1***
DeviceNamedevice1
DeviceSecretf35***d9e
clientIda1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|
usernamedevice1&a1***
passwd86761***21d
mqttHostUrla1***.iot-as-mqtt.cn-shanghai.aliyuncs.com
port1883 -
TSL iletişim konuları üzerinden yukarı ve aşağı yönlü mesajlaşmayı test etmek için TSL modelinde özellikler tanımlayın. Bir ürün için TSL modeli tanımlama.
Bu örnekte aşağıdaki özellikler tanımlanmıştır:
LightCurrent(çalışma akımı, float, aralık 0–9) veLightSwitch(ana ışık anahtarı, boolean, 1 = açık, 0 = kapalı).
MQTT.fx ile simüle edilen bir cihaz yalnızca passthrough olmayan verileri kullanabilir. Passthrough verileri test etmek için fiziksel bir cihaz veya SDK kullanın.
MQTT.fx Bağlantısını Yapılandırma
-
MQTT.fx'i indirin ve yükleyin. Kurulum ve kullanım talimatları için bkz. MQTT.fx.
Bu konuda mqttfx-5.2.0-windows-x64 örneği kullanılmıştır. Sürüm güncellemeleri nedeniyle kullanıcı arayüzünüz farklılık gösterebilir.
NotMQTT.fx aracını kullanmak için lisans başvurusunda bulunmanız gerekir.
MQTT.fx yazılımını açın, menü çubuğunda Extras öğesine tıklayın ve Edit Connection Profiles seçeneğini belirleyin.
-
Edit Connection Profiles sayfasında aşağıdaki parametreleri yapılandırın.
-
Temel bilgileri yapılandırın.
Parametre
Açıklama
Profile Name
Özel bir ad girin, örneğin iot connection.
Profile Type
MQTT Broker seçeneğini belirleyin.
Broker Address
MQTT bağlantı uç noktası. Ön Koşullar bölümündeki mqttHostUrl değerini kullanın: a1***.iot-as-mqtt.cn-shanghai.aliyuncs.com.
-
a1***, ürünün ProductKey değeridir.
-
cn-shanghai, bölge kimliğidir.
Yalnızca alan adını girin. Bağlantı noktası numarasını dahil etmeyin.
Broker Port
1883 olarak ayarlayın.
Client ID
Bir MQTT protokolü alanıdır.
Biçim:
${ClientId}|securemode=${Mode},signmethod=${SignMethod}|timestamp=${timestamp}|.Ön Koşullar bölümündeki clientId değerini girin: a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|.
Parametre açıklaması:
-
${ClientId}: Bir cihaz, uygulama veya web istemcisi için istemci kimliği.
ÖnemliÖzel olmalı ve en fazla 64 karakter uzunluğunda olmalıdır. Cihazlar için MAC adresini veya seri numarasını (SN) kullanın.
-
${Mode}: Güvenlik modu. Doğrudan TLS için 2 (SSL/TLS ayarları gerektirir) veya doğrudan TCP için 3 (SSL/TLS ayarı gerekmez) olarak ayarlayın.
-
${SignMethod}: İmza algoritması. Desteklenenler: hmacsha256, hmacmd5 ve hmacsha1.
-
${timestamp}: Milisaniye cinsinden geçerli saat. timestamp parametresi isteğe bağlıdır.
Varsayılan olarak IoT Platform, ${ClientId} değerini
${ProductKey}.${DeviceName}, ${Mode} değerini 2 ve ${SignMethod} değerini hmacsha256 olarak ayarlar. Bu değerleri gerektiği gibi değiştirin.Önemli-
MQTT.fx'in Client ID alanını cihazın ${ClientId} değeriyle karıştırmayın.
-
Parametreler arasındaki veya dizenin sonundaki dikey çizgileri (|) atlamayın.
-
Parametre değerlerinin başında veya sonunda boşluk olmadığından emin olun.
-
Client ID bilgilerini girdikten sonra Generate düğmesine tıklamayın.
General
Bu örnekte varsayılan ayarlar kullanılır. Senaryonuza göre değiştirin.
-
-
User Credentials sekmesine tıklayın, Use Username/Password onay kutusunu seçin ve User Name ile Password değerlerini ayarlayın.
Parametre
Açıklama
User Name
Kullanıcı adı, cihazın DeviceName değeri, bir ampersan (&) ve ürünün ProductKey değerinden oluşur; biçimi
${DeviceName}&${ProductKey}şeklindedir.Ön Koşullar bölümündeki username değerini girin: device1&a1***.
-
device1, cihazın DeviceName değeridir. -
a1***, ürünün ProductKey değeridir.
Password
Parola, seçilen imza algoritması kullanılarak DeviceSecret anahtarıyla birleştirilmiş parametrelerin şifrelenmesiyle oluşturulur.
Ön Koşullar bölümündeki passwd değerini girin: 86761***21d.
Önemli-
Bazı MQTT.fx sürümlerinde parola yapıştırıldıktan sonra maskelenir. İmleç sona giderse yapıştırma başarılı olmuştur. Tekrar yapıştırmayın.
-
Parametreler ve değerleri büyük/küçük harfe duyarlıdır.
-
Client ID içindeki ${ClientId} veya ${SignMethod} değerlerini değiştirdiyseniz imza değerlerinin Client ID içindekilerle eşleştiğinden emin olun ve ardından parolayı yeniden hesaplayın. Node.js betiği kullanarak parolayı hesaplama.
-
-
Doğrudan TLS bağlantısı (securemode=2) için SSL/TLS sekmesine tıklayın, Enable SSL/TLS seçeneğini belirleyin ve Protocol değerini TLSv1.2 olarak ayarlayın.
ÖnemliDoğrudan TCP bağlantısı (
securemode=3) için SSL/TLS ayarlarını yapılandırmanıza gerek yoktur. Bir sonraki adıma geçin.
-
Sağ alt köşede OK düğmesine tıklayın.
-
Connect düğmesine tıklayın.
Yeşil bir gösterge ışığı, IoT Platform'a başarıyla bağlanıldığını doğrular.
IoT Platform konsolu üzerinden cihaz durumunu doğrulayın. Örneğinizde, şuraya gidin: , ürünü seçin ve cihaz durumunun Online olduğunu onaylayın.
Aşağıdaki bölümlerde özel konular ve TSL iletişim konuları kullanılarak yukarı ve aşağı yönlü mesajlaşma test edilmektedir. Sonuçlarınız farklıysa bağlantı başarısız olmuştur; günlük bilgilerine dayanarak ayarları düzeltin.
İletişim İçin Özel Konuları Kullanma
Özel konu ayrıntıları için bkz. İletişim için özel konuları kullanma. Bu örnekte IoT Platform tarafından sağlanan varsayılan özel konular kullanılmaktadır:
|
|
|
|
|
|
|
|
|
|
|
|
Yukarı yönlü mesajlaşma
MQTT.fx'te Publish sekmesine tıklayın. Publish metin kutusuna publish iznine sahip konuyu girin:
/a1***/device1/user/update/error.-
Metin düzenleyicide mesaj içeriğini girin ve Publish düğmesine tıklayın.
QoS değerinin QoS 0 olarak ayarlandığından ve mesaj gövdesinin örneğin
This is a publish test.olduğundan emin olun. -
IoT Platform konsolunda örneğinizin Device Log sayfasını açın ve device-to-cloud message günlüklerini kontrol edin. Cloud tarafı çalışma günlüklerini sorgulama.
Bir günlük girişi için View düğmesine tıklayın. View Details iletişim kutusunda Topic değerinin
/a[ProductKey]/device1/user/update/errorve mesaj içeriğininThis is a publish test.olduğunu doğrulayın.
Aşağı yönlü mesajlaşma
MQTT.fx'te Subscribe sekmesine tıklayın. Subscribe metin kutusuna Subscribe iznine sahip konuyu girin:
/a1***/device1/user/get.-
Subscribe düğmesine tıklayın.
Abonelikten sonra konu listede görünür.
IoT Platform konsolunda örneğinizde şuraya gidin: .
Cihazın Actions sütununda View düğmesine tıklayarak device details sayfasını açın.
Topic List sekmesine tıklayın. Abone olunan konunun Actions sütununda Publish Message düğmesine tıklayın.
Bir mesaj girin, örneğin This is a test. ve OK düğmesine tıklayın.
-
Alınan mesajı görüntülemek için MQTT.fx'e dönün.
Subscribe sekmesinde
/a{ProductKey}/device1/user/getkonusuThis is a testmesajını alır (QoS 0, Plain Text Decoder ile kodu çözülür).
TSL İletişimi İçin Konuları Kullanma
TSL iletişim konusu ayrıntıları için bkz. Konu nedir?. Bu örnekte aşağıdaki TSL iletişim konuları kullanılmaktadır:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Cihaz özelliklerini bildirme
MQTT.fx'te Subscribe sekmesine tıklayın. Subscribe metin kutusuna subscribe iznine sahip konuyu girin:
/sys/a1****/device1/thing/event/property/post_reply.MQTT.fx'te Publish sekmesine tıklayın ve Publish metin kutusuna publish iznine sahip bir konu girin:
/sys/a1****/device1/thing/event/property/post.-
Metin düzenleyicide özellik verilerini girin ve Publish düğmesine tıklayın.
Özellik verileri standart Alink JSON biçimini kullanmalıdır. Cihazın özellikleri bildirmesi. Bu örnekte LightCurrent ve LightSwitch özellikleri bildirilmektedir. Konu
/sys/${ProductKey}/device1/thing/event/property/postolup örnek JSON yükü şöyledir:{"method":"thing.event.property.post","id":"162277852","params":{"LightSwitch":1,"LightCurrent":1.4},"version":"1.0.0"}. IoT Platform konsolunda örneğinizde şuraya gidin: .
Cihazın Actions sütununda View düğmesine tıklayın. device details sayfasında TSL Data sekmesine tıklayarak bildirilen verileri görüntüleyin.
Cihaz özelliklerini ayarlama
MQTT.fx'te Subscribe sekmesine tıklayın. Subscribe metin kutusuna Subscribe iznine sahip konuyu girin:
/sys/a1****/device1/thing/service/property/set.IoT Platform konsolunda örneğinizde şuraya gidin: .
Cihazı seçin. Property Debugging sekmesinde LightSwitch değerini 0 olarak ayarlayın.
Komutu göndermek için Set düğmesine tıklayın.
-
MQTT.fx'teki Subscribe sekmesinde alınan mesajı görüntüleyin.
/sys/axxxxx/device1/thing/service/property/set {"method":"thing.service.property.set","id":"2016306076","params":{"LightSwitch":0},"version":"1.0.0"}
Günlükleri Görüntüleme
IoT Platform konsolunda örneğinizin Device Log sayfasını açarak zaman, TraceID ve iş türü dahil olmak üzere çalışma günlüğü mesajlarını görüntüleyin. Cloud tarafı çalışma günlüklerini sorgulama.
-
MQTT.fx'te işlem ve hata günlüklerini görüntülemek için Log sekmesine tıklayın.
INFO --- MqttFX ClientModel : messageArrived() with topic: /ext/error/axxx0/device1 INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /a1xxx/device1/user/get INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- BrokerConnectorController : onDisconnect INFO --- ScriptsController : Clear console. INFO --- ScriptsController : Cancel script excution. INFO --- ScriptsController : Clear console. INFO --- ScriptsController : Cancel script excution. INFO --- ScriptsController : Clear console. INFO --- ScriptsController : Cancel script excution. INFO --- BrokerConnectorController : onConnect INFO --- ScriptsController : Clear console. INFO --- MqttFX ClientModel : MqttClient with ID a1xxx0.device1|securemode=2,signmethod=hmacsha... INFO --- MqttFX ClientModel : session present: false INFO --- SubscribeController : onSubscribe INFO --- MqttFX ClientModel : rebuildMessagesList() INFO --- MqttFX ClientModel : attempt to addRecentSubscriptionTopic INFO --- MqttFX ClientModel : addRecentSubscriptionTopic : de.jensd.mqttfx.entities.Topixxx1 INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /axxx/device1/user/get INFO --- MqttFX ClientModel : sucessfully subscribed to topic /a1xxxSp0/device1/user/get (QoS 0) INFO --- MqttFX ClientModel : messageArrived() with topic: /a1Kucxxx/device1/user/get INFO --- MqttFX ClientModel : messageArrived() added: message #1 to topic '/axxx/device1/user/... INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /a1xxx/device1/user/update/error INFO --- MqttFX ClientModel : sucessfully published message This is a publish test. to topic /a1Kuc5xxx/device1/user/get
İlgili Belgeler
IoT Platform, kaynak kısıtlamalı ve düşük bant genişliğine sahip ortamlarda IoT'de yaygın olarak kullanılan MQTT protokolünü destekler. MQTT protokolü teknik özellikleri.
Bir cihazı IoT Platform'a bağlamak için cihaz bağlantı kılavuzuna bakın.
Konular, MQTT mesaj yayınlama ve abonelik işlemleri için ara katman görevi görür. Konu kavramları ve tanımları için bkz. Konu nedir?.