кодим hmi panel при помощи google gemini

вчера я накинул в одной теме скада про хми панель

SCADA для самохостинга - #4 от пользователя kalobyte

что такое хми панель? обычно в промышленности для этого продают специальный монитор с сенсорным экраном и там нарисована некая структурная схема какого-то станка или системы отопления или водоснабжения, где есть всякие датчики и приводы и надо постоянно следить одним глазом за цифрами или даже эти цифры можно подкрутить

красиво, удобно, но дорого

есть конечно софт бесплатный, чтобы из блоков сделать такую панель, но я его не юзал и лень разбираться, поэтому я подумал, почему бы быстро не напрячь нейросеть и посмотреть, насколько она хорошо может рисовать хтмл + свг, а такие схемы рисуются в векторном формате в каком нибудь редакторе типа inkscape, который я малость покрутил уже, но еще не осилил

но сегодня я хотел бы еще сделать и серверную часть с вебсокетами, чтобы можно было получать показания в реальном времени и так же делать установки значений всяких параметров

сервер будем делать на пхп, как ни странно - оно может работать сервером и даже слушать сокеты
пхп - это то, что я боле менее осилил
можно конечно было бы взять шарп, но я пока еще не прикрутил гемини к визуальной студии и даже к вс коду

вот результат работы гемини

создай html + svg страницу проекта типа hmi panel как демо образец
проект состоит из

  • газовый котел
  • 2 контура отопления
  • 2 батареи отопления
  • 2 циркуляционных насоса
  • 1 бойлер с горячей водой с нагревом от котла
  • датчики температуры батарей
  • датчик температуры воды в бойлере
  • датчик температуры за окном
  • датчик температуры в каждоый комнате с батареями
  • датчик скорости воды в контуре

обознать синим контуры холодной воды, а красным - контуры горячей воды
добавь показания на всех датчиках, это просто показания, они не должны меняться

тот же запрос закинул в чатик гпт, который в последнее время стал какой-то унылый в плане картинок

это все, что удалось выжать с чатика, прежде чем закончились токены
а они что-то быстро стали заканчиваться, раньше надолго хватало или может потому что акаунт был свежий?

вобщем визуализацию чатик плохо понимает, о чем я писал в другой теме

чтобы кодить вебсокеты - надо понимать, что это такое и как работает
для этого я решил тупо посмотреть ролики и примеры, чтобы в случае чего самому править код и вообще понимать, что генерит ии

вот такую портянку я себе нарыл для ознакомления
а на сегодня все :man_shrugging: :disguised_face:

поспав, мне пришла идея о генерации фейковых данных для моей панели и логики
делать логику в такой штуке не стоит, ибо доверять что-то коду, который крутится на обычном ящике это нехорошо, поэтому нужен плк или хотя бы программируемое реле типа сименс симатик, только у него нет аппаратного рс485, поэтому модбас только по сети, а значит надо к пхп прикрутить модбас тцп и я давно уже это изучал тоже и вроде библиотека была

так что кто делает какую-то автоматизацию, то надо делать ее на специальных контроллерах, хотя логику наверное в скаде проще делать

кстати я понял, откуда гемини утащил дизайн моей панели

цвета, формы и все такое, тут уже готовый набор иконок
с другой стороны все это можно нарисовать в draw.io , чем я охотно пользовался в прошлом году уже, только для других задач

вот как построена эта скада

тут тоже есть некий бекенд на ноде, что я изначально хотел, но пока что я не настолько крут в яваскрипте и тем более в ноде, чтобы что-то на ней делать, поэтому взял пхп

с другой стороны - если вы таки решили делать логику на х86 железе или одноплатниках, то есть такая штука опенсцорсный плк Autonomy | Industrial Automation Platform
он еще работает на есп8266

там есть редактор визуальный, так что можно код и не писать, хотя есть возможность

я уже работал с другим софтом для генерации кода для ардуины

так что я думаю упростить задачу и использовать в качестве источника данных плк и написать для него прогу и она будет поставлять данные в мою панель, а я буду только собирать и показывать, ну и еще отправлять в контроллер уставки

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

Спойлер

ну и на работе появилась большая задача запилить систему контроля доступа в офисе где-то на 46 дверей, так что я изучаю материал
ubiquiti имеет раздел access как раз для кодовых замков, но пока я толком не разобрался в софте, а софт уних работает только на роутерах, хотя есть софтовый контроллер и я вчера потратил время, чтобы развернуть его, но там можно только запустить приложение для управления сетью, все остальные приложения не работают, нужен аппаратный роутер, что меня не очень устраивает

есть еще hikvision, тоже кандидат, но он не так заточен на сеть и пое как убик, зато работает сам по себе и управляется из браузера
может быть запилю тему, хотя это и не такой уж и самохостинг, но может кто себе домой поставить хочет кодовый замок

я еще попробую выбить денег на покупку всяких электрозамков и защелок для тестов, а то там тоже много нюансов

Это уже не CDADA, а СКУД, я смотрел в сторону ubiquity когда надо было обновлять видеонаблюдение в офисе, в итоге посчитал конфиг и прослезился - если брать китай, то дешевле в 20-30 раз выходит, что-то более или менее брендовое в 5-10 раз

Но я так понял, что убики работают по сети т.к. там все круто очень, распозначание лиц, уведомления и т.д. кодовые замки часто работают по wiegand протоколу и там уже своя кухня

Ну как я писал ранее, у меня пока что не то, чтобы полноценная SCADA, автоматизации тут пока рассматриваю как чисто поиграться. Для автоматизаций есть HA + для надежности у меня какие-то автоматизации работаю “на месте”

ну да, просто подумал, если кто-то офисные системы дома ставит, то может будет полезное про системы доступа написать

ну да, видео там недешевое, я в старом офисе делал на хике, а брать дешевый китай нет смысла
в прошлом году я делал видео на дешевом китае и нехорошо ругался, потому что заказчик решил, что он самый умный

ага, но распознавание есть и у хиков еще с ковидных времен, даже сверху еще нашлепка тепловизора была для измерения температуры и определения намордника, иначе дверь не откроет

виганд это старый хлам был еще 10 лет назад, когда я делал первую систему в одном офисе, все думал, почему нет рс485 считывателей

и вот таки они появились, но почему-то дороже, хотя там даже проводов меньше надо
по рс485 работает протокол osdp, по нему даже прошивка в считывателях обновляется, есть мониторинг работы, шифрование и все очень круто, вплоть до того, что это не только для считывателя он

но у убика как раз таки все завязано на сеть и осдп считается так же устаревшим хламом
уведомления всякие тоже есть, вплоть до того, что ты видиш фотку с камеры на потолке того, кто неправильно набрал код или попробовал зайти в дверь по карте, которая эту дверь не должна открывать :laughing:
такую фишку я делал аппаратно на хике

потратил время, просматривая старые ролики, начал смотреть про библиотеку workerman и подумал, а не спросить ли гемини, что нынче в 2026 актуально и был в шоке :weary_cat:

В 2026 году экосистема PHP для работы с WebSocket стала более зрелой и производительной благодаря полноценной поддержке Fibers (файберов) и появлению нативных решений от крупных фреймворков.

Выбор библиотеки сейчас сильно зависит от вашего стека и задач. Вот актуальный топ:

1. Laravel Reverb (Лучший выбор для Laravel)

Если вы работаете на Laravel, то Reverb — это стандарт де-факто. Он был представлен в 2024 году и к 2026 году стал невероятно стабильным.

  • Почему сейчас: В марте 2026 года вышла Laravel 13, где Reverb получил драйвер базы данных. Теперь для небольших и средних проектов не обязательно поднимать Redis для масштабирования — всё работает “из коробки” на вашей текущей БД.

  • Плюсы: Написан на чистом PHP, невероятная скорость (тысячи соединений на одном сервере), бесшовная интеграция с Laravel Echo.

2. Workerman (Золотая середина)

Если вам нужен автономный WebSocket-сервер на чистом PHP без привязки к фреймворку, Workerman остается лидером по соотношению “простота/производительность”.

  • Почему сейчас: Он очень легкий и не требует установки расширений C (в отличие от Swoole). В 2026 году он активно использует возможности PHP 8.4/8.5 для оптимизации потребления памяти.

  • Плюсы: Высокая стабильность, поддержка миллионов соединений, очень низкий порог входа.

3. Swoole / OpenSwoole (Максимальная производительность)

Это расширение на C, которое превращает PHP в подобие Node.js или Go с корутинами.

  • Почему сейчас: Это “тяжелая артиллерия” для Enterprise-решений. Если вам нужно обрабатывать десятки тысяч сообщений в секунду с минимальными задержками, ничего быстрее Swoole в мире PHP до сих пор нет.

  • Плюсы: Нативная поддержка асинхронности, встроенный HTTP/WebSocket сервер, работа с I/O на уровне ядра.

4. FrankenPHP (Современный деплой)

Это не просто библиотека, а сервер приложений, построенный на базе Caddy.

  • Почему сейчас: В 2026 году FrankenPHP стал стандартом для Docker-контейнеров. Он поддерживает full-duplex коммуникации и позволяет писать WebSocket-логику, которая работает поверх современного протокола HTTP/3.

  • Плюсы: Автоматический HTTPS (через Caddy), поддержка Mercure “из коробки”, очень простая конфигурация.

5. Amphp (v3+)

Для любителей чистого асинхронного кода на файберах (Fibers).

  • Почему сейчас: После выхода PHP 8.5 библиотека Amphp стала еще удобнее благодаря оператору Pipe (|>), что делает цепочки обработки сообщений WebSocket очень читаемыми.

  • Плюсы: Никаких колбэков, код выглядит как обычный синхронный PHP, отличная архитектура.


Сводная таблица для выбора:

Ваша ситуация Рекомендуемое решение
Проект на Laravel Laravel Reverb
Нужна максимальная скорость Swoole
Нужен простой чат / микросервис Workerman
Хотите современный Docker-стек FrankenPHP
Пишете сложную асинхронную логику Amphp

Совет: Забудьте про Ratchet. В 2026 году он считается устаревшим (legacy), так как базируется на старой модели ReactPHP и не использует современные преимущества файберов и JIT-компиляции PHP 8.x так эффективно, как конкуренты выше.

я как раз смотрел про этот ратчет, потратил время
про файберы не знал даже, особо не слежу за пхп

вот так вот внезапная идея теперь требует погружения в новые слои инфы

вариант 4 мне видится боле менее пригодным

Build standalone, self-executable and dependencies-free binaries for your PHP web applications, and command-line tools.
FrankenPHP has the ability to embed the source code and assets of PHP applications in a static, self-contained binary.

Thanks to this feature, PHP applications can be distributed as standalone binaries that include the application itself, the PHP interpreter, and Caddy, a production-level web server.

однако я пока остановлюсь на GitHub - walkor/workerman: An asynchronous event driven PHP socket framework. Supports HTTP, Websocket, SSL and other custom protocols. · GitHub
он работает под виндовсом и состоит из пхп файлов без зависимостей