[技术干货] 华为IOT杭州黑客松作品分享:“家事达家电管家”

一、背景和介绍

1、公司/团队介绍

1)公司介绍

江苏天仓星科技发展有限公司,是一家为未来城市生活人群提供家电设备维修和保养服务的互联网+公司,致力于构造售后服务生活数据生态圈,为创造健康、关爱、便捷和舒适的未来城市生活而努力。

2)团队介绍

公司负责人:董圣歌

团队成员:杨 袁同雨 王跃

3)主要产品:

家事达家电管家、智能净水器设备、智能水质检测设备。

 

4)产品优势

家事达家电管家借助物联网智能技术、大数据技术和互联网技术,为家电维修与维护服务注入创新动力,实现经销商服务升级、用户体验升级、服务商响应升级、厂家品牌升级和监管部门保护民生。

2、项目介绍

1)发展现状与问题

image.png

图一 TDS与水质对应关系

 以净水器行业举例,2016年我国城镇居民每百户装机量不足十台,国人的净水观念与日韩、欧美等发达国家地区相比还比较落后,市场发展空间巨大。国家统计局数据显示,2016年我国净水器销售额达到203亿,增速达到40.4%,远超家用电器总体销售额增速8.9%的水平,成为各大传统家电企业的新增长点。家用净水器滤芯需要定期更换,根据使用情况和滤芯功能,多则一年,少则3个月就需要进行售后服务;滤芯更换费用,一般为每年365元,以此计算,售后服务市场规模也将达到每年百亿元。中怡康监测数据在2015年做出预计:从20152020年,净水设备市场将保持45%的年均复合增长率,2020年净水设备规模将超过1280亿元,行业发展潜力巨大。

家电清洗、保养和维修服务蕴藏巨大的市场。但是,目前也面临不同品牌整合难、服务响应不及时、效率不高、服务不标准、用户体验差的问题。

目前净水器市场上经销商门店大部分都是小规模经营,但却要承担销售和服务的双重功能,净水行业是一个需要大量售后服务的行业,经销商精力不足,往往忽视掉售后服务,损害消费者利益,对行业发展起负面影响。净水行业有大小品牌4000余个,经销商频繁更换品牌,存在客户信息管理不善和客户地理位置偏远等问题,导致市场上有大量无人售后保养的“孤儿机”。净水行业作为一个朝阳行业,从销售到售后服务,各个方面都不尽完善,夸大宣传,安装人员无资质,使用假冒配件等问题丛生。作为同时涉水和涉电的家用电器,安装、保养和维修的规划化势在必行。净水行业在我国处于起步阶段,半路出家的厂商和经销商很多,对于这个比较特殊的行业并没有很深的理解,没有形成使用互联网信息化管理工具的习惯,在客户管理和售后服务上做的不尽完美。

2)应用场景

公司家事达产品面向的用户包括家电用户、家电厂商、家电清洗维修保养服务提供商、政府监管部门等,将家电销售与售后数据进行整合和挖掘,可以为不同用户提供定制化的数据价值。例如,对于售后服务提供商,随时可以获知用户的使用情况,定制化的为他们提供净水器滤芯更管提醒、故障自动报修等服务。又如,食品监督部门对于餐厅用水质量是有强制要求的,但是目前鉴于监管难度大、取证难和商家分布广,很难做到有法可依。对于用户来说,售后服务的精准化和标准化也会提高他们的产品体验。

二、项目内容

1、硬件方案

image.png

2 项目方案

传感设备与非联网家电设备实现关联,以传统的净水设备为例,净水器和水质传感器是分离的。我们从出水口的水质变化,就能判断净水器是否正常工作。

image.png

3 水质传感器设备属性

绝大多数用户要求水质传感器易于安装,可以在净水器的出水口或者龙头的出水口进行加装和拆卸。

模块本身对成本较为敏感,整体成本控制在50元以内。

由于模块加装的位置比较随机,难以布线供电,所以传感器模块采用纽扣电池供电,产品设计使用寿命大于3年,要求采用低功耗的软硬件方案并进行系统优化。

1 硬件清单

硬件类型

技术规格

备注

开发板:

EVB_L1\EVB_N1\UNO

l  EVB_L1:

l  主频80MHz

l  DFATA升级

l  支持UDPCoAPLLWM2MMQTTTCP等多种协议

l  发射功率:23dBm±2dBm

l  ARM Cortex-M0 core@51.75MHz

l  Flash:352kB eFLASH

l  RAM:64KB SRAM


DTS探头

l  探针数量:2

l  总体长度:83cm

l  连线接口:XH2.54-2P

l  颜色:黑色

l  其他:防水探头

 


信号处理板

l  输入电压:3.3~5.5V

l  输出信号:0~2.3V

l  工作电流: 3~6mA

l  TDS测量范围:0~1000ppm

l  TDS测量精度:±10% F.S.25℃

l  尺寸:42*32mm

l  模块接口:PH2.0-3P

l  电极接口:XH2.54-2P


 

2、软件方案

 

(1)       传感设备方案

轻量化的LiteOS系统。

(2)       IoT云服务方案

Huawei Ocean Connect平台。

(3)       应用端方案

家事达Web版,家事达APP版。

三、关键源代码解析

/***************************************************

 DFRobot Gravity: Analog TDS Sensor / Meter For Arduino

 <https://www.dfrobot.com/wiki/index.php/Gravity:_Analog_TDS_Sensor_/_Meter_For_Arduino_SKU:_SEN0244>

 

 Created 2017-8-22

 By Jason <jason.ling@dfrobot.com@dfrobot.com>

 

 GNU Lesser General Public License.

 See <http://www.gnu.org/licenses/> for details.

 All above must be included in any redistribution

 

 /***********Notice and Trouble shooting***************

 1. This code is tested on Arduino Uno and Leonardo with Arduino IDE 1.0.5 r2 and 1.8.2.

 2. More details, please click this link: <https://www.dfrobot.com/wiki/index.php/Gravity:_Analog_TDS_Sensor_/_Meter_For_Arduino_SKU:_SEN0244>

 ****************************************************/

 

#define TdsSensorPin A1

#define VREF 5.0      // analog reference voltage(Volt) of the ADC

#define SCOUNT  30           // sum of sample point

int analogBuffer[SCOUNT];    // store the analog value in the array, read from ADC

int analogBufferTemp[SCOUNT];

int analogBufferIndex = 0,copyIndex = 0;

float averageVoltage = 0,tdsValue = 0,temperature = 25;

 

void setup()

{

    Serial.begin(115200);

    pinMode(TdsSensorPin,INPUT);

}

 

void loop()

{

   static unsigned long analogSampleTimepoint = millis();

   if(millis()-analogSampleTimepoint > 40U)     //every 40 milliseconds,read the analog value from the ADC

   {

     analogSampleTimepoint = millis();

     analogBuffer[analogBufferIndex] = analogRead(TdsSensorPin);    //read the analog value and store into the buffer

     analogBufferIndex++;

     if(analogBufferIndex == SCOUNT)

         analogBufferIndex = 0;

   }  

   static unsigned long printTimepoint = millis();

   if(millis()-printTimepoint > 800U)

   {

      printTimepoint = millis();

      for(copyIndex=0;copyIndex<SCOUNT;copyIndex++)

        analogBufferTemp[copyIndex]= analogBuffer[copyIndex];

      averageVoltage = getMedianNum(analogBufferTemp,SCOUNT) * (float)VREF / 1024.0; // read the analog value more stable by the median filtering algorithm, and convert to voltage value

      float compensationCoefficient=1.0+0.02*(temperature-25.0);    //temperature compensation formula: fFinalResult(25^C) = fFinalResult(current)/(1.0+0.02*(fTP-25.0));

      float compensationVolatge=averageVoltage/compensationCoefficient;  //temperature compensation

      tdsValue=(133.42*compensationVolatge*compensationVolatge*compensationVolatge - 255.86*compensationVolatge*compensationVolatge + 857.39*compensationVolatge)*0.5; //convert voltage value to tds value

      //Serial.print("voltage:");

      //Serial.print(averageVoltage,2);

      //Serial.print("V   ");

      Serial.print("TDS Value:");

      Serial.print(tdsValue,0);

      Serial.println("ppm");

   }

}

int getMedianNum(int bArray[], int iFilterLen)

{

      int bTab[iFilterLen];

      for (byte i = 0; i<iFilterLen; i++)

          bTab[i] = bArray[i];

      int i, j, bTemp;

      for (j = 0; j < iFilterLen - 1; j++)

      {

          for (i = 0; i < iFilterLen - j - 1; i++)

          {

            if (bTab[i] > bTab[i + 1])

            {

               bTemp = bTab[i];

                bTab[i] = bTab[i + 1];

               bTab[i + 1] = bTemp;

             }

          }

      }

      if ((iFilterLen & 1) > 0)

        bTemp = bTab[(iFilterLen - 1) / 2];

      else

        bTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2;

      return bTemp;

}

四、产品调试

1、            硬件调试

 

(1)   TDS传感器调试

农夫山泉TDS测量结果:49ppm 小米DTS58ppm 相对误差:18.3%

image.png

Huawei厕所出品自来水:150ppm 小米DTS137ppm 相对误差:8.7%

image.png

最便宜的冰露包装饮用水:21ppm 小米DTS25ppm 相对误差:19%

image.png

通过

(2)  Quectel BC-28模块调试

利用串口调试工具,初始化模块并获得IMEI:867726031075924。

image.png

图4 串口调试BC28模块

 

2、软件调试

1)在线Profile定义

定义产品服务中的属性和命令。
image.png

5 产品profile定义

 

2)在线编解码插件编辑器

新增水质传感上报消息,字段TDS是水水质的TDS值。

新增滤芯更换预警提醒,下发控制命令,改变滤芯更换提示灯状态。

编辑完成后成功部署在线插件。

image.png

6消息解析插件设置

(3)  新增真实设备

查看设备列表状态页,设备提示成功上线。

image.png

7 新建真实设备

 

(4)     上报传感数据

BC28模块串口与开发板串口相连接,观察上线设备的历史数据,可以看到实时更新的TDS数据,表明设备工作正常且数据上报过程成功。

image.png

image.png

image.png

8 数据上报数据

四、产品功能展示

(现场演示)