使用Arduino的Arduino / XMPP客户端进行家庭自动化

时间:2009-12-03 12:40:34

标签: http automation xmpp arduino google-talk

我正在尝试设置一个系统来自动完成我家中的某些任务。

我正在考虑一种解决方案,其中服务器端应用程序将能够通过Web向Arduino(附带Arduino Ethernet Shield)发送/接收命令/数据。

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

E.g。 (用户故事):

  1. 我家的高架水箱有一个水位传感器,上面装有Arduino(附Arduino以太网护罩)。

  2. 另一个Arduino(附带Arduino以太网屏蔽)附有继电器/闩锁。然后将该继电器/闩锁连接到水泵上。

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

  4. 根据收到的水位信息,网络应用程序应向水泵上的Arduino发送合适的信号/命令,以切换“开启”或关闭水泵。

  5. 现在要让这样的系统在网络上工作,我正在考虑按照我的优先顺序使用其中一种解决方案:

    1. 使用XMPP进行服务器应用程序与Arduino之间的通信。

    2. 使用HTTP轮询。

    3. 使用HTTP挂GET。

    4. 对于解决方案1,我需要实现一个驻留在Arduino上的XMPP客户端。

      是否可以编写足够小的XMPP客户端以驻留在Arduino上?

      如果是,我需要为Arduino编写的最小可能XMPP客户端功能是什么,以便它能够联系GTalk等XMPP服务器解决方案?

      对于解决方案2和3,我需要实施指南。

      哪种解决方案具有成本效益且易于扩展?

8 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我认为我不会为了你想做的事而寻找任何一个。

只需在给定的时间间隔内将传感器数据输出Arduino,让另一方做智能操作。

此外,对于这些类型的项目,我一直在寻求避免以太网屏蔽并使用XBeeRFM12B。这些将指导您朝这个方向发展,但更重要的是,让更多的设备更容易进行遥测和控制。

如果在Arduino上运行了类似XMPP的内容,那么它将是一个真正被剥离的状态协议,通过更智能的服务器端进程代理。也就是说,它的工作量相似。尽管有可能,但是1 KB内存中的XMPP与应用程序代码一起听起来真的很痛苦。

答案 2 :(得分:1)

我们正在开发一个开源中继基础设施,以便通过Web访问Arduinos(以及任何其他支持TCP / IP套接字的设备)。然后,您的应用程序可以通过简单的REST API调用Arduinos。有关详情和实时演示,请参阅http://www.yaler.org/

此致 tamberg

答案 3 :(得分:1)

正在开发一个项目,具有策略和数据记录器功能。 (xmpp上的sensors / any_data_source) http://middlewaresensing.wordpress.com/

答案 4 :(得分:1)

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

答案 5 :(得分:1)

开源项目

管理传感器和网络|记录传感器数据|图表|政策|历史/日期/传感器规则|短信/电子邮件/网址/ twitter / xmpp通知|事件记录|谷歌地图|还有更多

演示http://dev.hci.uma.pt/sawa

wiki at dev.hci.uma.pt/mediawiki/index.php

在middlewaresensing.wordpress.com上发表博客

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

答案 6 :(得分:1)

有一个新的库,用于在Arduino(带以太网)上发出类似REST的HTTP请求和接收JSON响应,称为RESTduino。它可能是您的Arduino项目的有用的嵌入式HTTP接口。

http://jasongullickson.posterous.com/restduino-arduino-hacking-for-the-rest-of-us

答案 7 :(得分:0)

在查看所有可用选项后,我对任何选项都不满意。

目前,我正在努力为上面定义的问题提供自己的解决方案。

解决方案符合上面回复“Dustin”的评论。

一旦我在这里找到我的解决方案的第一个版本,就会发布项目URL。