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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
chwhsen 发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式 IP:–河南–鹤壁 联通
之前我们你已经说过了led管控机制: \; c7 O2 c) H; u1 ?2 |& \% h
聊一聊x3p的LED控制机制
$ x& l0 l0 V9 l1 u和用led来显示硬盘温度
7 E3 v# @9 J6 [* [; Y* c让你的RGB灯来指示系统温度4 W9 k. r+ Q* m! h9 [
现在我们可以进一步让led来显示系统网速,且往下看
9 _2 f0 E( r) h# ~4 m需要用到一个python脚本来获取系统的联网状态以及各个io状态
( _, X- ?4 }+ Q4 h' ?' j
  1. import psutil
    5 w/ O4 Q+ Q! b* u: k* m  Z. W
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
. F8 ?& {9 N& u7 K
  1. {
    : j) z2 }. ^2 y  ~. B
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    . B! i- A3 {! C8 g8 Z: X# C
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),3 _% \, N6 W4 }; _! U" f
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    6 N1 Y7 [& R5 E$ M% {1 F
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    + [$ {1 X) c# 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),4 P) W9 y% t4 F' J( K% ~0 R# e: z7 u# V
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    / d: w1 _( E) G: r" x# a# {! E
  8. }
复制代码
有了数据就能够处理数据转化为网速了。' y2 n" C0 z2 r& o* c& {) D
批注 2019-10-06 120535.png
6 v' V5 l6 {6 V因为网速差别实在太大,所以我用了分级显示的方案:6 c7 B" @: H" m
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯( I- i% ~3 }0 c- ^) i8 [; ?5 S8 _
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
2 x2 Z. T& [' \6 W8 S: E( A3 g网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。; v$ J5 X. L$ R  R+ I, |  C8 k& d
  1. net_led_dn() {/ x7 X0 s6 Z+ s6 \) t. _
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    1 k. s5 g5 [  s# t
  3.     new_rtx=$(cat /root/new.rtx)
    - y9 ~* K* H# M9 c% }2 H3 k0 l0 a
  4.     old_rtx=$(cat /root/rtx.log)7 Z- ]! A3 _1 T  J8 o7 C
  5.     rtx=$(expr $new_rtx - $old_rtx), [8 `" E9 \! J9 u6 W6 V# W
  6.     echo $rtx9 v: R' Q- c; |+ b
  7.     if [ $rtx -lt 1024 ]; then9 j# Q0 V/ _. s6 p; J0 i
  8.                                                                                                                                                                                              
    ; r( ?& A+ j8 z" |/ Q! y) q' h: ~: n
  9.         rtx_led=$(expr $rtx / 4)
    7 X( w" T0 u2 s) H" J
  10.                                                                                                                                                                                              
    4 {( C* {3 F! V1 D
  11.         set_led c1 $rtx_led 0+ F  F9 ~4 ]7 ^! U7 A( ?
  12.         set_led c2 0 0- {4 m2 z: J' {) O( j" N5 s& w% j' N
  13.         set_led c3 0 0
    % i2 b( r9 c. u' p. Y6 e
  14.                                                                                                                                                                                              
    : j  L% @& M% B/ ]6 ?( H
  15.     elif [ $rtx -lt 1048576 ]; then
    3 n' l4 `0 ~/ z2 d3 @; Q9 m
  16.         rtx_led=$(expr $rtx / 4096)
    3 E, C" x( D! u- q, v  E: G
  17.         set_led c1 0 0  _2 q+ v4 M. Y# _
  18.         set_led c2 $rtx_led 0
    2 U3 U2 O2 x( }3 O0 p! a
  19.         set_led c3 0 0
    . ?6 J  V5 [& G) m3 P
  20.     elif [ $rtx -lt 1073741824 ]; then- i0 M3 j6 G) h+ ]
  21.         rtx_led=$(expr $rtx / 4194304)( m  h; a. w6 k5 j, d' c( ~: L
  22.         set_led c1 0 0  I/ L6 [1 w# P
  23.         set_led c2 0 0
    1 Q3 P: ^; B' |- ^, c+ z3 u
  24.         set_led c3 $rtx_led 0: o0 M2 V  M# ^5 G9 k: ?( [
  25.     fi' ~9 d( ]1 e, ~! Z: W4 H
  26.     echo $new_rtx >/root/rtx.log' A, [$ r# [4 }2 Y; s
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。, y: \* Y9 t' }, N1 ^2 ]
下面是完整脚本,看附件吧。
8 B( C5 h* R2 }: v一共有五个文件; K7 p( E, `8 t  |8 x
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换
    . l5 R( I7 ?4 Y6 ~. V$ }2 m4 z8 @
  2. netspeed.py                 #放在root下 # _8 O8 [: b) {4 s4 B6 q7 [. g
  3. new.rt                         #放在root下
    7 A, F' P4 d/ K1 g
  4. mew.rtx                       #放在root下& J1 G/ R, H+ M% s
  5. rtx                              #放在root下
复制代码

4 ]7 t- S) ]9 [% U0 Y6 l1 c6 q% u3 q1 i1 K! _
led_control.zip (1015 Bytes, 下载次数: 114)
* e1 `- ?; U" z; X% e+ i. }6 k( R解压密码(刮刮乐):chwhsen( Q3 i' _( g; |7 J0 D4 A# z

% s3 e8 S/ Z5 B0 N; e1 e5 ^0 j/ H# G  r  K& x( d

, ?( \( u( Y3 Y- u( c; Z

评分

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

回帖

4302

积分

实力垃圾佬

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

回帖

2210

积分

中级渣柚V3

积分
2210
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-7-15 15:14 , Processed in 0.094940 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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