Работа устройств
Общение устройств 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 | -1 … 13 |
статус игры |
| is_play | 0 , 1 |
есть ли игра |
| level | 0 … 3 |
уровень |
Событие update
Legacy событие для синхронизации параметров. Содержит несколько параметров
Переменная Game
| Переменная | Значения | Описание |
|---|---|---|
| state | -1 … 13 |
статус игры |
| setup | 0 или 1 |
есть сервис режим или нет |
| players | 1 или 2 |
количество игроков |
| coins | 0 … ∞ |
количество кредитов |
| time | 0 … 320 |
время игры |
| time_left | 0 … 320 |
осталось времени |
| level | -1 … 3 |
уровень |
| crosses | 0 … 10 |
задето лучей |
| score | 0 … 1000 |
количество очков |
| max_crosses | 0 … 10 |
можно задеть лучей |
| 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 | -1 … 13 |
статус игры |
| setup | 0 или 1 |
есть сервис режим или нет |
| players | 1 или 2 |
количество игроков |
| coins | 0 … ∞ |
количество кредитов |
| time | 0 … 320 |
время игры |
| time_left | 0 … 320 |
осталось времени |
| level | -1 … 3 |
уровень |
| crosses | 0 … 10 |
задето лучей |
| score | 0 … 1000 |
количество очков |
| max_crosses | 0 … 10 |
можно задеть лучей |
| 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 | 0 … 3 |
этап калибровки |
| 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 | 0 … 4 |
этап калибровки |
| 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