Работа устройств

Общение устройств websocket

Сервер Maze_server

На компьютере запущен websocket сервер для событий реального времени. К серверу подключаются клиенты.

Клиенты разделяются на несколько типов:

  • Экраны (client)
  • Администраторы (admin)
  • Устройства (device)

На компьютере запущен веб-сервер, который отдает страницы по необходимым эндпоинтам.

Эндпоинт - это доступный адрес страницы или адрес группы страниц.

Список доступных эндпоинтов


Глобальные переменные

State

state - статусы игры

id Описание
-1 лабиринт выключен или калибровка
0 выбор уровня сложности
1 игра
2 время вышло
3 проигрыш
4 победа
5 клавиатура ввода имени лучшего игрока
6 таблица лучших результатов
9 количество кредитов
10 сервис режим
11 сервис режим
12 ожидание (дым рассеивается)
13 видеоролик

io_update

Событие, которое обновляет синхронизирует переменные между клиентами socket.io и сервером.

В него входят:

Событие hstate

Событие созданное специально для ESP, чтобы уменьшить нагрузку

Переменная Значения Описание
state -113 статус игры
is_play 0 , 1 есть ли игра
level 03 уровень

Событие update

Legacy событие для синхронизации параметров. Содержит несколько параметров

Переменная Game

Переменная Значения Описание
state -113 статус игры
setup 0 или 1 есть сервис режим или нет
players 1 или 2 количество игроков
coins 0 количество кредитов
time 0320 время игры
time_left 0320 осталось времени
level -13 уровень
crosses 010 задето лучей
score 01000 количество очков
max_crosses 010 можно задеть лучей
path_step 0 текущий инкремент в массиве пути
mode single, team режим игры
fog_playable 0 или 1 можно играть или нет
gameId 100 или номер игры

Событие state

Основное событие синхронизирующее информацию. В теле события есть несколько переменных:

Переменная maze (либо из Switch, либо эмулирующий)

Переменная Значения Описание
ready 0 или 1 [legacy] готов ли лабиринт
calibrated 0 или 1 скалиброван ли
calibrating 0 или 1 калиброуется ли
power 0 или 1 включен ли
fog_ready 0 или 1 готовность дыма
fog 0 или 1 поддымливается
setup 0 или 1 сервисный режим

Переменная game, тоже самое что и Game.

Переменная Значения Описание
state -113 статус игры
setup 0 или 1 есть сервис режим или нет
players 1 или 2 количество игроков
coins 0 количество кредитов
time 0320 время игры
time_left 0320 осталось времени
level -13 уровень
crosses 010 задето лучей
score 01000 количество очков
max_crosses 010 можно задеть лучей
path_step 0 текущий инкремент в массиве пути
mode single, team режим игры
fog_playable 0 или 1 можно играть или нет
gameId 100 или номер игры

Переменная m - объект оборудования лабиринта

Переменная Значения Описание
board Array список бордов
beams Array список лучей
moving Array мувинги
checkpoints Array список кнопков
things Array список доп устройств (неактуально)

Переменная config содержит config.json

Переменная best содержит сисок лучших результатов


События для групп

Экраны (client)

Это клиенты веб-сокета, которые отображают эндпоинты / или /video. Клиенты попадают в группу screen.

События посылаемые на screen:

Событие Дата Описание
reload Нет обновляет страницу
update Game событие в рамках метода io_update, модуля gameplay. Присылает значение переменной Game.
state maze, game, m, config, best событие в рамках метода io_update, модуля gameplay. Присылает значение переменной State, Game, Maze.json, Config.json, Best (таблицу лучших результатов)

События принимаемые от screen:

Событие Дата Описание
client_init нет регистрация в группу screen

Администраторы (admin)

Это клиенты веб-сокета, которые отображают эндпоинты /admin, /pro, /devices. Клиенты попадают в группу admin

События посылаемые на admin:

Событие Дата Описание
update-devices devices обновляет данные внутри devices
display-error device, type, error показывает ошибки присылаемые с устройств в devices в окно messages
UpdateStatistic Нет обновляет статистику
emulator obj,id,value [legacy] показывает нажатие кнопки в efi.
update Game событие в рамках метода io_update, модуля gameplay. Присылает значение переменной Game.
state maze, game, m, config, best событие в рамках метода io_update, модуля gameplay. Присылает значение переменной State, Game, Maze.json, Config.json, Best (таблицу лучших результатов)

События принимаемые от admin:

Событие Дата Описание
admin_init Нет регистрация в группу admin

Устройства (device)

//TODO


Устройства

Board (Switch)

Устройство подключается к системе и сразу отсылает событие регистрации (register). Устройство регистрируется в системе.

В ответ на регистрацию посылается событие registered с параметрами: id - порядковый номер лабиринта laser - с какого лазера начинается отсчет лазеров. button - с какой кнопки начинается отсчет кнопок.

Объект имеет внутренние параметры:

Имя переменной Тип / пример Описание
id 0 порядковый номер
did string 00:00:00:00:00 mac адрес устройства для идентификации
sid string uGtMs0wYkY2i7apkAAAU socket.io id, айди сессии
ssid string Laser Maze wifi точка доступа
ip string 192.168.50.7 айпи адрес устройства
serial string M402 серийный номер устройства
version string 402a версия устройства
type string board тип устройства, в данном случае всегда board
linked 0 или 1 есть ли статическая линковка
calibration_step 03 этап калибровки
calibrated 0 или 1 скалиброван ли
lasers 0 или количество лазеров
buttons 0 или количество кнопок
Sensetiv 0 или 100 чувствительность
dark Array значения в темноте
light Array значения в светлоте
x Array порог пересечения
success Array удачно ли скалиброван
startLaser 0 или с какого лазера начинается отсчет
startButton 0 или с какой кнопки начинается отсчет
active 0 или 1 активна ли плата
error Array результат калибровки
now Array текущие значения
Sensors Array массив с значениями сенсоров
Calibration Array результат калибровки
Lasers Array массив с значениями лазеров (0|1|2); 0 - выкл; 1 - вкл с возможностью пересечения; 2 - вкл, без отслеживания
Buttons Array массив с значениями кнопок (0|1|2|3); 0 - кнопка выкл; 1 - кнопка светится активна; 2 - кнопка нажата; 3 - кнопка жетоноприемник
ButtonsConnected Array массив с значениями подключенных кнопок (вроде не работает сейчас)
Sensetiv 0 чувствительность

Методы

Доступные методы:

Метод Опции Описание
registered Нет отсылает событие registered с параметрами id, laser, button
calibration Нет отсылает calibration
calibration_finished Array Результаты калибровки обновляет дату значений объекта
setBeam id, v отсылает событие setBeam, с параметрыми id и value,включает/выключает лазер
setLight rgb,times,newRgb отсылает событие setLight с параметрыми rgb, times, newRgb, включает/выключает светодиодку
send command, data отсылает событие device, с параметрами command, to (sid устройства), data, отправляет любую команду по сокету с двумя параметрами command и data.
removeThing Нет удалить устройство из maze.json

Moving7

Параметры объекта:

Имя переменной Тип пример Описание
did string 00:00:00:00:00 mac адрес устройства для идентификации
sid string uGtMs0wYkY2i7apkAAAU socket.io id, айди сессии
ssid string Laser Maze wifi точка доступа
ip string 192.168.50.7 айпи адрес устройства
serial string M402 серийный номер устройства
version string 402a версия устройства
type string moving7 тип устройства, в данном случае всегда moving7
params object left, right, speed, current, isMoving, isLighting параметры now, left - первый угол; right - второй угол; speed - скорость; current - текущий угол; isMoving - ездит ли; isLighting - светит ли;
crossed bool true / false пересечен ли
kt int 0 кт
is_linked int 0 или 1 слинкованность
calibration_step int 04 этап калибровки
active int 0 или 1 активность

Методы объекта:

Метод Описание
calibration отсылает событие calibration
calibration_finished обновляет данные текущего объекта
editDef изменение стандартных параметров. отсылает событие editDef с параметрами def (свойство) и value (параметр).
registered успешная регистрация. посылается событие registered с параметрами id (m1 | mN) и isLinked (0 | 1).
link отправляет всем devices событие линковки (link) с датой.
unlink отправляет всем devices unlink с параметром 0
linked выводит в консоль параметр даты
setBeam отправляет setBeam с id и value
now отправляет moving-status-server
lightBeam отправляет lightBeam с параметрыми id, value
zeroPoint отправляет событие zeroPoint
moveBeam отправляет событие moveBeam, с параметрами id, value
saveBeam отправляет событие saveBeam с параметрами c (L | R), с параметрами value
saveVelocity отправляет saveVelocity с параметром value
send отправляет любое событие. команда command и дата data.
removeThing дезактевировать устройство.

Longsens (Sensor)

Имя переменной Тип пример Описание
did string 00:00:00:00:00 mac адрес устройства для идентификации
sid string uGtMs0wYkY2i7apkAAAU socket.io id, айди сессии
ssid string Laser Maze wifi точка доступа
ip string 192.168.50.7 айпи адрес устройства
serial string M402 серийный номер устройства
version string 402a версия устройства
type string longsens тип устройства, в данном случае всегда longsens
calibration_step     этап калибровки
kt     значения кт;
is_linked     слинкован ли
active     активность устройства
error     результат калибровки: 1 кт; 2; 3; 4 провалы; 5

Так же переменная n:

Значение Описание
A массив значений первого мультиплексора;
B массив значений второго мультиплексора;
C массив значений третьего мультиплексора;
DEF MaxKT, MaxdPS, MinLDiff, Parazitiv, Sensetiv, mMSDiff, Xdiff

Так же переменная sensor:

Значение Тип Содержание Описание
Active Array A, B, C массив из активных пинов с трех мультиплексоров
Enabled Array A, B, C включенные пины с трех мультиплексоров
KT Array A, B, C  
dPS Array A, B, C  
mMS Array A, B, C  
MS Array A, B, C  
X Array A, B, C  

Методы устройства:

Метод Описание
registered регистрация устройства посылает событие registered с параметром id
calibration посылает событие calibration
calibration_finished обновляет информацию текущего объекта (calibrated, sensor, error)
link отправляет событие link с data
unlink отправляет событие unlink
linked выводит в консоль data
now отправляет событие moving-status-server
send отправляет любое событие. команда command и дата data.
removeThing дезактевировать устройство.

Other

Параметры объекта:

Метод Описание
id порядковый номер
did mac адрес устройства для идентификации
sid socket.io id, айди сессии
ssid wifi точка доступа
ip айпи адрес устройства
serial серийный номер устройства
version версия устройства
type  
active активность устройства

Методый устройства:

Метод Описание
registered успешная регистрация посылает id
send отправляет любое событие. команда command и дата data.
removeThing дезактевировать устройство.

Posts

subscribe via RSS