кодим 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
он работает под виндовсом и состоит из пхп файлов без зависимостей

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

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

это уже лучше

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

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


вобщем что я нашел по поводу opnplc где его можно запускать

есть вот такая штука Industrial Smart Gateway ROCKTECH ISG-503

это корейский иот шлюз

502 модель имеет в себе малину 4б с 4 гигами озу, а 503 более новый и экономичный на арм64 процессоре, но 1 гиг озу и еммц

однако как говорит гемини - все там норм с такой памятью будет

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

вобщем есть такая контора балена, кто-то наверное юзал ее софт для записи образов на флешки

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

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

вот тут целый лист поддерживаемых девайсов, включая малины от 1 до 4

в вот тут этот девайс с фотки Getting started with Rocktech ISG 503 | balena docs


и в чем цимес?

весь цимес в том, что эта балена может ставить себе докер, а в докере можно ставить openplc

docker pull ghcr.io/autonomy-logic/openplc-runtime:latest
docker run -d \
  --name openplc-runtime \
  -p 8443:8443 \
  --cap-add=SYS_NICE \
  --cap-add=SYS_RESOURCE \
  -v openplc-runtime-data:/var/run/runtime \
  ghcr.io/autonomy-logic/openplc-runtime:latest

тут можно посмотреть фишки среды разработки Autonomy | Industrial Automation Platform

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

но если у вас есть простая задача, то опенплц может работать даже на 8 битном мк типа мега328 автономно

или же в него можно зашить спец прошивку, подключить по рс232 или 485 или просто по юарт через усб-юарт переходник (ардуиновские платы так и подключают)

и тогда этот контроллер будет слейвом как расширитель портов ввода-вывода (хотя есть и готовые на али)

но и это еще не все

есть более сложные проекты, которые можно автономно залить на есп32

а еще можно просто купить готовую плату со своей прошивкой и перешить ее под опенплц

плата называется KC868-A8, на али видел баксов за 20, реле китайские, так что долго не протянут

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

реле как раз для того и вставляются, что их надо заменять (ну как в машинах меняются)


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

вот еще ролик, как прилепить индикатор 16х2


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

решил попробовать гемини флеш 3.5

:weary_cat: :smiling_face_with_sunglasses:

упд

решил исправить косяки сейчас

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

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

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

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

зато при помощи яваскрипта можно менять цвета рамок