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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
chwhsen 发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式 IP:–河南–鹤壁 联通
之前我们你已经说过了led管控机制
( l6 m8 D6 {) f" b8 \% F0 a& m& A! M 聊一聊x3p的LED控制机制% ^' y0 X* }5 H( Y/ M1 j+ u
和用led来显示硬盘温度- L- V( G& D5 d* z: H3 {- o
让你的RGB灯来指示系统温度! z, K7 R# F: s) r1 v3 H7 z9 ^
现在我们可以进一步让led来显示系统网速,且往下看
) i5 g+ Q4 f. X" {5 M需要用到一个python脚本来获取系统的联网状态以及各个io状态
% E: z4 D  B- A6 Y
  1. import psutil
    ! g9 t1 k- O: }4 x* h; B4 }# m
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的+ p4 E; I& t# Q/ m/ z3 v
  1. {- |6 o' E8 q5 J, z/ ]! S3 Z
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),5 O( |/ B- f# k5 S* Y
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),) C' w5 d" h9 u* z9 w) J& c0 {
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    * |+ m, Y$ u) ~( e
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    ) m7 j+ F- R$ M4 T& Q, P
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    : X9 O5 O$ h6 M9 j6 \0 s
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    1 T: Z5 [5 ^3 n7 F* U8 ]- v
  8. }
复制代码
有了数据就能够处理数据转化为网速了。% Q: E& t, e+ d9 s1 M
批注 2019-10-06 120535.png 6 |# W* [" U: }* W! s% C
因为网速差别实在太大,所以我用了分级显示的方案:% T/ i, ]  \; g" x, y# D
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯: G: x4 ^9 U9 Y) p: ~! G% N
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯( c) `! D6 u( t! g5 o/ o8 Q: V- e
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。0 f. t. ?8 H0 @2 @" `0 g
  1. net_led_dn() {5 |1 B. T/ p/ ^; {5 l
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    " F  x9 Y  X) `3 Q# A
  3.     new_rtx=$(cat /root/new.rtx)5 }: R2 ~7 v0 n8 Z$ C3 R% c( [
  4.     old_rtx=$(cat /root/rtx.log)
    & h' q( k, I! M5 h
  5.     rtx=$(expr $new_rtx - $old_rtx)4 m/ y: I1 p6 I5 Z
  6.     echo $rtx" W% F  N* h5 W/ V8 v" X: |
  7.     if [ $rtx -lt 1024 ]; then
    5 n3 i7 O, p0 D0 p9 Z  w5 P( o
  8.                                                                                                                                                                                               . z0 ?+ S1 A2 v# _! j6 b
  9.         rtx_led=$(expr $rtx / 4)
    ( l7 z5 C: A+ U7 n! Y
  10.                                                                                                                                                                                               - s: p! ~! `0 G- x# d- D! N
  11.         set_led c1 $rtx_led 0
    # v1 e# l  F  |: i6 ~! L
  12.         set_led c2 0 0& q- w7 U7 b3 I6 L4 m: A1 V0 E
  13.         set_led c3 0 0
    4 S0 v$ n1 h9 N2 A1 V7 s  Q5 X
  14.                                                                                                                                                                                               ; J( h" C1 O1 |
  15.     elif [ $rtx -lt 1048576 ]; then
    1 i2 w% L9 C" y& u. B6 ?9 D
  16.         rtx_led=$(expr $rtx / 4096)
    1 I- J) A' i7 I" y3 Y  w" M: u
  17.         set_led c1 0 0
    2 J$ o( A3 Q& P- p
  18.         set_led c2 $rtx_led 0- [. b1 v0 g7 D2 }6 N$ U, D
  19.         set_led c3 0 03 _6 B3 n" `; n  d
  20.     elif [ $rtx -lt 1073741824 ]; then: y8 M. T# n7 l! }
  21.         rtx_led=$(expr $rtx / 4194304)
    * I& t+ U8 [. A; k  @
  22.         set_led c1 0 0. K9 \2 {1 V$ j2 t* i
  23.         set_led c2 0 0
    / l  @0 Z+ ~, r5 d& A0 ]
  24.         set_led c3 $rtx_led 0
    * @8 q7 ^' U/ N9 Z. x$ Y7 }
  25.     fi8 o8 k/ w" m3 N: `; @
  26.     echo $new_rtx >/root/rtx.log
      i6 K* ?0 ]+ j2 ~7 d2 [
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。. L9 A- U% J5 N, M7 [3 z
下面是完整脚本,看附件吧。9 V9 j8 `$ D( e2 P# U
一共有五个文件+ [7 M/ i5 S  Y) U3 c
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换" ~. ~  `0 h0 I
  2. netspeed.py                 #放在root下 . A" P4 P% p. w0 F$ o' u
  3. new.rt                         #放在root下
    $ W* \, ?: Y& B" r+ A
  4. mew.rtx                       #放在root下
    6 C3 T7 p- c% n0 z
  5. rtx                              #放在root下
复制代码
7 ~5 U; L4 e4 j( l
' E4 e1 q5 n  y, H
led_control.zip (1015 Bytes, 下载次数: 114) " M, d! r2 h; O) [) O' D
解压密码(刮刮乐):chwhsen
- N# I% `9 m' k0 i2 S, J- o6 C& W1 C2 a

- X4 X3 {0 v3 c! g! L  |4 d5 w

; G( c8 f  o* k& P0 I( a7 p  U

评分

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

查看全部评分

8

主题

50

回帖

320

积分

中级渣柚V1

积分
320
zsyg 发表于 2019-10-6 12:51:07 | 显示全部楼层 IP:–广西 移动/数据上网公共出口
谢谢分享

4

主题

768

回帖

5070

积分

资深垃圾佬

积分
5070
kpxx 发表于 2019-10-6 13:27:51 | 显示全部楼层 IP:–广东–江门 电信
好教程,谢谢分享,

27

主题

133

回帖

408

积分

中级渣柚V1

积分
408
47823439 发表于 2019-10-6 13:42:40 | 显示全部楼层 IP:–河南–郑州 联通
厉害了!!!!1

1

主题

5

回帖

45

积分

初级渣柚V1

积分
45
逆水三千 发表于 2019-10-7 22:12:17 | 显示全部楼层 IP:–天津–天津 联通
佩服超级厉害了

12

主题

157

回帖

470

积分

中级渣柚V1

积分
470
起司 发表于 2019-10-7 22:57:46 来自手机 | 显示全部楼层 IP:–山东–东营 联通
感谢分享

3

主题

72

回帖

663

积分

中级渣柚V2

积分
663
Tate 发表于 2019-10-7 23:15:48 | 显示全部楼层 IP:–广东–珠海 电信
感谢分享。先收藏了

42

主题

396

回帖

2259

积分

中级渣柚V3

积分
2259
tiandap 发表于 2019-10-8 07:39:56 | 显示全部楼层 IP:–天津–天津 联通
厉害了!

4

主题

40

回帖

243

积分

中级渣柚V1

积分
243
ziyouchidu 发表于 2019-10-8 08:23:32 来自手机 | 显示全部楼层 IP:–山东 电信数据上网公共出口
牛掰牛掰,厉害厉害
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-11-15 04:25 , Processed in 0.069195 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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