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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制3 v/ }$ t* @5 ~8 x6 u
聊一聊x3p的LED控制机制
% [, ~- Y" ~+ o和用led来显示硬盘温度
, n" P- ^$ S- T! O# c让你的RGB灯来指示系统温度
3 T* [& k* L  z) ^; z/ H0 J现在我们可以进一步让led来显示系统网速,且往下看
8 n! P* T: x8 a0 P" H4 o8 X4 l需要用到一个python脚本来获取系统的联网状态以及各个io状态0 L) D% V% @5 m1 F
  1. import psutil
    6 f2 t( b) {; ~0 q2 C) _
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
) X" Q8 m+ r1 m+ _- }- g% O
  1. {
    " ~  F; X8 ~/ S, K" A6 {9 a# D
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),% m( D' C, g2 T( C" v
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    8 L4 m4 T1 n2 ]2 Q7 f7 ^
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
      t$ e1 S, x; Q' a+ i
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),( r. ]3 M' B  R' s
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),- J8 L* l9 V; M  j6 ]  f
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    2 K  ^& G3 u' |: x- O0 {
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
( U0 D: k" I4 o5 E) T) ~( x5 a 批注 2019-10-06 120535.png
5 q- l/ c* n3 B; o: r' R1 v% S因为网速差别实在太大,所以我用了分级显示的方案:
0 I/ H( G5 A* n. u) G5 i+ Y网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
5 I, g' o  N7 d( M4 S网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
# S  y. ], v/ q网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
" `: n5 A2 E0 c  ?* i4 n% m
  1. net_led_dn() {
    6 Z* a: [$ L4 ?  G  q- ?
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx- f2 _9 d: i. n
  3.     new_rtx=$(cat /root/new.rtx)5 q3 W# ?! i, q$ O8 |4 D
  4.     old_rtx=$(cat /root/rtx.log), ^& U, D' P) x/ z
  5.     rtx=$(expr $new_rtx - $old_rtx)
    8 ^, p2 U' r0 x! P
  6.     echo $rtx$ u4 g" R! ~& b5 A) G6 R# ~: b- F* O
  7.     if [ $rtx -lt 1024 ]; then
    ! v8 G  ~$ @$ Q6 C5 |' c' ^3 p
  8.                                                                                                                                                                                              
    , P" r& ^( n0 x; L8 V: {" e% m
  9.         rtx_led=$(expr $rtx / 4)
      P; K9 r; k' D8 v. F$ [
  10.                                                                                                                                                                                               ! g0 Q8 o  S9 K: e( j
  11.         set_led c1 $rtx_led 0' Y3 `' M; C3 F9 [5 a
  12.         set_led c2 0 0
    6 f9 l+ Z: x$ x, p( n
  13.         set_led c3 0 05 o' ^6 q+ J8 ^$ x* y
  14.                                                                                                                                                                                               8 f% A; z+ E* z
  15.     elif [ $rtx -lt 1048576 ]; then" ?+ s* U) @1 h) {" A  @, m! d9 {
  16.         rtx_led=$(expr $rtx / 4096)
    , L. b4 h% N  j' Q* `6 F% x1 `
  17.         set_led c1 0 0; C! Y' R0 F. S0 J9 D) r% V+ o9 C
  18.         set_led c2 $rtx_led 0
    - b/ w- a  x3 p, n6 v; K% s
  19.         set_led c3 0 0
    ' S9 N9 A2 l$ C" C6 t+ K
  20.     elif [ $rtx -lt 1073741824 ]; then
    - \- ~; b  N/ p2 T, R
  21.         rtx_led=$(expr $rtx / 4194304)
    # v; G! g; b' A$ W" [6 j! j) X
  22.         set_led c1 0 01 [# j2 V5 f7 B4 z
  23.         set_led c2 0 0! Q: L  j( {6 ]& J! T
  24.         set_led c3 $rtx_led 0
    2 }9 N. X$ S# |: Y% S% E
  25.     fi; Q0 C- m& y) J( H+ c
  26.     echo $new_rtx >/root/rtx.log
    $ {7 X. e& P8 f/ Z$ f
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
+ G8 K% ^: V+ a1 x下面是完整脚本,看附件吧。
8 j! M0 [3 l/ i# T4 d4 s. t/ t一共有五个文件7 r. P) e( r6 K: Y3 o
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换
    5 }1 O+ G) j7 ]: b3 q+ D
  2. netspeed.py                 #放在root下
    / n0 ^) G; B: K0 h% J6 u( E
  3. new.rt                         #放在root下) p! n) Q3 i) n" o: V
  4. mew.rtx                       #放在root下
    ) k& N; L# [: Z& h6 M
  5. rtx                              #放在root下
复制代码

! [3 @0 K3 [6 N! Z1 D1 t
  i8 O5 |/ D8 k3 f; o/ B8 O# O led_control.zip (1015 Bytes, 下载次数: 114)
; {" Z7 Y3 q  ]/ |解压密码(刮刮乐):chwhsen7 K1 M( q: t2 K( o$ ~. ^, ?6 e

2 d: O( a3 b: L' T. R6 p; j+ t! b; w8 Q
1 ~. T0 _  q4 B6 ~  z  P

评分

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

查看全部评分

8

主题

50

回帖

320

积分

中级渣柚V1

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

4

主题

765

回帖

2934

积分

中级渣柚V3

积分
2934
发表于 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

主题

395

回帖

2113

积分

中级渣柚V3

积分
2113
发表于 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-12-23 20:13 , Processed in 0.086162 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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