遥控猫门
基于 Web 的遥控猫门控制面板
引言
我需要一个可以从任何地方访问的网站,以便查看和控制我用来让我的猫进出房子的乐高Mindstorm机器人门。
我最初的想法是把这个网站托管在我家里的电脑上。但出于几个原因,这个解决方案并不理想。首先,我没有静态IP地址。每次我重启电脑或重置路由器,我的网站的IP地址都可能改变。其次,它需要我的家用电脑必须保持开机状态,这会缩短机器的使用寿命并浪费电力。
我需要一个拥有静态IP地址的网站,我可以在家或在外访问,并且不依赖于我的家用电脑。这使得Azure网站成为我的应用程序的理想托管解决方案。
背景
我的猫是个多产的猎手,喜欢给我带回野生动物。这包括鸟、老鼠、大鼠和负鼠。更糟糕的是,它喜欢把它们活生生地带给我。凌晨3点,猫把一只活老鼠扔在地板上,这绝对是紧急情况。
在过去的一年里,我一直在解决这个问题。在这段时间里,我提出了4个不同的解决方案。每一个都比前一个有所改进。
版本 1.0
晚上不要让猫出去。老鼠是夜行动物,所以晚上关上门就能解决问题。这个版本被证明不是一个好的长期解决方案,因为猫决定整晚在房子里喵喵叫,直到我心软放它出去。
版本 2.0
让猫整晚出去。问题是我住在密歇根州,晚上会很冷。所以我想在天冷的时候让它进来。于是我做了一个丑陋但有效的有机玻璃箱,放在客厅宠物门的正里面。猫可以进屋,但只能待在猫箱里,直到我早上醒来把它放出来,前提是它嘴里没有叼着野生动物。
本以为这样就可以了,但猫没有多少耐心,现在它已经学会了,如果箱子关着,它就可以跑出去,在窗外嚎叫,直到我起床,走到前门,把它放进屋里。
但我不想每晚都起床让它进屋。
我如何在不离开床的情况下让猫在晚上进屋,同时确保它嘴里没有叼着活物?
版本 3.0
这是我“技术宅”模式全开的版本。我安装了一个带运动检测软件的网络摄像头,当猫在猫箱里时会通知我。它被配置为将所有通知发送到我的手机。然后我在手机上创建了一个快捷方式,可以让我查看摄像头的实时画面。通过这种配置,我可以从任何地方看到我的猫想进屋,并且它没有叼着老鼠。
然而,我还没有完成。我还需要能够打开和关闭猫门,而无需离开我舒适的床。如果收到移动警报,我仍然需要从床上爬起来,走到猫门,然后让它进来。
我需要某种我能安装的机器人,它能让我远程控制门。当我想起机器人时,我想到了……乐高Mindstorms。为什么不通过添加一个可以打开和关闭猫门的乐高机器人起重机,让我的猫箱的酷炫程度增加一百万倍呢?
于是我造了一个乐高机器人。一个能开关猫门的机器人。你可以在以下视频链接中看到这个门在工作:
猫箱上放着乐高机器人,旁边放着网络摄像头的照片
机器人会响应侧墙上的按钮。 (你可以在视频中看到我的脚按下它)当连接到网络摄像头顶部的传感器向后倾斜30度时,它也会打开和关闭。这允许我使用摄像头的内置平移/倾斜功能,通过任何网页浏览器远程打开门。
我对这个解决方案相当满意,因为我现在可以浏览摄像头自带的网站,然后使用平移/倾斜按钮来打开猫门。
然而,这个解决方案未能通过初步用户测试。我很快发现,我并不喜欢浏览摄像头画面的网站,输入我的登录凭据,查看摄像头画面,然后导航到摄像头的控制面板页面,点击“向上倾斜”按钮四五次,等待猫进屋,然后将摄像头倾斜回原始位置。
非常不用户友好。
版本 4.0
这就引出了我的猫门当前的版本。在这个版本中,我正在尝试开发一个自定义的ASP.NET网页,该网页具有非常简单的用户界面,显示当前的摄像头画面和一个大的“打开猫门”按钮。我希望这个解决方案能够绕过网络摄像头丑陋的内置网页,并绕过摄像头的安全设置,让我在不输入凭据的情况下就能打开门。
另外,我希望能够从任何地方访问这个网站。我可以将这个网站托管在我的家用电脑上,但由于我没有静态IP地址,网站可能无法始终访问。而且,我不想被迫保持我的电脑开机才能操作猫门。
对我来说,最理想的做法是将这个网站创建并部署到Azure云中。这将允许我将本地PC排除在整个解决方案架构之外。
使用代码
截至2013年5月2日,代码仍在开发中。我将在网页完成时发布代码片段。但是,由于这个解决方案需要大量的独立硬件,我不确定完整的解决方案对大多数读者来说会有多大用处。
我希望在这里提供一些关于如何从摄像头读取图像,如何向摄像头发送平移/倾斜命令,以及如何绕过摄像头安全设置的代码片段。
关注点
即将推出。
Mindstorm 详细信息
网络摄像头 详细信息
Web 代码
历史
2013.05.02 首次发布