Altes Baugeschäft und neue Technologien oder die Geschichte eines Startups





Einführung



Ich grüße alle, mein Name ist Kirill, ich bin Produktmanager oder Ingenieur, Organisator oder Vorarbeiter und Techniker, oder vielleicht auch nicht, ich weiß ehrlich gesagt nicht, wer ich von Beruf bin, aber in relativ kurzer Zeit habe ich es geschafft, ein Team zu bilden Entwicklung, Installateure, Designer, die es wiederum geschafft haben, ein riesiges Produkt im IoT-Bereich zu implementieren. In diesem Artikel möchte ich Ihnen mitteilen, welche Fehler wir bei der Produktentwicklung und bei den rechtlichen und vertraglichen Bereichen der Produktentwicklung gemacht haben.



Alles begann von dem Moment an, als ich die Position eines Ingenieurs für die Konstruktion von Aufzugsanlagen verließ und mit der Ausbildung eines Maschinenbautechnologen eine Stelle bei einem großen Bauunternehmen in der Stadt bekam, als Administrator von Systemen zur automatisierten Erfassung von Zählerständen und zur Steuerung der Versorgung von Wohnungen mit thermischen Medien, wie z Smart Home in einem Wohnhaus. Zu diesem Zeitpunkt hatte der Entwickler die folgenden Anforderungen:



  • Abrechnung aller Wohnungsgeräte
  • Steuerung der Zufuhr des thermischen Mediums nach dem Thermostatprinzip
  • Verbrauchsanalyse
  • Alarme und Warnungen
  • Schnittstelle für die Verwaltungsgesellschaft mit allen Objekten
  • Residente Schnittstelle


Die Häuser wurden groß gebaut, 20 bis 25 Stockwerke hoch, mit durchschnittlich 280 bis 300 Wohnungen pro Abschnitt. Zu dieser Zeit hatte der Entwickler ungefähr 10 solcher Häuser.



Nachdem ich mit der Arbeit begonnen hatte, war das erste, was ich tat, um herauszufinden, wie die beiden Systeme, die bereits auf den Baustellen des Kunden implementiert waren, funktionieren. Dies waren zwei völlig unterschiedliche Systeme: Von den Übertragungsprotokollen zwischen dem Server und den Feldgeräten (einige haben CAN-Bus, die zweiten haben Modbus RTU und TCP) bis zur Anwendungsarchitektur selbst (einige haben selbst geschriebene Software in der Cloud eingeführt, die zweiten haben SCADA für jedes Objekt mit lokalen Computern).



Aber eines haben diese Leute vereint: Sie waren beide Hersteller ihrer eigenen Ausrüstung (Blöcke, Controller, Gateways), die sie zu unrealistisch hohen Preisen verkauften. Ihre Ausrüstung hatte keine Zertifikate. Dokumentation, und es gab keine Möglichkeit der Austauschbarkeit. Wenn das Gerät ausfiel und dies sehr oft vorkam, mussten wir Geräte zu einem überhöhten Preis bei ihnen kaufen. Und noch ein paar unangenehme Momente bei der Arbeit mit diesen Kameraden.



Ein Upgrade der Anwendung in Bezug auf die Funktionalität war nicht möglich, nicht weil der Preis sehr hoch war, sondern weil sie die Kosten der Revision nicht berechnen konnten / wollten / wussten und sie nicht brauchten. Sie hatten ein Geschäft aufgebaut, um ihre Geräte zu warten und zu ersetzen.

Wir bezahlen die ganze Zeit für Software, aber welche Software? Lizenz, Softwarekauf unter Vertrag, Softwareentwicklung? Auf alle Fragen gibt es nur eine Antwort: "Unsere Software, schreiben Sie Briefe."



Tatsächlich führten alle oben genannten Faktoren dazu, dass ich vorschlug, ein Entwicklerteam zusammenzustellen und etwas Ähnliches selbst zu schneiden, aber fabrikgefertigte Geräte zu verwenden, die auf dem Markt des Landes und Europas erhältlich sind.



Erste Entscheidungen und Vereinbarungen



Und so kam ich, um mit meinem Management - Direktor # 1 - zu verhandeln. Er bot an, ein Team für die Entwicklung einer vollständigen Produktentwicklung zusammenzustellen - Design - Installation - Inbetriebnahme - Betrieb. Zunächst haben wir vereinbart, einen Back-End-Entwickler auszulagern - Lech - und ein Team von Webentwicklern und Designern auszulagern. Die Kosten für mich und Lyokha waren so gering, dass es eine Schande ist, darüber nachzudenken, aber ich habe aus fünf Gründen eine Chance ergriffen:



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


MVP



Um dies zu feiern, kaufen wir den ersten Siemens Modicon MT221-Controller mit ModBus TCP an Bord. Vier Tage lang haben wir ein Programm in der Sprache Ladder Diagram darauf geschrieben. Wenn die Kontakte geschlossen sind, ändert sich das Register von 0 auf 1, und wir haben es mit dem Modbus Poll-Programm (grob gesagt Modbus TCP-Client) getestet ), und hier sagt Leha:

„In der Abteilung wurde uns beigebracht, dass solche Aufgaben mit SCADA-Systemen gelöst werden.“

Darauf antwortete ich:

„Leha, du musstest das Böse bekämpfen, nicht mitmachen.“

Wir haben uns dazu entschlossen - Lech versucht, die SCADA zu finden, Daten vom Controller abzurufen und irgendwo zu speichern, und ich werde versuchen, ein Programm in Java zu schreiben. Ich habe gerade Java-Grundkurse besucht (mein Lehrer aus den Kursen wusste, dass ich es versuchen würde Code ...).



Infolgedessen erhielt Lech zuerst Daten von der Steuerung über ModBus TCP, faltete seinen Computer jedoch aufgrund von 4-6 SCADs auf dem Computer mit einem blauen Bildschirm zusammen. Und mit Hilfe von Java und 5 Codezeilen habe ich die Daten herausgezogen, Lesha hat es gefallen und er ist in die Welt von Java eingetaucht und ich kann stolz sagen, dass er ein sehr guter Spezialist geworden ist.



Soweit ich mich erinnere, haben wir am 10. März 2018 das erste Projekt gestartet. Wir hatten 6 Monate Zeit, um ein Programm zu schreiben, ein Design zu erstellen, die Designdokumentation freizugeben, zu installieren und zu starten.



Ich habe mich vollständig mit Design, Auswahl der Ausrüstung und Netzwerktopologie, Installation und Design befasst (ich selbst habe das erste Projekt in AutoCAD durchgeführt und zum ersten Mal Kabel in der Einrichtung gezogen), und Lech hat alles übernommen, was mit dem Server zu tun hat, zurück und DB.



Viele glaubten nicht an unseren Erfolg und stellten uns keine spezifischen Aufgaben, es klang ungefähr so:



  • Ziehen Sie die Daten aus den Zählern
  • irgendwo anzeigen


Wir hatten zunächst eine Vorstellung davon, wie dies funktionieren sollte. Umriss unsere Mindestanforderungen für das, was wir erreichen wollen:



  • Wir müssen Messwerte von Wärmezählern, Kalt- und Warmwasserzählern und Stromzählern sammeln
  • Empfangen Sie Daten von allen Temperatursensoren in Wohnungen
  • Steuern Sie die Temperatur in der Wohnung mit diesem Sensor und den Einstellungen, die der Mieter vornehmen wird
  • Der Mieter muss über ein eigenes persönliches Konto verfügen, auf dem der Mieter Daten zu seinen Wohnungen erhält: Diagramme der Messwerte, Rückmeldungen der Verwaltungsgesellschaft, Temperaturregelung
  • Administratoren müssen über eine Webanwendung mit allen Systemdaten, Alarmen, Benutzern und Analysen verfügen


Innerhalb eines Monats haben wir alle vorgefertigten Lösungen ausprobiert, die wir auf 20 Seiten der Google-Suche gefunden haben. Jede Lösung hatte eines oder mehrere der folgenden Probleme:



  • Keine geteilte Authentifizierung
  • Es gibt keine Möglichkeit, eine sichere API für die gesammelten Daten zu erstellen
  • Design aus den 90ern
  • schwache Leistung
  • Geringe Anpassungsstufe der Backend-Logik
  • inakzeptable Preisgestaltung für die Lösung der ausgewählten Aufgabe


Mein Bauch sagte uns, dass wir nicht besser wären als unsere Konkurrenten, wenn wir eines dieser Systeme verwenden würden. Was uns auf einen anderen Weg führte, einen schönen Weg. Wir haben den Weg eingeschlagen, unser System und Produkt in der besten Sprache der Welt, Java oder EasyModbus, zu schreiben. Und als wir den Code leicht modifizierten und die Konsole zwangen, zu unserer Freude einen Knopfdruck zu melden, gab es einfach keine Begrenzung. Auf dem Heimweg konnten wir uns nicht beruhigen und diskutierten, wie viele Möglichkeiten es uns geben könnte! Wir werden unser eigenes SCADA mit einer schönen Webanwendung und einem Smart Home erstellen. An diesem Abend haben wir uns Pläne für das kommende Jahr gemacht. Aber alles war noch vor uns ...



Wir fingen klein an und hatten einen Monat später die in FBD geschriebene Temperaturregler-Software fertig. Unser Backend-Stack war Java 8 + MySQL. Bald waren die Klassen bereit, mit unseren frei programmierbaren Steuerungen zu arbeiten. Einen Monat später haben wir einige unserer Backends und ein Gateway, das Wärmezähler mithilfe des M-BUS-Protokolls abgefragt hat, erfolgreich getestet. Ich habe gelernt, wie man mit MySQL arbeitet. Wir fingen an, alle empfangenen Daten in die Datenbank zu schreiben. Um die Messwerte von Stromzählern über die RS-485-Schnittstelle abzulesen (SPS passte nicht zu uns), haben wir aus den Anfangsdaten des USB-Port-Monitors ein Reverse Engineering-Protokoll erstellt.



Unsere Programmiererfahrung war zu dieser Zeit ein paar Monate, jetzt schauen wir uns das an - Blut kommt aus unseren Augen. ABER dieser Scheißcode hat funktioniert - es ist ein Wunder. Wir sind sehr motivierte Leute und streben mit schrecklicher Kraft nach Wissen. Wir hatten großes Glück und alle Schwierigkeiten traten allmählich auf: Die ersten Probleme mit Multithreading und der Datenbank - und wir entdeckten c3p0 für uns selbst, eine enorme Abhängigkeit - wir lernten, wie man mit Maven arbeitet, Probleme mit der Leistung beim Lesen aus der Datenbank - und das wussten wir nicht In solchen Indizes wurde jede empfangene Information im Projekt angewendet.



Um den Behörden die Ernsthaftigkeit unserer Absichten zu zeigen, haben wir einen Stand zusammengestellt, der die Arbeit unseres Systems im ganzen Haus demonstriert. Wir hatten 20 Temperaturregler, 150 Temperatursensoren, 60 Wärmezähler (so viel wir konnten), 2 MBus-Gateways, einen Router und 16 Router. Wir haben das FTP-Kabel nur 2 Tage lang gecrimpt. Als Ergebnis wird der Stand zusammengebaut, die Software konfiguriert, das Modell der Weboberfläche gestartet - der Regisseur kommt, um die Arbeit zu beobachten.





Erster Stand



Alles pfeift, relushushki klickt, alles sofort ausarbeitet, Protokolle laufen, Daten von Geräten werden korrekt erfasst. Wir haben Designer Vova, Systemadministrator Yura und 3 Installateure in unser Team aufgenommen. Der Entwicklungs-, Design- und Installationsprozess erfolgte parallel. Während die Jungs die Wände jagten und die Kabel verlegten, erstellte der Designer Projekte und Schaltpläne, während die Platinen installiert wurden, und wir testeten neue Funktionen, während die Software entwickelt wurde - das Server-Rack wurde zusammengebaut.



Infolgedessen haben wir ein halbes Jahr gebraucht, bis 144 Wohnungen in das System integriert waren und die ersten Benutzer, denen wir persönlich QR-Codes für die Registrierung ausgehändigt haben. Wir wollten hier jedoch nicht aufhören. Unsere letzte Aufgabe bestand darin, eine für BMS geschärfte IoT-Plattform zu schaffen, die später auf die Integration von technischen Objekten (Kessel, Heizpunkte, Rückseiten und Industrien) und intelligenten Häusern ausgeweitet wird.



Wir haben das nächste Jahr damit verbracht, unser MVP zu überarbeiten und verschiedene Funktionen hinzuzufügen. Diesmal hatten wir einen Plan, Architektur, noch größere Ambitionen und frisches Blut - wir stellten 2 Studenten ein. Der erste Student, Yarik, arbeitete am Backend unseres Produkts, und der zweite, Sashka, arbeitete an Arduino und anderen Einplatinencomputern für ein Smart Home.



Wir haben den UD- und BMS-Markt aktiv gepflegt: Wir haben mit potenziellen Kunden gesprochen, Ausstellungen besucht und uns mit Wettbewerbern verglichen. Irgendwann wurde uns klar, dass das, was wir geschaffen haben, ein Phänomen für den ukrainischen Markt ist und keiner der potenziellen Wettbewerber etwas Ähnliches anbieten kann, das wir anbieten können. Wir haben ein skalierbares und anpassbares BMS-System mit einem leistungsstarken Alarmbestätigungs- und -verwaltungssystem, API und Treibern für die beliebtesten Messgeräte in der Ukraine, die wir an jeden Kunden anpassen können. Wir wollten aus unserer Firma ausbrechen und uns selbstständig machen.



Erster Erfolg und sofort eine Pfanne ins Gesicht



In den ersten Erfolgspaaren implementieren wir bereits 3 Objekte (derzeit gibt es 2 Kesselhäuser, 4 Heizpunkte, 4452 Einheiten verschiedener Messgeräte, Daten von 1164 Wohnungen), alles ist in Ordnung, Anwendungen liegen nicht herum, die Ausrüstung verhält sich sehr gut, Installation auf einer Höhe, alles ist cool, ich und das Team warten auf Preise und Boni ... aber stattdessen nur "Egegey Jungs, tolle Leute, DANKE!".







Dann begann Folgendes: Es gibt kein Geld, es finanziert nicht, aber das Produkt muss fortgesetzt werden, es ist notwendig, Branding, Anweisungen usw. zu entwickeln. Um ehrlich zu sein, wir waren vom Erfolg überwältigt (und für uns war es ein Wow-Erfolg, die Jungs, ein Maschinenbauingenieur und ein Maschinengewehrschütze, haben durch Ausbildung ein ziemlich großes System implementiert) , streikten wir weiter, jammerten, schnitten aber weiter… Gleichzeitig optimierten sie das System ständig für Hardware, suchten nach Rabatten und optimierten Topologien, um die Kosten zu senken.



Infolgedessen verlässt Director # 1 die Firma des Entwicklers, ich gehe auch mit dem Team, unser Produkt bleibt an den alten Standorten, es gibt keine neuen Standorte, aber wohin soll es gehen? Was zu tun ist? Wir waren so in der Entwicklungsroutine gefangen, dass ich den Moment des richtigen Spielraums (wem gehört was, wessen Software, welche Rechte zur Nutzung der Software), der Werbung und anderer Momente, die für das erfolgreiche Bestehen des Produkts so notwendig sind, verpasst habe. Ich werfe alle Momente, die mit der Entwicklung verbunden sind, und stürze mich in die Marktforschung, um Kunden zu finden, und ich verstehe, dass unser Produkt sehr spezifisch für Entwickler ist, nicht jeder braucht es - alle Entwickler haben einen Slogan, der für weniger Geld gebaut wurde - ich habe mehr Geld.



Dann erscheint mein Direktor und bietet an, ein Unternehmen zu gründen, dessen Gründer er und sein Partner sein werden. Gleichzeitig sind angeblich mein Team und ich in seiner Hälfte des Unternehmens (50%). Gemäß den Vereinbarungen, die WIR (er, ich und das Team) treffen, werden wir alles entscheiden, was uns betrifft Weiterentwicklung des Produkts, um zu akzeptieren, wie und wohin man sich bewegt (nun, zwischen uns Mädchen, nirgends erscheint es in den Zeitungen). Ich stimme verzweifelt zu, ich sage dem Team, Leute, wir haben einen Investor gefunden, bla bla, aber wir gehören nicht zu den Gründern, und zuerst bekommen wir winzige Gehälter (na ja, wie ein Startup, wie sie mir sagten), wir senken die Kosten so weit wie möglich (na ja, ein Startup, das zwei Jahre gedauert hat) Jahre, nichts so lala Startup). Die Jungs vom Team sagten: "Vielleicht ist es nicht notwendig, es riecht alles seltsam.", Aber ich brenne (ich habe Schulden für die Gehaltskasse, ein zweites Kind und andere Ausgaben), ich verstehe, dass ich um jeden Preis weitermachen muss.



Ich treffe mich mit dem Regisseur Nummer 2 und verstehe, dass etwas nicht stimmt, wie könnte es anders sein. Ein paar Treffen fanden statt und ich erkannte, dass Regisseur Nr. 2 in den 90er Jahren ein Programmierer in der Armee war und wirklich in diesem Bereich verwirklicht werden wollte. Er beginnt, uns Diagramme mit dem Platz eines Dispatchers zu zeichnen, mit einem 1C-Server, schöne Wörter zu werfen, das Wort API überall einzufügen, zu bestellen "So notwendig in diesem Moment" Branding und Markenbuchen.



Den ganzen Monat wurden wir von Regisseur Nr. 1 finanziert, vielen Dank an ihn, und mit Regisseur Nr. 2 gab es einen Markt, angeblich hatte er einen heißen Kunden, der bereit ist zu arbeiten.



Wir haben einen Monat durchgehalten, oder besser gesagt, ich habe durchgehalten. Nur ich habe mit den Direktoren Nr. 1,2 kommuniziert, weil mein Ziel darin bestand, mein Team vor ständigen Besprechungen, ständigen Versuchen, einige Aufgaben zu erledigen, und vor anderer Bürokratie zu schützen. Ich habe immer von Regisseur 2 gehört: „Was machst du? Was machen Sie? “, Antworteten wir:„ Wir haben das Domain-Modell gesehen, LoRa Wan getestet, den Markt in Bezug auf Meinungsführer und den Produktvertriebskanal untersucht, Dashboards für Unfälle und Warnungen entworfen. “Es wurden keine konstruktiven Fragen beantwortet. Ewiges Misstrauen und Unbehagen, wie können Sie weiterhin ein cooles Produkt schaffen?



Eigentlich ist kein Kunde erschienen, und bei einem der Treffen sagte mir Direktor Nr. 2: "Kirill, es ist mir egal, wie viel Sie dieses Projekt bewegen, Sie werden was tun, dann werden Ihnen zwei Direktoren sagen", stand ich auf und antwortete: "Meine Herren, Viel Glück “schüttelte ihnen die Hand und ging.



Gefühle und Gleichgewicht



Viele Menschen kennen dieses Gefühl, wenn Sie einen Job machen, sich dem Maximum hingeben, einen Teil von sich selbst hineinstecken und nicht die richtige Rendite erzielen, obwohl dies der Fall war, sondern sich einfach vor mir und den Jungs versteckt haben. Sie machen diese Arbeit weiter, obwohl Sie verstehen, dass Sie überhaupt kein Geld dafür bekommen, aber Sie können nicht kündigen, weil das Kündigen das gleiche ist wie das Nehmen und Verlassen eines anderen Landes von Freunden und Familie, das Nehmen und Abreißen von einem Teil von etwas Großem , von Bedeutung. Wir haben nicht aufgehört, wir haben angefangen zu brennen, wir haben verstanden, dass es so nicht mehr weitergehen kann. Das ist sehr schmerzhaft.



Ich bin Direktor Nr. 1 für all seine Mängel und Vorteile dankbar. Er hat an uns geglaubt und uns unterstützt. Ich werde mich daran erinnern und ihn immer auch unterstützen. Im Laufe der Jahre sind mein Team und ich sehr nahe beieinander und ich kann es nicht in Worten ausdrücken. Ich verstehe nur, dass ich sie von ganzem Herzen und in diesen Zeiten vermissen werde, wenn wir uns trennen müssen.



Schlussfolgerungen und Ratschläge



Die Schlussfolgerungen, die ich gezogen habe:



  • Nicht zu wissen, dass die Furt nicht ins Wasser geht, besonders wenn die Frage monetär ist. Überprüfen Sie alles, zählen Sie, berechnen Sie den Cashflow, machen Sie keinen Fehler in der Menge an Arbeit und vor allem in der Technologie und Zweckmäßigkeit seiner Anwendung. Egal wie seltsam es ist, mit dem Team zu sprechen und die Strategie nicht zu vergessen, lassen Sie sie roh sein, nicht voluminös, aber sie wird benötigt.
  • , . , . , , , .
  • . .
  • , . , .
  • , , , , , , .
  • , , , . 90% .
  • , №1 2, , , . , , , , 5 , . , , ( , ). — .
  • .




Jetzt sägen wir eine neue Plattform, erweitern die Funktionalität (Hinzufügen von "Homecracy" und Diensten für Anwohner, Analysetools und eine ausgefeiltere Verwaltungsoberfläche und einen Heizraum) und fügen neue Messgeräte und -geräte hinzu.



Gleichzeitig suchen wir einen Kunden und Investoren. Schwierig, viel Arbeit, aber keine Ressourcen. Wir werden die Seite eines Tages starten.



Frieden und Erfolg für alle!



Fortsetzung der Artikelserie:

"Smart Home" in jeder Wohnung eines Wohnhauses oder unser MVP



All Articles