树莓派2(正面特写)

让树莓派“说出”自己的IP地址

玩树莓派的时候没有显示器,那么可以通过ssh远程控制的方式管理树莓派,但是ssh连接之前必须要知道树莓派的ip地址啊,假如树莓派ip地址是动态获取的,那么要知道树莓派的ip地址非常不方便,本文教大家如何让树莓派“说出”自己的ip地址。

在上一篇使用树莓派播放音乐文章中,我们通过安装mplayer软件让树莓派播放音乐,本文是在上一篇的基础上实现的,所以首先要安装上一篇文章来配置树莓派。

让树莓派“说出”自己的IP地址的思路比较简单,我们首先通过ifconfig 命令获得当前的ip地址,然后根据ip地址播放相应的数值即可,我们需要下载0-9的语音,然后就可以开始了。

安装过程

下载语音文件及获取Ip脚本

git clone https://github.com/xinxingli/speak_raspi_ip.git

进入speak_raspi_ip目录,执行speak_ip.py文件

python speak_ip.py

这样就可以通过耳机听到树莓派的ip地址了,将脚本设置为开机启动即可。

脚本代码

树莓派“说出”ip地址的脚本代码为:


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

import os
import sys
import time
import socket
import subprocess

voice_path = os.path.join(sys.path[0], 'voice')
player = ["mplayer"]


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 = "完".join(ip)
    return ip


def getFilePath(filename):
    return os.path.join(voice_path, "%s.mp3" % filename)


def play(voice):
    for i in player:
        cmd = "%s %s" % (i, getFilePath(voice))
        a = subprocess.Popen(
            cmd,
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE)
        a.wait()
        if a.returncode == 0:
            break


def speak(ip):
    for i in ip:
        if i == ".":
            play("点")
        else:
            play(i)
    play("完")

if __name__ == '__main__':
    count = 0
    while True:
        ip = getLocalIP()
        print ip
        if ip == False:
            play("正在获取网络地址")
        else:
            count += 1
            speak(ip)
        if count == 10:
            break
        time.sleep(1)
      

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 让树莓派“说出”自己的IP地址 (http://blog.lxx1.com/1931)

如果博客对您有帮助,请给我 打赏


科技爱好者

工科学生大四在读,专业嵌入式开发,喜欢计算机,喜欢单片机,喜欢各种各样美好的东西,相信科技正在改变世界! 这是我的 个人博客

2 thoughts on “让树莓派“说出”自己的IP地址

发表评论

电子邮件地址不会被公开。 必填项已用*标注