1

我正在尝试在家庭自动化领域创建一个小型学术项目。我探索了物联网领域的各种协议和标准,发现 COAP 符合我的要求。

目的很简单:在家里有一个外围设备(如灯泡、温度传感器等)充当 COAP 服务器并公开某些资源和服务。由于 COAP 使用类似于 web 的寻址方案,因此任何具有此服务器地址的客户端都应能够与此 COAP 服务器(即外围设备)通信并控制其属性。

我对不存在于与服务器相同的 LAN 中的客户端如何发现该服务器及其暴露的资源有一定的疑问。我知道 COAP 使用 CoRE 链接格式促进资源发现,但似乎它主要使用只能在 LAN 内工作的多播。我不想把资源目录服务器放在家里,各种 COAP 服务器向它注册,然后这个目录服务器与云中的服务器通信。我希望能够在家中安装一个外围设备,该外围设备可以使用 wifi 家庭网络与远程客户端(如 COPPER)通信。但是如何从远程位置发现位于家中的 COAP 服务器,然后考虑到 COAP 服务器将位于私有 IP 地址上,然后与它交谈。仅使用 COAP 真的有可能吗?

4

2 回答 2

1

当您坐在 NAT 后面时,既不允许直接发现也不允许连接;CoAP 不会试图神奇地刺穿它。

流行的出路有:

  • 使用 IPv6(避免使用 NAT)并(至少有选择地)禁用防火墙。您仍然只能在本地进行发现,但一旦发现,您就可以从任何地方连接到您的设备。
  • 使用 VPN 让您的移动设备就像在 NAT 中一样。
  • 在路由器上运行一个向外部开放的端口的 CoAP 代理,并告诉您的移动设备通过该代理进行连接。这也不会给您本地发现。

对于代理和 IPv6 情况,您仍然可以在本地网络中运行资源目录。这既不需要连接到任何云服务,也不需要接受任何云服务的注册,但它可以帮助您完成您想要使用多播进行的发现,但因为您的移动设备太远而无法做到。资源目录和代理都应该可配置为不与本地网络之外的设备通信,除非它们经过身份验证。

于 2018-07-25T12:44:15.123 回答
0

让您的路由器接受 HTTP 请求,并在您的系统中运行 HTTP 到 CoAP 代理,通过您的 IP 思想 HTTP-CoAP 代理访问您的 CoAP 设备。

于 2018-04-06T12:56:46.913 回答