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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
chwhsen 发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式 IP:–河南–鹤壁 联通
之前我们你已经说过了led管控机制
2 A  |8 L- K2 z 聊一聊x3p的LED控制机制3 \  y$ M4 B9 l- @5 L
和用led来显示硬盘温度
4 Z& w  |9 s  S让你的RGB灯来指示系统温度9 P& z" T9 H6 r2 J) Z6 J
现在我们可以进一步让led来显示系统网速,且往下看
9 {  Z$ Z% Z! A8 l需要用到一个python脚本来获取系统的联网状态以及各个io状态
- _6 {' j' O9 T  L2 }+ X
  1. import psutil! x; X5 w1 k# w
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
( i; b6 x. R& x
  1. {
    9 k& t# D; N! n! K
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),0 Q% r6 q. l6 w2 \9 ~9 I
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),% G- C; T' l9 W. M9 F& D( ]
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),  G+ Q1 x3 c- }/ v4 _
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    " o5 h$ ~3 C4 E) }2 ]/ q
  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& ^  G( F7 T6 y- [! J+ r  |3 g
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)! c; G2 z8 \6 i/ s  i
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
" e2 C& J* u7 F- r 批注 2019-10-06 120535.png
- I* R" q0 _  g3 H$ \因为网速差别实在太大,所以我用了分级显示的方案:0 Q( t: R9 L/ ^0 A
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯0 K3 i  F+ I+ |( y0 {% q
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
4 G& ]  P. w! ]- M( Z2 S6 p网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
+ \% u8 X2 [8 H: T* O# [
  1. net_led_dn() {- F* t, q7 f8 _
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    7 j; [/ b% `9 Q$ k# r% l2 C. Z
  3.     new_rtx=$(cat /root/new.rtx)
    % V( I  @4 U+ Z/ d( ~' U
  4.     old_rtx=$(cat /root/rtx.log)
    0 ~1 }6 P& w; T
  5.     rtx=$(expr $new_rtx - $old_rtx)8 R% _0 M+ t# `  s# _3 B* T
  6.     echo $rtx/ z. J/ n/ p7 e% I" F0 g, r7 F
  7.     if [ $rtx -lt 1024 ]; then
    # z$ h7 E6 J2 r/ J' h
  8.                                                                                                                                                                                              
      ~9 [" c# D; O: e
  9.         rtx_led=$(expr $rtx / 4)" x+ Q( O  L5 ^" _2 D0 v8 D
  10.                                                                                                                                                                                              
    / p& n+ D) N# _+ ]- ?: O" \
  11.         set_led c1 $rtx_led 06 u7 m& D  `* S% E5 M
  12.         set_led c2 0 0
    2 I' Z% [# E$ [7 W, A9 F" d) X
  13.         set_led c3 0 0
      Q7 z( W3 B9 b
  14.                                                                                                                                                                                              
    * s' u/ [1 d( @% g5 O
  15.     elif [ $rtx -lt 1048576 ]; then3 t: G; n/ Q$ s6 J8 y3 @
  16.         rtx_led=$(expr $rtx / 4096)1 C. U& ?  i% Y% A: P' F% C& H; j  q
  17.         set_led c1 0 0
    7 \; }8 O3 |) A4 Z
  18.         set_led c2 $rtx_led 0
    ! d$ {+ z$ X) w( ]
  19.         set_led c3 0 0/ G* o$ o- U* O: }; }' ?: X* z
  20.     elif [ $rtx -lt 1073741824 ]; then7 I4 d' o- o0 a6 f) ~
  21.         rtx_led=$(expr $rtx / 4194304)
    ' j1 W; @' R* `2 i2 R" N1 p6 `  f8 L
  22.         set_led c1 0 0# j$ u( @, |$ U9 H
  23.         set_led c2 0 0
    % b# ~2 B1 h( _( m! B
  24.         set_led c3 $rtx_led 0
    2 D! r2 j# B7 E' P) n( \/ c3 z
  25.     fi2 m9 `3 c, I4 R$ @' v* {: G
  26.     echo $new_rtx >/root/rtx.log
    / n4 Z/ O( p1 ~5 T0 T3 A2 z
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
% I! g- p# R4 y3 a( ?下面是完整脚本,看附件吧。
. S; S' w% _& T! g一共有五个文件* [- V5 R0 R+ O8 R
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换2 i8 t3 ?- i( l( b' F* X
  2. netspeed.py                 #放在root下 * I- |3 ?/ p- N) m/ A( D
  3. new.rt                         #放在root下
    ' }- G4 I) |) C- a
  4. mew.rtx                       #放在root下
    # g# L2 T4 r& M- J% f
  5. rtx                              #放在root下
复制代码
5 Y3 J! ?# p, `! G, `, G
  X8 I5 r# L/ R6 d) s( W* v: D
led_control.zip (1015 Bytes, 下载次数: 114)
6 v) m+ S$ ?0 n( |" A解压密码(刮刮乐):chwhsen
4 N) V0 {& L9 W: G% C3 K
! z% j  L- }& {: u3 u7 U, E* `( ^5 N* ]" w+ r8 W
+ ^6 Z5 b, m+ S8 U* D: G$ {4 S

评分

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

主题

767

回帖

3755

积分

实力垃圾佬

积分
3755
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

回帖

2191

积分

中级渣柚V3

积分
2191
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-6-2 09:48 , Processed in 0.095433 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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