之前写过一篇,ubuntu mate系统的树莓派连接多个wifi的文章
https://blog.youkuaiyun.com/tao_292/article/details/106214035
后来,发现连接wifi 的ip 地址老跳变,手机热点还好,可以从手机上看到连接的ip 地址,但是wifi 看不到,总不能时时刻刻带着一个屏幕跑吧。
之前的想法是,将连接wifi 的网络设置成静态ip ,网上百度一番,设是设成功了,但是写的wpa_supplicant.conf文件就没有什么效果了,不会先连接优先级大的热点,只会连接wifi 。由于我太菜了,折腾了一番,只好做算。
后来打算,将ip地址传输给单片机,然后由单片机从串口或OLED屏输出,由于经费不足,买不起OLED。同时在程序里面写好了,获取IP地址,并通过一个已有的串口,发送给单片机,3秒发送一次的话,不占用串口的使用情况。
但是,但是,我不知道ip ,根本没办法远程连接树莓派,然后启动程序。。。。白搞了
只能弄个开机自启动的程序,开机然后朝串口打印数据? 现有串口都是有用的,不能占用了,新弄一条串口? 不不不,麻烦
正好看到网上有个树莓派发送邮件的功能,拿起来就干,在home目录下创建 send_ip.py文件
里面程序如下:
#!\usr\bin\env python
#-*-coding: utf-8-*-
import socket
import time
import smtplib
import urllib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.utils import formataddr
#检查网络连通性
def check_network():
while True:
try:
print "1111"
result=urllib.urlopen('http://baidu.com').read()
print result
print "Network is Ready!"
break
except Exception,e:
print e
print "Network is not ready,Sleep 5s..."
time.sleep(5)
return True
#获取本级制定接口的ip地址
def get_ip_address():
s =socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.connect(("1.1.1.1",80))
ipaddr=s.getsockname()[0]
s.close()
return ipaddr
def sendEmail():
ret=True
ipaddr=get_ip_address();
try:
msg=MIMEText(ipaddr,'plain','utf-8')
msg['From']=formataddr(["用户名",'694492292@qq.com'])
msg['To']=formataddr(["收件人",'694492292@qq.com'])
msg['Subject']="树莓派IP"
server=smtplib.SMTP_SSL("smtp.qq.com",465)
server.login("694492292@qq.com","zuw****danbdga") #后面的是在QQ上开启SMTP的密码
server.sendmail('694492292@qq.com',['694492292@qq.com',],msg.as_string())
server.quit()
print('邮件发送成功')
ret=True
except:
ret=False
if __name__ == '__main__' :
check_network()
sendEmail()
然后给文件添加可执行权限
sudo chmod 777 send_ip.py
然后再创建shell 脚本 clientStart.sh
内容如下:
#!/bin/sh
cd /home/pi
sudo python send_ip.py
也加上可执行权限
sudo chmod 777 clientStart.sh
然后给添加到自启动环境里面去
sudo vi /etc/rc.local
在exit 0之前加入一行代码,代表启动这个脚本
/home/pi/clientStart,sh start
保存退出,程序写完,自己测试一下,手动在用户目录下,sudo python send_ip.py
emmm........没反应
加行注释,卡死在 result=urllib.urlopen('http://baidu.com').read()
在联网的电脑上,进入python, import urllib,然后执行result=urllib.urlopen('http://baidu.com').read()
也卡死在这儿,打开百度,巴拉巴拉巴拉,
打开手机,点开闲鱼,找一找二手屏幕。。。
过了半个小时,没选好屏幕,选择困难症,打开树莓派电源,收到一个邮件???
完事!