├── README.md ├── setup.sh ├── speak_ip.py └── voice ├── 0.mp3 ├── 1.mp3 ├── 2.mp3 ├── 3.mp3 ├── 4.mp3 ├── 5.mp3 ├── 6.mp3 ├── 7.mp3 ├── 8.mp3 ├── 9.mp3 ├── 完.mp3 ├── 正在获取网络地址.mp3 └── 点.mp3 /README.md: -------------------------------------------------------------------------------- 1 | # 让树莓派说出自己的IP地址 2 | 3 | 当亲爱的树莓派没有显示器时如何控制它?对,就是ssh,但是ssh需要IP地址啊,树莓派的IP地址是多少?这个问题问的好,目前大约有这样几种解决方案:、 4 | 5 | - 获取到IP地址后将地址发到邮箱:前提是树莓派能上网 6 | - 通过串口连接树莓派后查看IP地址:需要USB转串口设备,还要连线,小白用户表示鸭梨山大 7 | - 从路由器上查看:如果没有路由器或者没法登上路由器咋办? 8 | - 固定IP地址:假设换到别的网络,网段不一样咋办?地址冲突咋办? 9 | - 通过某些工具扫描整个网段:你确定能扫出来吗? 10 | - 一个一个尝试:如果是A类IP岂不泪奔? 11 | 12 | 所以嘛,上面的解决方案是有局限性的!有木有更好的方案?`小码哥`告诉你,有! 13 | 14 | 原理很简单,当树莓派获取到IP地址之后,让它自己说出自己的IP地址就是了。 15 | 16 | 获取IP地址比较容易,`ifconfig`之类的命令大家也应该听说过。关键是“说”! 17 | 18 | 其实这个问题也挺简单的,去网上下载`0~9`的数字发音,然后对应着获取的IP地址,依次按顺序读出来就行啦。 19 | 树莓派里面是有播放器的,`omxplayer`就是一个。其他的播放器比如`mpg123`也可以的。 20 | 21 | 你需要做的,就是让树莓派开机自动执行这个程序,然后找个耳机插到树莓派的音频孔里面(表告诉我你木有耳机), 22 | 竖起你的耳朵,仔细听就是了~~~ 23 | 24 | 为了方便大家安装,一键脚本已经写好了,大家只要在树莓派上执行这个命令就好了: 25 | 26 | ```bash 27 | curl "https://raw.github.com/ma6174/speak_raspi_ip/master/setup.sh" | bash 28 | ``` 29 | -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo git clone https://github.com/ma6174/speak_raspi_ip.git 3 | sudo apt-get install -y mpg123 4 | sudo rm -rf /var/speak_raspi_ip/ 5 | sudo mv speak_raspi_ip /var/ 6 | echo "/usr/bin/python /var/speak_raspi_ip/speak_ip.py &" | sudo tee -a /etc/rc.local 7 | echo "install finished!" 8 | -------------------------------------------------------------------------------- /speak_ip.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding=utf-8 3 | 4 | import os 5 | import sys 6 | import time 7 | import socket 8 | import subprocess 9 | 10 | voice_path = os.path.join(sys.path[0], 'voice') 11 | player = ["omxplayer", "mpg123", "mpg321", "mplayer"] 12 | 13 | 14 | def getLocalIP(): 15 | ip = None 16 | try: 17 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 18 | s.connect(('114.114.114.114', 0)) 19 | ip = s.getsockname()[0] 20 | except: 21 | name = socket.gethostname() 22 | ip = socket.gethostbyname(name) 23 | if ip.startswith("127."): 24 | cmd = '''/sbin/ifconfig | grep "inet " | cut -d: -f2 | awk '{print $1}' | grep -v "^127."''' 25 | a = subprocess.Popen( 26 | cmd, 27 | shell=True, 28 | stdout=subprocess.PIPE, 29 | stderr=subprocess.PIPE) 30 | a.wait() 31 | out = a.communicate() 32 | ip = out[0].strip().split("\n") # 所有的列表 33 | if len(ip) == 1 and ip[0] == "" or len(ip) == 0: 34 | return False 35 | ip = "完".join(ip) 36 | return ip 37 | 38 | 39 | def getFilePath(filename): 40 | return os.path.join(voice_path, "%s.mp3" % filename) 41 | 42 | 43 | def play(voice): 44 | for i in player: 45 | cmd = "%s %s" % (i, getFilePath(voice)) 46 | a = subprocess.Popen( 47 | cmd, 48 | shell=True, 49 | stdout=subprocess.PIPE, 50 | stderr=subprocess.PIPE) 51 | a.wait() 52 | if a.returncode == 0: 53 | break 54 | 55 | 56 | def speak(ip): 57 | for i in ip: 58 | if i == ".": 59 | play("点") 60 | else: 61 | play(i) 62 | play("完") 63 | 64 | if __name__ == '__main__': 65 | count = 0 66 | while True: 67 | ip = getLocalIP() 68 | print ip 69 | if ip == False: 70 | play("正在获取网络地址") 71 | else: 72 | count += 1 73 | speak(ip) 74 | if count == 10: 75 | break 76 | time.sleep(1) 77 | -------------------------------------------------------------------------------- /voice/0.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/0.mp3 -------------------------------------------------------------------------------- /voice/1.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/1.mp3 -------------------------------------------------------------------------------- /voice/2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/2.mp3 -------------------------------------------------------------------------------- /voice/3.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/3.mp3 -------------------------------------------------------------------------------- /voice/4.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/4.mp3 -------------------------------------------------------------------------------- /voice/5.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/5.mp3 -------------------------------------------------------------------------------- /voice/6.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/6.mp3 -------------------------------------------------------------------------------- /voice/7.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/7.mp3 -------------------------------------------------------------------------------- /voice/8.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/8.mp3 -------------------------------------------------------------------------------- /voice/9.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/9.mp3 -------------------------------------------------------------------------------- /voice/完.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/完.mp3 -------------------------------------------------------------------------------- /voice/正在获取网络地址.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/正在获取网络地址.mp3 -------------------------------------------------------------------------------- /voice/点.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ma6174/speak_raspi_ip/75ef5e012a5c48c7e21daf7bbd203e5d433615c9/voice/点.mp3 --------------------------------------------------------------------------------