1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/pyzxjfree-pyfree-IotEdge

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 28 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 13.03.2025 03:52 f38cef7

pyfree-IotEdge

Описание

Система IoT Edge, разработанная на C++, представляет собой комплексное решение для уровня доступа в интернет вещей, обеспечивающее полный набор функций для сбора данных с устройств. Поддерживает многоплатформенную установку и состоит из двух основных подсистем — системы сбора данных и системы управления.

Система сбора данных предназначена для питания устройств, мониторинга состояния и сбора информации о ресурсах IT. Она поддерживает различные методы сбора данных, такие как RS-232, Wi-Fi, Bluetooth, USB и другие. Также она обеспечивает очистку, анализ, передачу и объединение данных.

Подсистема управления позволяет автоматически управлять состоянием устройств через регулярные задачи, планирование времени, циклическое выполнение, условные задачи и управление запуском и остановкой. Это достигается с помощью визуализированной панели управления.

Другие устройства связи, такие как LoRa, ZigBee, передатчики данных, временно используют промежуточное оборудование для подключения к промышленному оборудованию через сетевые соединения или последовательные порты.Цель проекта состоит в создании решения для управления уровнем доступа в Интернете вещей, которое будет адаптировано для большинства отраслей. Проект включает разработку, инжиниринг, продуктологию и многое другое. Он также собирает требования различных отраслей и внедряет их в проект в соответствии с планом развития. Если вы столкнулись с проблемами или хотите предложить новые идеи во время использования этого проекта, пожалуйста, используйте раздел "Обратная связь" в конце документа. Благодарим вас за это! ## Архитектура программного обеспечения

Описание архитектуры программного обеспечения
На данный момент система состоит из двух основных подсистем — системы сбора данных и системы управления, а также нескольких вспомогательных модулей для тестирования, продукт-дизайна и инженерии.

Программа сбора данных реализует сбор, консолидацию и нормализацию данных, а также возможность объединять данные между собой для более широкой консолидации данных.

Программа управления реализует очистку, анализ, отправку данных в облако и осуществляет локальное управление бизнес-процессами и логическими расчетами.

Программа записи данных реализует запись данных, временно поддерживающая базу данных SQLite.

Программа отправки уведомлений реализует отправку уведомлений через электронную почту, SMS и третьи платформы.

Для получения подробностей о программе сбора данных обратитесь к документации в директории gather-master, для программы управления — в директории monitor-master, для программы записи данных — в директории record-master, а для программы отправки уведомлений — в директории warningpush-master.### Примеры сценариев

  • Примеры решений
    1. Установка всех программ на одном промышленном компьютере, который обычно имеет интерфейсы RS-232/485/422, RJ45, Bluetooth, USB и другие. Эти интерфейсы используются для создания каналов связи с устройствами и сбора данных.
    2. Сообщество программного обеспечения может быть сосредоточено в одной промышленной контроллерской машине с использованием средств связи для сбора данных, таких как последовательные серверы, LoRa-ретрансляторы, оптические конечные устройства, контроллеры питания, удалённые модули IO и т.д.Пример среднего решения
  1. Программное обеспечение может быть сосредоточено на различных промышленных контроллерских машинах, используя сетевые технологии для создания сложных систем, обеспечивающих цепочку сбора данных и взаимодействие между различными сценариями. Например, использование технологий сети через коммутаторы колец для создания уровня связи; при ограниченности расстояния можно использовать ретрансляторы для расширения.

Пример сложного решения

  • Используемые сценарии
    1. Агропромышленность
      (1) Первый уровень оборудования, такие как датчики температуры и влажности, качества воды, насосы, автоматизация кормления, вентиляторы, кондиционеры, электронные водяные клапаны, сетевые камеры и т.д.
      (2) Второй уровень оборудования, такой как модули IO, последовательные серверы, контроллеры питания, промышленные контроллерские машины, маршрутизаторы и т.д.
      (3) Общее решение для управления агропромышленностью, которое включает рыбное хозяйство, животноводство и птицеводство. Управление осуществляется на основе данных от датчиков, метеорологии и времени, что позволяет автоматизировать процессы управления водоснабжением, очисткой и кормлением. Пример решения для агропромышленности

    2. Мультимедийные проекторы для залов заседаний, витрин, выставочных залов, кинотеатров и т.д. (1) Первый уровень оборудования, такой как проекторы, проигрыватели, освещение, аудиосистемы, камеры и т.д. (2) Второй уровень оборудования, такой как промышленные контроллерские машины, маршрутизаторы 4G/Wi-Fi, небольшие последовательные серверы, контроллеры питания и т.д. (3) Одиночное решение для управления проекторами в залах заседаний, которое позволяет автоматически управлять проекторами на основе времени или команд пользователя, например, автоматическое отключение проектора и связанных источников питания по истечении времени работы. Пример решения для мультимедиа

    3. Дополнительно...

Компиляция

  1. Текущая система зависит от библиотек alc-master, libctb, lua, muparser, sqlite, mosquitto, iot_aliyun и других сторонних библиотек. В этом каталоге представлены некоторые скомпилированные библиотеки для различных платформ. Для большего количества платформ рекомендуется компилировать из исходного кода. Подробные требования к компиляции указаны в руководствах по сборке программы для сбора данных и программы для управления.

  2. Компиляция программы для сбора данных указана в каталоге gather-master в документе Readme.md.

  3. Компиляция программы для управления указана в каталоге monitor-master в документе Readme.md.

  4. Компиляция программы для записи указана в каталоге record-master в документе Readme.md.

  5. Компиляция программы для управления сервисами указана в каталоге sysmgr-master в документе Readme.md.

  6. ...Помощь тестового программного обеспечения находится в каталоге software_test

Структура директорий

  • acl-master
    acl_master — это кросс-платформенная библиотека C/C++, предоставляющая сетевые протоколы связи и серверный фреймворк, а также множество других полезных библиотек и примеров. Подробнее см. документацию.
    Ссылка на проект: https://gitee.com/acl-dev/acl или https://github.com/acl-dev/acl
    Блог по теме: https://www.it-eye.com/blog/user/zsxxsz* common
    Набор общих кодов, используемых в различных проектах, включает набор универсальных функций и классов.

  • demo-project
    Примеры проектов, демонстрирующих комплексное решение задач. Примеры могут взаимодействовать друг с другом; подробности см. в соответствующей документации и конфигурационных файлах.

  • gather-master
    Каталог сборочных проектов.

  • iot_aliyun
    Уже скомпилированный интерфейс для платформы IoT Alibaba Cloud, основанный на исходниках iotkit-embedded-2.3.0.zip.

  • libctb
    Libctb — это библиотека C++ для работы с последовательными портами (serial/uart/gpib). Скачать можно здесь: https://www.iftools.com/download/index.en.php, поиск по слову "libctb", либо использовать версию из папки third_org/libctb.zip данного проекта.

  • lua
    Уже скомпилированный интерфейс для вызова Lua-скриптов из C++. Исходники доступны здесь: http://www.lua.org/ftp/, либо использовать версию из папки third_org/lua.zip данного проекта. Также можно использовать уже скомпилированный вариант (Lua 5.3.0).

  • monitor-master
    Каталог проектов управления.

  • mosquitto
    Уже скомпилированный клиент MQTT, исходники доступны здесь: http://mosquitto.org/download/. В папке third_org находится архив исходников mosquitto-1.5.7.tar.gz.

  • muparser
    Muparser — это библиотека для вычисления математических выражений, позволяющая быстро и просто анализировать и выполнять вычисления. В данном проекте используется для вычисления значений точек данных. Исходники организованы как cmake-проект, компиляция осуществляется через cmake.* record-master
    Каталог проектов записи данных, получаемых от систем управления.

  • res
    Ресурсы для дизайна и разработки проектов.

  • software_test
    Программы для создания тестовых сред, включая проигрыватель и локальный мониторинговый терминал.

  • sqlite
    Sqlite — это C-интерфейс для базы данных SQLite. Исходники организованы как cmake-проект, компиляция осуществляется через cmake.

  • svc_common
    Общие модули для запуска приложений в фоновом режиме.

  • swLicense
    Программа для генерации лицензий на основе информации о жестком диске или сетевой карте.

  • sysmgr-master
    Управление сервисами, мониторинг состояния сборочных и распределительных служб, а также управление загрузкой и выгрузкой конфигурационных файлов

    • third_org
      Исходники библиотек третьих сторон
    • uuid
      Уже скомпилированный libuuid, который主要用于生成UUID, необходим в Linux. Ссылка на скачивание: https://sourceforge.net/projects/libuuid/
      или использование предоставленной в этом проекте версии third_org/libuuid-1.0.3.tar.gz
    • warningpush-master
      Программа отправки уведомлений, получает данные о тревогах от распределительного программного обеспечения и отправляет уведомления ответственным лицам или публикует на платформы третьих сторон.

ОбновленияВерсия v1.01

  1. Версия сборочного ПО для Linux: чтение данных с последовательного порта и сетевого интерфейса, передача данных через сетевой и последовательный интерфейсы (тестирование требуется), цепочка сетевых соединений.
  2. Распределительное ПО для Linux: запись данных, анализ, генерация тревог, распределение задач, интерфейсы для сборочного ПО, клиентского ПО, платформы Alibaba Cloud IoT и MQTT.
  3. Вспомогательное тестовое ПО: проигрыватель для мониторинга сети, локальный визуализированный клиент.Версия v1.02
  4. Поддержка Windows, текущая версия поддерживает компиляцию с использованием CMake + VS2015, подробное описание компиляции можно найти в документации сборочного и распределительного ПО.
  5. Поддержка установки службы на Windows, позволяет устанавливать, запускать, останавливать и удалять сборочное и распределительное ПО как службы в системе Windows.

Версия v1.03

  1. Тестирование установки сборочного и распределительного ПО для Linux с помощью Docker, использует образ CentOS:7.
  2. Изменение установки сборочного и распределительного ПО для Windows/Linux для подготовки вспомогательного ПО для управления системой.Версия v1.04
  3. Разработка и тестирование на Linux завершены для программы управления сервисами (обновление через OTA на платформе Alibaba Cloud IoT требует тестирования).
  4. Предоставлено удаленное управление сборочным и распределительным ПО и другими служебными программами, временно поддерживаются локальное визуализированное управление через Web и управление через платформу Alibaba Cloud IoT.
  5. Компиляция и тестирование программы управления сервисами для Windows завершены (обновление через OTA на платформе Alibaba Cloud IoT требует тестирования).
  6. Поддержка записи информации о версии Git в описании версий программы и вывода логов.
  7. Основной код унифицирован с использованием табуляции (4 пробела), UTF-8 кодировки и CRLF формата строки.
  8. Тестирование совместимости программы управления сервисами с платформой Alibaba Cloud IoT для Windows (собирающего и распределительного ПО).Версия v1.05
  9. Оптимизация кода, тестирование совместимости и нагрузочные тесты для подготовки к выпуску.
  10. Нормализация портов сборки и пересылки в классе gathermgr. Нижележащие сети собирают данные с помощью класса socket_gather, который является наследником gchannel. Удалены файлы socket_gather.h и socket_gather.cpp; их содержимое объединено в файл socket_gather.h.
  11. Удалены исходники servicechain.h и servicechain.cpp. Функциональность создания номеров задач перемещена в файл pfunc_time.h/cpp.
  12. Мониторинговое программное обеспечение решает проблему переутолщения класса Business_def, создавая новые классы HorizontalData для реализации горизонтальной обработки данных и AppConfData для управления параметрами выполнения программы. Класс Business_def наследует два новых класса, а также корректируются некоторые бизнес-функции.5. Корректировка вывода печати
  13. Инструмент просмотра исторических данных

v1.06 версия

  1. Корректировка передающего интерфейса сборочного программного обеспечения, перемещение неповторимых функций в подклассы gather-master/channel-conf/tchannel.h(cpp).
  2. Добавление последовательной передачи и цепочки, подробнее см. gather-master/serial-gather/serialtchannel.h(cpp), пример парсера сценария см. demo-project/bgather/modbus_tran.lua. В текущей версии последовательная передача моделируется как рабочий станок, который реализует общую проверку, единичную проверку и управление одним пунктом, используя метод запрос-ответ.
  3. Корректировка режима связи последовательной передачи, добавление ComModel в конфигурацию serialport в gather.xml для указания режима связи [1, ответ по умолчанию; 2, двусторонняя отправка, полная ситуация; 3, двусторонняя отправка, ситуация одного пункта]. Типы 2/3 основаны на использовании последовательного соединения для создания каналов связи, используя двустороннюю связь TCP (напрямую записывается вверх, считается через интерфейсы проверки, записывается вниз при изменении состояния или регулярной записи, считается через интерфейсы проверки). Это можно быстро протестировать с помощью демонстрационных инструментов sscom.exe и mbslave.exe (включая метод запрос-ответ), используя конфигурацию gather.xml и modbus_tran.lua в каталоге demo-project/bgather.v1.07 версия
  4. Выделение функции записи из распределительного программного обеспечения, создание программы записи (сервиса), подготовка к урезанию распределительного программного обеспечения и его переносу на другие платформы.
  5. Распределительное программное обеспечение и программа записи используют UDP-соединение, распределительное программное обеспечение отправляет -> программа записи принимает.
  6. Добавление функции удаления старых журналов для программ сбора, распределения, записи и управления, программа записи добавляет функцию удаления старых исторических данных, всё это реализовано из common/spaceMgr.h/cpp.
  7. Добавление примера программы записи в каталог demo-project.v1.08 версия
  8. Выделение функции публикации сообщений тревоги из распределительного программного обеспечения, создание сервиса публикации тревог, подготовка к урезанию распределительного программного обеспечения и его переносу на другие платформы.
  9. Распределительное программное обеспечение и сервис публикации тревог используют UDP-соединение; распределительное программное обеспечение отправляет -> сервис записи принимает; расширено на основе содержимого тревоги, используется формат JSON для связи.
  10. Добавление примера сервиса публикации тревог в каталог demo-project/warningpush.
  11. Возникновение многих неопределенностей при компиляции с помощью cmake+vs201* (см. Приложение 01).
  12. Добавление многоточечной проверки в режим запрос-ответ для порта переадресации последовательного соединения (ComModel="1"). При многоточечной проверке значение val больше не представляет собой значение точки, а количество проверяемых точек. Для примера можно обратиться к конфигурационным файлам gather.xml и modbus_tran.lua в демонстрационном проекте demo-project/bgather. Для тестирования можно использовать инструменты demo-project/tool/modbus-Slave.exe и sscom5.exe.#### Ближайшие планы
  13. Переработка вывода логов и анализ логов
  14. Поддержка сборщиков данных через Bluetooth, USB и другие интерфейсы
  15. Обнаружение APR, сбор информации о ресурсах системы (процессор, память, жесткий диск, ключевые процессы)
  16. Внедрение удалённого конфигурирования
  17. Поддержка облачных сервисов для координат и текущих праздников

Отзывы и вопросы

  1. Оставьте свои отзывы и вопросы в теме данного проекта
  2. py8105@163.com
  3. Обычно ответы предоставляются вечером или в выходные

Приложения

  1. После скачивания программы и создания проекта с помощью cmake для Visual Studio 201*, возникают ошибки незадекларированных символов при компиляции. Это связано с тем, что исходные файлы имеют формат Windows (CRLF)-UTF, тогда как они были преобразованы в формат Unix (LF)-UTF, что приводит к невозможности загрузки заголовочных файлов. Причина изменения формата файла после загрузки из репозитория пока не установлена. В настоящее время проблема решается с помощью текстового редактора, который восстанавливает исходный формат Windows (CRLF)-UTF.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/pyzxjfree-pyfree-IotEdge.git
git@api.gitlife.ru:oschina-mirror/pyzxjfree-pyfree-IotEdge.git
oschina-mirror
pyzxjfree-pyfree-IotEdge
pyzxjfree-pyfree-IotEdge
master