feat: 通过 mDNS 发布服务节点。
This commit is contained in:
parent
2da0f224a1
commit
7bff8e2c17
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,3 +2,4 @@ build/
|
|||||||
sdkconfig
|
sdkconfig
|
||||||
sdkconfig.old
|
sdkconfig.old
|
||||||
.vscode/
|
.vscode/
|
||||||
|
managed_components/
|
@ -1,9 +1,15 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
|
espressif/mdns:
|
||||||
|
component_hash: 3f3bf8ff67ec99dde4e935637af087ebc899b9fee396ffa1c9138d3775f1aca4
|
||||||
|
source:
|
||||||
|
service_url: https://api.components.espressif.com/
|
||||||
|
type: service
|
||||||
|
version: 1.0.9
|
||||||
idf:
|
idf:
|
||||||
component_hash: null
|
component_hash: null
|
||||||
source:
|
source:
|
||||||
type: idf
|
type: idf
|
||||||
version: 4.4.4
|
version: 5.0.1
|
||||||
manifest_hash: dcf4d39b94252de130019eadceb989d72b0dbc26b552cfdcbb50f6da531d2b92
|
manifest_hash: d23f3b15e8b95dfe5da6cf83768d24158a3a0222f95694b1fa09c3ca8602f79f
|
||||||
target: esp32c3
|
target: esp32c3
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
idf_component_register(SRCS "hw-ms03.c" "app_nvs.c" "apds_9960.c" "pca9555.c" "i2c.c" "asr_pro.c" "ci_03t.c" "ui_input.c" "ambient_light.c" "temperature.c" "embedded_display.c" "mqtt.c" "main.c" "wifi.c" "light.c" "mqtt.c" "led_strip_encoder/led_strip_encoder.c"
|
idf_component_register(SRCS "service_discovery.c" "app_nvs.c" "apds_9960.c" "pca9555.c" "i2c.c" "asr_pro.c" "ci_03t.c" "ui_input.c" "ambient_light.c" "temperature.c" "embedded_display.c" "mqtt.c" "main.c" "wifi.c" "light.c" "mqtt.c" "led_strip_encoder/led_strip_encoder.c"
|
||||||
INCLUDE_DIRS ".")
|
INCLUDE_DIRS ".")
|
@ -1,27 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#include "driver/gpio.h"
|
|
||||||
#include "freeRTOS/FreeRTOS.h"
|
|
||||||
|
|
||||||
#define HW_MS03_INT_GPIO 6
|
|
||||||
#define BEEP_GPIO 7
|
|
||||||
|
|
||||||
void hw_ms03_int_handler(void *arg) {
|
|
||||||
gpio_set_level(BEEP_GPIO, gpio_get_level(HW_MS03_INT_GPIO));
|
|
||||||
}
|
|
||||||
|
|
||||||
void hw_ms03_init() {
|
|
||||||
gpio_config_t io_conf = {};
|
|
||||||
|
|
||||||
io_conf.mode = GPIO_MODE_INPUT;
|
|
||||||
io_conf.pull_up_en = 0;
|
|
||||||
io_conf.pull_down_en = 1;
|
|
||||||
io_conf.intr_type = GPIO_INTR_ANYEDGE;
|
|
||||||
io_conf.pin_bit_mask = 1ULL << HW_MS03_INT_GPIO;
|
|
||||||
gpio_config(&io_conf);
|
|
||||||
io_conf.mode = GPIO_MODE_OUTPUT;
|
|
||||||
io_conf.pin_bit_mask = 1ULL << BEEP_GPIO;
|
|
||||||
io_conf.pull_down_en = 0;
|
|
||||||
gpio_config(&io_conf);
|
|
||||||
|
|
||||||
gpio_isr_handler_add(HW_MS03_INT_GPIO, hw_ms03_int_handler, NULL);
|
|
||||||
}
|
|
17
main/idf_component.yml
Normal file
17
main/idf_component.yml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
## IDF Component Manager Manifest File
|
||||||
|
dependencies:
|
||||||
|
espressif/mdns: "^1.0.9"
|
||||||
|
## Required IDF version
|
||||||
|
idf:
|
||||||
|
version: ">=5.0.1"
|
||||||
|
# # Put list of dependencies here
|
||||||
|
# # For components maintained by Espressif:
|
||||||
|
# component: "~1.0.0"
|
||||||
|
# # For 3rd party components:
|
||||||
|
# username/component: ">=1.0.0,<2.0.0"
|
||||||
|
# username2/component2:
|
||||||
|
# version: "~1.0.0"
|
||||||
|
# # For transient dependencies `public` flag can be set.
|
||||||
|
# # `public` flag doesn't have an effect dependencies of the `main` component.
|
||||||
|
# # All dependencies of `main` are public by default.
|
||||||
|
# public: true
|
@ -5,12 +5,12 @@
|
|||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/task.h"
|
#include "freertos/task.h"
|
||||||
#include "hw-ms03.c"
|
|
||||||
#include "i2c.c"
|
#include "i2c.c"
|
||||||
#include "light.c"
|
#include "light.c"
|
||||||
#include "mqtt.c"
|
#include "mqtt.c"
|
||||||
#include "pca9555.c"
|
#include "pca9555.c"
|
||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
|
#include "service_discovery.c"
|
||||||
#include "temperature.c"
|
#include "temperature.c"
|
||||||
#include "ui_input.c"
|
#include "ui_input.c"
|
||||||
#include "wifi.c"
|
#include "wifi.c"
|
||||||
@ -27,7 +27,7 @@ void app_main(void) {
|
|||||||
|
|
||||||
init_display();
|
init_display();
|
||||||
display_print8_str(0, 0, "Ambient Light");
|
display_print8_str(0, 0, "Ambient Light");
|
||||||
// hw_ms03_init();
|
|
||||||
ci_03t_init();
|
ci_03t_init();
|
||||||
apds_9960_init();
|
apds_9960_init();
|
||||||
apds_9960_auto_fetch();
|
apds_9960_auto_fetch();
|
||||||
@ -41,6 +41,7 @@ void app_main(void) {
|
|||||||
if (connect_wifi()) {
|
if (connect_wifi()) {
|
||||||
light_play(light_mode_idle);
|
light_play(light_mode_idle);
|
||||||
}
|
}
|
||||||
|
service_discovery_init();
|
||||||
vTaskDelay(pdMS_TO_TICKS(1000));
|
vTaskDelay(pdMS_TO_TICKS(1000));
|
||||||
mqtt_app_start();
|
mqtt_app_start();
|
||||||
if (waiting_for_mqtt_connected()) {
|
if (waiting_for_mqtt_connected()) {
|
||||||
|
28
main/service_discovery.c
Normal file
28
main/service_discovery.c
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "esp_err.h"
|
||||||
|
#include "esp_log.h"
|
||||||
|
#include "mdns.h"
|
||||||
|
|
||||||
|
static const char *SERVICE_DISCOVERY_TAG = "SERVICE_DISCOVERY_TAG";
|
||||||
|
|
||||||
|
static void service_discovery_init() { // 初始化 mDNS 服务
|
||||||
|
esp_err_t err = mdns_init();
|
||||||
|
if (err) {
|
||||||
|
ESP_LOGE(SERVICE_DISCOVERY_TAG, "MDNS Init failed: %d\n", err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置 hostname
|
||||||
|
mdns_hostname_set("ambient-light-board");
|
||||||
|
// 设置默认实例
|
||||||
|
mdns_instance_name_set("ivan");
|
||||||
|
// 添加服务
|
||||||
|
mdns_service_add(NULL, "_ambient_light", "_udp", 23042, NULL, 0);
|
||||||
|
mdns_service_add(NULL, "_http", "_tcp", 80, NULL, 0);
|
||||||
|
|
||||||
|
// 注意:必须先添加服务,然后才能设置其属性
|
||||||
|
// web 服务器使用自定义的实例名
|
||||||
|
mdns_service_instance_name_set("_ambientlight_web", "_tcp",
|
||||||
|
"Ambient Light Board Web Server");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user