MQTT API
MQTT, çeşitli IoT cihazları için muhtemelen en uygun olan hafif bir yayınla abone olun mesajlaşma protokolüdür. MQTT hakkında daha fazla bilgiyi burada bulabilirsiniz.
ThingsOn sunucu düğümleri, QoS düzey 0 (en çok bir kez) ve 1 (en az bir kez) ve bir dizi önceden tanımlanmış konuyu destekleyen bir MQTT Broker olarak işlev görür.
MQTT Bağlantısı
Bu makalede erişim belirteci cihaz kimlik bilgileri kullanacak ve bunlara daha sonra $ ACCESS_TOKEN adı verilecektir. Uygulamanın $ ACCESS_TOKEN içeren kullanıcı adıyla MQTT CONNECT mesajı göndermesi gerekir. Bağlantı sırası sırasında olası dönüş kodları ve nedenleri:
0x00 Bağlandı – ThingsOn MQTT sunucusuna başarıyla bağlandı.
0x04 Bağlantı Reddedildi, hatalı kullanıcı adı veya şifre – Kullanıcı adı boş.
0x05 Bağlantı Reddedildi, yetkilendirilmedi – Kullanıcı adı geçersiz $ ACCESS_TOKEN içeriyor.
Key-value format
ThingsOn JSON formatında anahtar-değer (key-value) içeriğini destekler. Anahtar her zaman bir string iken, değer ise string, boolean, double ya da long veri tipinde olabilir.
{"stringKey":"value1", "booleanKey":true, "doubleKey":42.0, "longKey":73}
Telemetry upload API
Telemetri verilerini ThingsOn sunucu düğümüne yayınlamak için, aşağıdaki konuya YAYIN mesajı gönderin:
v1/devices/me/telemetry
Desteklenen en basit veri formatları:
{"key1":"value1", "key2":"value2"}
yada
[{"key1":"value1"}, {"key2":"value2"}]
Bu durumda, sunucu tarafı zaman damgasının yüklenen verilere atanacağını lütfen unutmayın!
Cihazınızın istemci tarafı zaman damgasını alabilmesi durumunda, aşağıdaki biçimi kullanabilirsiniz:
{"ts":1451649600512, "values":{"key1":"value1", "key2":"value2"}}
Yukarıdaki örnekte, “1451649600512” ifadesinin milisaniye hassasiyete sahip unix bir zaman damgası olduğunu varsayıyoruz. Örneğin, “1451649600512” değeri “Cum, 01 Ocak 2016 12: 00: 00.512 GMT” ye karşılık gelir.
# Publish data as an object without timestamp (server-side timestamp will be used)
mosquitto_pub -d -h "127.0.0.1" -t "v1/devices/me/telemetry" -u "$ACCESS_TOKEN" -f "{"key1":"value1", "key2":true, "key3": 3.0, "key4": 4}"
# Publish data as an array of objects without timestamp (server-side timestamp will be used)
mosquitto_pub -d -h "127.0.0.1" -t "v1/devices/me/telemetry" -u "$ACCESS_TOKEN" -f "[{"key1":"value1"}, {"key2":true}]"
# Publish data as an object with timestamp (server-side timestamp will be used)
mosquitto_pub -d -h "127.0.0.1" -t "v1/devices/me/telemetry" -u "$ACCESS_TOKEN" -f "{"ts":1451649600512, "values":{"key1":"value1", "key2":"value2"}}"
MQTT Kod Örnekleri (C#)
ThingsOn MQTT broker a bağlanarak veri göndermek için aşağıdaki C# örnek kodunu inceleyin.
// create connection
MqttClient client = new MqttClient("IP ADRESS");
client.Connect("Client1", "ACCESS_TOKEN", ""); /*Client adını dilediğiniz gibi yazın. > Kullanıcı adı cihazın ACCESS_TOKEN i olacak, > Şifreyi boş bırakın*/
// create telemetry object
dynamic telemetry = new JObject();
telemetry.temprature = 36;
// publish message
client.Publish("v1/devices/me/telemetry", Encoding.UTF8.GetBytes(Convert.ToString(telemetry)), MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, false);