在我的大学项目(智能家居系统)中,有一项功能,如果有人敲门,必须在监视器上(在浏览器中)显示图像。我正在使用Arduino实现门爆传感器(Piezo),而Arduino必须以某种方式将命令发送给Raspberry Pi拍照,然后将照片发送到另一台计算机的浏览器。还有其他几个类似的模块。一切都连接到同一个WiFi网络。

现在,我希望可以使用PHP和MySQL以及不断运行的多个Ajax请求以某种方式使其工作,但这可能不是一种整齐的方法。我听说过node.js和Web套接字,但是我不确定我是否有时间学习它。
(如果绝对必要,我可以)

任何人都可以告诉我这是什么实施此类系统的正确方法?这真的很有帮助。

评论

我认为我们将努力为您找到最好的方法,因为这很大程度上取决于您已经知道的-除非有人可以将您指向现有的代码库(但是您可能不会学到很多东西)。

为了在浏览器中触发服务器或数据库更改的实时警报,必须使用NodeJS。其余功能可以通过PHP管理...!

#1 楼

Push vs Poll

您提出的发送频繁AJAX请求的解决方案听起来很像轮询-您经常发送请求以检查状态是否已更改。当压电传感器检测到更改时,将更改推送到服务器会更有意义。

这之间的区别是:


服务器:是否存在
传感器:否
服务器:门口有人吗?
传感器:否
服务器:门口有人吗?
传感器:不...无限重复...


然后:


传感器:门口有人! br />

第一个示例是轮询,第二个示例是轮询。您可以判断哪个将具有较低的电源使用量,较少的复杂代码并减少网络使用量。

HTTP还是其他?

AJAX请求是通过HTTP发送的,因此相当重,并且每个连接需要几次TCP握手(除非您使用Keep-Alive)。

也许值得考虑使用诸如MQTT之类的替代协议(“何时以及为什么使用MQTT协议?”这个问题有很好的解释,这与您的问题非常相似)。 >
像MQTT这样的消息代理可能比您当前的情况要强大一些,但是如果您选择向智能家庭网络中添加更多设备,则可以轻松扩展一个MQTT代理。 AJAX请求系统很快就会崩溃。想象一下有四个或五个不同的设备互相轮询。它会迅速导致您的网络过载,这将导致大量的电源消耗。

节点和Web套接字

使用Web套接字和Node可以解决问题使用推而不是民意调查,所以我认为这将是一个好主意。但是,我怀疑如果您真的不想学习Node,则可以进行轮询。

如果您想要一个可扩展的解决方案在您扩展智能家居时将起作用,那么绝对可以与推一起使用-这样可以省去很多麻烦和眼泪。如果您只想快速验证概念,则轮询可能会起作用。

我的个人建议是,您应该学习Web套接字或使用MQTT之类的消息代理进行调查。您可以使用Mosquitto-PHP之类的客户端库(由HiveMQ提供指南)来简化在PHP中使用MQTT的过程,或者仅使用Node和Web套接字。我怀疑Node和Web套接字的学习资源会更好,但是MQTT倾向于在智能家居/ IoT环境中受青睐。