0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

同时监测一堆树莓派的详细资料说明到底是怎么样的体验

电子工程师 来源:未知 2019-03-09 10:17 次阅读

我们有一堆Raspberry PI,我们将其用作运行python、gunicorn、sqlite数据库和mqtt代理的Web服务器。我们希望有一个设备,我们可以监测这些树莓派的情况,比如内存和温度等等。为了不浪费显示屏干这事情,我们决定使用Nanomesher HMI做一个简单的监控解决方案。如果内存或存储空间不足,它还会点亮板载LED作为警告。

NanoMesher HMI是NanoMesher开发的WiFi触摸屏显示器,具有易于使用的HTTP和基于MQTT的API。在这个项目中,Raspberry PI将通过HTTP API更新Nanomesher HMI。大概这么干吧结构很简单。每个Raspberry PI运行一个python脚本,它定期获取健康信息CPU利用率、CPU温度、空闲内存和空闲磁盘空间),并通过HTTP更新nanomesher HMI。该怎么显示信息?我们使用Nextion Editor在屏幕上绘制5行文本框。屏幕上的每一行就是一个PI的信息。行数的大小取决于字体和屏幕的设计。“iplbl”用于显示屏幕的IP地址。

▲ 用Nextion Editor做的用户界面

获取CPU温度最简单方法是使用下面的命令。

/opt/vc/bin/vcgencmd measure_temp

python提供了open命令来运行linux命令并返回结果。添加了一些字符串把输出格式替换成我们需要的格式。

def GetTemp(): cmd = "/opt/vc/bin/vcgencmd measure_temp | sed -s 's/=/:/g'" p = Popen(cmd, shell=True, stdout=PIPE) output = p.communicate()[0] return output.replace(' ','').replace('temp:','Temp:').replace("'C","c")

获取内存、CPU利用率和可用磁盘空间使用psutil python库会非常容易解决这个问题。安装:

sudo pip install psutil

或者使用python3

sudo pip3 install psutil

virtual_memory() 用作返回以字节为单位的值。因此,我们需要除以1024两次才能得到兆字节值。

def GetFreeMem(): return str(psutil.virtual_memory().free/1024/1024) + "M"

CPU和空闲磁盘空间相当直接

def GetCpuPercent(): return str(psutil.cpu_percent()) + "%"def GetFreeDisk(): return str(psutil.disk_usage('/home/pi').free/1024/1024) + "M"

IP地址最后,从eth0或wlan0接口获取IP地址。

def GetLANIP():cmd = "ip addr show eth0 | grep inet| grep -v inet6 | awk '{print $2}' | cut -d '/' -f 1"p = Popen(cmd, shell=True, stdout=PIPE)output = p.communicate()[0]return outputdef GetWLANIP():cmd = "ip addr show wlan0 | grep inet| grep -v inet6 | awk '{print $2}' | cut -d '/' -f 1"p = Popen(cmd, shell=True, stdout=PIPE)output = p.communicate()[0]return output

更新Nanomesher HMI数据下面使用简单的HTTPGET请求在显示屏上设置值和颜色。

‘p’ - 页码

‘n’ - UI组件的名字

‘v’ - 文本集

‘fc’ - 前景色(16位)

def PublishToDisplay(text,label_prefix): try: data = {} data['p'] = '0' data['n'] = label_prefix + sys.argv[2] data['v'] = text data['fc'] = '23555' url_values = urllib.urlencode(data) url = "http://" + sys.argv[1] + "/TextSetText?" + url_values response = urllib2.urlopen(url) html = response.read() except: pass

['n']表示作为命令行参数传入的组件名称。行数取决于如何设计屏幕布局。在本例中,有4行分别命名为line1、line2、line3和line4。警告我们认为给出PI健康问题(如内存或磁盘空间不足)的视觉指示是有用的,因此我们在下面添加了此类检查,以红色显示信息并点亮LED。

freemem = GetFreeMem() if(freemem > 100): PublishToDisplay(str(freemem) + "M","mem","23555") LedOff() else: PublishToDisplay(str(freemem) + "M","mem","61455") LedOn() freedisk = GetFreeDisk() if(freedisk > 500): PublishToDisplay(str(freedisk) + "M","disk","23555") LedOff() else: PublishToDisplay(str(freedisk) + "M","disk","61455") LedOn() if(freemem > 100 and freedisk > 500): LedOff() else: LedOn()

▲ 低内存警报

运行起来从Github下载pimonitor.py。安装PIP,如果没有:

sudo apt-get install python-pip

安装psutil

sudo pip install psutil

或者用python3:

sudo pip3 install psutil

运行使用

python PiMonitor.py 192.168.11.116 1

192.168.11.116是Nanomesher HMI的IP地址(显示在屏幕上),最后的1是指要更新显示中的哪一行,因此不同的PI将更新不同的行(1-4)。打完收工,希望你喜欢这个项目。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23272

    浏览量

    660787
  • 数据库
    +关注

    关注

    7

    文章

    3799

    浏览量

    64379
  • 树莓派
    +关注

    关注

    116

    文章

    1707

    浏览量

    105623

原文标题:同时监测一堆树莓派是怎么样的体验?

文章出处:【微信号:cirmall,微信公众号:电路设计技能】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    吐槽树莓

    树莓的无线网卡就是坨屎各种乱七八糟的问题 反正就是你连上了 几分钟之后会掉然后就在也连不上了通过ssh登录树莓也是
    发表于 05-23 17:48

    树莓简介

    已经是位Linux系统的爱好者,但却不知道如何用Python进行编程,而且正准备好好学学;也许你根本就不了解计算机,仅仅停留在点击“开始”菜单,转发电子邮件,上网等操作,但是听说过“树莓
    发表于 08-06 08:05

    树莓和单片机的区别_树莓能干什么

    本文主要讲树莓和单片机之间有什么区别以及详细介绍了一下树莓到底是干什么的。
    发表于 11-27 21:06 7.3w次阅读

    树莓入门教程之新手使用树莓做系统的教程资料说明

    本文档的主要内容详细介绍的是树莓入门教程之新手使用树莓做系统的教程资料
    发表于 03-22 08:00 10次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>入门教程之新手使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>做系统的教程<b class='flag-5'>资料</b><b class='flag-5'>说明</b>

    无线电监测及干扰查找的详细资料说明

    本文档的主要内容详细介绍的生活无线电监测及干扰查找的详细资料说明
    发表于 04-08 08:00 0次下载
    无线电<b class='flag-5'>监测</b>及干扰查找的<b class='flag-5'>详细资料</b><b class='flag-5'>说明</b>

    Raspberry Pi树莓使用说明总结资料免费下载

    本文档的主要内容详细介绍的是Raspberry Pi树莓使用说明总结资料免费下载。
    发表于 05-31 17:54 15次下载
    Raspberry Pi<b class='flag-5'>树莓</b><b class='flag-5'>派</b>使用<b class='flag-5'>说明</b>总结<b class='flag-5'>资料</b>免费下载

    树莓是什么树莓基本知识介绍详细资料说明

    树莓硬件、接口及其连接设备如图1-5所示。下面就让我们按图索骥,同来探索树莓的“身体构造”吧!在人身体结构中,最重要的部位应该就是心脏
    发表于 05-22 18:01 24次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>是什么<b class='flag-5'>树莓</b><b class='flag-5'>派</b>基本知识介绍<b class='flag-5'>详细资料</b><b class='flag-5'>说明</b>

    使用树莓设计智能小车教程之树莓超声波避障实验的详细资料说明

    本文档的主要内容详细介绍的是使用树莓设计智能小车教程之树莓超声波避障实验的详细资料
    发表于 06-25 08:00 30次下载
    使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>设计智能小车教程之<b class='flag-5'>树莓</b><b class='flag-5'>派</b>超声波避障实验的<b class='flag-5'>详细资料</b><b class='flag-5'>说明</b>

    使用树莓设计智能小车教程之黑线循迹实验的详细资料说明

    本文档的主要内容详细介绍的是使用树莓设计智能小车教程之黑线循迹实验的详细资料说明
    发表于 06-25 08:00 44次下载

    使用树莓设计智能小车教程之树莓智能车系统启动的详细资料说明

    本文档的主要内容详细介绍的是使用树莓设计智能小车教程之树莓智能车系统启动的详细资料
    发表于 06-24 08:00 18次下载

    树莓的功能详细资料讲解

    树莓个神奇的小电脑• 树莓GPIO编号方式• 功能物理引脚: 从左到右,从上到下:左边基数,右边偶数:1- 40• BCM: 编号侧
    发表于 06-24 08:00 20次下载

    使用树莓设计智能小车教程之如何进行树莓模块安装资料免费下载

      本文档的主要内容详细介绍的是使用树莓设计智能小车教程之如何进行树莓模块安装资料免费下载。
    发表于 06-24 08:00 21次下载

    树莓的使用说明详细概述

    本文档的主要内容详细介绍的是树莓的使用说明详细概述
    发表于 11-21 16:17 9次下载

    ESD和EFT与Surge到底是什么详细资料介绍

    本文档的主要内容详细介绍的是ESD和EFT与Surge到底是什么详细资料介绍。
    发表于 11-25 08:00 49次下载
    ESD和EFT与Surge<b class='flag-5'>到底是</b>什么<b class='flag-5'>详细资料</b>介绍

    基于树莓的环境监测系统

    树莓(Raspberry Pi)是种小型而功能强大的计算机,其性能和功能足以支持许多应用领域。在环境监测系统中,树莓
    的头像 发表于 01-04 15:15 2657次阅读