Доступ к файловой системе
Контент и настройки хранятся в виде файлов в энергонезависимой памяти устройства. Может быть использована встроенная память микроконтроллера или внешняя SD карта.
Доступ к файлам можно получить несколькими способами:
-
С помощью интерфейса USB. Устройство можно подключить к ПК как съемный диск.
-
Через LAN сеть. Подключиться к FTP-серверу, запущенному на устройстве. Для этого потребуется знать IP адрес устройства или использовать MDNS имя “deviceName.local” FTP-сервер порт 21 логин: «user» пароль: «pass» Рекомендуемое ПО: Total Commander, WinSCP, FileZilla. По умолчанию включен режим анонимной авторизации, его можно отключить с помощью опции FTP_anon=0.
-
В случаях когда используется карта памяти, возможно физически извлечь SD-карту из устройства и использовать кард-ридер для доступа к файловой системе
Для возврата к настройкам по умолчанию, необходимо удалить файл config.ini. Конфигурационный файл с «заводскими» настройками будет создан автоматически.
В корневом каталоге файловой системы располагаются:
- config.ini — файл конфигурации;
- error.txt — файл будет создан в случае возникновения ошибок.
В именах файлов и параметров поддерживаются только латинские символы.
Пример конфигурации FTP сервера:
[FTP]
FTP_enable = 1
;включаем сервер, его можно отключить для экономии ресурсов
FTP_anon = 0
;выключаем анонимную авторизаци
FTP_login = user
FTP_pass = pass
;устанавливаем логин и пароль для доступа к файламСтруктура конфигурационного файла
Секция [SYSTEM] содержит имя устройства в параметре deviceName. Имя устройства является частью топиков, а также может быть использовано для доступа по сети в домене .local например moduleBox.local
[SYSTEM]
deviceName = moduleBoxВ секции [LAN] находятся настройки параметров подключения к локальной сети:
- LAN_enable - включить/выключить Ethernet
- DHCP - использовать DHCP или статический IP
- ipAdress, netMask, gateWay - статический IP, маска и шлюз (если DHCP выключен)
[LAN]
LAN_enable = 1;0-disable, 1-enable
DHCP = 0;0-disable, 1-enable
ipAdress = 192.168.88.33
netMask = 255.255.255.0
gateWay = 192.168.88.1 В секции [WIFI] находятся настройки параметров подключения к беспроводной сети:
- WIFI_enable - включить/выключить WIFI
- SSID - Имя сети
- pass - пароль к сети
- DHCP - использовать DHCP или статический IP
- ipAdress, netMask, gateWay - статический IP, маска и шлюз (если DHCP выключен)
- channel - канал
[WIFI]
WIFI_enable = 1;0-disable, 1-enable
SSID
DHCP = 1;0-disable, 1-enable
ipAdress = 192.168.88.33
netMask = 255.255.255.0
gateWay = 192.168.88.1 В секции [UDP] параметры для UDP соединения:
- udpServerAdress и udpServerPort - адрес и порт сервера
- udpMyPort - локальный порт модуля для приема данных
[UDP]
udpServerAdress = 192.168.88.1
udpServerPort = 8000
udpMyPort = 7000 В секции [OSC] аналогично параметры для OSC.
[OSC]
oscServerAdress = 192.168.88.1
oscServerPort = 8000
oscMyPort = 7000 В секции [MQTT] содержится адрес брокера mqttBrokerAdress.
[MQTT]
mqttBrokerAdress = 192.168.88.1 Далее идут секции конфигурации слотов [SLOT_N].
- mode - режим работы слота
- options - Дополнительные опции работы слота
- cross_link - Внутренние связи
[SLOT_1]
mode = button_led
options = buttonInverse
cross_link = button_1:@->led_1:@Опции
Дополнительные опции работы слота, указываются в графе “options” советующего модуля. Могут быть флагом, например:
[SLOT_0]
;модуль в режиме кнопка с подсветкой
mode = button_led
;инвертируем кнопку
options = buttonInverse Команды и события
По умолчания все события и команды обрабатываются от всех доступных(настроенных) источников(COM порт, UDP, OSC, MQTT). Могут иметь простой вид «топик:значение», стандартный топик состоит из “deviceName”(настроенного в конфигурационном файле, в секции [SYSTEM]) и имени объекта, пример:
;команда, включить светодиод 0
deviceName/led_0:1
;событие, нажата кнопка 0
deviceName/button_0:1или сложный, если программный модуль имеет подкоманды:
;команда, проиграть трек с индексом 2
deviceName/player_0/play:2
;событие, плеер закончил проигрывание трека 2
deviceName/player_0/play_end:2Все программные модули имеют возможность настроить нестандартный (пользовательский) топик, в графе “options” советующего модуля. Для событий и действий топики внутри одного модуля, могут различаться, это можно уточнить в документации на модуль, однако внутренние связи работаю только со стандартными топиками( Пример:
; установка пользовательских топиков для кнопки и подсветки
options = buttonTopic:zone_7/playKey, ledTopic:zone_7/playIndicatorСистемные команды
Все устройства, вне зависимости от конфигурации выполняют следующие команды:
- /getState Рапортует о текущем состоянии устройства. Объём свободной памяти, адрес в сети и статусы внутренних служб.
- Пример: “*moduleBox/getState”
- /restart Перезапускает устройство, например для применения изменений в настройках.
Внутренние связи(crossLink)
Модули внутри устройства могут взаимодействовать между собой. Связи описывается в формате: “событие:значение→команда:значение”, событие связано с модулем внутри которого описывается текущая связь. Например button_2 - кнопка в слоте 2 и связь должна быть описана в блоке слота номер 2-а. Приёмником команды может быть любой слот, например led_3 - светодиод в слоте 3. Команда может иметь простой дискретный вид(включить/выключить), например led_0:1 - включить светодиод в слоте 0.
;при нажатии кнопки 2 включить светодиод 3
cross_link = button_2:1->led_3:1Так и задействовать подкоманды доступные для данного программного модуля, например:
;при нажатии кнопки 3 установить указатель на трек с индексом 3
cross_link = button_3:1->player_0/shift:3Таким образом, используя cross_link можно настроить сложные взаимосвязи между разными слотами модуля ModuleBox для решения конкретных задач.
При использовании стандартных топиков, имя устройства автоматически удаляется, но при использовании не стандартных топиков он используется целиком. Например:
[SLOT_0]
;модуль в режиме кнопка с подсветкой
mode = button_led
;настраиваем пользовательский топик
options = buttonTopic:zone_7/keyOne
;реагируем на нажатие кнопки включением\выключение светодиода
cross_link = zone_7/keyOne:1->led_0:1, zone_7/keyOne:0->led_0:0Специальные символы
- # - вызов команды с текущим значением, без изменений или реакция на событие с любым значением. Например может быть использован для запуска проигрывателя при снятии наушника, когда выбор проигрываемого трека определяется кнопками.
;команда, проиграть трек на который указывает указатель в текущий момент
deviceName/player_0/play:#
;по завершению любого трека проиграть следующий
cross_link = player_0/endOfTrack:#->player_0/play:+1- @ - символ передает значение триггера в значение действия. Используется для определения внутренних связей. Например может быть использован для передачи состояния кнопки в подсветку.
;если кнопка нажата, включить подсветку и наоборот
cross_link = button_0:@->led_0:@совместно с символом ’@’, могут быть использованы условны операторы равно, больше или меньше, если в значение действия установлен спец символ ’@’, в действие будет передан результат сравнения, иначе действие будет выполнено только если выполнится условие:
- == - равно, например:
;светодиод будет гореть только когда выход аналогового модуля равен 1000
cross_link = analog_0:@==1000->led_1:@- ’>’ - больше, например:
;плеер начнет проигрывание текущего трека если выход аналогового модуля больше 1000
cross_link = analog_0:@>1000->player_0/play:#- ’<’ - меньше, например:
;светодиод будет гореть если выход аналогового модуля меньше 1000
cross_link = analog_0:@<1000->led_1:@