我花了一周时间寻找一个方便的答案来回答我的问题。我正在尝试通过云将Android连接到Arduino,它有2个操作:
现在第一点很容易做到,通过让第三方服务器获得Arduino POST用户凭证(可以在购买设备时配置)并向PHP服务器发送消息,然后服务器将获得GCM' s来自MySQL的注册ID并通过cURL将其POST到GCM以将通知推送到相关的Android设备。 或者通过使用Arduino YUN,我们可以直接从Arduino本身发送cURL。
然而,对于我陷入困境的第二点,我无法找到一种方法来维护Arduino的IP地址,而无需让用户在Android应用程序界面中输入其Internet的IP地址。
到目前为止我提出的解决方案:
我不相信所提出的解决方案所以有可能使用GCM或任何类似的系统,比如Arduino中的Parse并使其具有唯一的注册ID,就像android那样我可以映射用户的Android注册ID与相关的Arduino注册ID。或者任何人都可以给我另一个我可以遵循的解决方案或方法。提前谢谢。
PS:我不想使用静态IP地址或端口转发,这个项目的想法是创建一个用户友好的设备,并且不需要大量的配置顾客。
答案 0 :(得分:0)
知道您的Arduino已经与第三方服务器通信,您可以利用它并另外获取Arduino设备的IP地址进行GCM
id注册(在PHP中,您可以通过使用$_SERVER['REMOTE_ADDR']
)。
通过这种方式,您可以保持一对一的GCM
ID标识和公共IP地址,以了解要向哪个Arduino设备发送信号。
这需要您实现一些超时过程(例如,实现一个keepalive系统,如果设备每X次都没有发送POST
请求,只需将其从连接的设备中删除即可)。此外,如果同一设备从两个不同的IP地址连接,只需保留最后一个,这样就不会混淆。