banner
Xcode/Swift. iOS MQTT Client for Objects Detection Program.

Как передавать изображения распознанных на компьютере объектов на устройства Apple, работающих под операционной системой iOS? В статье описана реализация с использованием технологий MQTT 3.1./5.0.
Выглядит это следующим образом. На компъюторе в меню программы распознавания объектов ("Objects Detection") пользователь выбирает группы объектов, подлежащих распознаванию. Например, в эту группу можно включить людей или (и) животных, другие объекты. Всего может быть распознано до 80 типов объектов. Затем следует выбрать протокол MQTT и нажать кнопку "Start". Фотографии обнаруженных программой "Objects Detection" объектов будут отсылаться брокеру MQTT. На iOS устройстве Apple, например, телефоне, пользователь после запуска приложения ("iOS MQTT Client"), может выбрать тип протокола (MQTT 3.1.1/5.0) и нажать кнопку "Connect". Изображения объектов будут пересылаться от брокера MQTT на телефон пользователя и там отображатъся программой. Можно ли говорить о передаче изображений в режиме реального времени? При наличии хорошей линии связи задержка, как правило, не превышает секунды.
В какой операционной системе работает программа "Objects Detection"? Эта программа написана на языке С++ с использованием среды QT Creator. По этому она может быть скомпилирована и собрана по крайней мере в трех основных ОС: Windows, Linux, macOS.
Программа "iOS MQTT Client" написана в Xcode на языке Swift 5.*
Это одинадцатая статья из цикла "Real-Time Object Recognition". Первые десять опубликованы здесь: 1, 2, 3, 4, 5, 6, 7, 8, 9 и 10.
При разработке программ "Objects Detection" и "iOS MQTT Client" использовались:
  • операционная система macOS Big Sur версия 11.6.2;
  • среда разработки Xcode 13.2.1;
  • среда разработки Qt Creator версия 8.0.0;
  • компилятор Apple Clang версия 13.0.0 (clang-1300.0.29.30);
  • библиотека OpenCV версия 4.5.5
  • нейронная сеть из группы YOLO, обученная на наборе данных COCO.
  • СУБД (система управления базами данных) PostgreSQL 14.1
  • администратор баз данных pqAdmin 4 version 6.4
1. Программа "iOS MQTT Client" выполняет следующие функции:
  • устанавливает протокол обмена данными MQTT 3.1.1 или 5.0;
  • подключается к брокеру MQTT через канал связи;
  • принимает от брокера MQTT фотографии обнаруженных объектов и отображает их в UIImageView;
  • отключается от канала связи;
2. Программа "Objects Detection" выполняет следующие функции:
  • принимает поток данных с видеокамеры в режиме реального времени;
  • детектирует объекты с помощью нейронной сети (Deep Neural Networks) yolov4-tiny;
  • принимает настройки пользователя для установки связи между объектами и действиями;
  • озвучивает (произносит) имена обнаруженных объектов и вероятности их распознавания;
  • принимает и устанавливает настройки пользователя для модуля голосовых данных (высоту тона, громкость, скорость речи);
  • сохраняет изображения обнаруженных объектов (images) в виде jpg файллов на SSD диске и ссылки на них в базе данных PostgreSQL;
  • отсылает файлы images по заданному в программе e-mail адресу;
  • отсылает файлы images по протоколу FTP на удаленный сервер;
  • записывает звук с микрофона на SSD диск в виде wav файлов;
  • отображает в Status Bar приложения уровень звукового сигнала, поступающего на вход микрофона;
  • выводит на экран сохраненные на диске images;
  • формирует текущeе графическое положение устройства и сохраняет его в базе данных;
  • подключается к брокеру broker.hivemq.com;
  • подписывается на канал приема команд от программы Client Mqtt;
  • передает программе Client Mqtt через брокера фотографии обнаруженных объектов;
  • выполняет команды, полученные от приложения Client Mqtt;
  • тестирует исправность канала связи Mqtt;
  • открывает карту и показывает место нахождения (обнаружения) объекта(объектов);
  • выполняет SQL выборки по комбинациям параметров: тип объекта, период времени, вероятность распознавания;
  • предоставляет возможность редактирования снимков распознанных объектов;
  • загружает с веб сервера HTML страницу с фотографиями распознанных объектов и сохраняет ее на локальном диске компьютера;
  • сканирует и находит устройства Bluetooth;
  • подключается к выбранному пользователем устройству Bluetooth образуя пару;
  • пересылает на удаленное устройство Bluetooth, например телефон, файлы изображений распознанных программой объектов.
3. Как реализована программа "Client MQTT iOS".
Программа использует библиотеку и часть исходного кода из примера. Протоколы MQTT имеют ряд параметров настройки и требуют реализации ряда обработчиков событий (Event Handlers), необходимых для работы клиента. Например, в программе определяются параметроы:
  • host: broker.hivemq.com;
  • topic: Photo transfer;
  • mqtt: CocoaMQTT;
  • mqtt5: CocoaMQTT5.
Полный перечень параметров настройки и обработчиков событий MQTT смотрите в исходном тексте программы.
Какие дополнительные функции можно реализовать с целью развития программы "iOS MQTT Client" ?
  • Формирование и выдачу команд Start/Stop программе "Objects Detection" при передачи изображений брокеру MQTT. Эта функция реализована в клиенте для macOS (QT/C++) и позволяет не пересылать данные брокеру без надобности.
  • Компоновка (Layout) в проекте выполнена только для iPhone 13 c целей иллюстрации проекта. Для других устройств iOS компоновку надо формировать.
Ниже показан пример работы программ "iOS MQTT Client" и "Objects Detection".
photo_list.png
Полное описание исходного текста программ "iOS MQTT Client", "macOS MQTT Client", "Objects Detection" предоставляется платно в файлах pdf или odt при запросе через e-mail: veresov@jdesign.ru
Проект можно загрузить.
Семен Цветков, Евгений Вересов.
04.10.2022 года.