想找一款可以监控环境温湿度校准规范度湿度的智能PDU,大家有好的介绍吗?

君,已阅读到文档的结尾了呢~~
智能PDU产品简介、远程配置、应该案例
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
智能PDU介绍说明
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口树莓派上的温湿度环境监控 - 简书
树莓派上的温湿度环境监控
前阵子入了一个树莓派,作为一个尽责(苦逼)的IT运维狗,自然想到拿这玩意来做做看看温湿度的环境监控了。
想法很简单,找点传感器接上树莓派,通过 GPIO 读取到传感器的数据。然后推送进监控系统即刻(比如 Open-Falcon)
温湿度的传感器种类很多,选了比较常见的3种来测试。
先对比下参数
温度测量范围
0 ~ +50(°C)
-40 ~ +80(°C)
-55 ~ +125(°C)
±0.5°C(-10 ~ +85(°C)内)
20 ~ 95(%RH)
0 ~ 100(%RH)
3.3 ~ 5(V)
3.3 ~ 5(V)
3.0 ~ 5.5(V)
模块参考价格(淘宝)
所以基本上就是:
DHT11 最渣但是最便宜
DHT22 比较给力但是贵
DS18B20 便宜且给力,但只有温度没有湿度
因为传感器连接时都需要接一个上拉电阻,所以直接买人家做好的模块比较方便,电阻给你内置接好了,直接连线比较无脑
这是树莓派的 GPIO 图:
更详细的例图:
既然用的是模块,接线就很简单了,VCC 接电,GND 接地,DATA 接 GPIO 就好了,这是示意图,实际电阻已经内置在模块里了
虽说树莓派本身已经集成了 RPi.GPIO,可以很方便的来操作 GPIO 获取数据。但是直接通过 GPIO 读取还是太麻烦了,好在轮子总是会有的~
有轮子了这事情就非常好办,首先把轮子弄下来~
sudo apt-get update
sudo apt-get install build-essential python-dev
git clone /adafruit/Adafruit_Python_DHT
cd Adafruit_Python_DHT
sudo python setup.py install
读取数据超级简单
import Adafruit_DHT
sensor1 = Adafruit_DHT.DHT11
humidity1, temperature1 = Adafruit_DHT.read_retry(sensor1, 26)#26 是 GPIO 的引脚编号
print humidity1,temperature1
sensor2 = Adafruit_DHT.DHT22
humidity2, temperature2 = Adafruit_DHT.read_retry(sensor2, 13)#13 是 GPIO 的引脚编号
print humidity2,temperature2
DS18B20 更加直接,树莓派已经自带了 1-Wire 的驱动,只要把他开起来就好了~
先更新下内核
sudo apt-get update
sudo apt-get upgrade
检查一下 1-Wire 模块是否开启
root@raspberrypi:/etc# lsmod | grep w1
3_gpio,w1_therm
如果没有,开启 1-Wire 模块
sudo modprobe w1_gpio
sudo modprobe w1_therm
修改/boot/config.txt 配置文件,增加 dtoverlay=w1-gpio,gpiopin=19,pullup=on
默认用的是 4 号口,如果你没有接在 4 号口上的话,要人工指定,例如我这里写的 19 号口。
这里的参数详细可以看 /boot/overlays/README,里面有详细说明
Configures the w1-gpio Onewire interface module.
Use this overlay if you *don't* need a GPIO to drive an external pullup.
dtoverlay=w1-gpio,&param&=&val&
Params: gpiopin
GPIO for I/O (default "4")
Non-zero, "on", or "y" to enable the parasitic
power (2-wire, power-on-data) feature
w1-gpio-pullup
Configures the w1-gpio Onewire interface module.
Use this overlay if you *do* need a GPIO to drive an external pullup.
dtoverlay=w1-gpio-pullup,&param&=&val&
Params: gpiopin
GPIO for I/O (default "4")
Non-zero, "on", or "y" to enable the parasitic
power (2-wire, power-on-data) feature
GPIO for external pullup (default "5")
配好以后重启,然后就可以看到我们的传感器了
root@raspberrypi:/etc# ls /sys/bus/w1/devices/
w1_bus_master1
查看传感器的温度
root@raspberrypi:/etc# cat /sys/bus/w1/devices/28-ff//w1_slave
f3 01 4b 46 7f ff 0c 10 17 : crc=17 YES
f3 01 4b 46 7f ff 0c 10 17 t=31187
就是当前的温度,也就是 31.187
读取这个东西当然是相当容易的事情了,然而它还是有轮子的~
pip install w1thermsensor
有轮子又何必自己动手叻,读取数据之~
from w1thermsensor import W1ThermSensor
sensor = W1ThermSensor(W1ThermSensor.THERM_SENSOR_DS18B20, "aff")
temperatur = sensor.get_temperature()
print temperature
纳入监控系统
传感器能够工作之后,我就要把他纳入到我们的监控系统里去了。绘图,告警这就是监控系统的工作了,我们需要做的是把数据给它。
监控系统获取数据通常可以分为 PULL(拉)和 PUSH(推)两种模式。实际上就是看谁更主动一些,
PULL 模式里,我们把数据以接口方式暴露出来,由监控系统来主动拉走
PUSH 模式里,监控系统提供数据的推送接口,我们主动的对数据进行封装,推送给监控系统
PULL 的模式会比较通用一些。无论是用哪一个监控系统,反正我数据就在这里,拿走自己处理就是。如果这个东西要做成个通用产品的话,那大抵是要做成 PULL 的模式来主动暴露接口的。
我们用 flask 简单的封装个 http 的接口,先装一下 flask
pip install flask
因为读取传感器的数据还是要花点时间的,我们肯定不希望每次请求接口数据的时候都去读一次传感器。所以先弄个脚本定期的把传感器的数据读出来,json 格式存在本地就好了。
#!/usr/bin/python
import Adafruit_DHT
import json
import copy
from w1thermsensor import W1ThermSensor
sensor1 = Adafruit_DHT.DHT11
humidity_dht11, temperature_dht11 = Adafruit_DHT.read_retry(sensor1, 26)
sensor2 = Adafruit_DHT.DHT22
humidity_dht22, temperature_dht22 = Adafruit_DHT.read_retry(sensor2, 13)
sensor = W1ThermSensor(W1ThermSensor.THERM_SENSOR_DS18B20, "ff")
temperature_ds18b20 = sensor.get_temperature()
if humidity_dht11 is not None and temperature_dht11 is not None:
data = {"metric":"humidity","tag":"module=dht11","value":humidity_dht11}
env.append(copy.copy(data))
data = {"metric":"temperature","tag":"module=dht11","value":temperature_dht11}
env.append(copy.copy(data))
if humidity_dht22 is not None and temperature_dht22 is not None:
data = {"metric":"humidity","tag":"module=dht22","value":humidity_dht22}
env.append(copy.copy(data))
data = {"metric":"temperature","tag":"module=dht22","value":temperature_dht22}
env.append(copy.copy(data))
if temperature_ds18b20 is not None:
data = {"metric":"temperature","tag":"module=ds18b20","value":temperature_ds18b20}
env.append(copy.copy(data))
if len(env) & 0:
with open("/opt/falcon-scripts/env.json", 'w') as f:
f.write(json.dumps(env))
放入 crontab 里,这个脚本每分钟运行一次,这样我们的数据延迟也就是 1 分钟而已,完全可以接受。
现在通过 flask 来封装一个简单的 http 接口
#!/usr/bin/python
# -*- coding: utf-8 -*-
from flask import Flask,jsonify
import json
app = Flask(__name__)
@app.route('/env', methods=['GET'])
def env():
with open('/opt/falcon-scripts/env.json', 'r') as f:
env_json = f.read()
env_data = json.loads(env_json)
return jsonify(env=env_data)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=80, debug=True)
root@raspberrypi:/opt/flask# python env.py
* Running on http://0.0.0.0:80/
* Restarting with reloader
PS C:\Users\qfeng& bash
44 packages can be updated.
29 updates are security updates.
qfeng@QFENG-PC:/mnt/c/Users/qfeng$
qfeng@QFENG-PC:/mnt/c/Users/qfeng$
qfeng@QFENG-PC:/mnt/c/Users/qfeng$
qfeng@QFENG-PC:/mnt/c/Users/qfeng$ curl http://192.168.2.221/env
"metric": "humidity",
"tag": "module=dht11",
"value": 68.0
"metric": "temperature",
"tag": "module=dht11",
"value": 32.0
"metric": "humidity",
"tag": "module=dht22",
"value": 70.9
"metric": "temperature",
"tag": "module=dht22",
"value": 30.273
"metric": "temperature",
"tag": "module=ds18b20",
"value": 31.125
}qfeng@QFENG-PC:/mnt/c/Users/qfeng$
看起来不错
PUSH 的模式需要根据我们所使用的监控系统,来封装数据格式进行主动的推送。对于特定的监控系统而言,这种模式更为简单一些。以 Open-Falcon 为例,我写了 3 个脚本对应不同的传感器模块,主动把数据推送给 Open-Falcon
import Adafruit_DHT
import time
import json
import requests
import copy
if __name__ == '__main__':
sensor = Adafruit_DHT.DHT11
humidity, temperature = Adafruit_DHT.read_retry(sensor, 26)
ts = int(time.time())
push_url = "http://127.0.0.1:1988/v1/push"
payload = []
if humidity is not None:
humidity_data = {"endpoint":"home","metric":"room.humidity","timestamp":ts,"step":60,"value":humidity,"counterType":"GAUGE","tags":"module=dht11"}
payload.append(copy.copy(humidity_data))
if temperature is not None:
temperature_data = {"endpoint":"home","metric":"room.temperature","timestamp":ts,"step":60,"value":temperature,"counterType":"GAUGE","tags":"module=dht11"}
payload.append(copy.copy(temperature_data))
r = requests.post(push_url, data=json.dumps(payload))
#!/usr/bin/python
import Adafruit_DHT
import time
import json
import requests
import copy
if __name__ == '__main__':
sensor = Adafruit_DHT.DHT22
humidity, temperature = Adafruit_DHT.read_retry(sensor, 13)
ts = int(time.time())
push_url = "http://127.0.0.1:1988/v1/push"
payload = []
if humidity is not None:
humidity_data = {"endpoint":"home","metric":"room.humidity","timestamp":ts,"step":60,"value":humidity,"counterType":"GAUGE","tags":"module=dht22"}
payload.append(copy.copy(humidity_data))
if temperature is not None:
temperature_data = {"endpoint":"home","metric":"room.temperature","timestamp":ts,"step":60,"value":temperature,"counterType":"GAUGE","tags":"module=dht22"}
payload.append(copy.copy(temperature_data))
r = requests.post(push_url, data=json.dumps(payload))
#!/usr/bin/python
import time
import json
import requests
import copy
from w1thermsensor import W1ThermSensor
if __name__ == '__main__':
sensor = W1ThermSensor(W1ThermSensor.THERM_SENSOR_DS18B20, "ff")
temperature = sensor.get_temperature()
ts = int(time.time())
push_url = "http://127.0.0.1:1988/v1/push"
payload = []
if temperature is not None:
temperature_data = {"endpoint":"home","metric":"room.temperature","timestamp":ts,"step":60,"value":temperature,"counterType":"GAUGE","tags":"module=ds18b20"}
payload.append(copy.copy(temperature_data))
r = requests.post(push_url, data=json.dumps(payload))
PS: 你大概已经发现了,这里主动 Push 的地址是本地的 127.0.0.1~,也就是说这里的 Open-Falcon 其实也是装在树莓派上的~~这事下回再说
看下三个传感器的数据绘图
dht11 的误差确实可能要大一些,也没有到无法接受的程度,便宜嘛
目前为止这个还只是个玩具,要进入生产环境真的拿来用的话,还需要解决一些问题
可以通过 PoE 分离器来搞定,淘宝上 20~30 块钱一个
console tty
安装地方可能没有 dhcp,你得静态给树莓派配地址。总不能出门都带个屏幕和 hdmi 线吧。得让他支持 console,出去串口一接完事。可以用 PL2303 这样的 USB 转 TTL 芯片,4-5块钱一个
拖着一堆杜邦线在外面肯定是太丑了,壳子得把线藏一藏,弄整洁一点。这得费点功夫
如果考虑监控机柜温度的话。在多机柜的机房里,肯定是要 1 台树莓派拖多个传感器挂在机柜里面。走线或许可以考虑直接用网线拉走,焊在针脚上(或者直接绝缘胶布一缠~)
这些问题,留到下回做个原型机出来再说吧~
高校IT民工浅谈:网络智能PDU与普通PDU的区别   【】网络电源控制器就是很有代表性的例子,常被我们称为网络智能PDU。那么网络智能PDU(网络电源控制器)与普通PDU又有哪些区别呢?下面笔者想您走进网络智能PDU(网络电源控制器)的智能世界,感受这个新生的设备带给我们的方便与快捷。 我们先来说说大家都熟悉的普通PDU。PDU:名为电源分配单元(Power Distribution Unit)是专为机柜式安装的电气设备提供电力分配而设计的产品,拥有不同的功能、安装方式和不同插位组合的多种系列规格,能为不同的电源环境提供适合的机架式电源分配解决方案。&  的应用,可使机柜中的电源分配更加整齐、可靠、安全、专业和美观,并使得机柜中电源的维护更加便利和可靠。 其次再来介绍一下网络智能PDU,顾名思义它是个网络化的智能设备,它不仅涵盖了PDU的各种优点,而且对每个插头赋予可管理性,这是PDU难以做的。最重要的一点还是它的远程控制特性,使用户通过Web网络就能实现对服务器远程管理。这对于网络管理员来说是一个很不错的助手,它将服务器资源很大程度上的管理权限交给了用户,服务商也不需要整天为了客户和服务器的问题而疲于奔命,这对用户和服务商减少了麻烦。在智能方面,有着独特的设计,特有的条件触发任务,可以预先对各种服务进行设置(如:Web服务、Mail服务、POP3服务、FTTP服务等),不存在遗忘和人为出错现象。通过精致的数码显示屏您可以随时关注服务器的工作状态(如:温度、湿度、电流、电压等)。 此外对于现在的数据中心的运营方面来讲,拥有特色的服务是吸引客户的根本条件。传统的数据中心在电源方面都会使用PDU,而网络智能PDU(网络电源控制器),它浓缩了PDU的所有功能,并且添加智能与远程管理的管理。虽然说价格略高一些,但它的智能性和远程性是PDU无法替代的。最重要的是在一定程度上该产品可以为您谋取利益。&  我们来分析一下,您之所以选用的原因,无非就是看上PDU的安全性。这网络智能PDU也同样拥有,甚至会更好。PowerBox采用专用的3芯4方线电缆作为电源线。并且每个端口配备了独立保险装置,该设备具很强的耐高温能力。何况PDU的性能比较单一,就是一个简的电源分配单元。而网络智能PDU有很多附加功能,往往就是这些功能,使的数据中心在提高档次的同时,拥有利润的回报。例如:该设备的智能功能,您可以为您的客户实现对设备的全天候的监控包括电流、电压及服务器的运行情况,都可以使托管用户知道的一清二楚,必要时还可以让用户自行实现对服务器的远程重启,这完全属于额外的服务范畴。&  听了笔者这翻介绍相信您对网络智能PDU这个网络时代的智能产物有所了解,那么这个新一代的智能设备会成为IDC行的新宠吗?在此笔者不做更多的评介,只是希望网络智能PDU(网络电源控制器)能为IDC行业谱写新的乐章。【】深圳市昌遂科技有限公司()&相关新闻推荐:&&&&&&&
地址:深圳市宝安区新安71区留仙三路引进工业大厦一、六楼东 & 电话:1 47383 &传真:2 & 邮箱:技术支持:想找一款可以监控环境温湿度的24口智能PDU,大家有好的介绍吗?
想找温湿度的24口PDU,大的介绍吗? 摄影摄像 &|&&|& 53分钟前
最佳答案:
宜坤品牌有24口PDU,产品型号是EP-2400IP,当设备连接有温湿度传感器,可在此处读到现场的温湿度数值。且可设定过高温/湿度、过低温/湿度,执行报警操作。能让您通过网络远程实时对24台设备的电源进行管理,并可扩展温湿度进行。 ?
其他参考答案:
求一个周芸开头或者周云开头的双胞}

我要回帖

更多关于 环境温湿度校准规范 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信