分页: 1 / 1
梅林(Merlin)系统的路由器获取CPU温度并同步到Domoticz
发表于 : 周三 8月 23, 2017 16:53
由 DT27
- 屏幕快照 2017-08-23 16.52.43.jpg (17.06 KiB) 查看 41564 次
- 屏幕快照 2017-08-23 16.53.13.jpg (14.04 KiB) 查看 41564 次
很简单,ssh到路由,然后执行“cat /proc/dmu/temperature”就取到温度了。
这里基于树莓派,用python(Python2)来进行ssh,其它系统应该也差不多。
具体步骤:
0、Domoticz中新建虚拟设备,类型选择温度,然后到设备列表记住该设备的IDX,后面要用。
1、开启路由SSH。路由器管理界面,系统管理>系统设置,Enable SSH选择LAN only,仅允许局域网访问,其它默认。
- 屏幕快照 2017-08-23 16.41.17.jpg (27.86 KiB) 查看 41564 次
2、安装python的ssh模块paramiko(这一步需要安装的依赖项目挺多了,请耐心等待):
代码: 全选
sudo pip install paramiko
3、新建python脚本 router.py(我放在domoticz/scripts/python目录里)
代码: 全选
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import paramiko
import urllib2
import re
#Domoticz服务器
domoticzserver = "127.0.0.1:8080"
#设备IDX
idx = "44"
#此方法向Domoticz服务器发送请求
def domoticzrequest (url):
request = urllib2.Request(url)
response = urllib2.urlopen(request)
return response.read()
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#路由IP格式:192.168.1.1
ssh.connect(hostname='路由IP地址', port=22, username='路由登录用户名', password='登录密码')
cmd = 'cat /proc/dmu/temperature'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read()
temp = re.findall(u'(\d+)',result)
domoticzrequest("http://"+domoticzserver+"/json.htm?type=command¶m=udevice&idx="+idx+"&nvalue=0&svalue="+temp[0])
保存后,为文件添加执行权限(感谢
wangshizf 提醒):
代码: 全选
sudo chmod +x router.py
然后执行“python router.py”测试是否能正常更新到domoticz。
4、设置定期(例如每隔15分钟)执行脚本。执行:
在文件末尾新行加入:
代码: 全选
*/15 * * * * /home/pi/domoticz/scripts/python/router.py
完成!
Re: 梅林(Merlin)系统的路由器获取CPU温度并同步到Domoticz
发表于 : 周三 8月 23, 2017 22:41
由 vonzeng
点赞!
Re: 梅林(Merlin)系统的路由器获取CPU温度并同步到Domoticz
发表于 : 周三 8月 23, 2017 23:29
由 blindlight
lede的命令是sensors,获取字段根据实际情况调整,其他东西照旧类推
代码: 全选
sensor = os.popen('sensors')
temp = sensor.read().splitlines()
core0_temp = temp[2][15:19]
Re: 梅林(Merlin)系统的路由器获取CPU温度并同步到Domoticz
发表于 : 周四 8月 24, 2017 12:43
由 wangshizf
感谢分享,本人小白,基本只会照葫芦画瓢,今天画了一上午,两个坑,第一个是安装paramiko报错,搜了半天找到一个解决办法,sudo apt-get install -y build-essential libssl-dev libffi-dev。第二个是在PYTHON文件夹下执行router.py能正常读取温度,可是不能自动更新,后来发现是权限不够,chmod 777 /home/pi/domoticz/scripts/python/router.py 解决。
再次感谢
Re: 梅林(Merlin)系统的路由器获取CPU温度并同步到Domoticz
发表于 : 周四 8月 24, 2017 12:51
由 DT27
wangshizf 写了: ↑周四 8月 24, 2017 12:43
感谢分享,本人小白,基本只会照葫芦画瓢,今天画了一上午,两个坑,第一个是安装paramiko报错,搜了半天找到一个解决办法,sudo apt-get install -y build-essential libssl-dev libffi-dev。第二个是在PYTHON文件夹下执行router.py能正常读取温度,可是不能自动更新,后来发现是权限不够,chmod 777 /home/pi/domoticz/scripts/python/router.py 解决。
再次感谢
感谢分享解决方案