Я разрабатываю приложение для 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
AWS IOT MQTT: устройства случайно показывают как автономный режим при подписке на более чем 50 вещей в приложении iOS ⇐ IOS
Программируем под IOS
1751281048
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. На сколько теневых тем может быть подписано сразу? Спасибо!
Подробнее здесь: [url]https://stackoverflow.com/questions/79684621/aws-iot-mqtt-devices-randomly-show-as-offline-when-subscribing-to-over-50-thing[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия