Baldwin 发表于 2020-9-5 13:54:59

[开源]基于golang的数据采集器

本帖最后由 Baldwin 于 2020-9-5 13:57 编辑

今年学了一下golang语言,试着开发了数据采集器的软件,代码开源在gitee上https://gitee.com/my_iot/goAdapter,感兴趣的欢迎大家一起交流学习啊
web采用的gin框架,实现了httpserver;同时实现了go调用lua脚本,在不改变主程序的情况下,可以动态实现设备协议的解析,比较方便和灵活。
最后,我也是刚学,很多地方理解比较粗浅,希望大家多多提意见,共同进步!

主要功能:
1、采集设备的变量
2、支持设备在线率和丢包率的统计
3、支持设备的增删查改
4、支持查看设备当前变量和历史数据,曲线显示

部分web截图








Baldwin 发表于 2021-9-15 10:18:25

V0.4.x 版本
1、新增设备模式,可以通过web页面对设备的属性和服务的进行修改;
2、同时支持监测设备属性值,实现变化上报,增加上报及时性;
感兴趣小伙伴可以了解一下https://www.bilibili.com/video/BV1wg41157m9/

Baldwin 发表于 2020-9-5 13:55:16

占位!!!!!

wxws 发表于 2020-9-5 14:11:18

很漂亮{:victory:}

血刃修罗 发表于 2020-9-5 14:16:01

期待继续更新{:titter:}

xiaomu 发表于 2020-9-5 14:19:21

赞一个,很不错!

Baldwin 发表于 2020-9-5 14:20:58

血刃修罗 发表于 2020-9-5 14:16
期待继续更新

兄弟,自己试一下哇,go不需要交叉编译,运行很简单的

fengyunyu 发表于 2020-9-5 14:53:46

很漂亮!golang,加web的gin框架,还有lua脚本,需要看哪些书搞定?

一号纵队 发表于 2020-9-5 15:00:40

动态实现设备协议的解析,对这个感兴趣,能说下吗?

vtte 发表于 2020-9-5 15:12:38

很漂亮,楼主界面用什么做的?

zhiyuan1106 发表于 2020-9-5 15:29:53

不错威武!

2012Ehome 发表于 2020-9-5 15:37:29

赞一个,很不错!+1

Baldwin 发表于 2020-9-5 15:48:33

本帖最后由 Baldwin 于 2020-9-5 15:56 编辑

一号纵队 发表于 2020-9-5 15:00
动态实现设备协议的解析,对这个感兴趣,能说下吗?

你好,我是这么设计的,设备都可以看成是对象,对象只要实现了变量的读写方法,那就可以动态解析了,不知道这么说是否清晰

Baldwin 发表于 2020-9-5 15:49:59

vtte 发表于 2020-9-5 15:12
很漂亮,楼主界面用什么做的?

前端是Vue+elementUI做的,前端界面是另外一个同事做的,我主要做后端{:lol:}

fengyunyu 发表于 2020-9-5 15:55:04

Baldwin 发表于 2020-9-5 15:49
前端是Vue+elementUI做的,前端界面是另外一个同事做的,我主要做后端...

lz给普及下完成这个项目,需要看些什么书?推荐点资料

Baldwin 发表于 2020-9-5 15:57:58

fengyunyu 发表于 2020-9-5 15:55
lz给普及下完成这个项目,需要看些什么书?推荐点资料

go入门是在b站看的视频

蛋定 发表于 2020-9-5 16:29:38

go入门是在b站看的视频-----学到了,也去看看,您学了多久啊

lyping1987 发表于 2020-9-5 20:11:16

谢谢开源!

Baldwin 发表于 2020-9-5 22:53:07

蛋定 发表于 2020-9-5 16:29
go入门是在b站看的视频-----学到了,也去看看,您学了多久啊

半年多吧

foxpro2005 发表于 2020-9-6 09:57:04

感谢分享, 这个可以用于自己搭建的物联网开发平台了

avr-arm 发表于 2020-9-6 10:29:44

赞一个!

qingzhou 发表于 2020-9-6 16:49:48

试了一下,电脑上运行缺文件配置

huangqi412 发表于 2020-9-6 18:15:47

又是个全才

Baldwin 发表于 2020-9-6 18:48:34

qingzhou 发表于 2020-9-6 16:49
试了一下,电脑上运行缺文件配置

是在哪个系统上测试的呢,目前linux和macos上测试上没有问题的

Baldwin 发表于 2020-9-6 18:50:05

huangqi412 发表于 2020-9-6 18:15
又是个全才

只是一个开源的框架,称不上实际产品,源代码共享出来希望大家一起交流进步{:lol:}

richards 发表于 2020-9-6 21:15:59

VUE的 后台前端库嘿嘿 vue admin

qingzhou 发表于 2020-9-7 12:15:44

Baldwin 发表于 2020-9-6 18:48
是在哪个系统上测试的呢,目前linux和macos上测试上没有问题的

macos系统

./goAdapter
2020/09/07 12:13:33 /Volumes/work/code/git/go/goAdapter
{"level":"info","msg":"goteway V0.0.1","time":"2020-09-07T12:13:33+08:00"}
{"level":"info","msg":"set network eth0\n","time":"2020-09-07T12:13:33+08:00"}
2020/09/07 12:13:33 setNetworkParam 1 err
2020/09/07 12:13:33 ethInfo {InterName: HardwareAddr: Mac: IP: Mask: GatewayIP:}
2020/09/07 12:13:33 commSerialInterface.json is not exist
2020/09/07 12:13:33 collInterface.json is not exist

Shampoo 发表于 2020-9-7 15:59:17

上家公司就是用go写,modbus数据采集,用的beego框架

Baldwin 发表于 2020-9-7 19:19:17

qingzhou 发表于 2020-9-7 12:15
macos系统

./goAdapter


提示文件找不到没关系,那个是串口配置参数,web已经跑起来了,127.0.0.1:8080

Baldwin 发表于 2020-9-7 19:19:56

Shampoo 发表于 2020-9-7 15:59
上家公司就是用go写,modbus数据采集,用的beego框架

那正好一起交流交流啊,有没有什么经验可以分享的{:lol:}

Shampoo 发表于 2020-9-8 09:06:37

Baldwin 发表于 2020-9-7 19:19
那正好一起交流交流啊,有没有什么经验可以分享的

好的,你们用在哪个行业多?
我们当时是用的CPU是A33,微型数据中心行业的

Baldwin 发表于 2020-9-8 09:50:02

我把API接口文档整理了一下
在线版本:https://docs.apipost.cn/view/fb942788b167ecb2

Baldwin 发表于 2020-9-10 13:35:31

增加了在网页上实时显示通信报文,方便调试和分析

adda 发表于 2020-9-16 17:42:54

兄弟,能不能把依赖包也给打包一份啊,感谢

Feeling_MCU 发表于 2020-9-16 18:56:04

这类可以编译成桌面型的软件吗?还是只能做服务器+网页型界面。

Baldwin 发表于 2020-9-17 09:59:08

adda 发表于 2020-9-16 17:42
兄弟,能不能把依赖包也给打包一份啊,感谢

你指的依赖库是什么

Baldwin 发表于 2020-9-17 09:59:26

Feeling_MCU 发表于 2020-9-16 18:56
这类可以编译成桌面型的软件吗?还是只能做服务器+网页型界面。

没玩过,哈哈

adda 发表于 2020-9-17 11:36:47

Baldwin 发表于 2020-9-17 09:59
你指的依赖库是什么

各种package

Baldwin 发表于 2020-9-17 13:16:44

adda 发表于 2020-9-17 11:36
各种package

用go mod都可以正常下载的,开发环境可以用goland

adda 发表于 2020-9-17 15:09:01

Baldwin 发表于 2020-9-17 13:16
用go mod都可以正常下载的,开发环境可以用goland

这些方便打包放上来么,一个个下太麻烦了,感谢

module goAdapter

go 1.14

require (
        //deviceAPI v0.0.0
        github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
        github.com/dgrijalva/jwt-go v3.2.0+incompatible
        github.com/eclipse/paho.mqtt.golang v1.2.0
        github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 // indirect
        github.com/gin-gonic/gin v1.6.3
        github.com/go-ole/go-ole v1.2.4 // indirect
        github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 // indirect
        github.com/jonboulle/clockwork v0.2.0 // indirect
        github.com/lestrrat-go/file-rotatelogs v2.3.0+incompatible
        github.com/lestrrat-go/strftime v1.0.3 // indirect
        github.com/mitchellh/mapstructure v1.3.3 // indirect
        github.com/pkg/errors v0.9.1 // indirect
        github.com/robfig/cron v1.2.0
        github.com/safchain/ethtool v0.0.0-20200609180057-ab94f15152e7
        github.com/shirou/gopsutil v2.20.5+incompatible
        github.com/sirupsen/logrus v1.6.0
        github.com/smartystreets/goconvey v1.6.4 // indirect
        github.com/stretchr/testify v1.5.1 // indirect
        github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07
        github.com/tebeka/strftime v0.1.5 // indirect
        github.com/thinkgos/gomodbus v1.5.2
        github.com/yuin/gluamapper v0.0.0-20150323120927-d836955830e7
        github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da
        golang.org/x/net v0.0.0-20200625001655-4c5254603344 // indirect
        golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208
        golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f // indirect
        gopkg.in/ini.v1 v1.57.0
        layeh.com/gopher-luar v1.0.8
)

replace deviceAPI => ../../deviceAPI

Baldwin 发表于 2020-9-19 11:39:55

adda 发表于 2020-9-17 15:09
这些方便打包放上来么,一个个下太麻烦了,感谢

module goAdapter


不用一个一个下的啊,用go mod下,会自动下载的;打包蛮烦的{:lol:}

Baldwin 发表于 2020-9-19 14:01:18

最近首页新增加了校时服务,支持NTP网络校时和本地校时{:lol:}




VAN 发表于 2020-9-20 11:06:23

Baldwin 发表于 2020-9-19 14:01
最近首页新增加了校时服务,支持NTP网络校时和本地校时

漂亮

贴一个我们的,技术栈是一样的

Baldwin 发表于 2020-9-20 14:03:22

VAN 发表于 2020-9-20 11:06
漂亮

贴一个我们的,技术栈是一样的

{:handshake:} {:handshake:} {:handshake:} VPN客户端是啥

ITOP 发表于 2020-9-20 14:06:30

漂亮,网上也有开源的IOT物联网设备管理,IOT-DC3可以看看

Archer_Emiya 发表于 2020-9-20 16:11:01

厉害,想学习学习,不知道怎么入手

Baldwin 发表于 2020-9-20 22:53:32

ITOP 发表于 2020-9-20 14:06
漂亮,网上也有开源的IOT物联网设备管理,IOT-DC3可以看看

开发这个框架目的是想做一款物联网网关,采集设备设备并上报给系统的;iot-dc3更偏向于系统平台

ysu_er 发表于 2020-9-21 14:00:30

给大神点个赞

VAN 发表于 2020-9-22 10:50:26

Baldwin 发表于 2020-9-20 14:03
VPN客户端是啥

就是个openvpn客户端~

wt3333 发表于 2020-9-22 17:09:00

很漂亮 啊    商用级别了   厉害

justdomyself 发表于 2020-9-22 22:23:35

设备通过http给服务器发数据?你学多久了?

Baldwin 发表于 2020-9-22 23:14:36

justdomyself 发表于 2020-9-22 22:23
设备通过http给服务器发数据?你学多久了?

目前还没做与服务器通信这部分,后期考虑用mqtt来上报采集的数据;
疫情开始学的,差不多有半年了吧,很多地方还不太懂

Baldwin 发表于 2020-9-22 23:17:11

justdomyself 发表于 2020-9-22 22:23
设备通过http给服务器发数据?你学多久了?

目前还没做与服务器通信这部分,后期考虑用mqtt来上报采集的数据;
疫情开始学的,差不多有半年了吧,很多地方还不太懂

cw881202 发表于 2020-9-23 09:10:34

楼主厉害,我们基于openwrt构建的一套类似的系统,跟你这个很像

Baldwin 发表于 2020-9-25 15:09:57

为了方便大家比较好的了解和测试框架,写了一个简单的MobusRTU的测试例子。



设备驱动


设备通信


设备变量


变量历史数据


实时通信报文

pone1 发表于 2020-9-28 22:57:52

界面不错支持支持,准备也了解下golang

Baldwin 发表于 2020-9-29 23:18:09

pone1 发表于 2020-9-28 22:57
界面不错支持支持,准备也了解下golang

可以在gitee上star一下{:lol:}

Baldwin 发表于 2020-11-10 16:36:40

增加了一个小功能,可以将采集设备的数据同步上传至阿里云物联网平台,感兴趣的小伙伴可以试试

motata2006 发表于 2020-11-11 23:28:29

很漂亮的作品。我早就有这个需求了苦于不知怎么实现

Baldwin 发表于 2020-11-12 14:40:18

motata2006 发表于 2020-11-11 23:28
很漂亮的作品。我早就有这个需求了苦于不知怎么实现

一起交流学习,原理其实很简单,就是定时读取设备的数据并上报给系统

FireBrain 发表于 2020-11-12 20:48:27

不错,go语言做这个很快

Baldwin 发表于 2020-11-19 16:28:01

针对lua脚本驱动和数据上传做了一个视频介绍,感兴趣小伙伴可以看看
01.gotewayLua编写设备驱动 https://www.bilibili.com/video/BV1pr4y1F7zU/

02.goteway上报服务-阿里云https://www.bilibili.com/video/BV1FA41177j4/

mndsoft2012 发表于 2020-11-22 10:28:08

支持楼主,有机会找楼主做个透传转发测试下{:victory:}

Baldwin 发表于 2020-11-23 16:25:40

mndsoft2012 发表于 2020-11-22 10:28
支持楼主,有机会找楼主做个透传转发测试下

可以把需求说说,看看是否能满足你要求

zhiyuanzhitian 发表于 2020-11-23 16:40:51

mark。。。

mndsoft2012 发表于 2020-11-23 17:43:06

Baldwin 发表于 2020-11-23 16:25
可以把需求说说,看看是否能满足你要求

就是想实现现场网络设备作为客户端模式主动连接到服务器,连接并上报自己的 ID,服务器透明不做转义转发给PC或AP(即不做协议解析,不管你是modbus还是私有协议)。相反PC或AP请求一样。当然,设备注册,用户注册这些都是基本要有的。
也是初步想法,具体等我回头画个大致需求,这个应该是目前大部分云服务器的基本功能吧。

armku 发表于 2020-11-23 19:00:04

请教楼主,用的啥数据库?

Baldwin 发表于 2020-11-23 20:01:52

mndsoft2012 发表于 2020-11-23 17:43
就是想实现现场网络设备作为客户端模式主动连接到服务器,连接并上报自己的 ID,服务器透明不做转义转发 ...

哈哈,目前这套框架是准备做物联网网关的,不是作为云服务数据转发的;但是你也可以试试做做看,代码是开源的呢

Baldwin 发表于 2020-11-23 20:02:35

armku 发表于 2020-11-23 19:00
请教楼主,用的啥数据库?

你好,目前没有放数据库,目前主要运行在嵌入式设备上

Baldwin 发表于 2020-11-25 20:43:51

用lua实现了DLT645-2007协议中读数据的例子(读取三相电表的电压、电流、功率等变量并上报阿里云平台),感兴趣小伙伴可以看看https://www.bilibili.com/video/BV1Bv411t7QP/,请大家多提提意见{:smile:}

Baldwin 发表于 2020-11-25 20:46:49

Baldwin 发表于 2020-11-25 20:43
用lua实现了DLT645-2007协议中读数据的例子(读取三相电表的电压、电流、功率等变量并上报阿里云平台),感 ...

视频中的lua脚本例子

Baldwin 发表于 2021-1-8 21:24:59

https://www.bilibili.com/video/BV18T4y1N7Bx/
最近增加了csv导入解析功能,支持批量导入设备;另外web首页标题可以自行修改了

Baldwin 发表于 2021-4-13 15:56:22

为了更方便项目运维和调试,增加了备份和恢复功能,欢迎大家提出建议。
视频地址:https://www.bilibili.com/video/BV15f4y1s7mm/

FireBrain 发表于 2021-4-13 16:13:14

做了个和lz类似的家庭物联网中心,基于beego、mqtt和websocket构建
视频:https://www.bilibili.com/video/BV1ip4y1t7st/

Baldwin 发表于 2021-4-13 22:06:33

FireBrain 发表于 2021-4-13 16:13
做了个和lz类似的家庭物联网中心,基于beego、mqtt和websocket构建
视频:https://www.bilibili.com/video/ ...

嗯嗯,你这个有点类似物联网平台侧的应用了;我写的这个偏向于协议解析和传输,比较简单一些;

slzm40 发表于 2021-4-16 19:56:51

FireBrain 发表于 2021-4-13 16:13
做了个和lz类似的家庭物联网中心,基于beego、mqtt和websocket构建
视频:https://www.bilibili.com/video/ ...

实际运用中,Mysql存不了这么大量的iot设备的数据, mqtt建议自搭emq,要么直接阿里云,百万条/月内都是免费的. 要是存海量的物量网数据还是时序数据好用,比如influxdb.

FireBrain 发表于 2021-4-17 17:29:18

slzm40 发表于 2021-4-16 19:56
实际运用中,Mysql存不了这么大量的iot设备的数据, mqtt建议自搭emq,要么直接阿里云,百万条/月内都是免费 ...

家庭用没多大数据量

Baldwin 发表于 2021-5-7 08:29:04

新增了上报设备数据到华为云Iot物联网平台,欢迎多提意见!
使用视频https://www.bilibili.com/video/BV1Vf4y1W7ch/

Baldwin 发表于 2021-5-12 18:58:20

新增了智能空开设备驱动的对接:https://www.bilibili.com/video/BV1Kp4y1t7yK/;同时演示了如何在阿里云下发命令给设备,具备上行和下行通信;感兴趣的小伙伴可以了解一下,欢迎大家指出问题

Baldwin 发表于 2021-5-24 22:12:50

为了满足物联网场景多样化需求,增加了开关量输入和开关量输出通信,方便对接一些类似烟感、开关报警等设备;
感兴趣的小伙伴可以看一下使用视频:https://www.bilibili.com/video/BV1ih411v7QX/;如果觉得不错,大家多多鼓励,gitee右上角点个Star吧,https://gitee.com/my_iot/goAdapter

spacekey 发表于 2021-6-2 14:47:09

支持开源!

rube 发表于 2021-6-2 16:01:36

感谢楼主分享

wqy0410 发表于 2021-6-24 11:54:01

界面舒雅大方看起真不错

Baldwin 发表于 2021-7-3 22:39:29

新增加了风机盘管控制器驱动,感兴趣的小伙伴可以看看;http://www.opengw.cn/col.jsp?id=104

fengyunyu 发表于 2021-7-4 09:46:20

不错,谢谢

NM2012 发表于 2021-7-4 10:14:19

学习,这个能不能部署局域网里面

Baldwin 发表于 2021-7-5 20:57:08

NM2012 发表于 2021-7-4 10:14
学习,这个能不能部署局域网里面

可以的啊,但是这个不是物联网平台哦

Baldwin 发表于 2021-7-7 08:42:52

福州格控以太网IO模块驱动上线了,http://www.opengw.cn/nd.jsp?id=13#_np=104_450;有需要的小伙伴可以自行下载测试

ahfong2006 发表于 2021-7-17 08:20:55

请教LZ, 这个错误是什么原因?试了在debian, 树莓派 raspbian上都会有此提示,区别是GOARCH一个是amd64,一个是arm。network.go:76 getNetInfor err,not support GOOS(linux) and GOARCH(amd64)

Baldwin 发表于 2021-7-17 10:12:14

ahfong2006 发表于 2021-7-17 08:20
请教LZ, 这个错误是什么原因?试了在debian, 树莓派 raspbian上都会有此提示,区别是GOARCH一个是amd64,一 ...

你好,这个问题不影响正常使用,应该是参数设置-网络设置里面的网卡名字设置不正确造成的;我来优化一下;在浏览器输入127.0.0.1:8080可以正常访问就没问题

gzwirelesss 发表于 2021-7-17 10:23:33

很不错,支持一下

maimaige 发表于 2021-7-21 14:29:23

做的很好 web界面 很漂亮 ,感谢分享

Baldwin 发表于 2021-7-21 16:23:16

maimaige 发表于 2021-7-21 14:29
做的很好 web界面 很漂亮 ,感谢分享

多多提意见哈,https://gitee.com/my_iot/goAdapter/releases可以下载windows版本体验一下

qq11qqviki 发表于 2021-7-21 18:48:50

对应 开发环境,开发工具,可以发下吗

Baldwin 发表于 2021-7-22 11:19:56

qq11qqviki 发表于 2021-7-21 18:48
对应 开发环境,开发工具,可以发下吗

开发环境你可以选择goland或者vscode,开发环境搭建你参考百度上golang环境搭建就可以;

Baldwin 发表于 2021-7-22 17:43:15

录制了新的视频
10、openGW对接华为Iot平台,测试数据上报和命令下发
https://www.bilibili.com/video/BV1FM4y1T7em/
欢迎大家多多提出意见

Baldwin 发表于 2021-7-28 08:35:04

方便大家快速验证,录制了openGW通过modbusSlave软件测试ModbusRTU视频,感兴趣小伙伴可以看看
https://www.bilibili.com/video/BV1GU4y1H7KZ/

Baldwin 发表于 2021-8-14 09:36:31

新增上报设备数据至EMQ,感兴趣小伙伴可以看看,欢迎指出问题
12.openGW对接EMQ,通过MQTT协议上报数据和命令下发
https://www.bilibili.com/video/BV1My4y1V7L6/

cc2666 发表于 2021-8-14 10:14:18

楼主做的goAdapter设备网关真棒!

Baldwin 发表于 2021-8-14 14:43:27

cc2666 发表于 2021-8-14 10:14
楼主做的goAdapter设备网关真棒!

过奖了,gitee上有编译好的可执行文件,欢迎一起交流https://gitee.com/my_iot/goAdapter/releases/V0.3.2

Baldwin 发表于 2021-9-1 20:50:37

新增工讯科技的裂缝计驱动,http://www.opengw.cn/nd.jsp?id=14#_np=104_450,欢迎试用
页: [1] 2
查看完整版本: [开源]基于golang的数据采集器