基于Arduino的家庭自动化 / Arduino的XMPP客户端

4

我正在尝试建立一个自动化家庭某些任务的系统。

我在考虑这样一种解决方案:服务器端应用程序能够通过网络向Arduino(附带Arduino以太网盾)发送/接收命令/数据。

在这里,Arduino可以作为服务器应用程序的传感器接口或命令执行接口。

例如(用户故事):

  1. 我家的高架水箱上连接了一个与Arduino(附带Arduino以太网盾)连接的水位传感器。

  2. 另一个与Arduino(附带Arduino以太网盾)连接的继电器/锁定装置连接到水泵。

  3. 现在,Web上的服务器端应用程序能够从水箱上的Arduino获取/接收水位信息。

  4. 根据接收到的水位信息,Web应用程序应该向水泵上的Arduino发送适当的信号/命令来开启或关闭水泵。

现在为了使这样的系统能够在Web上运行,我考虑使用以下优先级解决方案之一进行通信:
  1. 使用 XMPP 在服务器应用程序和Arduino之间进行通信。
  2. 使用HTTP轮询。
  3. 使用HTTP挂起GET。
对于第一个解决方案,我需要实现一个XMPP客户端,该客户端将驻留在Arduino上。
是否可能编写足够小以驻留在Arduino上的XMPP客户端?
如果是,那么我需要为Arduino编写哪些最小化的XMPP客户端功能,以便它能够与GTalk等XMPP服务器解决方案联系?
对于解决方案2和3,我需要指导实施。
此外,哪种解决方案更具成本效益和易于扩展?

参见:http://stackoverflow.com/questions/25108933/which-iot-protocol-framework-is-the-best-for-the-m2m-communication/ - niutech
8个回答

3
你可以看一下MQTT,它有一个Arduino库,是一个简单的发布-订阅消息代理。

1
我们正在开发一个开源中继基础设施,以使Arduino(和任何其他支持TCP/IP套接字的设备)可以通过Web访问。您的应用程序随后可以通过简单的REST API调用Arduino。有关更多信息和实时演示,请参见http://www.yaler.org/
此致, tamberg

它什么时候会可用,我能为其做出贡献吗? - Ashish Sharma

1
为什么不使用老牌的RS485来到达传感器执行器呢?只需发明一些简单的协议(地址、命令、数据)。如果需要更复杂的东西,可以使用另一个人作为RS485/以太网桥。

1

我不认为你需要使用那些东西来实现你的目标。

只需在给定间隔内从Arduino输出传感器数据,由另一端处理即可。

另外,在这类项目中,我一直在寻求避免使用以太网盾,而是使用XBeeRFM12B。 这将引导您朝着这个方向发展,更重要的是,使得有更多设备可以进行遥测和控制变得更容易。

如果有像XMPP这样在Arduino上运行的协议,它会是一个非常简化的出席协议,通过更加智能的服务器端处理进行代理。也就是说,这将是相似数量的工作。 虽然可能是可能的,但让XMPP在1 KB RAM中与您的应用程序代码一起运行听起来真的很痛苦。


达斯汀,我研究了你的建议并同意,在1k RAM上使用XMPP会很痛苦,但是使用XBEE或RFM12B也会限制我的解决方案的可用性。实际上,我正在寻找一种像Web服务(服务器端)一样的架构来与我的Arduino通信,以便以后可以从各种平台部署的REST API与远程服务器上的Arduino集成和通信。 - Ashish Sharma
根据我的经验,Arduino或PICs上的TCP/IP是可能的,但只能作为玩具示例。更好的方法是运行另一种类型的接口(以太网+UDP、串口、USB、单总线)到一个服务器(或WRT54g类型的路由器),将其转换为更重的HTTP/XMPP。此外,要考虑故障!如果您的服务器宕机,您的水箱将会溢出。如果一个Arduino可以自主监测水箱并控制泵,并向服务器发送状态,那么您就有了一个更加强大的解决方案。 - Wim
好主意Wim,由于我现在已经在解决方案上工作了,因此我一定会尝试集成并解决您提出的问题。 - Ashish Sharma

1

1

开源项目

管理传感器和网络 | 记录传感器数据 | 图表 | 策略 | 历史/日期/传感器规则 | 短信/电子邮件/URL/Twitter/XMPP 通知 | 事件日志 | Google 地图 | 还有更多功能

演示请访问 http://dev.hci.uma.pt/sawa

维基请访问 dev.hci.uma.pt/mediawiki/index.php

博客请访问 middlewaresensing.wordpress.com

您可以使用 HTTP Post 将数据发送到服务器,然后通过 XMPP 发布传感器数据。 HTTP Post(适用于资源受限设备,如 Arduino) 以及 sox_tools,一个用于在此系统上通过 XMPP 发布的 XMPP 客户端。


1

0

在研究了所有可用选项后,我对任何一种都不满意。

目前,我正在努力解决上述问题并提出自己的解决方案。

这个解决方案与我回复“Dustin”时的评论类似。

一旦我发布我的解决方案的第一个版本,我将立即在此处发布项目URL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接