物理设备的web服务,使用哪种技术/协议



(请注意,我是自学初学者(

我正在为一个要连接到网络中的设备开发一个网络服务器。它的服务将主要用于本地大型网络,而不是互联网。

具体来说,该设备是一个车底检查系统(UVIS(,当车辆经过时,该系统会记录视频并对其进行一些处理,然后将其发送到连接的授权本地客户端以查看并发送到数据库(即基于事件的系统(。

首先,我搜索了打印机web服务(网络打印机(使用的技术/协议,发现打印机有特定的协议,有些甚至是特定于一些制造商的。

我遇到了WS-*堆栈(实际上,我已经使用WS-Discovery实现了一个发现IP摄像机的简单实现,并使用了带有Onvif规范定义的一些函数的SOAP(,但我发现这很复杂,不确定是否值得冒险深入研究这个世界。对此进行一点搜索后发现,这主要由windows系统使用(实际上微软是这些标准的主要开发者(。

我正在寻找其他现成的技术/协议,这些技术/协议具有发现功能,易于实现,可与其他设备集成,广泛应用,经得起未来考验。

有人能启发我吗

到目前为止,我的计划是使用WS-Discovery(因为它有IANA保留的多播地址(来获取Websocket uri,并在此基础上实现我自己的简单协议。我选择了websocket而不是普通的socket,因为它有机会与浏览器应用程序一起使用。

如果你正在录制视频,你要么想实时流式传输(看看高端IP摄像机使用的RTSP协议,可以在gstreamer或vlc中找到实现(,要么如果你在视频录制成文件后提取视频,那么只需使用普通的网络上传系统。

很可能你录制视频的相机可能会以RTSP的形式发送数据源,所以你可能只需要连接到该源。

不管怎样,我现在都会使用网络协议,不需要重新发明轮子。有许多用于嵌入式系统的网络服务器(开源的civetweb在脑海中是非常简单有效的(。然后,您将使用已建立的通用web服务创建程序。易于构建,几乎每个人都能很好地理解。

WS-*协议很复杂,如果你不能让lib工作,那么仅仅在网络的DNS中注册服务器服务并让每个客户端告诉它(通过REST API调用(它的当前IP地址就不会那么痛苦了。不过,让每个设备从一开始就注册到网络的DNS服务器会更容易,要发现哪些可用,您只需要ping每个即可。

最新更新