Antiguo negocio de construcción y nuevas tecnologías, o la historia de una startup





Introducción



Saludo a todos, mi nombre es Kirill, soy product manager o ingeniero, organizador o capataz y técnico, o quizás ninguno, honestamente no sé quién soy de profesión, pero en un período relativamente corto logré crear un equipo desarrollo, instaladores, diseñadores que, a su vez, lograron implementar un producto enorme en el campo de IoT. En este artículo me gustaría compartir con ustedes los errores que cometimos en el desarrollo de productos y los errores en las áreas legales y contractuales del desarrollo de productos.



Entonces, todo comenzó desde el momento en que dejé el puesto de ingeniero para el diseño de equipos de ascensores, y con la formación de un tecnólogo en ingeniería mecánica, conseguí un trabajo en una gran empresa constructora de la ciudad, como administrador de sistemas para la recolección automatizada de lecturas de medidores y control del suministro de medios térmicos a departamentos, tales Casa inteligente en un edificio de apartamentos. En ese momento, el desarrollador tenía los siguientes requisitos:



  • Contabilización de todos los dispositivos del apartamento
  • Controlar el suministro del medio térmico según el principio del termostato
  • Analítica de consumo
  • Alarmas y advertencias
  • Interfaz para la sociedad gestora con todos los objetos.
  • Interfaz residente


Las casas se construyeron grandes, de 20 a 25 pisos de altura, con un promedio de 280 a 300 apartamentos por sección. En ese momento, el desarrollador tenía alrededor de 10.



Habiendo comenzado a trabajar, lo primero que hice fue averiguar cómo funcionan los dos sistemas ya implementados en las obras de construcción del cliente. Estos eran dos sistemas completamente diferentes: desde los protocolos de transmisión entre el servidor y el equipo de campo (algunos tienen bus CAN, el segundo Modbus RTU y TCP), hasta la arquitectura de la aplicación en sí (algunos tienen software autoescrito implementado en la nube, el segundo tiene SCADA para cada objeto con computadoras locales).



Pero una cosa que estos tipos tenían en común, ambos eran fabricantes de sus propios equipos (bloques, controladores, pasarelas), que vendían a precios irrealmente altos, sus equipos carecían de certificados, esos. documentación, y no había posibilidad de intercambiabilidad. Por lo tanto, cuando el dispositivo fallaba, y esto sucedía muy a menudo, teníamos que comprarles equipos a un precio inflado. Y un par de momentos más desagradables al trabajar con estos compañeros.



Actualizar la aplicación en términos de funcionalidad era imposible y no porque el precio fuera muy alto, sino porque no podían / ​​querían / ​​sabían calcular el costo de la revisión y no lo necesitaban. Tenían un negocio creado para mantener y reemplazar sus dispositivos.

Pagamos por el software todo el tiempo, pero ¿qué software? ¿Licencia, compra de software bajo contrato, desarrollo de software? Solo hay una respuesta a todas las preguntas: "Nuestro software, escribe cartas".



En realidad, todos los factores anteriores llevaron al hecho de que sugerí armar un equipo de desarrolladores y cortar algo similar nosotros mismos, pero utilizando equipos fabricados en fábrica disponibles en el mercado del país y Europa.



Primeras decisiones y acuerdos



Y entonces vine a negociar con mi gerencia, la directora n. ° 1. Se ofreció a armar un equipo para el desarrollo de un producto de ciclo completo: desarrollo - diseño - instalación - puesta en marcha - operación. Para empezar, acordamos que subcontrataremos a un desarrollador back-end: Lech y subcontrataremos a un equipo de desarrolladores y diseñadores web. Los costos para Lyokha y para mí fueron tan pequeños que es una pena incluso pensar en ello, pero me arriesgué por cinco razones:



  1. , , , .
  2. ! .
  3. .
  4. , .
  5. , .


MVP



Para celebrarlo, compramos el primer controlador Siemens Modicon MT221 con ModBus TCP a bordo, durante cuatro días escribimos un programa en el lenguaje Ladder Diagram, en el cual, cuando los contactos están cerrados, el registro cambia de 0 a 1, lo probamos usando el programa Modbus Poll (en términos generales, Modbus TCP client ), y aquí dice Leha:

“En el departamento nos enseñaron que este tipo de tareas se resuelven usando sistemas SCADA”

a lo que le respondí:

“Leha, tenías que luchar contra el mal, no unirte a él”.

Decidimos hacer esto: Lech está tratando de encontrar el SCADA y recuperar datos del controlador y almacenarlos en algún lugar, y trataré de escribir un programa en Java, solo estaba tomando cursos de Java Elementary en ese momento (mi maestro de los cursos sabía que lo intentaría código ...).



Y como resultado, Lech recibió datos del controlador a través de ModBus TCP primero, pero dobló su computadora con una pantalla azul debido a que tenía 4-6 SCAD en la computadora. Y con la ayuda de Java y 5 líneas de código, saqué los datos, a Lesha le gustó y se sumergió en el mundo de Java y puedo decir con orgullo que se convirtió en un muy buen especialista.



Como recuerdo ahora, el 10 de marzo de 2018 iniciamos el primer proyecto. Tuvimos 6 meses para escribir un programa, crear un diseño, publicar la documentación del diseño, instalarlo y ponerlo en marcha.



Me dediqué por completo al diseño, selección de equipos y topología de red, instalación y diseño (yo mismo hice el primer proyecto en AutoCAD, y la primera vez tiré de cables en la instalación), y Lech se encargó de todo lo relacionado con el servidor, atrás y DB.



Muchos no creyeron en nuestro éxito y no nos asignaron tareas específicas, sonaba algo así:



  • sacar los datos de los contadores
  • mostrar en algún lugar


Inicialmente teníamos una visión de cómo debería funcionar esto. Resumimos nuestros requisitos mínimos para lo que queremos lograr:



  • tenemos que recolectar lecturas de medidores de calor, medidores de agua fría y caliente, medidores eléctricos
  • recibir datos de todos los sensores de temperatura ubicados en los apartamentos
  • controlar la temperatura en el apartamento usando este sensor y los ajustes que establecerá el inquilino
  • el inquilino debe tener su propia cuenta personal, en la que el usuario inquilino recibirá datos sobre sus apartamentos: gráficos de lecturas, comentarios de la empresa de gestión, control de temperatura
  • los administradores deben tener una aplicación web con todos los datos del sistema, alarmas, usuarios y análisis


En 1 mes, probamos todas las soluciones listas para usar que encontramos en 20 páginas de búsqueda de Google. Cada solución tenía uno o más de los siguientes problemas:



  • sin autenticación dividida
  • no hay forma de crear una API segura para los datos recopilados
  • diseño de los 90
  • bajo rendimiento
  • bajo nivel de personalización de la lógica de backend
  • precio inaceptable para la solución de la tarea seleccionada


Mi instinto nos dijo que si usábamos uno de estos sistemas, no seríamos mejores que nuestros competidores. Lo que nos llevó por un camino diferente, un camino hermoso. Tomamos el camino de escribir nuestro sistema y producto en el mejor lenguaje del mundo, Java o EasyModbus. Y cuando modificamos ligeramente el código y obligamos a la consola a informarnos sobre la pulsación de un botón, simplemente no había límite. De camino a casa, no pudimos calmarnos y discutimos cuántas oportunidades nos podría dar. Crearemos nuestro propio SCADA con una hermosa aplicación web y un hogar inteligente. Esa noche, hicimos planes para el próximo año. Pero todo estaba por delante ...



Comenzamos poco a poco y un mes después teníamos listo el software del controlador de temperatura escrito en FBD. Nuestra pila de backend era Java 8 + MySQL. Pronto, las clases estuvieron listas para trabajar con nuestros controladores programables libremente. Un mes después, probamos con éxito un montón de nuestro backend y una puerta de enlace que interrogaba a los medidores de calor utilizando el protocolo M-BUS. Aprendí a trabajar con MySQL. Comenzamos a escribir todos los datos recibidos en la base de datos. Para leer las lecturas de los medidores de electricidad a través de la interfaz RS-485 (el PLC no nos convenía), hicimos un protocolo de ingeniería inversa a partir de los datos iniciales del monitor del puerto USB.



Nuestra experiencia de programación en ese momento fue de un par de meses, mirándolo ahora, la sangre está saliendo de nuestros ojos. PERO este código de mierda funcionó, es un milagro. Somos muchachos muy motivados y luchamos por el conocimiento con una fuerza terrible. Tuvimos mucha suerte y todas las dificultades aparecieron gradualmente: los primeros problemas con el multiproceso y la base de datos - y descubrimos c3p0 por nosotros mismos, una gran cantidad de dependencia - aprendimos a trabajar con maven, problemas de rendimiento al leer de la base de datos - y no lo sabíamos tales índices, toda la información recibida se aplicó en el proyecto.



Con el fin de mostrar a las autoridades la seriedad de nuestras intenciones, armamos un stand que demostró el trabajo de nuestro sistema en toda la casa. Teníamos 20 controladores de temperatura, 150 sensores de temperatura, 60 medidores de calor (tanto como pudimos obtener), puertas de enlace de 2 MBus, un enrutador y 16 enrutadores. Solo prensamos el cable FTP durante 2 días. Como resultado, se ensambla el soporte, se configura el software, se lanza la simulación de la interfaz web: el director viene a ver el trabajo.





Primera parada



Todo silba, hace clic en Relief, todo funciona al instante, los registros se ejecutan, los datos de los dispositivos se recopilan correctamente. Incorporamos al diseñador Vova, al administrador del sistema Yura ya 3 instaladores a nuestro equipo. El proceso de desarrollo, diseño e instalación se llevó a cabo en paralelo. Mientras los muchachos perseguían las paredes y tendían los cables, el diseñador les hizo proyectos y diagramas de cableado, mientras se instalaban las placas, y probamos nuevas funciones en ellas, mientras se desarrollaba el software, se ensamblaba el bastidor del servidor.



Como resultado, tardamos medio año en integrar 144 apartamentos en el sistema y en los primeros usuarios a los que les entregamos personalmente los códigos QR de registro. Pero no queríamos detenernos allí, nuestra tarea final fue crear una plataforma IoT afilada para BMS, y luego se expandirá a la integración de objetos técnicos (calderas, puntos de calefacción, puertas traseras e instalaciones de producción) y casas inteligentes.



Pasamos el año siguiente refactorizando nuestro MVP y agregando varias características. Esta vez teníamos un plan, arquitectura, ambiciones aún mayores y sangre fresca: contratamos a 2 estudiantes. El primer estudiante, Yarik, trabajó en el backend de nuestro producto, y el segundo, Sashka, trabajó en Arduino y otras computadoras de placa única para una casa inteligente.



Desarrollamos activamente el mercado de UD y BMS: hablamos con clientes potenciales, fuimos a exposiciones, nos comparamos con la competencia. En algún momento, nos dimos cuenta de que lo que hemos creado es un fenómeno para el mercado ucraniano, y ninguno de los competidores potenciales puede ofrecer nada similar que nosotros podamos ofrecer. Contamos con un sistema BMS escalable y personalizable, con un potente sistema de reconocimiento y administración de alarmas, con API, con drivers para los dispositivos de medición más populares en Ucrania, podemos adaptarnos a cualquier cliente. Queríamos salir de nuestra empresa e ir por nuestra cuenta.



Primer éxito e inmediatamente una sartén en la cara.



Entonces, en las primeras parejas de éxito, ya estamos implementando 3 objetos (en este momento hay 2 salas de calderas, 4 puntos de calefacción, 4452 unidades de varios dispositivos de medición, datos de 1164 apartamentos), todo está bien, las aplicaciones no están por ahí, el equipo se comporta muy bien, instalación en altura todo es genial, yo y el equipo estamos esperando premios y bonificaciones ... pero en cambio, solo "Egegey chicos, grandes compañeros, ¡GRACIAS!".







Entonces comenzó lo siguiente: no hay dinero, no se financia, pero el producto debe continuar, es necesario desarrollar branding, instrucciones, etc. ... Para ser sincero, nos sorprendió el éxito (y para nosotros fue un éxito increíble, los chicos, un ingeniero mecánico y un ametrallador de educación implementaron un sistema bastante grande). , continuamos, hicimos huelga, nos quejamos, pero seguimos cortando…. Al mismo tiempo, optimizaron constantemente el sistema para el hardware, buscaron descuentos y optimizaron topologías para reducir costos.



Como resultado, el director # 1 deja la empresa del desarrollador, yo también me voy con el equipo, nuestro producto permanece en los sitios antiguos, no hay sitios nuevos, pero ¿adónde ir? ¿Qué hacer? Quedamos tan atrapados en la rutina de desarrollo que me perdí el momento del margen derecho (quién es dueño de qué, de quién software, qué derechos para usar el software), promoción y otros momentos tan necesarios para la existencia exitosa del producto. Dejo todos los momentos asociados con el desarrollo y me dedico a la investigación de mercado, tratando de encontrar clientes, y entiendo que nuestro producto es muy específico para los desarrolladores, no todos lo necesitan: todos los desarrolladores tienen un eslogan, construido por menos dinero, obtuvieron más dinero.



Entonces aparece mi director, y ofrece crear una empresa cuyos fundadores serán él y su socio, pero al mismo tiempo, supuestamente mi equipo y yo estamos en su mitad de la empresa (50%), según los acuerdos NOSOTROS (él, yo y el equipo) decidiremos todo lo que concierne. Un mayor desarrollo del producto, aceptar cómo y dónde moverse (bueno, entre nosotras, las chicas, no aparece en ninguna parte de los periódicos). Estoy de acuerdo con la desesperación, le digo al equipo, chicos, encontramos un inversor, bla, bla, pero no estamos entre los fundadores, y por primera vez obtenemos salarios minúsculos (bueno, como una startup, como me dijeron), reducimos costos lo más posible (bueno, una startup que dura dos años, nada de inicio regular). Los chicos del equipo dijeron: “Quizás no sea necesario, todo huele raro”, pero me estoy quemando (tengo deudas en el fondo de sueldo, un segundo hijo y otros gastos), entiendo que debo continuar a cualquier costo.



Me familiarizo con el director número 2, y entiendo que algo no está bien, como no podía ser de otra manera. Realicé un par de reuniones y me di cuenta que el director # 2 en los 90 era un programador en el ejército y tenía muchas ganas de realizarse en esta área, comienza a dibujarnos diagramas con el lugar de un despachador, con un servidor 1C, arroja hermosas palabras, inserta la palabra API por todas partes, ordena “Tan necesario en este momento” branding y hayas de marca.



Todo el mes estuvimos financiados por el director # 1, muchas gracias a él, y con el director # 2 había un mercado, supuestamente tenía un cliente caliente que está listo para empezar a trabajar.



Aguantamos así durante un mes, o mejor dicho, aguanté. Solo me comuniqué con los directores No. 1,2, porque mi objetivo era proteger a mi equipo de sus constantes reuniones, constantes intentos de tirar algunas tareas y otras burocracias. Siempre he escuchado del director # 2: “¿Qué estás haciendo? ¿Qué estás haciendo? ”, Contestamos:“ vimos el modelo de dominio, probamos LoRa Wan, investigamos el mercado en términos de líderes de opinión y el canal de venta de productos, diseñamos cuadros de mando para accidentes y advertencias ”, no se recibieron preguntas constructivas en respuesta. Desconfianza e incomodidad eternas, ¿cómo puedes seguir creando un producto genial?



En realidad no apareció ningún cliente, y en una de las reuniones el director # 2 me dijo: “Kirill, no me importa cuánto muevas este proyecto, harás lo que te digan los dos directores”, me levanté y contesté: “Caballeros, buena suerte ”les estrechó la mano y se fue.



Sentimientos y equilibrio



Mucha gente conoce esa sensación cuando haces un trabajo, te entregas a él al máximo, pones una parte de ti en ello y no obtienes el retorno adecuado, aunque lo fue, sino que simplemente se escondió de mí y de los chicos. Continúas haciendo este trabajo, aunque entiendes que no recibes dinero por ello, pero no puedes renunciar porque renunciar es lo mismo que tomar y salir a otro país de amigos y familiares, tomar y arrancarte una parte de algo grande , significativo. No nos dimos por vencidos, empezamos a arder, empezamos a entender que ya no podía seguir así. Esto es muy doloroso.



Agradezco al Director # 1 por todas sus deficiencias y ventajas, él creyó en nosotros y nos apoyó, lo recordaré y siempre lo apoyaré también. A lo largo de los años, mi equipo y yo nos hemos convertido en personas muy cercanas y no puedo expresarlo con palabras, solo entiendo que si tenemos que romper, los extrañaré y esos momentos con todo mi corazón.



Conclusiones y consejos



Las conclusiones que hice:



  • Sin conocer el vado, no te adentres en el agua, sobre todo cuando la cuestión es monetaria. Verifique todo, cuente, calcule el flujo de caja, no se equivoque en la cantidad de trabajo y, lo más importante, en la tecnología y conveniencia de su aplicación. No importa lo extraño que sea hablar con el equipo, y no te olvides de la estrategia, que sea cruda, no voluminosa, pero es necesaria.
  • , . , . , , , .
  • . .
  • , . , .
  • , , , , , , .
  • , , , . 90% .
  • , №1 2, , , . , , , , 5 , . , , ( , ). — .
  • .




Ahora estamos aserrando una nueva plataforma, ampliando la funcionalidad (agregando "homecracy" y servicios para residentes, herramientas de análisis y una interfaz de administración más sofisticada y sala de calderas), agregando nuevos dispositivos y dispositivos de medición.



Al mismo tiempo, buscamos cliente e inversores. Difícil, mucho trabajo, pero sin recursos. Lanzaremos el sitio uno de estos días.



¡Paz y éxito a todos!



Continuación de la serie de artículos:

"Smart home" en cada apartamento de un edificio de apartamentos, o nuestro MVP



All Articles