AI Как я устал пересчитывать кгс/см² в бары и написал своё приложение на Python

  • Автор темы Автор темы AI
  • Дата начала Дата начала

AI

Команда форума
Редактор
Регистрация
23 Авг 2023
Сообщения
3,969
Реакции
0
Баллы
36
Ofline
Знакомая ситуация: сидишь на объекте, смотришь в проект — давление указано в кгс/см², а на манометре бары. В голове пытаешься вспомнить коэффициент. Или заказчик спрашивает: «А сколько это в гигакалориях?» — и ты лезешь в Google, открываешь три вкладки, считаешь на калькуляторе...

Я инженер ОВиК. Отопление, вентиляция, кондиционирование — это моя ежедневная работа. И каждый день одно и то же: пересчитай давление, переведи расход, посчитай скорость в трубе, прикинь объём расширительного бака. Рутина, которая отнимает время и нервы.

Почему существующие приложения не устроили


Я честно пытался найти готовое решение. Вот что нашёл:

Универсальные конвертеры — знают килограммы, метры, литры. Но попробуй найти там кгс/м², Гкал/ч или мм водяного столба. Этих единиц просто нет, потому что разработчики — не инженеры.

Инженерные калькуляторы — существуют, но:


  • Половина на английском без локализации


  • Реклама на полэкрана после каждого расчёта


  • Подписка 300₽/мес за то, чтобы посчитать потерю давления на клапане


  • Нужен интернет (а на объекте связь бывает не всегда)

В какой-то момент я подумал: я же умею писать на Python. Почему бы не сделать самому?

От идеи до приложения: выбор инструментов


Я не мобильный разработчик. Я не знаю Kotlin, не знаю Swift, не хочу разбираться в Android SDK. Зато я пишу на Python скрипты для работы — автоматизация расчётов, обработка данных, всё такое.

Оказалось, есть Kivy — фреймворк, который позволяет писать мобильные приложения на чистом Python. А Buildozer упаковывает это в обычный APK. Никакой Java, никакого Gradle. Пишешь на Python — получаешь приложение для телефона.

Звучит как магия? Отчасти так и есть. Но с нюансами — о них позже.

Что в итоге получилось

Конвертер, который знает инженерные единицы


10 категорий, 60 единиц измерения. Не просто длина-масса-температура, а то, с чем реально работают инженеры:


  • Давление — Па, кПа, МПа, кгс/м², кгс/см², мм.рт.ст., мм.вод.ст., бар, м.вод.ст. (да, все 9 штук, которые встречаются в проектной документации)


  • Мощность — включая ккал/ч, Мкал/ч, Гкал/ч и BTU/ч (попробуйте найти Гкал/ч в обычном конвертере)


  • Расход — м³/с, м³/мин, м³/ч, л/с, л/мин, л/ч


  • Плюс энергия, температура, длина, площадь, объём, масса, скорость

Вводишь значение — и сразу видишь таблицу пересчёта во все единицы категории. Не надо выбирать «из чего — во что» по одной штуке.

5 инженерных калькуляторов — то, что считаешь каждый день


Скорость потока в трубе. Выбрал материал (сталь, PPR, PEX, медь), выбрал DN — приложение знает реальные внутренние диаметры. Ввёл расход — получил скорость. Тут же справка: для магистралей норма 1.5-3.0 м/с, для распределения 0.5-1.5 м/с. Не надо лезть в СНиП.

Тепловая мощность. Формула Q = G × ρ × c × ΔT / 3600 — простая, но каждый раз нужно вспоминать теплоёмкость и плотность. А если теплоноситель — не вода, а гликоль? А при какой температуре? А при какой концентрации? Всё это приложение считает само: вода, этиленгликоль, пропиленгликоль, концентрация 10-60%, свойства интерполируются по температуре.

Потеря давления на клапане. Знаешь расход и Kvs — получи ΔP. Два поля, одна кнопка.

Объём расширительного бака. По СП 60.13330-2020. Вводишь мощность системы, диапазон температур, давления, тип теплоносителя — приложение считает нужный объём и сразу подбирает ближайший стандартный размер бака. От 5 до 1000 литров.

Площадь изоляции. Для составления спецификаций и смет — площадь и объём изоляции по диаметру трубы, толщине и длине.

Работает без интернета


Это было принципиальным требованием. На стройке, в подвале, в техническом помещении — связь есть не всегда. Приложение не делает ни одного сетевого запроса. Все данные, коэффициенты, таблицы свойств — встроены в код.

Русский и английский


Переключается одной кнопкой. Весь интерфейс, все подписи, справочная информация — всё на двух языках.

Техническая сторона (для тех, кому интересно)

Один файл — всё приложение


Весь проект — это один main.py на ~1200 строк. Без базы данных, без сервера, без внешних API. Данные (размеры труб, свойства теплоносителей, коэффициенты пересчёта) живут в словарях прямо в коде.

Можно ли было разбить на модули? Да. Нужно ли? Для инструмента такого размера — нет. Один файл проще поддерживать, проще собирать, проще отлаживать.

Свойства теплоносителей — не константы


Самая интересная техническая часть — расчёт тепловой мощности. Плотность и теплоёмкость воды и гликолей зависят от температуры. Для точного расчёта в приложении хранятся таблицы свойств с шагом 10°C, а значения между точками получаются линейной интерполяцией:

def interpolate(self, table, temp):
temps = sorted(table.keys())
if temp <= temps[0]:
return table[temps[0]]
if temp >= temps[-1]:
return table[temps[-1]]
for i in range(len(temps) - 1):
if temps <= temp <= temps[i + 1]:
t1, t2 = temps, temps[i + 1]
v1, v2 = table[t1], table[t2]
return v1 + (v2 - v1) * (temp - t1) / (t2 - t1)


Для этиленгликоля и пропиленгликоля данные хранятся с учётом концентрации — двумерные таблицы «температура × концентрация».

Сборка: Windows + WSL2 + Buildozer


Buildozer работает только в Linux. На Windows спасает WSL2:

# Первая сборка (~15 минут — скачивает Android SDK/NDK)
buildozer android debug

# Release-версия для публикации
buildozer android release


Итоговый APK весит ~35 МБ. Да, многовато для калькулятора — это цена Python-рантайма внутри. Нативное приложение весило бы 5-10 МБ. Но для офлайн-инструмента это терпимо.

Публикация в RuStore


Выбрал RuStore как первую площадку — он набирает популярность, и для российских пользователей это логичный выбор.

Процесс оказался достаточно простым:


  1. Загружаешь APK и сертификат подписи


  2. Заполняешь карточку: описание, скриншоты, иконка, категория


  3. Указываешь что приложение не собирает данных (а оно действительно не собирает — ни аналитики, ни трекеров, ничего)


  4. Отправляешь на модерацию

Модерация прошла за пару дней.

Что пошло не так (а что-то всегда идёт не так)


Размер APK. 35 МБ за калькулятор — звучит смешно. Но Python-рантайм, который упаковывается внутрь, весит около 30 МБ. Это главный минус Kivy. Решения два: смириться или переписать на Kotlin. Я выбрал первое.

Кириллица в Kivy. Не все шрифты корректно рендерят кириллицу. Решение нашлось быстро — использовать системные шрифты. Но нервы потрепало.

Тестирование. Эмулятор Android Studio — это не реальный телефон. Некоторые вещи (скорость отклика, размер элементов, удобство ввода) можно оценить только на реальном устройстве. Совет: не откладывайте тест на реальном телефоне до последнего.

Что дальше


  • Google Play — AAB уже собран, в планах регистрация аккаунта разработчика


  • iOS — код адаптирован, для сборки нужен Mac


  • Новые расчёты — подбор насоса, расчёт воздуховодов, гидравлический расчёт системы отопления


  • Ваши идеи — если пользуетесь приложением и не хватает какого-то расчёта, напишите
Итого


Можно ли написать полезное мобильное приложение, не будучи мобильным разработчиком? Да, если знаешь Python и у тебя есть конкретная проблема, которую нужно решить.

Kivy + Buildozer — не идеальный стек. APK большой, производительность не как у нативного приложения, экосистема библиотек скромная. Но для инструмента, который решает конкретную задачу конкретных людей — этого более чем достаточно.

Главное — я больше не гуглю «кгс/см² в бары». И вы можете не гуглить.


Скачать бесплатно в RuStore: Engineering Converter

Бесплатно. Без рекламы. Без интернета. Без регистрации. Просто инженерный инструмент.


Если вы инженер ОВиК, проектировщик, монтажник, сантехник или студент технического вуза — попробуйте. И напишите в комментариях, каких расчётов и единиц не хватает. Я добавлю.
 
Назад
Сверху Снизу
Яндекс.Метрика Рейтинг@Mail.ru