之前寫過一篇,ubuntu mate系統的樹莓派連接多個wifi的文章
https://blog.csdn.net/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(["用戶名",'[email protected]'])
msg['To']=formataddr(["收件人",'[email protected]'])
msg['Subject']="樹莓派IP"
server=smtplib.SMTP_SSL("smtp.qq.com",465)
server.login("[email protected]","zuw****danbdga") #後面的是在QQ上開啓SMTP的密碼
server.sendmail('[email protected]',['[email protected]',],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()
也卡死在這兒,打開百度,巴拉巴拉巴拉,
打開手機,點開閒魚,找一找二手屏幕。。。
過了半個小時,沒選好屏幕,選擇困難症,打開樹莓派電源,收到一個郵件???
完事!