让树莓派推送IP到微信

树莓派没连接屏幕情况下,连接网络怎样快速获得IP地址。

查了下网上现在有小屏幕显示、DDNS绑定还有包括让树莓派播放音频把IP地址读出来。

这里准备用Python写一个小程序

之前我一直在用 Server 酱的推送服务,推送消息到微信中,这里想到可以让树莓派每次开机联网后将IP通过 Server 酱推送到微信。

这里需要用到:

  • 1.树莓派(我手里是树莓派4,多少没关系能联网就行)
  • 2.Server酱账号一个
  • 3.Python程序一个

操作步骤

首先到Server酱注册账号,并绑定要接收消息的微信

http://sc.ftqq.com/

可使用GitHub一键登入 ,登录后首先绑定需要接收消息的微信

点击【微信推送】,扫描二维码关注公众号绑定接收微信号

Server酱首页选择微信推送

然后选择发送消息,获取SCKEY

Server酱参数说明

Server酱支持Get或者Post推送消息,这里我们选择Post可以定义标题和内容

接下来准备Python代码(自己瞎写的 能用就行?)

#!/usr/bin/env python
# coding=utf-8

#通过Sever酱推送树莓派IP到微信
#By 沙糖桔

import os
import sys
import time
import socket
import subprocess
import requests
import urllib3
import ssl



def getLocalIP():
    ip = None
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('114.114.114.114', 0))
        ip = s.getsockname()[0]
    except:
        name = socket.gethostname()
        ip = socket.gethostbyname(name)
    if ip.startswith("127."):
        cmd = '''/sbin/ifconfig | grep "inet " | cut -d: -f2 | awk '{print $1}' | grep -v "^127."'''
        a = subprocess.Popen(
            cmd,
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE)
        a.wait()
        out = a.communicate()
        ip = out[0].strip().split("\n")  # 所有的列表
        if len(ip) == 1 and ip[0] == "" or len(ip) == 0:
            return False
        ip = "over".join(ip)
    return ip


def pushtoWx(text,desp):
    s = requests.Session()
    ssl._create_default_https_context = ssl._create_unverified_context  # 关闭SSL证书验证
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36','Content-type': 'application/x-www-form-urlencoded'}
    push_url = r'https://sc.ftqq.com/[替换为你的SCKEY].send'  # Server 推送地址
    values = {'text': text, 'desp': desp}
    rp = s.post(push_url, data=values, headers=headers,verify=False)
    html = rp.text
    print(html)


def push_ip(ip):
    pushtoWx('树莓派地址:'+ip,'')


if __name__ == '__main__':
    count = 0
    time.sleep(10)#开机连接等待十秒钟后执行
    while True:
        ip = getLocalIP()
        print(ip)
        if ip == False:
            print("获取ip错误")
        else:
            count += 1
            push_ip(ip)
        if count == 2:
            break
        time.sleep(3)

然后将脚本加入开机执行

sudo vim /etc/rc.local

在 exit 0 之前添加一行:

sudo /usr/bin/python /home/pi/push_ip_wx.py &

保存后重启树莓派

启动后联网10秒推送消息到微信

Server酱推送的消息
收到的IP地址

拿到IP后就可以SSH、VNC链接树莓派开始玩耍。

树莓派4上手体验

最近在群辉里面用虚拟机弄了一个Openwrt的旁路由,感觉速度提升了很多,又看到树莓派已经出到4了,想弄一台来玩玩。

在万年淘宝找了一家买了一个树莓派4

树莓派4配置感觉可玩性很高,

1个千兆网卡、2个USB3.0、2个USB2.0、WIFI模块支持5G、2个MiniHDIM接口支持同时输出4K,并且最好的是供电接口改为了type-c,一下就感觉高级了许多。

一起买了一套亚克力外壳和一个小散热风扇

安装散热风扇前进系统试了下CPU温度在45°

这个外壳设计很有意思,通过多层亚克力板叠上去,上电进入系统重新看了下温度

#查看系统CPU温度
/opt/vc/bin/vcgencmd measure_temp

加了风扇后温度32°,很完美。

然后将HDIM换下来,用VNC来连接。

明天准备连上ADS-B信号接收,看看头顶飞过的飞机信息。