Добавить в корзинуПозвонить
Найти в Дзене
Stepan.Burmistrov

🔥 Мамкин хакер: как вытащить статус лазерного резака Ruida по сети

🔥 Мамкин хакер: как вытащить статус лазерного резака Ruida по сети Лень - двигатель прогресса: узнать, режет ли сейчас станок, или уже освободился и пора идти менять фанеру. А в штатном ПО Ruida (RDWorks) это никак отдельно не отдаётся — хочешь статус, открывай программу, подключайся, кликай… Неудобно. Пришлось разбираться, как Ruida общается по сети, и сделать скрипт, который выдаёт: IDLE — станок свободен BUSY — идёт резка Причём делает это без RDWorks, прямо через UDP. 🧠 Как это работает Сниффим трафик между RDWorks и контроллером (Wireshark, фильтр — udp.port == 40200 || udp.port == 50200), смотрим десятки запросов — и обнаруживаем, что: 1. RDWorks перед началом любой отправки файла шлёт короткий статус-запрос: 02 73 D4 89 8D 89 2. Контроллер отвечает пачкой технических пакетов, среди которых есть один особенный — ровно 9 байт, начинающийся с: D4 09 3. И вот последние два байта этого пакета стабильно показывают состояние устройства: | Состояние | Hex | | -------

🔥 Мамкин хакер: как вытащить статус лазерного резака Ruida по сети

Лень - двигатель прогресса: узнать, режет ли сейчас станок, или уже освободился и пора идти менять фанеру.

А в штатном ПО Ruida (RDWorks) это никак отдельно не отдаётся — хочешь статус, открывай программу, подключайся, кликай…

Неудобно.

Пришлось разбираться, как Ruida общается по сети, и сделать скрипт, который выдаёт:

IDLE — станок свободен

BUSY — идёт резка

Причём делает это без RDWorks, прямо через UDP.

🧠 Как это работает

Сниффим трафик между RDWorks и контроллером (Wireshark, фильтр — udp.port == 40200 || udp.port == 50200), смотрим десятки запросов — и обнаруживаем, что:

1. RDWorks перед началом любой отправки файла шлёт короткий статус-запрос:

02 73 D4 89 8D 89

2. Контроллер отвечает пачкой технических пакетов, среди которых есть один особенный — ровно 9 байт, начинающийся с:

D4 09

3. И вот последние два байта этого пакета стабильно показывают состояние устройства:

| Состояние | Hex |

| --------- | ------- |

| IDLE | 85 89 |

| BUSY | 81 09 |

Всё. Протокол несложный, просто был не документирован.

Пришлось немного задокументировать 😊

➡️ В репозитории — там всё подробно расписано.

📲 А статус в Телеграм (или другой мессенджер по вкусу😜😂)?

Да без проблем, инструкций по созданию ботов полно!

📦 Репозиторий

https://github.com/stepanburmistrov/ruida_status

Внутри:

* ✔️ README с описанием протокола

* ✔️ Готовый работающий скрипт-сканер