Движущийся лазер (Motor, Moving)
![]() |
Основное устройство, создающее в паре с LSensor систему “Движущийся лазер” |
|---|---|
| Подключение | 12V, Wi-Fi |
| Поддержка | LSensor с аналогичным поколением прошивки |
Данное устройство может работать только в связке с LSensor, либо в декоративном режиме (требуется спец. прошивка) ##
##
Вид платы

Физические возможности
Подключение: - 12V - WiFi - UART
Подключается в паре с длинным фотоприемником. (Требуется сопряжение) Подключение без длинного фотоприемника возможно только для декоративных целей (требуется прошивка с флагом DECOR).
Функциональные возможности
Связь с сервером осуществляется через WebSocket по протоколу TCP с базовой handshake-инициализацией. Адрес сервера: 192.168.50.2
Список обрабатываемых WebSocket событий:
| Событие | Параметры | Реакция |
|---|---|---|
| connect | - | Регистрация устройства |
| registered | Подтверждение регистрации | |
| calibration | - | Начало калибровки |
| step-calibration | :int1,2 - Выключение лазера3 - Включение лазера на движение0 - Завершение калибровки |
Калибровка по событиям |
| moving-status-server | — | Отправка текущего состояния |
| hstate | state - Номер статуса игры :intis_play - Игра запущена :booleanlevel - Уровень сложности :int |
Смена текущего статуса игры |
| set-ssid | “Laser_maze” - SSID сети :string |
Изменение WiFi сети, к которой подключаться |
| link | :int0 - Выключение лазера и перемещение в центр маршрута движенияequal DeviceID- Сопряжение лазераnot equal DeviceId- Выключение лазера |
Сопряжение с сенсором |
| linked | - | Подтверждение сопряжения |
| unlink | :intequal DeviceId,0 - номер лазера, на котором сбрасываем линковку |
Сброс сопряжения |
| lightBeam | id - Логический номер лазера* :string |
Включение лазера в одной точке |
| moveBeam | id - Логический номер лазера* :stringvalue - Новая позиция лазера :int 1-499 |
Передвижение луча в заданный угол |
| setBeam | id - Логический номер лазера* :stringvalue - Значение :int<ul>1 - Включить с отслеживанием пересечений 2 - Включить</ul> cmdid - порядковый номер команды :intgid - номер игры :intspeed - Скорость (3-30) :int |
Включение лазера |
| confirmed-setBeam | id - Логический номер лазера* :stringvalue - 0cmdid - порядковый номер команды :int |
Выключение лазера |
| scan-room | val - 1cmdid - порядковый номер команды :int time - время сканирования (мс) :int |
Начало сканирования комнаты |
| saveBeam | side - Настраиваемый параметр:<ul><li> L- левый угол :int 1-R</li><li>R- правый угол :int L-499</li><li>V- скорость движения :int 3-30</li></ul> |
Изменение настроек устройства |
| zeroPoint | - | Калибровка по оптопаре |
| calibration-light | - | Калибровка по событиям (светлое состояние) |
| moving-calibrated | - | Завершение калибровки (успех) |
| moving-uncalibrated | - | Завершение калибровки (ошибка) |
| moving-save-position | 0-23 - Номер пластины :int |
Сохранение пластины текущего угла |
| disconnected | - | Потеря связи с сервером |
* - Логический номер лазера считается принадлежащим плате в случаях:
1. "m5" (где вместо 5 логический номер лазера)
2. "m0" - логический номер для всех движущихся лазеров
3. -1 - логический номер для всех устройств
Список отправляемых WebSocket событий:
| Условие | Событие | Параметры |
|---|---|---|
| Подключение SocketIO | register | ip-:string - IP-адрес платыdid-:string- MAC-адресtype-"moving7"- Тип устройстваserial-:int- Серийный номер устройстваversion-:string- Версия прошивкиssid-:string- Название первичной WiFi-сети |
| Запрос текущего состояния | moving-status | calibrating-:int 0-1- Калибруется по ZPGameCalibrated-:int 0-1- Скалиброван ли лазер для игрыleft-:int- Левый уголright-:int- Правый уголspeed-:int 3-30- Скорость движенияcurrent-:int- Текущее положение мотораisMoving-:int 0-1- Флаг движенияisLighting-:int 0-1- Флаг свечения лазера |
| Отправка последовательности пластин (в конце калибровки) |
plate-positions | PlateId-:int[]-Порядок номеров пластинPlateLeft-:int 1-500- Последовательность левых границ пластинPlateRight-:int 1-500- Последовательность правых границ пластин |
| Разрешение начать игру (после вкл. лазера в 1 режиме) |
confirm-setBeam | dst-:string-ID сенсораgid-:int- Номер игрыdata.id-:string-ID сенсораdata.value - 1data.cmdid - :int - Порядковый номер команды setBeam |
| Ошибка/Информационное сообщение | errorMsg | device.type-"moving7" - Тип устройстваdevice.did-:string - MAC-адрес платыdevice.id-:int - Лог. номер устройстваdevice.ip-:string - IP-адрес платыtype-:string - Тип ошибкиerror-:string - Текст ошибки |
Список отправляемых WebSocket p2p событий:
| Условие | Получатель | Событие | Параметры |
|---|---|---|---|
| Смена направления движения (TODO: по запросу сенсора) | linked LSensor | moving-position | id-:int- Номер устройстваserial-:int- Серийный номерposition-:int- Положение мотораangle-:int- Положение мотора в % от левого угла к правому |
| Разрешение начать сканирование комнаты (после вкл. лазера) |
linked LSensor | scan-room | value - 1cmdid - :int - Порядковый номер команды setBeamtime - :int - Время сканирования (мс) |
| Отправка последовательности пластин (в конце калибровки) |
linked LSensor | plate-positions | PlateId-:int[]-Порядок номеров пластинPlateLeft-:int 1-500- Последовательность левых границ пластинPlateRight-:int 1-500- Последовательность правых границ пластин |
Changelog
08.02.2019 epicstrike add transition mode
04.02.2019 epicstrike edit beam control events
10.12.2018 epicstrike add set-beam speed
19.06.2018 epicstrike add links
17.06.2018 epicstrike init
Posts
subscribe via RSS
