1.1.1. 目录
1.1.2. 设备自动发现
SSDP 是一个简单的基于 UDP 的网络发现协议, 广泛用于 UPNP, IoT 行业
交互
- HomeBase 上线后, 会自动广播发送 SSDP SEARCH 并设置 ST 头为 homebase device
- 设备收到 SSDP Search 广播, 马上向 SSDP 广播发送方(IP + 端口)发送UDP 单播 Response
- 设备定时向 SSDP 广播 alive 消息
- 设备下线时, 向 SSDP 广播 bye 消息
SSDP 多播地址:239.255.255.250 SSDP 广播端口:1900
消息示例
SSDP SEARCH
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
ST: homebase:device
MAN: "ssdp:discover"
MX: 3
单播 Response
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
NT: homebase:device
NTS: ssdp:alive
USN: uuid:f40c2981-7329-40b7-8b04-27f187aecfb8
LOCATION: http://10.0.0.107:10293
CACHE-CONTROL: max-age=1800
DEVICE_TYPE: bridge
设备根据 CACHE-CONTROL 设置的值, 定时发送 SSDP ALIVE 心跳广播
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
NT: homebase:device
NTS: ssdp:alive
USN: uuid:f40c2981-7329-40b7-8b04-27f187aecfb8
LOCATION: http://10.0.0.107:10293
CACHE-CONTROL: max-age=1800
DEVICE_TYPE: bridge
SERVER: UPnP/1.1 homebase-ssdp/1.0.0
设备下线 向 SSDP 多播地址广播 ssdp-bye 消息
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
NT: uuid:f40c2981-7329-40b7-8b04-27f187aecfb8
NTS: ssdp:bye
USN: uuid:f40c2981-7329-40b7-8b04-27f187aecfb8
CACHE-CONTROL: max-age=1800
SERVER: UPnP/1.1 homebase-ssdp/1.0.0
说明
USN
USN 是一个服务的 Unique Number, 你可以用 UUID 为你的设备生成一个 USN; USN 代表一个独立的设备
DEVICE_TYPE
设备在广播和单播的时候都需要包含 DEVICE_TYPE 头, DEVICE_TYPE 头标识了设备的类型, 有两种设备类型:
- BRIDGE: 设备桥, 可以返回并控制多个设备
- SINGLE: 单一设备, 具体设备类型由具体状态接口返回
LOCATION
表示设备控制节点, 目前支持以下几种协议
- http http 格式的驱动
- tcp 基于 json-rpc 的tcp 接口
HTTP 接口实例
LOCATION: http://10.0.0.1:8888
HTTP 接口遵循 http-remote-driver
TCP 接口实例
LOCATION: tcp://10.0.0.1:9999
HTTP 接口遵循 json-rpc-over-tcp