采用開源Zabbix+500塊硬件平替5萬(wàn)塊動(dòng)環(huán)檢測(cè)系統(tǒng),實(shí)現(xiàn)UPS、溫濕度、煙霧等數(shù)據(jù)采集、

架構(gòu)展示:

大屏展示:

所需軟件:
Zabbix
Grafana
安裝Zabbix-agent2的采集服務(wù)器
MThings串口調(diào)試軟件
廠家自帶UPS監(jiān)控軟件
USR-VCOM有人虛擬串口軟件
所需硬件:
有人串口服務(wù)器(USR-N510)
自制RS485連接線
所需資料:
科士達(dá)YDC3330 modbus開發(fā)文檔
YDC3330說(shuō)明書
一、安裝、配置串口服務(wù)器
1、硬件安裝
制作UPS所需要的RS485通訊線,我使用了1、2、8,分別是485+、485-、GND地線,而12V是不需要連接的,因?yàn)槲覀冞B接的對(duì)象是UPS,它并不需要我們通過(guò)12V為其供電。
如果我們連接的是溫濕度計(jì),則需要通過(guò)12V為其供電。

YDC3330自帶兩個(gè)RS485接口,其支持菊花鏈連接,所以我使用RS485線一根接一根串起來(lái),這樣外觀美觀。
注意,UPS接線非常危險(xiǎn),注意安全!

串口服務(wù)器只需要將串口模式撥到RS485,并且連接電源、網(wǎng)線、串口線即可

2、網(wǎng)絡(luò)更改
按串口服務(wù)器背面IP地址,登錄,修改IP地址和串口參數(shù)、協(xié)議參數(shù)。
右上角更改語(yǔ)言,左側(cè)更改IP地址、按UPS說(shuō)明書要求調(diào)整串口內(nèi)容,我這里使用的9600:8n1,下方我這里需要使用廠家的UPS軟件測(cè)試,所以使用的TcpServer None,后面使用Zabbix modbus-get的時(shí)候,就需要改成ModbusTCP了

二、解析文檔
1、使用廠家軟件測(cè)試
安裝USR-VCOM有人虛擬串口軟件,這個(gè)軟件的作用可以理解為通過(guò)網(wǎng)絡(luò)將串口無(wú)限延長(zhǎng)。
串口 - 有人串口服務(wù)器 - 虛擬串口

此時(shí)我們使用廠家的UPS軟件,軟件正常運(yùn)行

通過(guò)菊花鏈串聯(lián)的方式,4臺(tái)UPS都上線了,可以搜索到站號(hào)分別為1、5、6、7,這個(gè)后面要用到

2、解析參數(shù)
如何獲取我們需要的參數(shù)呢
假設(shè),我們要獲取A相輸入電壓,查看說(shuō)明書
采用的modbus-RTU報(bào)文格式如圖

功能碼對(duì)照表

A相輸入電壓地址,大小2Byte

按modbus-RTU組合參數(shù),此時(shí)的報(bào)文為?01 04 75 30 00 01 XX XX
01為站號(hào)1
04為功能碼,我們要取的30001在功能碼中為04H讀
75 30為30000的十六進(jìn)制
00 01為讀取一個(gè)寄存器地址,即30001的數(shù)據(jù),同理我們要讀取ABC三相輸入,此處就為00 03三個(gè)寄存器地址
XX XX為校驗(yàn)碼,modbus調(diào)試軟件可以自動(dòng)生成

使用MThings調(diào)試,確認(rèn)我們要獲取的數(shù)據(jù)沒(méi)問(wèn)題

此處發(fā)現(xiàn)廠家說(shuō)明書印刷錯(cuò)誤,印刷運(yùn)行狀態(tài)為30070,實(shí)際測(cè)試為30080

三、配置Zabbix
1、修改串口服務(wù)器為modbus-tcp模式

2、通過(guò)zabbix-agent2獲取數(shù)據(jù)
安裝一臺(tái)主機(jī),并安裝zabbix-agent2,接入zabbix
在zabbix服務(wù)器上通過(guò)命令請(qǐng)求數(shù)據(jù),可以看到數(shù)據(jù)返回正常
zabbix_get -s 172.16.21.5 -k modbus.get[tcp://172.16.10.201:9000,1,4,30000,81]
zabbix_get -s 172.16.21.5 指定請(qǐng)求的客戶端
-k modbus.get 以modbus.get方式請(qǐng)求
tcp://172.16.10.201:9000,1,4,30000,81 串口服務(wù)器IP端口,站號(hào)1,功能碼4,從30000開始請(qǐng)求,請(qǐng)求81個(gè)寄存器數(shù)據(jù)

3、制作zabbix監(jiān)控項(xiàng)
我們采用的方式是一次請(qǐng)求,分段解析
添加監(jiān)控項(xiàng)
制作modbus-get監(jiān)控項(xiàng),按圖片填寫即可
鍵值:modbus.get[tcp://172.16.10.201:9000,1,4,30000,81]
信息類型:文本

添加監(jiān)控項(xiàng)
制作數(shù)據(jù)分類監(jiān)控項(xiàng),從modbus-get監(jiān)控項(xiàng)獲取數(shù)據(jù)
注意類型為:相關(guān)項(xiàng)目
主要項(xiàng)是modbus-get監(jiān)控項(xiàng)

還沒(méi)完,點(diǎn)擊到進(jìn)程中,此處是配置獲取第幾位的數(shù)值,有沒(méi)有倍率關(guān)系,倍率關(guān)系看說(shuō)明書
JSONPath = $[17]自定義倍數(shù) = 0.1

4、制作zabbix報(bào)警項(xiàng)
添加觸發(fā)器
last(/donghuan/ups1yunxingzhuangtai)=5
當(dāng)ups1yunxingzhuangtai值為5時(shí)報(bào)警,5的值在說(shuō)明書中為市電中斷

拉閘測(cè)試,5s內(nèi)收到微信告警

添加監(jiān)控?cái)?shù)據(jù)獲取失敗報(bào)警
表達(dá)式: nodata(/donghuan/modbus.get[tcp://172.16.10.201:9000,7,4,30000,81],30)=1
30秒后無(wú)數(shù)據(jù)進(jìn)行報(bào)警

四、配置大屏
Grafana正常接入Zabbix
添加一項(xiàng),一看就懂


按自己的喜好風(fēng)格制作大屏即可

五、小結(jié)
文章很流暢,但現(xiàn)實(shí)并不會(huì)如此順利。
第一次,使用的串口線有問(wèn)題,導(dǎo)致無(wú)法連接UPS
第二次,廠家給我發(fā)錯(cuò)了文檔,連續(xù)一星期無(wú)法測(cè)試成功
第三次,廠家發(fā)對(duì)了文檔,但是文檔的內(nèi)容錯(cuò)誤,導(dǎo)致獲取的數(shù)據(jù)不正確
半個(gè)月時(shí)間分析協(xié)議,最后接入Zabbix制作大屏僅用了半天而已
最后,Zabbix無(wú)比強(qiáng)大,值得深入學(xué)習(xí)!