查看: 1090|回复: 3
打印 上一主题 下一主题

【banana pi BPI-M3】09 远程获取温度利用BMP085基于python ssh

[复制链接] qrcode

37

主题

42

帖子

127

积分

注册会员

Rank: 2

积分
127
楼主
跳转到指定楼层
发表于 2016-6-4 11:25 AM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 独行客 于 2016-6-4 11:34 编辑

09 远程获取温度利用BMP085基于python ssh


接上篇  [BPI_M3] 【banana pi BPI-M3】08 BMP085温度气压传感器读写笔记

香蕉派我放在家里,这样我可以获取 家里的温度和气压了,但是平时在上班,怎么获取呢?

于是有了这篇

思路:
            1、我烧的linux系统默认已经开启ssh服务,但是要远程连接到香蕉派,必须要端口映射,即外部网络访问SSH 端口22时自动转发到我的香蕉派,一般的路由都有这个功能;

            2、保证家里的路由拨号获取的是外网ip而不是局域网Ip,否则端口映射也没用,只能打洞,这个不说了,我知道这么多,怎么分辨局域网IP和外网IP自行网络搜索;

            3、有外网IP,有端口映射,但是我的外网IP每次重启或掉线拨号后都会变动,于是需要IP地址与域名绑定,即连接某个网站只需要输入网址即可,会自动找到对应IP并连接
                 于是有了花生壳做域名和IP地址的绑定,一般主流路由都内置了花生壳,去花生壳官网 注册后再路由登陆即可,具体的自行网络搜索

           4、接下来就是重头戏,用python 脚本自动ssh 远程连接我的香蕉派并执行命令返回结果,代码在XP下面OK,在linux 也OK,需要安装某些模块 【paramiko】
                网络搜索进去官网下载后,解压 ,在命令行 运行 下面安装命令即可
  1. python setup.py install
复制代码

           5、重头戏,上python脚本源码 【ssh-bpi远程登录获取bpi上家里的温度bmp085-paramiko.py】:
  1. #-*- coding: utf-8 -*-

  2. #!/usr/bin/python

  3. import paramiko

  4. import threading
  5. import time



  6. def ssh2(ip,username,passwd,cmd):

  7.     try:

  8.         ssh = paramiko.SSHClient()

  9.         ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

  10.         ssh.connect(ip,22,username,passwd,timeout=5)

  11.         for m in cmd:

  12.             stdin, stdout, stderr = ssh.exec_command(m)

  13. #           stdin.write("Y")   #简单交互,输入 ‘Y’

  14.             out = stdout.readlines()

  15.             #屏幕输出

  16.             for o in out:

  17.                 print o,

  18.         print '%s\tOK\n'%(ip)

  19.         ssh.close()

  20.     except :

  21.         print '%s\tError\n'%(ip)




  22. import socket

  23. if __name__=='__main__':

  24.     cmd = ['cal','echo hello!']#你要执行的命令列表
  25.     print "Begin......"
  26.     ip = '192.168.1.1'
  27.     ip = '14.157.26.189'

  28.     web='你的网址XXXX.gicp.net'
  29.     try:
  30.         web2ip=socket.getaddrinfo(web,None)#[0][4][0]
  31.     except socket.herror, e:
  32.         print e
  33.         exit(0)#return
  34.     print web2ip
  35.     if web2ip[0][4][0]  == '':
  36.         ip='192.168.1.102'
  37.         pass
  38.     else:
  39.         ip = web2ip[0][4][0]
  40.     print 'get ip is ' + ip
  41.     username='bpi'
  42.     passwd='输入你的密码'
  43.     #cmd='ls'
  44.     #cmd = 'mv_bmp085
  45.     cmd = ['mv_bmp085','uname']#['cal','echo hello!']
  46.     ssh2(ip,username,passwd,cmd)
  47.     time.sleep(4)

复制代码



脚本在XP下双击即可

上源码和 模块 paramiko-master.zip ssh-bpi远程登录获取bpi上家里的温度bmp085-paramiko.zip




上一张效果图:




热死了,房间温度32度,昨天看到最高温度35度,还好晚上有空调~~~~~






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

70

帖子

4

积分

新手上路

Rank: 1

积分
4
沙发
发表于 2016-6-4 06:05 PM | 只看该作者
哇塞,这个屌爆了啊……
回复 支持 反对

使用道具 举报

6

主题

135

帖子

110

积分

注册会员

Rank: 2

积分
110
板凳
发表于 2016-6-4 07:31 PM | 只看该作者
学习下python命令。
回复 支持 反对

使用道具 举报

1

主题

80

帖子

5

积分

新手上路

Rank: 1

积分
5
地板
发表于 2016-6-10 06:52 AM | 只看该作者
太棒了,赞一个,用的是BMP085的模块吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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