旧建筑业务和新技术,或创业故事





介绍



我向所有人打招呼,我叫基里尔,我是产品经理或工程师,组织者,工头和技术人员,或者也许我俩都不是,老实说我不知道​​我是谁,但在较短的时间内我设法组建了一个团队开发人员,安装人员,设计师,他们进而设法在IoT领域实施了一个庞大的产品。在本文中,我想与大家分享我们在产品开发中遇到的错误以及在产品开发的法律和合同领域中的错误。



因此,一切都从我离开电梯设备设计工程师的职位开始,到机械工程技术人员的教育,我在城市的一家大型建筑公司找到了工作,担任自动抄表系统和对公寓的热载体供应进行控制的系统管理员,例如公寓楼的智能家居。当时,开发人员具有以下要求:



  • 核算所有公寓设备
  • 根据恒温器原理控制热介质的供应
  • 消费分析
  • 警报和警告
  • 管理公司与所有对象的接口
  • 常驻界面


房屋建造得很大,高20至25层,平均每个部分有280至300套公寓。当时,开发商大约有10座这样的房屋



,开始工作后,我要做的第一件事就是弄清楚已经在客户的建筑工地实施的两个系统是如何工作的。这是两个完全不同的系统:从服务器和现场设备之间的传输协议(一些具有CAN总线,第二个具有Modbus RTU和TCP),到应用程序架构本身(一些具有在云中推出的自编写软件,第二个具有针对每个对象的SCADA)使用本地计算机)。



但是这些家伙的共同点是,他们都是自己的设备(模块,控制器,网关)的制造商,他们以不切实际的高价出售,他们的设备没有任何证书。文档,并且不可能互换。因此,当设备发生故障且这种情况经常发生时,我们不得不以虚高的价格从他们那里购买设备。还有一些与这些同志一起工作的不愉快时刻。



从功能上升级应用程序是不可能的,不是因为价格很高,而是因为他们不能/想要/知道如何计算修订成本,并且他们不需要它。他们经营的业务是维护和更换设备。

我们一直在为软件付费,但是什么软件呢?许可证,根据合同购买软件,软件开发?对于所有问题,只有一个答案-“我们的软件,写字母”。



实际上,所有上述因素导致我建议组建一个开发团队并削减自己类似的东西,但是要使用该国家和欧洲市场上的工厂生产的设备。



最初的决定和协议



因此,我来​​与我的管理层进行协商-1号总监。他提议组建一个团队来进行全周期产品开发-设计-安装-启动-操作。首先,我们同意我们将外包一个后端开发人员-Lech,并将一个Web开发人员和设计师团队外包。我和Lyokha的花费如此之小,以至于想都没想到,但我借此机会却有五个原因:



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


MVP



为了庆祝这一点,我们购买了第一台带有ModBus TCP的西门子Modicon MT221控制器,用了四天的时间用梯形图语言编写了一个程序,在该程序中,当触点闭合时,寄存器从0变为1,我们使用Modbus Poll程序对其进行了测试(大致而言,Modbus TCP客户端),雷哈(Leha)在这里说:

“在该部门,我们被告知使用SCADA系统可以解决此类任务。”

我回答:

“雷哈(Leha),您必须与邪恶搏斗,而不是参与邪恶。

我们决定这样做-Lech试图找到SCADA并从控制器中检索数据并将其存储在某个地方,我将尝试用Java编写程序,当时我只是在学习Java基础课程(我的课程老师知道我会尝试代码...)。



结果,Lech首先通过ModBus TCP从控制器接收了数据,但由于计算机上有4-6个SCAD,因此将其计算机折叠为蓝屏。在Java和5行代码的帮助下,我拔出了数据,Lesha很喜欢它,他投入了Java的世界,我可以自豪地说他成为了一个非常好的专家。



我记得现在,2018年3月10日,我们开始了第一个项目。我们有6个月的时间来编写程序,创建设计,发布设计文档,安装和启动。



我完全从事设计,设备和网络拓扑的选择,安装和设计(我本人在AutoCAD中进行了第一个项目,并且第一次在工厂拉线),Lech负责与服务器相关的所有工作,包括D B。



许多人不相信我们的成功,也没有为我们设定具体的任务,听起来像这样:



  • 从计数器中取出数据
  • 显示某处


我们最初对它应该如何工作有一些看法。概述了我们要达到的最低要求:



  • 我们必须收集热量表,冷热水表,电表的读数
  • 从位于公寓的所有温度传感器接收数据
  • 使用此传感器和房客将要设置的设置来控制公寓中的温度
  • 租户必须拥有自己的个人帐户,租户用户将在其中获得其公寓中的数据:读数图,管理公司的反馈,温度控制
  • 管理员必须拥有一个包含所有系统数据,警报,用户和分析的Web应用程序


在1个月内,我们尝试了在Google搜索的20页中找到的所有现成的解决方案。每个解决方案都有以下一个或多个问题:



  • 无拆分身份验证
  • 无法为收集的数据创建安全的API
  • 90年代的设计
  • 表现不佳
  • 后端逻辑定制程度低
  • 所选任务解决方案的定价不可接受


我的直觉告诉我们,如果我们使用其中一种系统,那将不会比竞争对手更好。这引导我们走了一条不同的道路,一条美丽的道路。我们采取了用世界上最好的语言Java或EasyModbus编写系统和产品的方法。当我们稍稍修改了代码并强迫控制台向我们报告按钮按下的乐趣时,那就没有任何限制了。在回家的路上,我们无法平静下来,并讨论了它可以给我们带来多少机会!我们将使用漂亮的Web应用程序和智能家居创建自己的SCADA。那天晚上,我们制定了下一年的计划。但是一切仍在继续...



我们从小规模开始,一个月后,我们准备好用FBD编写的温度控制器软件。我们的后端堆栈是Java 8 + MySQL。很快,课程就可以使用我们的自由可编程控制器了。一个月后,我们成功地测试了许多后端和使用M-BUS协议询问热量表的网关。了解了如何使用MySQL。我们开始将所有接收到的数据写入数据库。为了通过RS-485接口(PLC不适合我们)从电表读取读数,我们根据USB端口监视器的初始数据制定了逆向工程协议。



当时我们的编程经验是几个月,现在来看吧-鲜血从我们的眼睛中流淌出来。但是这个狗屎代码起作用了-这是一个奇迹。我们是上进心很强的人,他们以可怕的力量为知识而奋斗。我们很幸运,所有的困难都逐渐显现出来:多线程和数据库的第一个问题-我们为自己发现了c3p0,大量的依赖关系-我们学习了如何使用maven,从数据库中读取时出现了性能问题-我们不知道这样的索引,在项目中使用了接收到的所有信息。



为了向当局表明我们意图的严肃性,我们设立了一个展台,以展示我们整个房屋系统的工作。我们有20个温度控制器,150个温度传感器,60个热量表(尽可能多),2个MBus网关,一个路由器和16个路由器。我们仅将FTP电缆压接了2天。这样一来,就完成了支架的组装,软件的配置,Web界面的模拟程序的启动-导演正在观看工作。





第一站



一切呼啸声,依靠ushushki,立即完成所有工作,运行日志,正确收集设备中的数据。我们邀请了设计师Vova,系统管理员Yura和3个安装程序加入我们的团队。开发,设计和安装过程是并行进行的。当伙计们追逐墙壁并铺设电缆时,设计师在安装电路板的同时为他们制作了项目和连接图,并在开发软件的同时测试了其新功能-正在组装服务器机架。



结果,我们花了半年的时间才将144套公寓集成到系统中,并且第一批用户亲自获得了注册QR码。但是我们不想就此停下来,我们的最终任务是创建一个针对BMS完善的IoT平台,之后它将扩展到技术对象(锅炉,加热点,背面和工业)和智能房屋的集成。



第二年,我们重构了MVP并添加了各种功能。这次我们有了一个计划,建筑,甚至更大的野心和新鲜血液-我们雇用了2名学生。第一个学生Yarik在我们产品的后端工作,第二个学生Sashka在Arduino和其他用于智能家居的单板计算机上工作。



我们积极拓展UD和BMS市场:我们与潜在客户进行了交谈,参加了展览,将自己与竞争对手进行了比较。在某个时候,我们意识到我们创造的东西是乌克兰市场的一种现象,而且任何潜在的竞争对手都无法做我们可以提供的类似服务。我们拥有可扩展且可自定义的BMS系统,具有功能强大的警报确认和管理系统,API,以及乌克兰最受欢迎的计量设备的驱动程序,我们可以适应任何客户。我们想脱离我们的公司而继续前进。



第一次成功,立即面对面



因此,在成功的前几对中,我们已经实现了3个对象(目前有2个锅炉房,4个加热点,各种计量设备的4452个单元,来自1164套公寓的数据),一切都很好,应用程序不存在,设备运行良好,安装在高处,一切都很酷,我和团队都在等待奖品和奖金……而只是“ Egegey伙计们,伟大的伙伴们,谢谢!”。







然后开始:没有钱,没有钱,但是产品需要继续,有必要发展品牌,说明等。。。老实说,我们对成功感到不知所措(对我们来说,这是一次令人赞叹的成功,机械工程师和机枪手受教育的家伙实施了一个相当大的系统) ,我们继续进行罢工,抱怨,但继续削减…。同时,他们不断优化硬件系统,寻求折扣和优化拓扑以降低成本。



结果,#1主管离开了开发人员的公司,我也离开了团队,我们的产品仍然保留在旧的站点,没有新的站点,但是该去哪里呢?该怎么办?我们被困在开发程序中,以至于错过了正确的时机(谁拥有什么,谁的软件,什么软件使用权利),促销以及成功存在产品所必需的其他时机。我放弃了与开发相关的所有时间,投入到市场研究中,试图寻找客户,并且我了解我们的产品对开发人员来说非常特定,并不是每个人都需要它-所有开发人员都有一个口号,用更少的钱建造-得到了更多的钱。



然后我的董事出现,并提议创建一家公司,其创始人将是他和他的合伙人,但同时,根据我们(WE,他和我以及团队)的协议,据推测我和我将在公司的一半(50%)中产品的进一步开发,以接受如何移动以及在何处移动(嗯,在我们之间,在女孩之间,文件中没有出现)。我对团队感到失望,我对团队说,伙计们,我们找到了一位投资者,等等,但我们不是创始人之一,而且我们第一次获得微薄的薪水(就像他们告诉我的,就像一家初创公司一样),我们尽可能降低成本(嗯,一家持续了两个年,没有什么一般的启动)。团队的成员说:“也许没有必要,这一切都怪异。”,但是我正在燃烧(我欠薪金基金的债务,第二个孩子和其他费用),我知道我必须不惜一切代价继续下去。



我遇到了2号导演,我知道有些不对劲,又有什么不同。举行了几次会议,我意识到90年代的#2主管是一名军队的程序员,并且真的很想在这个领域成为一名程序员。他开始用调度员的位置,1C服务器为我们绘制图表,抛出漂亮的字眼,在各处插入API字眼,命令“此时此刻非常必要”的品牌和品牌风范。



整个月我们都由1号主管提供资金,非常感谢他,而2号主管有一个市场,据说他有一个热心的客户准备开始工作。



我们像这样坚持了一个月,或更确切地说,我坚持了。我只与1-2号董事进行了沟通,因为我的目标是保护我的团队免遭他们不断开会,不断进行某些任务和其他官僚作风的攻击。我一直听到2号导演的话:“你在做什么?您在做什么?”,我们回答:“我们看到了领域模型,测试了LoRa Wan,在意见领袖和产品销售渠道方面调查了市场,设计了事故和警告显示面板”,没有收到建设性的答复。永恒的不信任和不适,您如何才能继续创造出很棒的产品。



实际上,没有客户没有出现,在2号会议的一位主任中告诉我:“基里尔,我不在乎您为这个项目动了多少,您会做什么,然后两位主任会告诉您。”我站起来回答:“先生们,祝你好运。“与他们握手,离开了。



感觉与平衡



很多人都知道,当您做一份工作时,会感觉到自己投入最大,将自己的一部分投入其中,却没有得到适当的回报,尽管确实如此,但只是对我和其他人隐瞒了。您继续做这项工作,尽管您了解自己根本没有收到任何钱,但您不能退出,因为退出与从朋友和家人到另一个国家的出走,从某件大事中夺走和撕裂是一样的, 重大。我们没有退出,而是开始燃烧,我们开始了解这种情况再也无法继续了。这是非常痛苦的。



我感谢1号主任的所有缺点和优势,他相信我们并支持我们,我会记住这一点,并将一如既往地支持他。多年来,我和我的团队已经变得非常亲密,我无法用言语表达,我只是明白,如果我们必须分手,那么我将全心全意地怀念他们。



结论和建议



我得出的结论是:



  • 不知道福特不会陷入困境,特别是当问题是金钱时。检查一切,计数,计算现金流量,不要在工作量上犯错误,最重要的是,不要在技术和应用上的便利性方面犯错误。与团队交谈有多奇怪,不要忘记该策略,让它变得生硬而不是冗长,但这是必需的。
  • , . , . , , , .
  • . .
  • , . , .
  • , , , , , , .
  • , , , . 90% .
  • , №1 2, , , . , , , , 5 , . , , ( , ). — .
  • .




现在,我们看到了一个新平台,扩展了功能(增加了居民“家庭管理”和服务,分析工具以及更复杂的管理界面和锅炉房),增加了新的计量设备。



同时,我们正在寻找客户和投资者。困难,很多工作,但是没有资源。这些天之一,我们将启动该网站。



所有人的和平与成功!



系列文章的续篇:

公寓大楼的每个公寓中的“智能家居”或我们的MVP



All Articles