数码之家

 找回密码
 立即注册
搜索
查看: 1750|回复: 1

[STM] 【零知ESP8266教程】进阶篇3 SSDP简单服务发现协议​

[复制链接]
发表于 2019-12-11 10:45:48 | 显示全部楼层 |阅读模式

1、概述
SSDP简单服务发现协议,它是UPnP的核心协议之一。UPnP是零配置网络协议的一种。大众使用的家庭设备一般都支持这个协议,以便用户的主机或手机能够轻松发现这些设备。当一个新的设备(比如说笔记本)加入到网络中时,它可以向本地网络查询特定设备是否存在,这些设备包括互联网网关、音频系统、TV或者打印机等。下面在零知开源平台上进行该功能的测试。
2、软件和硬件
硬件我们本次使用零知-ESP8266;
软件使用零知开发工具(持续更新中),自带示例:


3、方法步骤
(1)先在零知开发工具中打开SSDP示例,或者复制下面的代码到零知开发工具中:
  1. /**********************************************************
  2. *    文件: x.ino      by 零知实验室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
  3. *    -^^- 零知开源,让电子制作变得更简单! -^^-
  4. *    时间: 2019/05/28 12:22
  5. *    说明:
  6. ************************************************************/
  7. #include <ESP8266WiFi.h>
  8. #include <ESP8266WebServer.h>
  9. #include <ESP8266SSDP.h>
  10.   
  11. #ifndef STASSID
  12. #define STASSID "ssid"
  13. #define STAPSK  "passwd"
  14. #endif
  15.   
  16. const char* ssid = STASSID;
  17. const char* password = STAPSK;
  18.   
  19. ESP8266WebServer HTTP(80);
  20.   
  21. void setup() {
  22.   Serial.begin(115200);
  23.   Serial.println();
  24.   Serial.println("Starting WiFi...");
  25.   
  26.   WiFi.mode(WIFI_STA);
  27.   WiFi.begin(ssid, password);
  28.   if (WiFi.waitForConnectResult() == WL_CONNECTED) {
  29.   
  30.     Serial.printf("Starting HTTP...\n");
  31.     HTTP.on("/index.html", HTTP_GET, []() {
  32.       HTTP.send(200, "text/plain", "Hello World!");
  33.     });
  34.     HTTP.on("/description.xml", HTTP_GET, []() {
  35.       SSDP.schema(HTTP.client());
  36.     });
  37.     HTTP.begin();
  38.   
  39.     Serial.printf("Starting SSDP...\n");
  40.     SSDP.setDeviceType("upnp:rootdevice");
  41.     SSDP.setSchemaURL("description.xml");
  42.     SSDP.setHTTPPort(80);
  43.     SSDP.setName("Philips hue clone");
  44.     SSDP.setSerialNumber("001788102201");
  45.     SSDP.setURL("index.html");
  46.     SSDP.setModelName("Philips hue bridge 2012");
  47.     SSDP.setModelNumber("929000226503");
  48.     SSDP.setModelURL("http://www.meethue.com");
  49.     SSDP.setManufacturer("Royal Philips Electronics");
  50.     SSDP.setManufacturerURL("http://www.philips.com");
  51.     SSDP.begin();
  52.   
  53.     Serial.printf("Ready!\n");
  54.   } else {
  55.     Serial.printf("WiFi Failed\n");
  56.     while (1) {
  57.       delay(100);
  58.     }
  59.   }
  60. }
  61.   
  62. void loop() {
  63.   HTTP.handleClient();
  64.   delay(1);
  65. }
复制代码


(2)验证上述代码并上传到零知-ESP8266开发板;
(3)零知-开发工具中打开串口调试窗口,可以看到如下信息:


(4)下面进行测试是否能发现设备:
我们需要下载这个工具:SSDP_Tester.
(也可以给我留言,免费传给你)

安装到安卓手机上,然后在SSDP_Tester工具中点击【LISTEN】,可以看到如下信息:


这个设备信息和我们在程序中设置的是一致的:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 1家元 +10 收起 理由
hongo + 10 原創內容

查看全部打赏

 楼主| 发表于 2019-12-11 10:50:15 | 显示全部楼层
需要的文件:在这里获取

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-12 03:28 , Processed in 0.265200 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表