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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制% q. o& i  R2 b9 i7 ~! S8 @
聊一聊x3p的LED控制机制
4 X& _2 @5 J) v/ s2 h/ m/ ~) Q和用led来显示硬盘温度! s1 ]4 R) [% {
让你的RGB灯来指示系统温度* _7 N, D) b$ M/ j3 O; Y
现在我们可以进一步让led来显示系统网速,且往下看, Y' U& f$ k1 U8 x5 X2 @3 g
需要用到一个python脚本来获取系统的联网状态以及各个io状态
7 @7 D7 ^* d/ ~8 e$ b# a
  1. import psutil  ?4 L) c( ^, G) y6 j3 t' i
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的# I8 A1 ]- @) d1 I, V3 x' k
  1. {6 b. L6 }7 V. y
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),9 L- w; \9 A! W0 C8 n2 W! E4 A0 {
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    7 E" [6 h0 y8 B
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    9 _8 q% _6 M( M0 ]6 U8 g8 w, [
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    6 r. |7 \. D3 k9 |$ i5 E
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),! I  I! J/ I  v* L
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    $ }7 l9 D8 x1 {) _1 i: E/ T8 J; ~
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
, z7 K/ l0 q$ Z9 o; w 批注 2019-10-06 120535.png : S/ G" ^. V9 ]0 E6 h& X8 W% p
因为网速差别实在太大,所以我用了分级显示的方案:) U7 S+ n5 @% r3 `
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
/ W+ q3 G) c/ G5 e5 _" l网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯: ?$ E& P( Z0 P; ?* R
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
! p+ M/ D7 q+ ^+ w
  1. net_led_dn() {& F. ?+ J$ U. |- H
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    1 ~$ a0 x2 K- {; G5 `
  3.     new_rtx=$(cat /root/new.rtx)
    2 L/ n2 N& y) e
  4.     old_rtx=$(cat /root/rtx.log)
    + Z; g9 [5 J. [& D/ ], q
  5.     rtx=$(expr $new_rtx - $old_rtx)
    " a: Q9 J( q  V  v" v) J
  6.     echo $rtx- [0 e8 [+ U9 E5 N5 Y) \
  7.     if [ $rtx -lt 1024 ]; then) s$ i0 t" c. g8 {) i# a$ l2 p
  8.                                                                                                                                                                                              
    ( a/ K$ [) K; o4 }& N: P
  9.         rtx_led=$(expr $rtx / 4)3 V% T5 S" ^! S/ m2 |
  10.                                                                                                                                                                                              
    3 I2 q5 M. t3 ~9 c: c* |# x0 D
  11.         set_led c1 $rtx_led 0
    / N3 I- w( R5 Y: E
  12.         set_led c2 0 0: I: w+ n( E- @! W
  13.         set_led c3 0 0/ i* m) X! R) S" a
  14.                                                                                                                                                                                               & V+ Q0 [! P- g7 U9 F9 J6 W
  15.     elif [ $rtx -lt 1048576 ]; then
    + i! K5 v, J3 a9 F, ?
  16.         rtx_led=$(expr $rtx / 4096)# o  m  q5 W) c) _2 l
  17.         set_led c1 0 0
    0 Y/ w5 Z, x6 K+ P8 h$ m, b1 I
  18.         set_led c2 $rtx_led 04 [3 }* |1 y9 _( H
  19.         set_led c3 0 0! p; l* b, {7 v& B
  20.     elif [ $rtx -lt 1073741824 ]; then
    : z6 Z. i# y# |5 I( c
  21.         rtx_led=$(expr $rtx / 4194304)
    7 P& L) H& `& v8 l/ A
  22.         set_led c1 0 0
    $ n2 B3 X8 [  P% G8 e$ c4 ~
  23.         set_led c2 0 0
    $ `, h" b; t' P. I. K
  24.         set_led c3 $rtx_led 0
    + m; w- R4 Y' U  H$ K7 p
  25.     fi
    0 l/ h" [& n) M0 C) O) x3 h, v1 O
  26.     echo $new_rtx >/root/rtx.log
    5 d% c; P; i: b/ S
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。5 g5 O6 g+ N7 Y+ a# c& B- b8 Z5 {0 S  y
下面是完整脚本,看附件吧。* l) [" ?" o3 O2 W% p# f1 k
一共有五个文件
: ]% i! @( q5 v6 m( g; u0 N
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换
    + j$ S, U( s( ~4 g& n7 d
  2. netspeed.py                 #放在root下
    , \& A- q  A, Z  H) |. d
  3. new.rt                         #放在root下; L0 l/ c" H- Z2 a
  4. mew.rtx                       #放在root下) P* s( V3 j% M& p2 g$ g
  5. rtx                              #放在root下
复制代码
( }& p  q% _& N" Y7 m# o9 y

8 y0 E; o4 ^' q led_control.zip (1015 Bytes, 下载次数: 114) , x& U/ f% k- R/ F+ v7 @
解压密码(刮刮乐):chwhsen: d% Q% x" E6 P' C% J& T
. p& t. \. r3 I0 {# l% Q
: Y! ]2 ?% g  z  H7 g0 o* D/ O
5 c7 h8 w% S7 _

评分

参与人数 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

回帖

2392

积分

中级渣柚V3

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

27

主题

133

回帖

408

积分

中级渣柚V1

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

1

主题

5

回帖

51

积分

初级渣柚V2

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

主题

393

回帖

1857

积分

中级渣柚V3

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

4

主题

40

回帖

243

积分

中级渣柚V1

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

本版积分规则

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

GMT+8, 2024-3-29 00:34 , Processed in 0.053876 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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