我正在考虑 运行 倒退的 COAP 系统,这是个糟糕的主意吗?

I'm thinking about running a COAP system backwards, is this a terrible idea?

我正在构建一个非常简单的传感器,需要将数据上传到云服务器进行存储,我正在寻找一个简单的协议来使用。我 运行 在 PIC 芯片上,所以我的内存非常有限,所以它真的必须很简单。

我一直在研究 COAP,它有一些我非常喜欢的东西:UDP 数据包小而简单,因此它很容易实现,而且在数据使用方面很便宜,但感觉不对我在追求什么。

据我所知,它的工作原理是让服务器轮询它感兴趣的所有设备,以根据需要收集它们的读数。在我的例子中,虽然通信是基于事件的,但我可能会正常地每周传输一个读数,但如果设备端发生某些事情,我可能会快速传输大量读数。 COAP 似乎确实有允许通知的扩展,但它们依赖于保持套接字对设备开放并等待响应。

我正在考虑一种基于小型、简单 UDP 数据包的类似协议,其中设备只是将数据发布到 Web 服务并得到响应以表明它已被确认,可能还有一种以其他方式发送数据的机制当客户端对象连接时。在我开始重新发明轮子之前,有人已经知道类似的事情了吗?

谢谢,

本.

CoAP Observe 对您有用吗?

https://www.rfc-editor.org/rfc/rfc7641#page-4

它不是 CoAP RFC 的一部分,但 COAP RFC 提到了它,并且大多数成熟的实现也实现了“观察”RFC。

可以结合常规的请求方式

此外,在一个项目中我引入了“会话”的概念。
当您可以安排会话或定期连接适合您,或者有一些事件可以导致会话启动时,它是合适的。

设备使 PUT "/session" 并且 CoAP 服务器启动会话并使用 GETs 获取数据或使用 PUT秒。当无事可做时,CoAP 服务器发送 CON-DELETE "/session" 并且设备离线。当然,如果会话关闭请求长时间未出现,您需要超时以强制设备离线。

请注意:在 RFC 中,客户端是发出请求的端点,服务器是响应的端点。它可能会造成一些混乱。实际上,嵌入式设备和服务器都可以同时充当客户端+服务器。