ROS之樹莓派ip地址發送到QQ

之前寫過一篇,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()

也卡死在這兒,打開百度,巴拉巴拉巴拉,

打開手機,點開閒魚,找一找二手屏幕。。。

過了半個小時,沒選好屏幕,選擇困難症,打開樹莓派電源,收到一個郵件???

完事!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章