[开源]基于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截图
V0.4.x 版本
1、新增设备模式,可以通过web页面对设备的属性和服务的进行修改;
2、同时支持监测设备属性值,实现变化上报,增加上报及时性;
感兴趣小伙伴可以了解一下https://www.bilibili.com/video/BV1wg41157m9/
占位!!!!! 很漂亮{:victory:} 期待继续更新{:titter:} 赞一个,很不错! 血刃修罗 发表于 2020-9-5 14:16
期待继续更新
兄弟,自己试一下哇,go不需要交叉编译,运行很简单的 很漂亮!golang,加web的gin框架,还有lua脚本,需要看哪些书搞定? 动态实现设备协议的解析,对这个感兴趣,能说下吗? 很漂亮,楼主界面用什么做的? 不错威武! 赞一个,很不错!+1 本帖最后由 Baldwin 于 2020-9-5 15:56 编辑
一号纵队 发表于 2020-9-5 15:00
动态实现设备协议的解析,对这个感兴趣,能说下吗?
你好,我是这么设计的,设备都可以看成是对象,对象只要实现了变量的读写方法,那就可以动态解析了,不知道这么说是否清晰 vtte 发表于 2020-9-5 15:12
很漂亮,楼主界面用什么做的?
前端是Vue+elementUI做的,前端界面是另外一个同事做的,我主要做后端{:lol:} Baldwin 发表于 2020-9-5 15:49
前端是Vue+elementUI做的,前端界面是另外一个同事做的,我主要做后端...
lz给普及下完成这个项目,需要看些什么书?推荐点资料 fengyunyu 发表于 2020-9-5 15:55
lz给普及下完成这个项目,需要看些什么书?推荐点资料
go入门是在b站看的视频 go入门是在b站看的视频-----学到了,也去看看,您学了多久啊 谢谢开源! 蛋定 发表于 2020-9-5 16:29
go入门是在b站看的视频-----学到了,也去看看,您学了多久啊
半年多吧 感谢分享, 这个可以用于自己搭建的物联网开发平台了
赞一个! 试了一下,电脑上运行缺文件配置 又是个全才 qingzhou 发表于 2020-9-6 16:49
试了一下,电脑上运行缺文件配置
是在哪个系统上测试的呢,目前linux和macos上测试上没有问题的 huangqi412 发表于 2020-9-6 18:15
又是个全才
只是一个开源的框架,称不上实际产品,源代码共享出来希望大家一起交流进步{:lol:} VUE的 后台前端库嘿嘿 vue admin 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 上家公司就是用go写,modbus数据采集,用的beego框架 qingzhou 发表于 2020-9-7 12:15
macos系统
./goAdapter
提示文件找不到没关系,那个是串口配置参数,web已经跑起来了,127.0.0.1:8080 Shampoo 发表于 2020-9-7 15:59
上家公司就是用go写,modbus数据采集,用的beego框架
那正好一起交流交流啊,有没有什么经验可以分享的{:lol:} Baldwin 发表于 2020-9-7 19:19
那正好一起交流交流啊,有没有什么经验可以分享的
好的,你们用在哪个行业多?
我们当时是用的CPU是A33,微型数据中心行业的 我把API接口文档整理了一下
在线版本:https://docs.apipost.cn/view/fb942788b167ecb2
增加了在网页上实时显示通信报文,方便调试和分析 兄弟,能不能把依赖包也给打包一份啊,感谢 这类可以编译成桌面型的软件吗?还是只能做服务器+网页型界面。 adda 发表于 2020-9-16 17:42
兄弟,能不能把依赖包也给打包一份啊,感谢
你指的依赖库是什么 Feeling_MCU 发表于 2020-9-16 18:56
这类可以编译成桌面型的软件吗?还是只能做服务器+网页型界面。
没玩过,哈哈 Baldwin 发表于 2020-9-17 09:59
你指的依赖库是什么
各种package adda 发表于 2020-9-17 11:36
各种package
用go mod都可以正常下载的,开发环境可以用goland 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 adda 发表于 2020-9-17 15:09
这些方便打包放上来么,一个个下太麻烦了,感谢
module goAdapter
不用一个一个下的啊,用go mod下,会自动下载的;打包蛮烦的{:lol:} 最近首页新增加了校时服务,支持NTP网络校时和本地校时{:lol:}
Baldwin 发表于 2020-9-19 14:01
最近首页新增加了校时服务,支持NTP网络校时和本地校时
漂亮
贴一个我们的,技术栈是一样的
VAN 发表于 2020-9-20 11:06
漂亮
贴一个我们的,技术栈是一样的
{:handshake:} {:handshake:} {:handshake:} VPN客户端是啥 漂亮,网上也有开源的IOT物联网设备管理,IOT-DC3可以看看 厉害,想学习学习,不知道怎么入手 ITOP 发表于 2020-9-20 14:06
漂亮,网上也有开源的IOT物联网设备管理,IOT-DC3可以看看
开发这个框架目的是想做一款物联网网关,采集设备设备并上报给系统的;iot-dc3更偏向于系统平台 给大神点个赞 Baldwin 发表于 2020-9-20 14:03
VPN客户端是啥
就是个openvpn客户端~ 很漂亮 啊 商用级别了 厉害 设备通过http给服务器发数据?你学多久了? justdomyself 发表于 2020-9-22 22:23
设备通过http给服务器发数据?你学多久了?
目前还没做与服务器通信这部分,后期考虑用mqtt来上报采集的数据;
疫情开始学的,差不多有半年了吧,很多地方还不太懂 justdomyself 发表于 2020-9-22 22:23
设备通过http给服务器发数据?你学多久了?
目前还没做与服务器通信这部分,后期考虑用mqtt来上报采集的数据;
疫情开始学的,差不多有半年了吧,很多地方还不太懂 楼主厉害,我们基于openwrt构建的一套类似的系统,跟你这个很像 为了方便大家比较好的了解和测试框架,写了一个简单的MobusRTU的测试例子。
设备驱动
设备通信
设备变量
变量历史数据
实时通信报文
界面不错支持支持,准备也了解下golang pone1 发表于 2020-9-28 22:57
界面不错支持支持,准备也了解下golang
可以在gitee上star一下{:lol:} 增加了一个小功能,可以将采集设备的数据同步上传至阿里云物联网平台,感兴趣的小伙伴可以试试 很漂亮的作品。我早就有这个需求了苦于不知怎么实现 motata2006 发表于 2020-11-11 23:28
很漂亮的作品。我早就有这个需求了苦于不知怎么实现
一起交流学习,原理其实很简单,就是定时读取设备的数据并上报给系统 不错,go语言做这个很快 针对lua脚本驱动和数据上传做了一个视频介绍,感兴趣小伙伴可以看看
01.gotewayLua编写设备驱动 https://www.bilibili.com/video/BV1pr4y1F7zU/
02.goteway上报服务-阿里云https://www.bilibili.com/video/BV1FA41177j4/ 支持楼主,有机会找楼主做个透传转发测试下{:victory:} mndsoft2012 发表于 2020-11-22 10:28
支持楼主,有机会找楼主做个透传转发测试下
可以把需求说说,看看是否能满足你要求 mark。。。 Baldwin 发表于 2020-11-23 16:25
可以把需求说说,看看是否能满足你要求
就是想实现现场网络设备作为客户端模式主动连接到服务器,连接并上报自己的 ID,服务器透明不做转义转发给PC或AP(即不做协议解析,不管你是modbus还是私有协议)。相反PC或AP请求一样。当然,设备注册,用户注册这些都是基本要有的。
也是初步想法,具体等我回头画个大致需求,这个应该是目前大部分云服务器的基本功能吧。 请教楼主,用的啥数据库? mndsoft2012 发表于 2020-11-23 17:43
就是想实现现场网络设备作为客户端模式主动连接到服务器,连接并上报自己的 ID,服务器透明不做转义转发 ...
哈哈,目前这套框架是准备做物联网网关的,不是作为云服务数据转发的;但是你也可以试试做做看,代码是开源的呢 armku 发表于 2020-11-23 19:00
请教楼主,用的啥数据库?
你好,目前没有放数据库,目前主要运行在嵌入式设备上 用lua实现了DLT645-2007协议中读数据的例子(读取三相电表的电压、电流、功率等变量并上报阿里云平台),感兴趣小伙伴可以看看https://www.bilibili.com/video/BV1Bv411t7QP/,请大家多提提意见{:smile:} Baldwin 发表于 2020-11-25 20:43
用lua实现了DLT645-2007协议中读数据的例子(读取三相电表的电压、电流、功率等变量并上报阿里云平台),感 ...
视频中的lua脚本例子 https://www.bilibili.com/video/BV18T4y1N7Bx/
最近增加了csv导入解析功能,支持批量导入设备;另外web首页标题可以自行修改了 为了更方便项目运维和调试,增加了备份和恢复功能,欢迎大家提出建议。
视频地址:https://www.bilibili.com/video/BV15f4y1s7mm/ 做了个和lz类似的家庭物联网中心,基于beego、mqtt和websocket构建
视频:https://www.bilibili.com/video/BV1ip4y1t7st/ FireBrain 发表于 2021-4-13 16:13
做了个和lz类似的家庭物联网中心,基于beego、mqtt和websocket构建
视频:https://www.bilibili.com/video/ ...
嗯嗯,你这个有点类似物联网平台侧的应用了;我写的这个偏向于协议解析和传输,比较简单一些; FireBrain 发表于 2021-4-13 16:13
做了个和lz类似的家庭物联网中心,基于beego、mqtt和websocket构建
视频:https://www.bilibili.com/video/ ...
实际运用中,Mysql存不了这么大量的iot设备的数据, mqtt建议自搭emq,要么直接阿里云,百万条/月内都是免费的. 要是存海量的物量网数据还是时序数据好用,比如influxdb. slzm40 发表于 2021-4-16 19:56
实际运用中,Mysql存不了这么大量的iot设备的数据, mqtt建议自搭emq,要么直接阿里云,百万条/月内都是免费 ...
家庭用没多大数据量 新增了上报设备数据到华为云Iot物联网平台,欢迎多提意见!
使用视频https://www.bilibili.com/video/BV1Vf4y1W7ch/ 新增了智能空开设备驱动的对接:https://www.bilibili.com/video/BV1Kp4y1t7yK/;同时演示了如何在阿里云下发命令给设备,具备上行和下行通信;感兴趣的小伙伴可以了解一下,欢迎大家指出问题 为了满足物联网场景多样化需求,增加了开关量输入和开关量输出通信,方便对接一些类似烟感、开关报警等设备;
感兴趣的小伙伴可以看一下使用视频:https://www.bilibili.com/video/BV1ih411v7QX/;如果觉得不错,大家多多鼓励,gitee右上角点个Star吧,https://gitee.com/my_iot/goAdapter 支持开源! 感谢楼主分享 界面舒雅大方看起真不错 新增加了风机盘管控制器驱动,感兴趣的小伙伴可以看看;http://www.opengw.cn/col.jsp?id=104
不错,谢谢 学习,这个能不能部署局域网里面 NM2012 发表于 2021-7-4 10:14
学习,这个能不能部署局域网里面
可以的啊,但是这个不是物联网平台哦 福州格控以太网IO模块驱动上线了,http://www.opengw.cn/nd.jsp?id=13#_np=104_450;有需要的小伙伴可以自行下载测试
请教LZ, 这个错误是什么原因?试了在debian, 树莓派 raspbian上都会有此提示,区别是GOARCH一个是amd64,一个是arm。network.go:76 getNetInfor err,not support GOOS(linux) and GOARCH(amd64) ahfong2006 发表于 2021-7-17 08:20
请教LZ, 这个错误是什么原因?试了在debian, 树莓派 raspbian上都会有此提示,区别是GOARCH一个是amd64,一 ...
你好,这个问题不影响正常使用,应该是参数设置-网络设置里面的网卡名字设置不正确造成的;我来优化一下;在浏览器输入127.0.0.1:8080可以正常访问就没问题 很不错,支持一下 做的很好 web界面 很漂亮 ,感谢分享 maimaige 发表于 2021-7-21 14:29
做的很好 web界面 很漂亮 ,感谢分享
多多提意见哈,https://gitee.com/my_iot/goAdapter/releases可以下载windows版本体验一下 对应 开发环境,开发工具,可以发下吗 qq11qqviki 发表于 2021-7-21 18:48
对应 开发环境,开发工具,可以发下吗
开发环境你可以选择goland或者vscode,开发环境搭建你参考百度上golang环境搭建就可以; 录制了新的视频
10、openGW对接华为Iot平台,测试数据上报和命令下发
https://www.bilibili.com/video/BV1FM4y1T7em/
欢迎大家多多提出意见 方便大家快速验证,录制了openGW通过modbusSlave软件测试ModbusRTU视频,感兴趣小伙伴可以看看
https://www.bilibili.com/video/BV1GU4y1H7KZ/ 新增上报设备数据至EMQ,感兴趣小伙伴可以看看,欢迎指出问题
12.openGW对接EMQ,通过MQTT协议上报数据和命令下发
https://www.bilibili.com/video/BV1My4y1V7L6/ 楼主做的goAdapter设备网关真棒! cc2666 发表于 2021-8-14 10:14
楼主做的goAdapter设备网关真棒!
过奖了,gitee上有编译好的可执行文件,欢迎一起交流https://gitee.com/my_iot/goAdapter/releases/V0.3.2 新增工讯科技的裂缝计驱动,http://www.opengw.cn/nd.jsp?id=14#_np=104_450,欢迎试用
页:
[1]
2