树莓派论坛

 找回密码
 立即注册

用Siri来控制车库门[翻译转载]

whtech 发表于 2013-1-26 17:25:36 | 显示全部楼层 |阅读模式
原文:
http://www.raspberrypi.org/phpBB ... 482d287d7fb089e0d60


hi,这是我第一个树莓派的项目,SiriProxy。它运行在树莓派上,使用wiringPi访问派的GPIO口,并发一个延时的on/off信号。这个延时信号用来控制我车库门。所以我可以在iphone上用siri来控制我的车库门。

可能有其它的方式来做同样的事情,比如在Pi上跑一个web服务器来访问Pi的GPIO端口,但是我只是简单的做了一个,符合我自己的需求,并且运行的一切正常。

我的派在整个安装过程中都用root用户运行,这样可以比较简单一些(原文粗制滥造)。我用wheezy版本。

下面这个链接 http://www.idownloadblog.com/201 ... oxy-tutorial-video/ 告诉你怎么安装和运行siriproxy。如果你按照这些步骤,并且把11,12,13步的顺序更换为12,13,11。顺便说一下,命令7大概需要在PI上编译90分钟。

然后开始安装wiringPi,可以从 https://projects.drogon.net/rasp ... wnload-and-install/ 获得。

一旦这些都安装好了,我们只需要更改一下siriproy里面自带的ruby脚本的例子。
编辑/root/SiriProxy/plugins/siriproxy-example/lib/siriproxy-example.rb 文件

找到这几行:
  1.   listen_for /test siri proxy/i do
  2.     say "Siriproxy is up and running!" #say something to the user!

  3.     request_completed #always complete your request! Otherwise the phone will "spin" at the user!
  4.   end
复制代码
在它后面追加这几行
  1.   listen_for /open the garage door/i do
  2.     say "Opening the garage door.."
  3.     request_completed
  4.     system("gpio mode 1 out")
  5.     system("gpio write 1 1")
  6.     system("sleep 0.5")
  7.     system("gpio write 1 0")
  8.   end

  9.   listen_for /close the garage door/i do
  10.     say "Closing the garage door.."
  11.     request_completed
  12.     system("gpio mode 1 out")
  13.     system("gpio write 1 1")
  14.     system("sleep 0.5")
  15.     system("gpio write 1 0")
  16.   end
复制代码
你可以看到,ruby脚本简单的用system命令来访问wiringPi,设置GPIO针脚作为输出端口,设置它半秒高电平,半秒低电平。

你可以让siri调用任何你在命令行终端能用的命令,比如说通过无密码的SSH登录到远程的电脑让它关机或重起。
  1.   listen_for /turn off my laptop/i do
  2.     response = ask "Are you sure you want me to shut down your laptop?"

  3.     if(response =~ /yes/i)
  4.       say "OK, I'll shut it down now.."
  5.       system("ssh root@192.168.1.74 shutdown -h now")
  6.     else
  7.       say "OK, I wont!"
  8.     end

  9.     request_completed
  10.   end
复制代码
你可以把树莓派放在不同房间使用不同的命令控制,但只使用一个siriproxy服务器。注意:每次你修改完配置后,你需要在重起服务器之前运行"siriproxy bundle"命令。

这里还有一个我安装过程的演示视频。

http://youtu.be/NUJ5z76Xv5o

墙内的朋友安了吧,墙了。

评分

参与人数 1 +1 +5 收起 理由
树老大 + 1 + 5 赞一个!

查看全部评分

树老大 发表于 2013-1-26 17:29:36 | 显示全部楼层
翻译的很不错哦。感谢支持。
linux0ne 发表于 2013-1-28 08:26:57 | 显示全部楼层
树老大 发表于 2013-1-26 17:29
翻译的很不错哦。感谢支持。

版主,建议给这个网友开一个专门的版块,这样一来可以网罗更多的E文好的网友来翻译文章,二来可以通过翻译,接近因为语言不通导致的爱好、兴趣、技术普及壁垒……   当然开置顶开一个专题也好。
linux0ne 发表于 2013-1-28 08:38:00 | 显示全部楼层
我的工作让这个论坛在业界中提升了一个等级,点击率上升了N多。
linux0ne 发表于 2013-1-28 09:14:26 | 显示全部楼层
文章中提到的两个url地址的内容,如果在方便的时候是否可以通过您的理解精要地翻译一下。期待。
linux0ne 发表于 2013-1-28 09:15:56 | 显示全部楼层
文章中提到的两个地址处的内容是否可以通过你的理解精要的翻译一下。
linux0ne 发表于 2013-1-28 09:19:28 | 显示全部楼层
本帖最后由 linux0ne 于 2013-1-28 09:20 编辑
树老大 发表于 2013-1-26 17:29
翻译的很不错哦。感谢支持。

5楼的内容怎么在回复之后就自动给删除了呢?  
发现这个论坛在回复的内容上控制得真是挺有意思的,有些时候写了一大堆的话,却提示说含有不良信息,然后愣是不让发表。最要命的是它并不告诉你哪些字符是这个BBS不让用的!!!
这种限制我觉得在这种论坛上完全没有必要  

貌似上次是因为提到了三星,提到了破解,提到了地址的U开头的缩写……还有一些别的东西,总之不知道是因为哪个,目前有一个是肯定的,如果用地址的全缩写肯定自动删除回复,头子了!

whtech1 发表于 2013-1-29 22:39:01 | 显示全部楼层
linux0ne 发表于 2013-1-28 09:19
5楼的内容怎么在回复之后就自动给删除了呢?  
发现这个论坛在回复的内容上控制得真是挺有意思的,有些时 ...

我发回复的时候也是说有非法内容,需要审核。上次和树老大说,只能等审核通过才能出来。
whtech1 发表于 2013-1-29 23:07:52 | 显示全部楼层
linux0ne 发表于 2013-1-28 09:15
文章中提到的两个地址处的内容是否可以通过你的理解精要的翻译一下。

简单翻译了一下如何创建siri proxy

原文地址:
http://www.idownloadblog.com/201 ... oxy-tutorial-video/

安装之前,需要下面几个先决条件:
1.最好安装一个ubuntu.可以实际安装一台机器,也可以装在虚拟机上
2.只能安装在4s上,我未测试其他设备,可能不能工作,而且不合法
3.只有连上wifi的时候才可用,并且iphone和siri proxy在一个局域网内。虽然可以通过vpn远程,但是我尽量保持简单和直接
4.本文只覆盖初始化安装,以后我告诉你们如何增加一些插件来增加体验
5.任何人都可以做到,包括你,不要害怕
6.最后,感谢Pete创建了SiriProxy,并提供基础

如何安装:
预备步骤:
1.如果已经有了ubuntu,直接下一步。没有的话,可以在windows或者mac上装一个,mac上可以装Parallels或者vmware fusion运行ubuntu虚拟机,我用的是parallels
2.安装ubuntu的最新更新,参看视频1:00时刻(视频需要翻墙)
3.如果你用paralles或者其他虚拟机,需要设置虚拟机实通过bridge模式,这样可以联上互联网,参看视频4:00
4.设置dropbox,这是个可选步骤,我觉得这样方便一些。你需要有地方传输你iphone上生成的证书,你可以用邮箱,我用的是dropbox

命令行步骤:

这些步骤都可以参考视频,每个都有时间戳作为参考。简单的在终端复制粘贴这些命令,然后按照指令执行。

命令1:时间:5:44(此处安装必要的库)
sudo apt-get install dnsmasq ruby build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion
选择y继续,

命令2:时间6:13
sudo nano /etc/dnsmasq.conf
找到62行: #address=/double-click.net/127.0.0.1
在他下面增加:address=/guzzoni.apple.com/(你机器的ip地址)
按ctrl+o,回车保存,按ctrl+x退出

命令03: Time 7:42
sudo /etc/init.d/dnsmasq restart

命令 04: Time 7:55
bash < <(curl -s https://raw.github.com/wayneeseg ... ripts/rvm-installer)
命令 05: Time 8:20
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
命令 06: Time 8:33
echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
命令 07: Time 8:47
rvm install 1.9.3

这条命令需要执行一段时间,尤其编译阶段

命令 08: Time 9:22
rvm use 1.9.3 --default
命令 09: Time 9:32
git clone git://github.com/plamoni/SiriProxy.git
命令 10: Time 9:49
cd SiriProxy
选择y继续(我感觉不对,没有去验证)

命令 11: Time 10:06
rake install
命令 12: Time 10:21
mkdir ~/.siriproxy
命令 13: Time 10:31
cp ./config.example.yml ~/.siriproxy/config.yml
命令 14: Time 10:43
siriproxy gencerts
命令 15: Time 11:04
siriproxy bundle
命令 16: Time 11:23
rvmsudo siriproxy server
这条命令启动Siri Proxy,成功的话,会提示"Starting SiriProxy on port 443.."


在iphone 4s上设置

1.首先你要取得我们在上面第14步生成的证书,在4s上安装。你可以使用dropbox或者邮件传输到iphone,看视频的11:40
这个证书在 ~/.siriproxy/ca.pem,你需要查看隐藏文件,一旦证书到你的iphone,选择安装,参照视频12:44

2.进入iphone wifi设置,选择wifi连接左边蓝色简单按钮,记住,你的手机需要和你的siriproxy在一个局域网。在dns那里,把dns修改为siriproxy的ip地址,参看视频12:59

3.测试siri,按住home键,说“test siri proxy”,siri会回复你,“siri proxy is up and running”,在你的终端上面会显示你的语音包。

虽然看起来很复杂,你大概需要不到一个小时。
whtech1 发表于 2013-1-29 23:41:10 | 显示全部楼层
linux0ne 发表于 2013-1-28 09:15
文章中提到的两个地址处的内容是否可以通过你的理解精要的翻译一下。

另外一个地址是如何安装wiring pi,貌似被墙了。改天翻墙了再翻译。

前一篇的视频很重要,但也被墙了。

所以还是用pi做一个无障碍翻墙的路由器吧。
http://blog.wo.ai/archives/183 这是网上整理的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )