找回密码
 立即注册
查看: 24689|回复: 161

[教程] x3p猫盘的led控制系统之让led灯显示网速

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制
: J( g  k& o+ b5 N5 R, \% { 聊一聊x3p的LED控制机制
% ^( g+ X+ q  s/ X% j和用led来显示硬盘温度$ |+ J" Q5 x0 j5 T4 C
让你的RGB灯来指示系统温度
5 `# f. l. X% T) y现在我们可以进一步让led来显示系统网速,且往下看
; H- x3 o& R$ J% _- ]* I需要用到一个python脚本来获取系统的联网状态以及各个io状态
% `7 I' C7 W3 y+ Y! |; Z
  1. import psutil
    * v$ U; o3 h" A" D0 Z0 Y( A
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
% \  x5 I1 h3 R. E- S2 V
  1. {$ L, r- \* ]& z8 L$ Y' j" w  A& b' ~
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    8 m" Z8 y1 S% Y& z6 W! v
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    ' D- f/ V: l0 t! d- k' N1 K
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    ( r; h; q! F6 b/ E
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),8 L4 }4 D* D6 |& I' m5 g4 Q& z
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    2 f# a1 A! z  \9 E
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    $ A: U7 A4 Z1 ?# K
  8. }
复制代码
有了数据就能够处理数据转化为网速了。) Z( Q2 C. P' l. s$ W
批注 2019-10-06 120535.png % w# B* p7 n1 B5 r$ l) v2 x' y# K2 ]
因为网速差别实在太大,所以我用了分级显示的方案:
+ [3 e5 s8 l3 {7 s5 [' H网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
; ^/ K4 V/ @4 z, I7 |网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
* h0 X2 J  u+ |  I. `. @/ h网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
0 C* N' u) w1 F2 g) e
  1. net_led_dn() {) q% {% {! N5 L" Q: L8 R
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx4 O/ T2 g  e+ V. s
  3.     new_rtx=$(cat /root/new.rtx)7 R9 l8 K# u, N. e: t7 T8 \
  4.     old_rtx=$(cat /root/rtx.log)
    8 ~3 Z* A: M( q* B
  5.     rtx=$(expr $new_rtx - $old_rtx)
    0 T) n  `0 n' v7 N; Z/ G
  6.     echo $rtx! A+ t) {# c. N( f& y
  7.     if [ $rtx -lt 1024 ]; then; c4 v7 L% K0 M- x& F. y
  8.                                                                                                                                                                                               ! p% u( i/ m  \! Y2 ?1 b3 g# Q
  9.         rtx_led=$(expr $rtx / 4)
    / [  g* f( z$ q& ]/ g' A9 \! N1 ?
  10.                                                                                                                                                                                              
    , q7 @& s+ N8 u2 S! z" G
  11.         set_led c1 $rtx_led 07 a0 A- Q* e5 N+ ~- a7 Z, l, }
  12.         set_led c2 0 0! K) `' ]6 n. R* I
  13.         set_led c3 0 0
    ' T) P$ f, _0 ~0 |) Q5 U
  14.                                                                                                                                                                                               / |% G$ x3 j, J$ S* i5 l
  15.     elif [ $rtx -lt 1048576 ]; then4 R+ n( G+ {+ S
  16.         rtx_led=$(expr $rtx / 4096), q) ^2 D9 r8 l
  17.         set_led c1 0 0
    ) w( Y/ B, q/ {1 z: [- O2 q# x
  18.         set_led c2 $rtx_led 0
    " `/ H# b. W7 V7 }2 a* x
  19.         set_led c3 0 0# J9 f" }) w/ |, x. t7 }! h9 |
  20.     elif [ $rtx -lt 1073741824 ]; then
    8 b+ V. ^8 T- ?6 ~( W
  21.         rtx_led=$(expr $rtx / 4194304)
    5 c" |! ?  d/ x$ \" q& r1 J
  22.         set_led c1 0 0
    1 f% T" f  t8 \' K
  23.         set_led c2 0 07 ?% W1 ], ]  E- m
  24.         set_led c3 $rtx_led 0
    & f8 I( e1 w7 E
  25.     fi
    4 H# K9 [9 |( C! f$ @8 _, ]! m6 d" g
  26.     echo $new_rtx >/root/rtx.log
    * c9 }+ M3 T+ _, n& ?
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。! b; J- z) y! W: E: V, P" }9 j" o
下面是完整脚本,看附件吧。
! p" f! |- C' O. e6 b* G7 \" q: G一共有五个文件- N  w9 I5 w, K, ]: x
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换; T  z: c2 \; @3 H( D
  2. netspeed.py                 #放在root下
    0 p4 X! L1 C; \6 g" e* ?  L6 _
  3. new.rt                         #放在root下
    # }% B3 p1 W  H2 X6 m$ f
  4. mew.rtx                       #放在root下
    - N, k7 m; b- B' W) H9 g
  5. rtx                              #放在root下
复制代码

3 z( E8 y' g& S; j" B7 T
! i0 ^( @) U5 ]; y- z$ m led_control.zip (1015 Bytes, 下载次数: 114) 3 ]2 T3 u4 w: a- k6 N5 u& ]3 R
解压密码(刮刮乐):chwhsen- e/ M: u  v% S  B5 C

6 G# m6 N# `% [" z- Y# q, C  R/ c! M/ z) Q( ?
2 Y& P7 m' D; d4 c/ }

评分

参与人数 3渣金 +35 经验值 +65 收起 理由
jakc + 10 + 15 很给力!
yzfdy + 10 + 10 很给力!
xxx + 15 + 40 很给力!

查看全部评分

8

主题

50

回帖

320

积分

中级渣柚V1

积分
320
发表于 2019-10-6 12:51:07 | 显示全部楼层
谢谢分享

4

主题

764

回帖

2764

积分

中级渣柚V3

积分
2764
发表于 2019-10-6 13:27:51 | 显示全部楼层
好教程,谢谢分享,

27

主题

133

回帖

408

积分

中级渣柚V1

积分
408
发表于 2019-10-6 13:42:40 | 显示全部楼层
厉害了!!!!1

1

主题

5

回帖

45

积分

初级渣柚V1

积分
45
发表于 2019-10-7 22:12:17 | 显示全部楼层
佩服超级厉害了

12

主题

157

回帖

470

积分

中级渣柚V1

积分
470
发表于 2019-10-7 22:57:46 来自手机 | 显示全部楼层
感谢分享

3

主题

72

回帖

663

积分

中级渣柚V2

积分
663
发表于 2019-10-7 23:15:48 | 显示全部楼层
感谢分享。先收藏了

42

主题

394

回帖

2032

积分

中级渣柚V3

积分
2032
发表于 2019-10-8 07:39:56 | 显示全部楼层
厉害了!

4

主题

40

回帖

243

积分

中级渣柚V1

积分
243
发表于 2019-10-8 08:23:32 来自手机 | 显示全部楼层
牛掰牛掰,厉害厉害
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|矿渣社区 ( 黔ICP备2024020525号-1 )

GMT+8, 2025-6-1 20:19 , Processed in 0.075341 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表