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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制
2 v. V4 Y' ~" Q8 l" s1 @ 聊一聊x3p的LED控制机制
6 z( R2 t8 a1 t和用led来显示硬盘温度
1 M% V, q5 l. _6 v" Y让你的RGB灯来指示系统温度
- v( T( T' q; O( S& o! |现在我们可以进一步让led来显示系统网速,且往下看( i. }0 v. w0 d# N. e! W: J
需要用到一个python脚本来获取系统的联网状态以及各个io状态
) C$ k& d, {6 e5 D. p) o8 x
  1. import psutil
    ( e/ }: }5 L  ^. A% B& A
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
* V( Q, E- x. m3 t9 m! D
  1. {: N/ p, t) K* H
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
      D) T$ v* T9 t
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),& O% ~" w& a# N; i8 q
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),! L5 z  T8 z! K7 \0 c+ m' e
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0)," s6 d' c* m& H" u: b
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    / W9 N1 N" J8 P0 Q5 N9 I) o
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
      P3 B6 ]" u8 x: x+ {
  8. }
复制代码
有了数据就能够处理数据转化为网速了。2 L6 ^; P0 l& E5 T' Q
批注 2019-10-06 120535.png . ?; D4 U/ `! T
因为网速差别实在太大,所以我用了分级显示的方案:$ ?) f6 u+ ]. G: s4 D
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
. x8 l5 @. l6 z' V0 M网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯! _4 d7 a: d* D0 @9 A
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
3 U9 [* {2 c* m) e& U- J9 h6 Q4 \
  1. net_led_dn() {, q6 D) Y, K* S# h1 }
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx" z( @  w" c# h4 f3 S6 P
  3.     new_rtx=$(cat /root/new.rtx)
    5 Y% V8 l  F0 V
  4.     old_rtx=$(cat /root/rtx.log)* t3 X- |& ~; l7 a
  5.     rtx=$(expr $new_rtx - $old_rtx)
    9 Z: f, ~. K8 e1 f- C% d
  6.     echo $rtx3 O/ f/ `3 Z. @. j
  7.     if [ $rtx -lt 1024 ]; then4 y1 r" K4 U4 ]+ H& r" c7 o
  8.                                                                                                                                                                                              
    - p2 X2 i8 w0 g7 F6 x! q
  9.         rtx_led=$(expr $rtx / 4), x2 B. x" i2 M7 r
  10.                                                                                                                                                                                              
    # X% y4 q2 L+ s# }! i! U0 V
  11.         set_led c1 $rtx_led 0' J' r6 Z: _; S* X. w- n- \
  12.         set_led c2 0 04 O* I' ?$ ?0 X4 b1 }1 K, |
  13.         set_led c3 0 0
    - d- ]8 M# |. p/ u+ m
  14.                                                                                                                                                                                              
    6 g$ c" n9 j& \- G
  15.     elif [ $rtx -lt 1048576 ]; then* u8 E/ v" d& ^  ]$ [
  16.         rtx_led=$(expr $rtx / 4096)
    ' m3 x) Q: B0 Y% n% g
  17.         set_led c1 0 02 S: Q7 d. c. o1 F" I
  18.         set_led c2 $rtx_led 04 G4 h) E- F& p- f
  19.         set_led c3 0 0
    ) S0 ~. n, O8 }
  20.     elif [ $rtx -lt 1073741824 ]; then
    ! c) R  _6 }) x0 g
  21.         rtx_led=$(expr $rtx / 4194304)
      r* h5 K: w* w; x8 w6 X
  22.         set_led c1 0 0% J3 j" H9 O" e; x. A  f; m( \, I6 p
  23.         set_led c2 0 0$ y$ D* f3 ?4 L$ o  U
  24.         set_led c3 $rtx_led 04 w' {  E: Y+ V' Z
  25.     fi1 f# _' A% l0 ]' C9 T3 T! d& J
  26.     echo $new_rtx >/root/rtx.log9 C+ z3 `: h6 I; S4 m- f
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
6 I) J( E9 Q, _+ B* y4 V下面是完整脚本,看附件吧。
( L; N( b4 O* I. |% M5 y/ C1 X# H* G一共有五个文件% n9 [+ i6 s4 E+ a0 b  X8 t, ^
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换
    ! Z! D6 [" H# C. p( s( S
  2. netspeed.py                 #放在root下
    * _" a  N/ u" U$ [
  3. new.rt                         #放在root下
    5 k/ B5 I7 h  c% n$ H3 l& J; c4 p
  4. mew.rtx                       #放在root下3 t& T4 E& g; b( S6 N5 p% S
  5. rtx                              #放在root下
复制代码

$ |" _, R% S. w$ W8 B% m' i$ E/ u
0 G( s6 e% ?, a2 H  {: ?8 D led_control.zip (1015 Bytes, 下载次数: 114) 1 P$ j& K) X! {7 J6 Y" C# [+ ]4 i
解压密码(刮刮乐):chwhsen! R6 i* t) \$ l8 p& f( i

5 q+ t0 G0 @: ]  h, M0 P/ g3 Q0 `4 _" F6 T  ]$ U5 H

! b) _& t+ R& u0 c  l

评分

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

回帖

2915

积分

中级渣柚V3

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

回帖

2107

积分

中级渣柚V3

积分
2107
发表于 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-11-27 17:15 , Processed in 0.113995 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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