Съдържание
История одного прикольного проекта. Многие знают, что я постоянно вписываюсь во всякие конкурсы, соревнования, хакатоны и прочий движ. Так вот где-то с полгода назад было объявление от фонда поддержки инновационных проектов при участии Ростеха: присылайте, дескать, нам идеи для улучшения оборудования, а мы вам денег дадим. Список оборудования прилагался, и там было всякое: например, огнетушитель, насосная станция, рециркулятор и так далее. Вот как можно улучшить огнетушитель? Особенно, если вы не профессиональный специалист по борьбе с огнём. Скорее всего, с точки зрения его способности тушить пожар вы ничего крутого не придумаете. Я бы не придумал. Но улучшить огнетушитель, тем не менее можно: достаточно решить какую-то из проблем, которые возникают при работе с ним. На поверхности проблема UX: если у вас нет практического опыта, то с первого раза вы можете запутаться и не суметь его правильно открыть. Так что я предложил на каждый огнетушитель клеить QR, который запускает на телефоне вебсайт с трёхмерной интерактивной моделью, на которой можно прямо пальцами по экрану вытянуть чеку выдавить стекло и нажать на рукоятку. Конечно, когда уже горит, то возиться в приложении как-то странно, но вот во всяких очередях и залах ожидания люди вполне могли бы сканировать от скуки огнетушители и играться с их запуском, попутно обучаясь. Увы, эту идею совсем не оценили. А жаль, мне и сейчас она кажется неплохой. Ещё в списке были газоанализаторы от одного российского предприятия. «Ага!» — подумал я, и описал в заявке историю, как мы с другом проходили практику на заводе высоковольтных выключателей Siemens. Выключатели наполнены элегазом, в котором размыкается дуга. Он бесцветный и без запаха, но человек в присутствии этого газа быстро теряет сознание. И я подумал: что если газоанализатор помимо уведомления непосредственного владельца будет ещё и передавать телеметрию на какой-то центральный сервер? Фонд эту идею тоже не оценил. Но через пару недель мне позвонили с завода по производству газоанализаторов и пригласили в гости. Большой комплекс в Москве, на базе советских промышленных помещений, но часть зданий уже обновлены. Было довольно интересно: всё показали, рассказали, дали покрутить платы, посмотреть на датчики. Ну и, собственно, заказали мне разработку под ключ, оплачиваемую, разумеется. Совместно позже составили ТЗ и заключили договор. Дальше несколько месяцев я в перерывах между основной работой кодил на C# + Vue (TypeScript) фулстек-приложение. В качестве БД по условиям нужно было что-то локальное и с шифрованием, так что я взял SQLCipher. Библиотеки для UI, графиков. Отдельный модуль для чтения данных через ModbusRTU. Конфигурации для регистров, отдельная программа для создания сборок разным заказчикам. Завёл в программу систему триггеров, чтобы при разных условиях можно было дёргать вебхуки и/или менять статусы устройств. Ну, например, если концентрация с датчика N уже пять минут превышает некоторый порог, то сигналим тревогу. Или если устройство M не в сети полчаса. И так далее. Поначалу сделал очень гиково: интерпретатор выражений с переменными. Можно было ввести в параметры триггера что-то типа {КАНАЛ1.КОНЦЕНТРАЦИЯ} + 5 > {КАНАЛ1.ПОРОГ1}. Приехал показывать. Думал: ну всё, сейчас расскажу им про все функции, задам вопросы для доработок. Собрали внезапно целый конференц-зал в присутствии большого начальника. Но оказалось, что 80% присутствующих абсолютно ничего не знали об этом проекте (завод очень большой, в нём много отделений, я взаимодействовал с небольшой группой интересантов). Через пятнадцать минут как раз на рассказе про язык выражений большое начальство прервало меня с вопросом о том, что это вообще такое, и что конкретно я пытаюсь продемонстрировать. Я безуспешно пытался что-то промямлить о ТЗ и о том, что это вообще-то их заказ, и вроде как им должно быть интересно, что я в итоге сделал, как оно работает, и вообще выполняет ли поставленную задачу.