Конструктор приложения под Linux (обновлено: 02 Oct 2022, 11:50:11)

Экспериментальная версия программного обеспечения (ПО) под любое устройство на базе Linux. Основана на базе прошивки WiFi-Iot и содержит те же возможности, но не ограничена в ресурсах железа и расширяет возможности проекта.

Ссылка на готовые приложения http://files.wifi-iot.com/linuxDev/ под разные системы. Ссылка на конструктор.

Проверено на Raspberry Pi zero, Raspberry Pi 4, Orange Pi, OpenIPC , BlackSwift, OpenWRT. Возможна работа на х86.

В сборке приложения уже содержится поддержка NTP и календаря как часть ОС. Так же сохранение настроек изначально идет в NVS формате в виде ini файла. 

Обратите внимание, что опции с шифрованием SSL(Telegram и прочие) работают не на всех типах процессоров.

Расширенная математика в Interpreter на данный момент не поддерживается на ARM процессорах.

Опции, доступные в конструкторе могут содержать ошибки. Особенно это касается опций, связанных с железом(например датчики). Просьба сообщать о проблемах на канале Телеграм проекта.



Идеи и теоретические возможности данного ПО

Возможна в будущем поддержка работы со всеми датчиками и другие опции, аналогичные конструктору ESP32 без ограничений ресурсов (в пределах ограничений устройства). Это касается и работы с камерой и работа с аудио.

Работа с базами данных, сохранение в них сразу всех метрик (или по выбору). Возможность вывода графиков.

Работа с дисплеями HDMI (мониторами). Вывод на них всей информации (текстовой и графической).

Дальнейшее развитие программы зависит от интереса пользователей.


Режим PRO

На данный момент ПО работает без ограничений в тестовом режиме до 31.12.2022, но для OTA требуется активация лицензии для привязки ID устройства. ID устройства можно посмотреть на вкладке debug. На данный момент идет только привязка к ID ,без получения ключа.


Автоматическое обновление приложения (OTA)

Поддерживается аналогичный способ обновления как у ESP с автоматической сборкой на сервере (Auto OTA).

Предыдущий файл приложения сохраняется с именем old. Если новое приложение не удалось запустить(битый файл или не тот процессор) , то происходит запуск старого приложения, не рабочее приложение сохраняется с именем bad.


Особенности программы

1. Можно запустить практически на любом устройстве на базе Linux, если для сборки ПО имеется в наличии SDK (sysroot) с компилятором для данного устройства.

2. Достаточно скачать приложение на устройство и запустить.

3. Используются только базовые функции ОС Linux - минимум зависимостей и не требуется установка массы пакетов.  

4. Может возникнуть проблема с работой опций с шифрованием и установкой для них openssl библиотеки на устройстве.

5. Малый размер программы (от 100 кб), в зависимости от количества включенных опций.

6. Свой автономный веб сервер. Не требуется его установка и настройка.

7. Полная интеграция с прошивками данного проекта через опции VGPO, VSENS, D2D.

8. Работа с стандартной периферией GPIO, I2C, SPI, UART через sysfs, если оно есть на устройстве. Есть возможность подключения конвертеров интерфейсов через USB: USB-UART, USB-I2C и т.д.

9. Быстрая работа GPIO через sysfs (виртуальную ФС) не возможна - некоторые GPIO опции работать не будут. Для этого требуется индивидуальный драйвер для каждого процессора. Драйвер доступен на данный момент только на Raspberry и Orange.


Поддерживаемые устройства

Конструктор поддерживает ARM и ARM64 устройства , x86 компьютеры, MIPS устройства. Текущий список поддерживаемых устройств можно посмотреть в конструкторе Linux приложения в верхнем выпадающем меню. В списке может не быть точного названия вашего устройства и можно попробовать разные варианты в пределах архитектуры процессора (X86, ARM или MIPS) . Посмотреть тип процессора можно посмотреть через консольную команду cat /proc/cpuinfo.


Добавление поддержки новых устройств

Если не один из вариантов поддерживаемых устройств не запустился:

Для поддержки OpenWRT устройства требуется найти под него SDK + компилятор по ссылкам актуальных или архивных версий.

Для поддержки других открытых прошивок требуются ссылки на SDK + компилятор для данного устройства.

Для поддержки закрытых прошивок найти подходящий компилятор и SDK затруднительно, но возможно что-то подойдет из открытых прошивок если совпадает модель процессора и версии библиотек системы.


Пример запуска готового приложения через консоль:

Для каждого устройства(или нескольких устройств) требуется скачать свой файл приложения. Для MIPS процессоров имеется несколько вариантов программ и возможно какая-то из них заработает.

Загрузка приложения : wget http://files.wifi-iot.com/linuxDev/имя_файла

Посмотреть список файлов можно по ссылке http://files.wifi-iot.com/linuxDev/

Не забываем дать права запуска на файл: chmod 777 имя_файла

Запустить файл - указать полный путь к приложению, или находясь в папке с файлом набрать ./имя_файла. Для запуска в фоне достаточно указать после имени знак или ключ -demon. Описание настройки автозапуска смотрите ниже.

Зайти на веб программы http://IP_Устройства:1081. Номер порта на данный момент можно поменять в wifiiot.ini файле, параметр httpport, требуется перезагрузка через консоль. Для использования порта ниже 1024 требуется root права или специальные настройки.

sudo setcap 'cap_net_raw,cap_net_admin+eip CAP_NET_BIND_SERVICE=+eip'  'путь_к_приложению' - эта команда позволит использовать веб порт ниже 1024 и разрешит подключиться Bluetooth не от root пользователя. После обновления приложения эту команду требуется выполнить снова.

Автозапуск приложения.

Данный способ применим для большинства Linux систем.

Требуется создать файл wifi-iot.service в папке /etc/systemd/system/ командой sudo nano /etc/systemd/system/wifi-iot.service и вставить содержимое:

[Unit]
Description=Wifi-iot
After=syslog.target network.target
[Service]
ExecStart=/home/pi/wifi-iot // путь к файлу приложения, заменить на свой
WorkingDirectory=/home/pi  // директория с файлом приложения, тут будут находиться файлы конфигурации
User=pi  // имя пользователя, от которого будет происходить запуск.
[Install]
WantedBy=multi-user.target

Команды:

sudo systemctl enable wifi-iot   - Включить автозапуск.

sudo systemctl disable wifi-iot  - Выключить автозапуск.

sudo systemctl start wifi-iot  - Запустить приложение немедленно (аналогично stop, restart).

sudo systemctl enable bluetooth - Включить автозапуск Bluetooth.

Ввод sudo не требуется, если настройка происходит от root пользователя.


Проблемы запуска

При несовпадении версии библиотек (версии SDK) на устройстве программа может не запуститься (файл не найден) и для анализа требуется информация:

Необходимо показать вывод команды ldd ./имя_файла

А так же вывод команд: cat /proc/cpuinfo , cat /etc/*-release , uname -a , cat /proc/version 

Все вопросы в чат Телеграм https://t.me/wifi_iot