利用爱星物联服务脚手架实现定制服务

2024-06-20 安信可科技 微信公众号
物联云平台,安信可科技 物联云平台,安信可科技 物联云平台,安信可科技 物联云平台,安信可科技

hello,小伙伴们,爱星物联云平台开源已发布一段时间了,这篇文章《爱星物联开源版后台定制开发简介》介绍了爱星物联开源版的后台定制开发介绍。


可能有人会说,这纯理论的内容,如果没有深入去了解源代码和相关工具,可能理解起来还是云里雾里,还是没法下手定制开发吧?


别急,理论指导实践来了。本文介绍基于API脚手架和微服务脚手架构建自定义的对应服务,以及自定义服务怎么与爱星物联IoT平台服务进行交互(内容属于下图红色线框部分)。



为了方便演示和理解,先以一个最简单的需求为例:


目标:给平台增加一个产品功能项告警配置功能。

场景设想:一个可充电电池版设备,当电量过低时,需要在平台端判定告警,而告警阈值因用户而异,数值各有不同。

需求:实现告警配置(备注:判定告警和记录告警的逻辑不在演示范围),后台需提供告警阈值的增删改查接口。


如何实现上述功能?按照下面的流程走一遍试试。


01 创建数据库、数据表

经过简单梳理设备状态的相关内容,可在设备库iot_device下创建数据表t_iot_device_alarm_config,数据表字段内容整理如下:

其中dev_id、dpid两列创建唯一索引,创建完成后可进入下一步。


02 数据库操作代码生成

在爱星物联IoT平台中,所有配置类业务全部采用了MySQL数据库。


    -Go语言的MySQL数据库ORM相关的框架,开源的有很多,功能基本相同。平台使用了在国内备受欢迎的数据库ORM框架gorm及其配套的gen代码生成工具。


    -gen工具有定制部分功能,主要是对特定列名、驼峰方式,MySQL部分数据类型转换做了特定修改定制,代码已开源。


后台的小伙伴们可以到https://github.com/ubases/gen找到定制的仓库。
这个工具有打包exe,建仓库代码中的tool/mysql-to-model/gentool.exe,windows下的开发者可以直接使用,linux下的开发者可从源码仓库中下载gen代码编译工具。

===================================================================

    iot_device数据库对应的ORM包,在路径iot_model/db_device下,进入该目录后,可看到有gentoo.bat文件,打开该文件,内容如下:

    rem 生成整个库
    ..\\..\\tool\\mysql-to-model\\gentool.exe  -dsn "root:iLmz8sCXjkTYuh@tcp(192.168.5.56:3306)/iot_device?charset=utf8mb4&parseTime=True&loc=Local"  -outPath  orm -modelPkgName model
    rem 生成单元测试加 -withUnitTest true
    rem 生成某个表,后边加 -tables {table name}

===================================================================

将其中的数据库用户名、密码、IP、端口部分改成实际部署环境的参数,然后执行gentoo.bat.如果环境和参数配置都正确,那么会在model和orm子目录下,会生成很多go文件。仔细观察,会发现,这两个子目录新生成1个名为


    t_iot_device_alarm_config.gen.go的文件,这个2个文件就是我们新增加的表

    t_iot_device_alarm_config的所有公共代码。


其中model目录的t_iot_device_alarm_config.gen.go里边包含

t_iot_device_alarm_config表对应go结构体及映射关系.

orm目录的t_iot_device_alarm_config.gen.go里边包含该表的常用增删改查操作方法。

Model目录下的model包比较好理解,orm目录下的orm包,每个表的操作方法一样,不过只需要熟悉掌握其中的1个表的所有方案,即可掌握orm包下所有方法的用法。


03 创建自定义服务骨架

在了解爱星物联API和微服务脚手架的源代码结构后,开源仓库中的iot_demo_api_service是API的脚手架,自定义API服务可以基于这个脚手架进行开发。


仓库中的iot_demo_service是微服务的脚手架。

  

爱星物联IoT平台有一条未明确说明的规则,Web、APP、小程序等的入口都是API类的服务,该类API服务对外提供http/websocket+json接口;API调用内部服务以及内部服务之间,全部是基于grpc+protobuf的接口。


为了演示需要,按照这个规则,基于iot_demo_api_service和iot_demo_service服务分别拷贝整个工程目录到新的目录,并改名为iot_my_api_service和iot_my_service(正式服务定制时请用正常名称,这里演示,取名随意),修改后的代码结构见下图(左侧是脚手架,右侧是自定义的API和微服务)。

拷贝完成后,开始进行包名和代码修改。


进入iot_my_api_service目录,挨个将go文件import的所有包名中的包含的iot_demo_api_service全部替换为iot_my_api_service。进入iot_my_service目录,挨个将go文件import的所有包名中的包含的iot_demo_service全部替换为iot_my_service。改为后,进行简单的编译,确保编译通过。


04 微服务和API代码生成和完善

开源仓库中,类似iot_{XXX}_service的目录中,都是一个个服务。这些服务结构看起来是不是很整齐的样子,那是因为大部分增删改查之类的代码、部分实体、及RPC接口都是用工具生成,上一步用到的脚手架部分代码也是这样生成的。


代码生成工具在tool/mysql-to-service路径下。具体的用法可以参考README.md文件。


    修改config.yaml配置文件

执行gen.bat

打开gen.bat文件,并修改为如下内容:

后边--tableName 后边加表名,也就是第一步创建的表的名字。


修改后运行,就会在gen目录下,生成如下目录结构的文件。

注意到上面有个proto目录,工具生成了2个文件:


iot_device_alarm_config_model.gen.proto

iot_device_alarm_config_service.gen.proto。这2个文件里边有定义grpc接口和消息结构。


本次生成的代码,感兴趣的开发者们可以仔细看看代码结构,这里不贴代码介绍了。


执行gengo.bat

这一步依赖上一步生成proto文件,这一步的目标是利用protoc工具将proto文件生成go语言代码。

这一步比较简单,不需要修改gengo.bat文件,执行执行即可。执行完成后,会在protosService下生成对应的go代码,这个例子生成了4个文件:


iot_device_alarm_config_model.gen.pb.go

iot_device_alarm_config_model.gen.pb.micro.go

iot_device_alarm_config_service.gen.pb.go

iot_device_alarm_config_service.gen.pb.micro.go

将这4个文件拷贝到iot_proto/protos/protosService路径下。


代码拷贝

将gen目录下的convert、entitys、handler、service目录整体拷贝到iot_my_service下,覆盖原来的文件。覆盖后的目录文件结构如下所示:

将entitys下的文件iot_device_alarm_config_entitys.gen.go拷贝到

iot_my_api_service/controls/system/entitys下(这里演示放到了system模块下,实际定制开发中请根据实际需要放到controls下的子模块中)。


完成iot_my_service服务

    打开iot_my_service/handler/register_handler.go文件,把刚生成的handler注册进去。


    ●进入bin/conf/open,复制一份iot_demo_service.yml,将其改名为iot_my_service.yml,并修改配置文件中的内容。重点是logfile和database下的内容,注意修改正确。


    ●打开源代码

    iot_my_service/config/config.go,修改配置文件为iot_my_service.yml。


    ●原来demo中的表config_dict_type在iot_config数据库,现在切换到了iot_device数据库,因此,需要删除掉原来config_dict_type相关的内容。


    ●进入

    iot_common/iotconst/service_name.go,给服务定义一个常量IOT_MY_SERVICE,并取个服务名,其它服务会根据这个服务名去微服务注册中心找到地址信息。并在main.go中将服务名修改为新取得名称,即将iotconst.IOT_DEMO_SERVICE修改为iotconst.IOT_MY_SERVICE。


    ●至此iot_my_service全部改造完成,可直接编译运行。


    完成iot_my_api_service服务

    ●定义rpc客户端。进入rpc目录打开globalService.go,修改为如下内容:



    ●进入iot_my_api_service/controls下,实现HTTP接口,这块目前没有代码生成工具生成,可以仿照basedata开头的文件,实现自己的api和service。代码中可以使用上一步创建的客户端接口,类似调用本地函数类似,调用接口方法。关于这块的代码生成,后续可能会推出。


    ●打开iot_my_api_service/router/router.go,注册新实现的模块的路由。如果共用demo提供的system则不需要重复注册。


    ●仿照iot_my_service添加配置文件。


    ●修改config.go,将配置文件名称改为第4步添加的配置文件。


    ●至此iot_my_api_service全部改造完成,可直接编译运行。

经过以上步骤就完成了微服务和API服务代码的基本定制,通过API接口调用微服务实现告警配置的增删改查。其中基于脚手架的配置步骤有点多,但不复杂,熟练了这个过程是很快的,各位开发者小伙伴来试试吧~

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由Ray转载自安信可科技 微信公众号,原文标题为:利用爱星物联服务脚手架实现定制服务,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

【经验】如何用NB-IoT模组EC系列了解LwM2M协议并接入云平台

安信可本文将介绍如何用NB-IoT模组EC系列了解LwM2M协议并接入云平台,LwM2M作为一种轻量级的、标准通用的物联网设备管理协议,主要面向基于蜂窝的窄带物联网场景下的应用。

设计经验    发布时间 : 2023-06-03

爱星物联社区版安装部署

爱星物联云平台支持多种部署方案,社区版目前只支持单机docker部署安装。本文主要简单介绍一下社区版后台的安装和配置。

设计经验    发布时间 : 2024-11-11

在爱星物联云平台,怎么使用MQTTX工具进行设备调试,排查设备问题?

爱星物联IoT云平台是一款面向智能小家电、环境电器等C端用户领域的通用物联网平台,设备和平台交互主要使用了MQTT协议。

设计经验    发布时间 : 2024-06-20

爱星物联——IoT云平台介绍

本文介绍了爱星物联IoT云平台,该平台专为环境电器与智能家电行业提供一站式智能化解决方案。通过实例展示了空气净化器设备接入的基本原理,并突出了平台的四大亮点:1) 物联网功能全面;2) 支持品类可扩展;3) 低代码开发支持完善;4) 云平台技术可扩展、易定制。这些特性使得爱星物联IoT平台能够帮助客户缩短研发周期,降低成本,快速开发AIoT产品,构建安全稳定且可定制化的解决方案。

产品    发布时间 : 2024-06-24

爱星物联——我用这个配置把云平台搭建起来了

今天给为云平台准备了一台虚拟机,配置很低的那种。服务器配置(建议Centos、Ubuntu)爱星物联云平台采用Golang开发,系统本身对于环境要求不高。主要是基础环境的要求。 可以参考第三方工具系统运行所需要的内存、CPU 和硬盘空间。

设计经验    发布时间 : 2024-06-22

爱星物联如何进行虚拟调试?

本文介绍了虚拟调试的概念和步骤。虚拟调试是在设备还未开发完成时,通过MQTT控制页对控制进行调试的方法。使用步骤包括登录开放平台、切换产品、添加虚拟设备、进入调试页面、选择属性并发送。通过虚拟设备调试可以检查MQTT与服务器的连接是否正常,下发和上报属性是否正确。若控制页已开发完成,还可以检查控制页上属性的变化是否正确。

设计经验    发布时间 : 2024-07-12

爱星物联——功能的添加和删除

本文介绍了爱星物联云平台产品的功能点配置流程,包括如何为不同品类的产品设置标准功能点和自定义功能点。开发者可以根据产品的实际需要添加或删除功能点,并利用平台的MCU SDK进行集成开发。此外,文章还提到了平台配套的APP采用框架+控制面板插件技术,能够自动适配新增、删除或修改的功能点,无需人工干预。

设计经验    发布时间 : 2024-06-29

一文详解爱星物联loT云平台与Google智能音箱对接的方法

爱星物联loT云平台集成了常用的智能音箱语控服务。用户可以通过特定的语音唤醒智能音箱,并说出特定的话语即可实现设备操控。本文主要介绍一下google智能音箱对接,以及爱星物联平台中产品的语控配置。Google的智能音箱对接服务有两种对接方式,平台只集成智能家居action,因此只介绍这种对接方式及其相关配置。

设计经验    发布时间 : 2024-07-08

爱星物联平台后端技术栈,提供成熟、安全、全球化可用的物联网服务

爱星物联云平台,是面向智能设备和智能化企业的 AIoT平台,提供成熟、安全,全球化可用的物联网服务,更是助力客户有效缩短研发周期,降低投入成本,快速开发 AIoT 产品,构建安全稳定且可定制化的 AIoT 解决方案。平台打通了终端产品到上层软件应用全套开发,包含所有安信可模组、设备固件、手机客户端、第三方语音助手、第三方云服务和爱星物联云平台,有助于节省客户对应用层开发的大量投入。

设计经验    发布时间 : 2024-07-11

开发环境(软件/固件)  -  安信可科技  - 版本 1.0  - 2015-10-26 PDF 中文 下载

手机APP如何通过爱星物联IoT物联网控制空气净化器?

本文介绍一下手机APP是如何通过爱星物联IoT物联网控制空气净化器的。爱星物联IoT云平台,是面向智能家电领域的基础物联网平台,可根据不同细分领域和设备品类,在其上构建符合自身产品需求的应用服务。当前平台,为开发者提供产品开发平台,为C端用户提供了iOS APP、安卓APP。

设计经验    发布时间 : 2024-07-06

作为一个平台开发工程师,我如何使用爱星物联IOT云平台?

如果你也是一位平台开发工程师,你需要了解:爱星物联的作为IOT云平台由云管平台、开放平台、APP三部分应用组成,同时打通了短信推送、语音助手、登录、地图等第三方平台,实现与安信可模组的互通互联。如果你需要对平台的业务、架构、开发流程进行系统了解,相信我们的开发者文档可以帮助到您。文档对于平台的服务范围、业务/技术架构、开发流程、业务流程有详细的介绍。

设计经验    发布时间 : 2024-07-06

一文详解使用爱星物联平台完成系统搭建和产品控制,助力有效缩短研发周期,降低投入成本,快速开发产品

爱星物联打通了无线通讯到上层软件应用全套开发,包含所有安信可模组、设备固件、手机客户端、第三方语音助手、第三方云服务和爱星物联云平台。作为面向智能设备和智能化企业的 AIoT平台,爱星物联助力您有效缩短研发周期,降低投入成本,快速开发产品。爱星物联平台的开源版即将发布,本文详解用公版平台完成系统搭建和产品控制的。

设计经验    发布时间 : 2024-05-18

【产品】安信可Ai-WB2系列模组已通过AWS IoT Core认证,支持WiFi+BLE,具有高度安全性

无论智能家居、宠物喂食器还是任何其他物联网设备,在某些时候,用户都需要将设备连接到云端。安信可Ai-WB2系列模组现已通过AWS IoT Core认证,可以直连Amazon Web Services(AWS) 云平台,实现在云端处理和存储数据的能力,用户可以在云端对数据进行分析,同时借助云端的人工智能和机器学习算法实现更智能的决策。

产品    发布时间 : 2023-08-07

爱星物联——真机调试

本文介绍了真机调试的基本步骤,包括进入设备调试页面、切换产品、添加真实设备、等待配网以及进行真机调试。通过这些步骤,可以下发属性、检查功能变化、验证设备在线状态,并确保APP控制页上的属性设置正确。

设计经验    发布时间 : 2024-06-29

展开更多

电子商城

查看更多

品牌:安信可科技

品类:WiFi模块

价格:¥9.3800

现货: 51

品牌:安信可科技

品类:WiFi+蓝牙模块

价格:¥8.5000

现货: 20

品牌:安信可科技

品类:WiFi模块

价格:¥21.8800

现货: 18

品牌:安信可科技

品类:WiFi模块

价格:¥22.1300

现货: 12

品牌:安信可科技

品类:NB-IoT模组

价格:¥17.7500

现货: 10

品牌:安信可科技

品类:雷达模组

价格:¥12.7500

现货: 5

品牌:安信可科技

品类:WiFi+蓝牙模块

价格:¥9.6400

现货: 5

品牌:安信可科技

品类:WIFI模块

价格:¥10.2500

现货: 5

品牌:安信可科技

品类:LoRa模组

价格:¥19.7500

现货: 5

品牌:安信可科技

品类:WIFI模块

价格:¥10.2500

现货: 5

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

暂无此商品

海量正品紧缺物料,超低价格,限量库存搜索料号

服务

查看更多

电子产品OEM制造/ODM研发服务

拥有中等规模的SMT、DIP以及成品组装产线;支持PCBA及成品OEM/ODM代工组装制造;在嵌入式系统、物联网系统等具备专业性量产制造的项目组织和服务能力。

提交需求>

物联网天线方案设计/虚拟天线芯片方案设计

Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。

最小起订量: 2500 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面