[Интернет вещей] Старый строительный бизнес и новые технологии, или история одного стартапа

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
25-Авг-2020 15:41


Введение
Всех приветствую, меня зовут Кирилл, я продукт менеджер или инженер, организатор или прораб и технарь или, возможно, ни то и ни другое, я, признаться честно, не знаю кто я по профессии, но за сравнительно короткий период у меня получилось создать команду разработки, монтажников, проектировщиков у которой в свою очередь получилось реализовать огромный продукт в области IoT. В этой статье я бы хотел поделится с Вами о том, какие ошибки мы допустили при разработке продукта и о ошибках в правовой и договорной областях создания продукта.
Итак, все началось с того момента, когда я ушел с должности инженера конструктора элеваторного оборудования, и с образованием технолога машиностроения устроился в одну крупную строительную компанию города, на должность администратора систем автоматизированного сбора показаний приборов учета и управления подачей теплового носителя в квартиры, такой себе Умный дом в многоквартирном доме. На тот момент у застройщика были следующие требования:
  • Учет всех приборов квартир
  • Управление подачей теплового носителя по принципу термостата
  • Аналитика потребления
  • Аварии и предупреждения
  • Интерфейс для управляющей компании со всеми объектами
  • Интерфейс для жильцов

Дома строили большие по 20-25 этажей в среднем по 280-300 квартир в секции. Таких домов у застройщика на тот момент было порядка 10.
Приступив к работе, первым делом, я стал разбираться как же работают две системы, уже реализованные на строительных площадках заказчика. Это были две абсолютно разные системы: от протоколов передачи между сервером и полевым оборудованием (у одних CAN-bus, у вторых Modbus RTU и TCP), до самой архитектурой приложений (у одних самописное ПО раскатанное в облаке, у вторых — СКАДА для каждого объекта с локальными компьютерами).
Но одно этих ребят объединяло, они оба были производителями своего собственного оборудования (блоки, контроллеры, шлюзы), которое продавали по нереально высоким ценам, у их оборудования отсутствовали какие либо сертификаты, тех. документация, и не было никакой возможности взаимозаменяемости. Таким образом когда устройство выходило из строя, а это происходило очень часто, нам приходилось покупать у них оборудование по завышенному прайсу. И еще пару не приятных моментов в работе с этими товарищами.
Апргрейд приложения в области функционала, был невозможен и не потому что очень высокая цена, а потому что они не могли / хотели / знали как посчитать стоимость доработки, да им этого и не надо было. У них был построен бизнес на обслуживании и замене своих устройств.
Мы постоянно платим за ПО, но, что за ПО? Лицензия, покупка ПО по договору, разработка ПО? На все вопросы ответ один — “ПО наше, пишите письма”.
Собственно все вышеперечисленные факторы привели к тому, что я предложил собрать команду разрабов и самим запилить нечто подобное, но на оборудовании заводского производства доступного на рынке страны и Европы.
Первые решения и договоренности
И так пришел я договариваться со своим руководством — директором №1. Предложил сколотить команду для разработки продукта полного цикла разработка — проектирование — монтаж — пуск — эксплуатация. Для начала сошлись на том, что берем на работу одного разраба бэка — Леху и на аутсорсинг команду веб разработчиков и дизайнеров. Зарплата моя и Лёхи была настолько мала, что стыдно даже думать об этом, но я рискнул по пяти причинам:
  • Меня никто не знал, и никто толком не могу понять мои способности, я для них был вроде умный малый, но не самостоятельный и очень активный.
  • Если проект выгорает то я и разраб бэка и его собака в шоколаде! Все будет, как говорил мне директор №1.
  • Классная возможность попробовать свои силы.
  • Спасти Леху, он тогда гнил охранником на промышленном объекте.
  • У нас горели глаза от одной мысли, что мы можем создать нечто подобное.

Первый MVP
На радостях мы покупаем первый контроллер Siemens Modicon MT221 с ModBus TCP на борту, дня четыре писали на него программу на языке Ladder Diagram, в которой при замыкании контактов регистр меняется с 0 на 1, протестили с помощью программки Modbus Poll (грубо говоря Modbus TCP клиент), и тут Леха говорит:
“На кафедре нас учили, что такие задачи решаются с помощью SCADA систем”
На что я в ответ:
“Леха, ты должен был бороться со злом, а не примкнуть к нему.”
Мы решили сделать так — Леха пробует найти СКАДУ и вытаскивать данные с контроллера и хранить их где то, а я попробую написать программу на Java, я как раз в тот момент проходил курсы Java Elementary (знал бы мой препод с курсов, что я буду пробовать кодить…).
И по итогу Леха получил данные с контроллера по ModBus TCP первым, но сложил свой комп с синим экраном из за 4-6 СКАД на компе. А я при помощи Java и 5 строчек кода вытянул данные, Леше понравилось это и он погрузился в мир Java и я с гордостью могу сказать, что он стал очень хорошим специалистом.
Как сейчас помню, 10 марта 2018 года, мы приступили к первому объекту. У нас было 6 месяцев для написания программы, создания дизайна, выпуска проектной документации, монтажа и пуска.
Я полностью ушел в дизайн, подбор оборудование и топологии сети, монтажа и проектирования (сам в автокаде делал первый проект, да и на объекте первое время провода тягал), а Леха взял на свои плечи все, что связано с сервером, back-ом и БД.
Многие не верили в наш успех и не ставили нам конкретных задач, звучало это примерно так:
  • вытащите данные из счётчиков
  • отобразите где-нибудь

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

В течении 1 месяца мы перепробовали все готовые решения, что нашли в 20-ти страницах поиска в гугле. В каждом решении присутствовала 1 или более из перечисленных проблем:
  • нету аутентификации с разделением прав
  • отсутствует возможность создать защищенный API к собранным данным
  • дизайн из 90-х
  • низкая производительность
  • низкий уровень кастомизации backend логики
  • неприемлемое ценообразование для решения выбранной задачи

Внутреннее чутьё подсказывало, что если мы будем использовать одну из этих систем, то мы будем ничем не лучше наших конкурентов. Что повело нас по другому пути, прекрасному пути. Мы пошли по пути написания своей системы и продукта на лучшем языке в мире Java и либы EasyModbus. А когда мы немного модифицировали код и заставили консоль сообщать о нажатии кнопки нашим радостям тогда просто не было предела. По дороге домой мы не могли успокоится и обсуждали, сколько нам это может дать возможностей! Мы создадим свою СКАДУ с красивым вэб приложением и умным домом. В тот вечер, мы нарисовали себе планов на год вперед. Но всё было еще впереди…
Мы начали с малого, и месяц спустя у нас было готово ПО для контроллера управляющего температурой написанное на FBD. Нашим backend стэком были Java 8 + MySQL. Вскоре, были готовы классы для работы с нашими свободно программируемыми контроллерами. Еще через месяц мы успешно обкатали связку нашего backend'а и шлюза, который опрашивал тепловые счётчики по протоколу M-BUS. Научились работать с MySQL. Начали писать все полученные данные в базу. Для считывания показаний с электросчётчиков по RS-485 интерфейсу (PLC нам не подошел) мы сделали реверс-инжиниринг протокол из исходных данных с монитора USB порта.
Наш опыт в программировании на тот момент составлял пару месяцев, смотря на него сейчас — идет кровь из глаз. НО этот говнокод работал — это сущее чудо. Мы очень целеустремленные ребята и стремились к знаниям со страшной силой. Нам очень повезло и все трудности появлялись постепенно: первые проблемы с многопоточностью и базой данных — и мы открыли для себя c3p0, огромное количество зависимость — мы научились работать с maven, проблемы с перфомансом при считывании с базы данных — а мы и не знали, что такое индексы, каждая полученная крупица информации применялась в проекте.
Для того, чтобы показать начальству серьёзность наших намерений мы собрали стенд, который продемонстрировал работу нашей системы в масштабах всего дома. У нас было 20 контроллеров управления температурой, 150 датчиков температур, 60 тепловых счётчиков (сколько смогли раздобыть), 2 шлюза MBus, роутер и 16 маршрутизаторов. Мы 2 дня только обжимали FTP кабеля. В итоге стенд собран, ПО сконфигурировано, mock вебинтерфейса запущен — директор едет к нам смотреть работу.

Первый стенд

Всё свистит, релюшки щелкают, отрабатывает все мгновенно, логи бегут, данные с устройств корректно собираются. Мы взяли в свою команду проектировщика Вову, сисадмина Юру и 3 монтажников. Процесс разработки, проектирования и монтажа проходил параллельно. Пока ребята штробили стены и прокладывали кабеля, проектировщик делал им проекты и схемы подключения, пока происходил монтаж щитов, а мы тестировали на них новые фичи, пока шла разработка ПО — собиралась серверная стойка.
В итоге нам понадобилось пол года чтобы у нас были интегрированы в систему 144 квартиры и первые пользователи, которым мы лично вручили QR-коды регистрации. Но на этом мы не хотели останавливаться, наша конечная задача была — создание IoT платформы заточенную под BMS, а в последующем расширится до интегрирования технических объектов (котельных, тепловых пунктов, задовов и производств) и умных домов.
Следующий год мы провели за рефакторингом нашего MVP и добавлением различных фич. В этот раз у нас был план, архитектура, еще большие амбиции и свежая кровь — взяли на работу 2-ух студентов. Первый студент, Ярик, работал над backend'ом нашего продукта, а второй, Сашка, занимался наработками на Arduino и прочих одноплатных компьютеров для умного дома.
Мы активно шерстили рынок УД и BMS: общались с потенциальными заказчиками, ездили на выставки, сравнивали себя с конкурентами. В какой-то момент мы поняли что то, что мы создали является феноменом для украинского рынка, и никто из потенциальных конкурентов не может ничего подобного что можем предложить мы. У нас масштабируемая и кастомизируемая система BMS, с мощной системой квитирования аварий и администрирования, с API, с драйверами на самые популярные устройства учета в Украине, можем подстроится под любого заказчика. Мы хотели вырваться из под нашей компании и идти самостоятельно.
Первый успех и сразу кастрюлей по лицу
Итак на первых парах успеха, уже реализуем 3 объект (на данный момент в системе крутится 2 котельные, 4 тепловых пункта, 4452 ед. различных приборов учета, данные с 1164 квартир), все хорошо, приложения не валяться, оборудование ведет себя очень хорошо, монтаж на высоте все круто, я и команда ждем премий и бонусов…но, вместо этого просто “Эгегей парни, молодцы, СПАСИБО!”.

Пожал мне руку директор, сел в свой новый Х5 и уехал
Потом началось следующее: нет денег, не финансирует, а продукт продолжать надо, развивать надо, брендирование, инструкции и тд… Признаться честно ошеломленные успехом (а для нас это был ого-го успех, ребята инженер механик и автоматчик по образованиям реализовали немаленькую систему), мы продолжали, бастовали, ныли, но продолжали пилить…. При этом постоянно оптимизировали систему по железу, добивались скидок, оптимизировали топологии для сокращение издержек.
В итоге директор №1 уходит с компании застройщика, я с командой ухожу тоже, наш продукт остался на старых объектах, новых объектов нет, но куда идти? Что делать? Мы так завязли в рутине разработки, что я упустил момент правого поля (кому, что принадлежит, чье ПО, какие права использования ПО), продвижения и прочих моментов так необходимых для успешного существования продукта. Я бросаю все моменты связанные с разработкой и кидаюсь в исследования рынка, пытаюсь найти заказчиков, и понимаю, что наш продукт очень специфичен для застройщиков, не всем он нужен — у всех застройщиков один слоган, за меньшие деньги построил — больше денег получил.
Тут появляется мой директор, и предлагает создать компанию учредители которой будет он и его компаньон, но при этом якобы я и моя команда находятся в его половине компании (50%), по договоренностям МЫ (он, я и команда) будем решать все что касается дольнейшего развитие продукта, принимать как и куда нам двигаться (ну так между нами девочками нигде это не фигурирует в бумагах). Я в отчаянии соглашаюсь, команде говорю ребята мы нашли инвестора, бла-бла, но мы не входим в состав учредителей, и первое время получаем крошечные ЗП (ну типо стартап как они мне сказали), максимально сокращаем издержки (ну стартап который длится уже два года, ничего так себе стартапчик). Ребята с команды сказали: “Может не надо, пахнет странно это все.”, но я горю (у меня долги по фонду ЗП, второй ребенок и прочие издержки), я понимаю, что надо продолжать любой ценой.
Знакомлюсь с директором №2, и понимаю, что что-то не то, ну как могло быть по другому. Пару проведенных встреч и я понял, что директор №2 в 90-ые был программистом в армии и очень хотел реализоваться в этой области, он начинает нам рисовать схемы с местом диспетчера, с сервером 1С, кидать красивые слова, везде вставлять слово API, заказывать “так необходимые в этот момент” брендинги и бренд буки.
Весь месяц нас финансировал директор №1 огромное ему спасибо, а с директора №2 был рынок, якобы у него был горячий заказчик который готов уже начать работать.
Продержались мы так месяц, точнее я продержался. Общался с директорами №1,2 только я, потому что моя цель была оградить мою команду от их постоянных встреч, постоянных попыток накидать каких то задач и прочей бюрократии. Вечно я слышал от директора №2: “Чем занимаетесь? Что делаете?”, мы в ответ: “доменную модель пилим, тестим LoRa Wan, исследуем рынок в части лидеров мнений и канал реализации продуктов, делаем дизайн дашбордов для аварий и предупреждений”, никаких конструктивных вопросов в ответ далее не поступало. Вечное недоверие и чувство дискомфорта, ну как тут продолжать создавать классный продукт.
Собственно никакого заказчика так и не появилось, и на одной из встреч мне директор №2 сказал: “Кирилл мне все равно сколько ты двигаешь этот проект, ты делать будешь то, то тебе скажут два директора”, я встал и ответил: “Джентльмены, удачи” пожал руки им и ушел.
Чувства и остаток
Многим знакомо то чувство когда делаешь работу, отдаешься ей по максимуму, вкладываешь часть себя в это и не получаешь должной отдачи, хотя она была, но просто скрывалась от меня и ребят. Ты продолжаешь делать эту работу хотя понимаешь, что получаешь за это совсем не деньги, но бросить ты не можешь потому что бросить — это тоже самое, что взять и уехать в другую страну от друзей и родных, взять и оторвать себя от части чего то большого, значимого. Мы не бросали, мы начали гореть, начали понимать, что уже больше так продолжаться не может. Это очень больно.
Я благодарен директору №1, что при всех своих недостатках и плюсах, он верил в нас и поддерживал, я буду это помнить и всегда тоже его поддержу. За эти годы мы с командой стали действительно близкими друг другу людьми и я не могу выразить это словами, просто я понимаю, что если нам придется распасться, то я буду всем сердцем скучать за ними и теми временами.
Выводы и советы
Выводы которые я сделал:
  • Не зная броду не лезь в воду, особенно когда вопрос денежный. Все проверь, посчитай, прикинь cash — flow, не ошибись в объеме работы и самое главное в технологии и целесообразности ее применения. Как бы не странно говори с командой, и не забывай про стратегию, пусть она будет сырая, не объемная, но она нужна.
  • Страх неудачи постоянен, даже когда ты попробовал и у ты получил положительный результат. Нужно просто научится жить с ним, топить его чем то. Но всегда надо помнить, земля круглая, сегодня прет, завтра может быть картина другая.
  • Семья это главное. Верьте своей семье.
  • Не будет у вас на пути честных искренних людей, особенно в вопросах денежных. Ну хорошо будут, но мало.
  • Если у вас есть возможность собираться в крутые команды и делать, что то что кому то нужно и вам это нравится, то делайте это, веселясь, радуясь, эмоционально споря, только так рождаются лучшие продукты.
  • Учитесь работать с людьми бизнеса, нужно учится говорить с ними, понимать их, чувствовать их. Успех в деле зависит на 90% от отношений.
  • Весь старый бизнес работает по каскадной методологии развития продукта, взять даже директоров №1 и 2, они строители и для них была дикость быстрее зарелизится с сайтом без нового брендинга, собрать фидбэк, аналитику и потом быстро внести правки в сайт. Нет, они давили, что сначала все надо проработать, точное ТЗ, и сидим потом кодим на протяжении 5 лет, как в СССР. Они не понимали, что время был тот фактор, который решал все (как раз в тот момент при общении с многими застройщиками я слышал, что они сами приступали разрабатывать свое ПО). Строители программисты — это хуже скайнета из терминатора.
  • Сразу договаривайтесь и оговаривайте все условия.

Что же дальше
Сейчас мы пилим новую платформу, расширяем функционал (добавляем “домократию” и сервисы для жильцов, инструменты аналитики и более проработанный интерфейс управления и котельной), добавляем новые приборов учета и устройства.
Параллельно ищем заказчика и инвесторов. Сложно, много работы, а ресурсов нет. На днях запустим сайт.
Всем мира и успехов!
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_internet_veschej (Интернет вещей), #_dispetcherizatsija (диспетчеризация), #_pribory_ucheta (приборы учета), #_avtomatizatsija (автоматизация), #_bms, #_umnyj_dom (умный дом), #_iot, #_askue (АСКУЭ), #_internet_veschej (
Интернет вещей
)
Профиль  ЛС 
Показать сообщения:     

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

Текущее время: 23-Ноя 06:15
Часовой пояс: UTC + 5