AWS IOT MQTT: устройства случайно показывают как автономный режим при подписке на более чем 50 вещей в приложении iOSIOS

Программируем под IOS
Ответить
Anonymous
 AWS IOT MQTT: устройства случайно показывают как автономный режим при подписке на более чем 50 вещей в приложении iOS

Сообщение Anonymous »

Я разрабатываю приложение для iOS с использованием AWS IoT Core и MQTT для управления устройствами Smart Home. Каждое устройство имеет соответствующую AWS IoT Thing », а приложение подписывается на тень Delta Delta по теме каждой вещи: < /p>
$aws/things//shadow/update/delta
< /code>
Примечание: эта проблема возникает только на iOS. Та же самая логика отлично работает на Android с 80+ вещами. Эти устройства на самом деле находятся в Интернете, но их сообщения Shadow Delta никогда не появляются.if IoTConnection.sharedInstance.checkIOTConnectionStatus() {
IoTConnection.sharedInstance.subscribeToAllModules(true)
IoTConnection.sharedInstance.subscribeForDelta()
}

func subscribeToAllModules(_ getStatus:Bool)
{
if UserDefaults.standard.bool(forKey: "isLoggedIn")
{
DispatchQueue.global().async {

let array = dbManager.fetchList(query: "select serialNumber from master", columnName: "serialNumber", .master) as! [String]
////print(array)
for srnum in array {

self.subscribeWithSerialnumber(serialnumber: srnum, operation: .update)
if srnum.contains("zdp") {
self.subscribeWithSerialnumber(serialnumber: srnum, operation: .get)
}

// if !srnum.contains("1001") {
// self.subscribeWithSerialnumber(serialnumber: srnum, operation: .update)
// if srnum.contains("zdp") {
// self.subscribeWithSerialnumber(serialnumber: srnum, operation: .get)
// }
// } else {
// print("Condition failed")
// }

}

if getStatus && !isSceneExecuting {

let modules = dbManager.fetchData("select serialNumber,moduleType from master", .master)

modules.forEach { (module) in

let dict = Module_Data.getActiveModuleGroupsWithApplianceCount(moduleString: module["moduleType"]! as! String)

if dict.keys.contains("LI") || dict.keys.contains("DL") || dict.keys.contains("FA") || dict.keys.contains("PM") || dict.keys.contains("CM") {

let srnum = module["serialNumber"]! as! String
if (RoomDetails.roomExecution != nil && !RoomDetails.roomExecution.sentSerialNumbers.contains(srnum)) || RoomDetails.roomExecution == nil {

// debugPrint("sent ping msg to \(srnum)")
self.updateThing(thingname: srnum, json: self.pingMsg, shadowOperation: .update)
}
}

}
//
//
// array = dbManager.fetchList(query: "select serialNumber from master where moduleType like '%SS00%' and moduleType like '%LK00%' and moduleType like '%WL00%' and moduleType like '%WR00%'", columnName: "serialNumber", .master) as! [String]
// for srnum in array {
//
// }
}
}
}
}

func subscribeForDelta() {

if let email = UserDefaults.standard.string(forKey: "email") {

self.subscribeWithSerialnumber(serialnumber: email.alphanumeric, operation: .get)
self.updateThing(thingname: email.alphanumeric, json: "", shadowOperation: .get)
let topic = "$aws/things/\(email.alphanumeric)/shadow/update/delta"
debugPrint("ITC: Subscribing for delta topic: \(topic)")
let subscribed = iotDataManager!.subscribe(toTopic: topic, qoS: .messageDeliveryAttemptedAtMostOnce) { (data) in

debugPrint("ITC: Delta payload received")
debugPrint(data)
do {
let d = try JSONSerialization.jsonObject(with: data, options: []) as! Dictionary
self.identifyDelta(devices: d["state"] as! Dictionary)

} catch {
////print("exception \(error)")
}
}

debugPrint("ITC: Delta topic subscription success: \(subscribed)")
}
}
< /code>
Приложение использует Awsiotdatamanager для MQTT и FMDB для локального хранилища SQLite.
Shadow Deltas используются для запуска обновлений состояний. Задержка).
Попытки подписки на ведение журнала.
Мониторинг для ввода /вывода SQLITE основной нагрузки (некоторые предупреждения наблюдались).
Ручная подписание после воссоединения.
все еще, проблема сохраняется, когда количество устройств> 50. На сколько теневых тем может быть подписано сразу? Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/796 ... r-50-thing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»