{"id":118,"date":"2025-05-15T00:21:26","date_gmt":"2025-05-14T16:21:26","guid":{"rendered":"http:\/\/47.111.133.139\/?p=118"},"modified":"2025-05-16T00:03:03","modified_gmt":"2025-05-15T16:03:03","slug":"wifi_sta","status":"publish","type":"post","link":"https:\/\/yin.nnneri.me\/?p=118","title":{"rendered":"wifi_sta"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full wp-duotone-grayscale\"><img loading=\"lazy\" decoding=\"async\" width=\"740\" height=\"300\" src=\"http:\/\/47.111.133.139\/wp-content\/uploads\/2025\/05\/1747238456-blockdiag-6973c30d057b64a7ff75ac36619ea524dc2220d1.png\" alt=\"\" class=\"wp-image-119\" srcset=\"https:\/\/yin.nnneri.me\/wp-content\/uploads\/2025\/05\/1747238456-blockdiag-6973c30d057b64a7ff75ac36619ea524dc2220d1.png 740w, https:\/\/yin.nnneri.me\/wp-content\/uploads\/2025\/05\/1747238456-blockdiag-6973c30d057b64a7ff75ac36619ea524dc2220d1-300x122.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528\u7684\u5e93<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\"esp_wifi.h\"<\/code><\/li>\n\n\n\n<li><code>\"esp_log.h\"<\/code><\/li>\n\n\n\n<li><code>\"esp_err.h\"<\/code><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u521d\u59cb\u5316\uff08\u5047\u8bbe\u4f60\u5df2\u7ecf\u5b8c\u6210nvs_flash\u521d\u59cb\u5316\uff09<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Wifi\u4e8b\u4ef6\u4e0e\u8d44\u6e90\u914d\u7f6e\u53ca\u542f\u52a8<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u542f\u52a8TCP\u534f\u8bae\u6808 <code>esp_netif_init()<\/code> <\/li>\n\n\n\n<li>\u521b\u5efa\u9ed8\u8ba4\u4e8b\u4ef6\u5faa\u73af <code>esp_event_loop_create_default()<\/code> <\/li>\n\n\n\n<li>\u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u7a0b\u5e8f <code>esp_event_handler_instance_register()<\/code> <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">\u521b\u5efa\u4e8b\u4ef6\u5faa\u73af -&gt; \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u7a0b\u5e8f -&gt; \u53d1\u5e03\u4e8b\u4ef6\u5230\u4e8b\u4ef6\u5faa\u73af<\/mark><\/li>\n\n\n\n<li>\u521b\u5efa\u7f51\u7edc\u63a5\u53e3\u5bf9\u8c61\u3001\u5e94\u7528\u9ed8\u8ba4\u914d\u7f6e\u3001\u6ce8\u518c\u90e8\u5206\u4e8b\u4ef6\u56de\u8c03 <code>esp_netif_create_default_wifi_sta() <\/code><br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">\u8c03\u7528\u4e4b\u524d\u9700\u8981\u5b8c\u6210\u9ed8\u8ba4\u4e8b\u4ef6\u5faa\u73af\u521b\u5efa<\/mark><\/li>\n\n\n\n<li>\u521d\u59cb\u5316Wifi\u914d\u7f6e <code>esp_wifi_init()<\/code> <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">\u9ed8\u8ba4\u60c5\u51b5\u53ef\u4f20\u5165\u63a5\u6536<code>WIFI_INIT_CONFIG_DEFAULT()<\/code>\u7684\u53d8\u91cf\uff0c\u65e0\u9700\u81ea\u884c\u914d\u7f6e<\/mark><\/li>\n\n\n\n<li>\u8bbe\u7f6eWifi\u6a21\u5f0f\u4e3aStation <code>esp_wifi_set_mode(WIFI_MODE_STA)<\/code> <\/li>\n\n\n\n<li>\u521b\u5efa <code>wifi_config_t <\/code>\u7c7b\u578b\u53d8\u91cf\u5e76\u5c06\u7f51\u7edc\u914d\u7f6e\uff08\u7528\u6237\u540d\u3001\u5bc6\u7801\u3001\u8ba4\u8bc1\u65b9\u5f0f\uff09\u5199\u5165<\/li>\n\n\n\n<li>\u8bbe\u7f6e\u4e0a\u8ff0\u7f51\u7edc\u914d\u7f6e <code>esp_wifi_set_config()<\/code> <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">\u5bf9\u4e8eStation\u6a21\u5f0f\uff0c<code>wifi_interface_t<\/code>\u4f20\u5165<code>ESP_IF_WIFI_STA<\/code><\/mark><\/li>\n\n\n\n<li><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">\uff08\u53ef\u9009\uff09<code>esp_netif_set_hostname()<\/code> \u66f4\u6539\u5ba2\u6237\u7aef\u540d\u79f0<\/mark><br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\"><code>esp_netif_t <\/code>\u4f20\u5165 <code>esp_netif_create_default_wifi_sta()<\/code> \u8fd4\u56de\u7684\u63a5\u53e3\u5bf9\u8c61<\/mark><\/li>\n\n\n\n<li>\u542f\u52a8 <code>esp_wifi_start()<\/code> <\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">\u793a\u4f8b<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6\">C<\/span><span role=\"button\" tabindex=\"0\" data-code=\"static wifi_config_t WifiCfg;\nstatic esp_netif_t* StaNetif = NULL;\n\nvoid wifiSetConfig() \n{\n    esp_netif_set_hostname(StaNetif, (const char*)device_name); \/*TODO \u586b\u5199\u5ba2\u6237\u7aef\u540d\u79f0*\/\n    WifiCfg.sta.threshold.authmode = wifi_authmode;             \/*TODO \u586b\u5199Wifi\u8ba4\u8bc1\u65b9\u5f0f*\/\n    strcpy((char*)WifiCfg.sta.ssid,(const char*)wifi_ssid);     \/*TODO \u586b\u5199SSID*\/\n    strcpy((char*)WifiCfg.sta.password,(const char*)wifi_password); \/*TODO \u586b\u5199\u5bc6\u7801*\/\n    ESP_LOGI(__func__,&quot;SSID: %s, Password: %s&quot;,wifi_ssid, wifi_password);\n    esp_wifi_set_config(ESP_IF_WIFI_STA, &amp;WifiCfg);\n}\n\nvoid wifiInit()\n{\n  ESP_ERROR_CHECK(esp_netif_init());\n  ESP_ERROR_CHECK(esp_event_loop_create_default());\n  \/*\u6ce8\u518cWifi\u76f8\u5173\u4e8b\u52a1\u56de\u8c03*\/\n  ESP_ERROR_CHECK(esp_event_handler_instance_register(\n      WIFI_EVENT, \n      ESP_EVENT_ANY_ID, \n      &amp;wifi_event_handler, \/*TODO \u5b9e\u73b0Wifi\u4e8b\u4ef6\u56de\u8c03\u51fd\u6570*\/\n      NULL, \n      NULL\n  ));\n  \/*\u6ce8\u518cIP\u76f8\u5173\u4e8b\u52a1\u56de\u8c03*\/\n  ESP_ERROR_CHECK(esp_event_handler_instance_register(\n      IP_EVENT, \n      IP_EVENT_STA_GOT_IP, \n      &amp;wifi_event_handler, \n      NULL, \n      NULL\n  ));\n  StaNetif = esp_netif_create_default_wifi_sta();\n  wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();\n  ESP_ERROR_CHECK(esp_wifi_init(&amp;cfg));\n  ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));\n  \/*Wifi\u914d\u7f6e\u7b49\u51fd\u6570\u6253\u5305 *\/\n  wifiSetConfig();\n  ESP_ERROR_CHECK(esp_wifi_start());\n}\" style=\"color:#f6f6f4;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">static<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #97E1F1; font-style: italic\">wifi_config_t<\/span><span style=\"color: #F6F6F4\"> WifiCfg;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">static<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #97E1F1; font-style: italic\">esp_netif_t<\/span><span style=\"color: #F286C4\">*<\/span><span style=\"color: #F6F6F4\"> StaNetif <\/span><span style=\"color: #F286C4\">=<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #BF9EEE\">NULL<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">void<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">wifiSetConfig<\/span><span style=\"color: #F6F6F4\">() <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #62E884\">esp_netif_set_hostname<\/span><span style=\"color: #F6F6F4\">(StaNetif, (<\/span><span style=\"color: #F286C4\">const<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">char*<\/span><span style=\"color: #F6F6F4\">)device_name);<\/span><span style=\"color: #7B7F8B\"> \/*TODO \u586b\u5199\u5ba2\u6237\u7aef\u540d\u79f0*\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    WifiCfg.sta.threshold.authmode <\/span><span style=\"color: #F286C4\">=<\/span><span style=\"color: #F6F6F4\"> wifi_authmode;<\/span><span style=\"color: #7B7F8B\">             \/*TODO \u586b\u5199Wifi\u8ba4\u8bc1\u65b9\u5f0f*\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #62E884\">strcpy<\/span><span style=\"color: #F6F6F4\">((<\/span><span style=\"color: #F286C4\">char*<\/span><span style=\"color: #F6F6F4\">)WifiCfg.sta.ssid,(<\/span><span style=\"color: #F286C4\">const<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">char*<\/span><span style=\"color: #F6F6F4\">)wifi_ssid);<\/span><span style=\"color: #7B7F8B\">     \/*TODO \u586b\u5199SSID*\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #62E884\">strcpy<\/span><span style=\"color: #F6F6F4\">((<\/span><span style=\"color: #F286C4\">char*<\/span><span style=\"color: #F6F6F4\">)WifiCfg.sta.password,(<\/span><span style=\"color: #F286C4\">const<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">char*<\/span><span style=\"color: #F6F6F4\">)wifi_password);<\/span><span style=\"color: #7B7F8B\"> \/*TODO \u586b\u5199\u5bc6\u7801*\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #62E884\">ESP_LOGI<\/span><span style=\"color: #F6F6F4\">(__func__,<\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #E7EE98\">SSID: <\/span><span style=\"color: #BF9EEE\">%s<\/span><span style=\"color: #E7EE98\">, Password: <\/span><span style=\"color: #BF9EEE\">%s<\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #F6F6F4\">,wifi_ssid, wifi_password);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #62E884\">esp_wifi_set_config<\/span><span style=\"color: #F6F6F4\">(ESP_IF_WIFI_STA, <\/span><span style=\"color: #F286C4\">&amp;<\/span><span style=\"color: #F6F6F4\">WifiCfg);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">void<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">wifiInit<\/span><span style=\"color: #F6F6F4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_netif_init<\/span><span style=\"color: #F6F6F4\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_event_loop_create_default<\/span><span style=\"color: #F6F6F4\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #7B7F8B\">  \/*\u6ce8\u518cWifi\u76f8\u5173\u4e8b\u52a1\u56de\u8c03*\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_event_handler_instance_register<\/span><span style=\"color: #F6F6F4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">      WIFI_EVENT, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">      ESP_EVENT_ANY_ID, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">      <\/span><span style=\"color: #F286C4\">&amp;<\/span><span style=\"color: #F6F6F4\">wifi_event_handler,<\/span><span style=\"color: #7B7F8B\"> \/*TODO \u5b9e\u73b0Wifi\u4e8b\u4ef6\u56de\u8c03\u51fd\u6570*\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">      <\/span><span style=\"color: #BF9EEE\">NULL<\/span><span style=\"color: #F6F6F4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">      <\/span><span style=\"color: #BF9EEE\">NULL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  ));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #7B7F8B\">  \/*\u6ce8\u518cIP\u76f8\u5173\u4e8b\u52a1\u56de\u8c03*\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_event_handler_instance_register<\/span><span style=\"color: #F6F6F4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">      IP_EVENT, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">      IP_EVENT_STA_GOT_IP, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">      <\/span><span style=\"color: #F286C4\">&amp;<\/span><span style=\"color: #F6F6F4\">wifi_event_handler, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">      <\/span><span style=\"color: #BF9EEE\">NULL<\/span><span style=\"color: #F6F6F4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">      <\/span><span style=\"color: #BF9EEE\">NULL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  ));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  StaNetif <\/span><span style=\"color: #F286C4\">=<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">esp_netif_create_default_wifi_sta<\/span><span style=\"color: #F6F6F4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #97E1F1; font-style: italic\">wifi_init_config_t<\/span><span style=\"color: #F6F6F4\"> cfg <\/span><span style=\"color: #F286C4\">=<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">WIFI_INIT_CONFIG_DEFAULT<\/span><span style=\"color: #F6F6F4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_wifi_init<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #F286C4\">&amp;<\/span><span style=\"color: #F6F6F4\">cfg));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_wifi_set_mode<\/span><span style=\"color: #F6F6F4\">(WIFI_MODE_STA));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #7B7F8B\">  \/*Wifi\u914d\u7f6e\u7b49\u51fd\u6570\u6253\u5305 *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #62E884\">wifiSetConfig<\/span><span style=\"color: #F6F6F4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_wifi_start<\/span><span style=\"color: #F6F6F4\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Wifi\u4e8b\u4ef6\u5904\u7406\u51fd\u6570\u5b9e\u73b0<\/h3>\n\n\n\n<p><strong>\u4e8b\u4ef6\u5904\u7406\u51fd\u6570\u9700\u8981\u4f20\u5165\u4e00\u4e9b\u53c2\u6570<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>void *arg<\/code> <\/li>\n\n\n\n<li><code>esp_event_base_t event_base<\/code> \u6307\u5b9a\u4e8b\u4ef6\u57fa\u7840\u7c7b\u578b\uff0c\u5982IP_EVENT\/WIFI_EVENT<\/li>\n\n\n\n<li><code>int32_t event_id<\/code> \u6307\u5b9a\u4e8b\u4ef6\u7c7b\u578b<\/li>\n\n\n\n<li><code>void *event_data<\/code> \u4e8b\u4ef6\u989d\u5916\u7684\u6570\u636e<\/li>\n<\/ol>\n\n\n\n<p>\u5373\uff1a<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6\">C<\/span><span role=\"button\" tabindex=\"0\" data-code=\"static void wifi_event_handler(void *arg, esp_event_base_t event_base,\n    int32_t event_id, void *event_data);\" style=\"color:#f6f6f4;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">static<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">void<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">wifi_event_handler<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #F286C4\">void<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">*<\/span><span style=\"color: #FFB86C; font-style: italic\">arg<\/span><span style=\"color: #F6F6F4\">, <\/span><span style=\"color: #97E1F1; font-style: italic\">esp_event_base_t<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #FFB86C; font-style: italic\">event_base<\/span><span style=\"color: #F6F6F4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #F286C4\">int32_t<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #FFB86C; font-style: italic\">event_id<\/span><span style=\"color: #F6F6F4\">, <\/span><span style=\"color: #F286C4\">void<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">*<\/span><span style=\"color: #FFB86C; font-style: italic\">event_data<\/span><span style=\"color: #F6F6F4\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><strong>\u9700\u8981\u5904\u7406\u7684Wifi\u4e8b\u4ef6<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wifi Station\u542f\u52a8\u5b8c\u6210 <code>WIFI_EVENT_STA_START<\/code> <br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">\u53ef\u4ee5\u5728\u6b64\u4e4b\u540e\u8c03\u7528<code>esp_wifi_connect()<\/code>\u8fdb\u884c\u8fde\u63a5<\/mark><\/li>\n<\/ul>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\"><strong>\u53ef\u9009\u7684Wifi\u4e8b\u4ef6<\/strong><\/mark><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wifi Station\u505c\u6b62\u5b8c\u6210 <code>WIFI_EVENT_STA_STOP <\/code><\/li>\n\n\n\n<li>\u63a5\u5165\u7ad9\u70b9 <code>WIFI_EVENT_STA_CONNECTED<\/code> <\/li>\n\n\n\n<li>\u65ad\u5f00\u8fde\u63a5 <code>WIFI_EVENT_STA_DISCONNECTED<\/code> <\/li>\n<\/ul>\n\n\n\n<p><strong>\u9700\u8981\u5904\u7406\u7684IP\u4e8b\u4ef6<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u83b7\u53d6\u5230IP\u5730\u5740 <code>IP_EVENT_STA_GOT_IP <\/code><br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">\u53ef\u4ee5\u542f\u52a8\u8bf8\u5982Http Server\u7b49\u9700\u8981\u8054\u7f51\u7684\u529f\u80fd<\/mark><\/li>\n<\/ul>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u7b80\u5355\u793a\u4f8b\uff08\u4e0d\u5b89\u5168\uff09<\/mark><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6\">C<\/span><span role=\"button\" tabindex=\"0\" data-code=\"static void wifi_event_handler(void *arg, esp_event_base_t event_base,\n    int32_t event_id, void *event_data) \n{\n    if (event_base == WIFI_EVENT &amp;&amp; event_id == WIFI_EVENT_STA_START) {\n        esp_wifi_connect();\n    } else if (event_base == IP_EVENT &amp;&amp; event_id == IP_EVENT_STA_GOT_IP) {\n        \/*TODO \u83b7\u53d6IP\u5730\u5740\uff01 \u53ef\u4ee5\u5728\u6b64\u5b9e\u73b0\u4e00\u4e9b\u8054\u7f51\u7a0b\u5e8f\u7684\u521d\u59cb\u5316*\/\n    }\n}\" style=\"color:#f6f6f4;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">static<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">void<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">wifi_event_handler<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #F286C4\">void<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">*<\/span><span style=\"color: #FFB86C; font-style: italic\">arg<\/span><span style=\"color: #F6F6F4\">, <\/span><span style=\"color: #97E1F1; font-style: italic\">esp_event_base_t<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #FFB86C; font-style: italic\">event_base<\/span><span style=\"color: #F6F6F4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #F286C4\">int32_t<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #FFB86C; font-style: italic\">event_id<\/span><span style=\"color: #F6F6F4\">, <\/span><span style=\"color: #F286C4\">void<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">*<\/span><span style=\"color: #FFB86C; font-style: italic\">event_data<\/span><span style=\"color: #F6F6F4\">) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #F286C4\">if<\/span><span style=\"color: #F6F6F4\"> (event_base <\/span><span style=\"color: #F286C4\">==<\/span><span style=\"color: #F6F6F4\"> WIFI_EVENT <\/span><span style=\"color: #F286C4\">&amp;&amp;<\/span><span style=\"color: #F6F6F4\"> event_id <\/span><span style=\"color: #F286C4\">==<\/span><span style=\"color: #F6F6F4\"> WIFI_EVENT_STA_START) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">        <\/span><span style=\"color: #62E884\">esp_wifi_connect<\/span><span style=\"color: #F6F6F4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    } <\/span><span style=\"color: #F286C4\">else<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">if<\/span><span style=\"color: #F6F6F4\"> (event_base <\/span><span style=\"color: #F286C4\">==<\/span><span style=\"color: #F6F6F4\"> IP_EVENT <\/span><span style=\"color: #F286C4\">&amp;&amp;<\/span><span style=\"color: #F6F6F4\"> event_id <\/span><span style=\"color: #F286C4\">==<\/span><span style=\"color: #F6F6F4\"> IP_EVENT_STA_GOT_IP) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #7B7F8B\">        \/*TODO \u83b7\u53d6IP\u5730\u5740\uff01 \u53ef\u4ee5\u5728\u6b64\u5b9e\u73b0\u4e00\u4e9b\u8054\u7f51\u7a0b\u5e8f\u7684\u521d\u59cb\u5316*\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u65ad\u5f00\u8fde\u63a5<\/h2>\n\n\n\n<p>\u4f7f\u7528 <code>esp_wifi_disconnect()<\/code> \u65ad\u5f00\u4e0e\u5f53\u524dAP\u7684\u8fde\u63a5<br>\u8be5\u64cd\u4f5c<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">\u4e0d\u4f1a\u6e05\u9664<\/mark>Wifi\u76f8\u5173\u4e8b\u52a1\uff0c\u53ea\u662f\u65ad\u5f00\u8fde\u63a5<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u66f4\u6539Wifi\u914d\u7f6e<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u65ad\u5f00\u8fde\u63a5<\/li>\n\n\n\n<li>\u91cd\u65b0\u914d\u7f6e<\/li>\n\n\n\n<li>\u542f\u52a8\u8fde\u63a5<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u626b\u63cf<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u65ad\u5f00\u8fde\u63a5<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">\u4e3a\u4e86\u9632\u6b62Wifi\u8fde\u63a5\u7b49\u4e8b\u52a1\u5f71\u54cd\u626b\u63cf\uff0c\u5efa\u8bae\u5148\u65ad\u5f00\u8fde\u63a5<\/mark><\/li>\n\n\n\n<li>\u542f\u52a8\u626b\u63cf <code>esp_wifi_scan_start()<\/code> <\/li>\n\n\n\n<li>\u83b7\u53d6\u7ed3\u679c <code>esp_wifi_scan_get_ap_records()<\/code> <\/li>\n\n\n\n<li>\u6062\u590d\u8fde\u63a5<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><code>esp_wifi_scan_get_ap_records()<\/code> \u4f20\u51fa\u4e24\u4e2a\u53c2\u6570<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>uint16_t *number<\/code> \u626b\u63cf\u5230\u7684AP\u6570\u91cf<\/li>\n\n\n\n<li><code>wifi_ap_record_t *ap_records<\/code> \u626b\u63cf\u7ed3\u679c<\/li>\n<\/ul>\n\n\n\n<p>\u793a\u4f8b<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6\">C<\/span><span role=\"button\" tabindex=\"0\" data-code=\"void wifiScan(wifi_ap_record_t* ret, uint16_t* number) \n{\n    ESP_ERROR_CHECK(esp_wifi_disconnect());\n    ESP_ERROR_CHECK(esp_wifi_scan_start(NULL, true)); \/* \u963b\u585e\u6001\u8fd0\u884c *\/\n    ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(number, ret));\n    ESP_ERROR_CHECK(esp_wifi_connect());\n}\n\nvoid your_program()\/*\u8fd9\u662f\u793a\u4f8b\u7a0b\u5e8f\uff0c\u8bf7\u66f4\u6539\u4e3a\u4f60\u81ea\u5df1\u7684\u7a0b\u5e8f*\/\n{\n    wifi_ap_record_t* ScanRecord = NULL;\n    uint16_t ScanNum = 0;\n    wifiScan (ScanRecord, &amp;ScanNum);\n\n    ScanRecord[0].rssi; \/* \u4fe1\u53f7\u5f3a\u5ea6 *\/\n    ScanRecord[0].ssid;  \/* SSID *\/\n    ScanRecord[0].authmode \/* \u8ba4\u8bc1\u65b9\u5f0f *\/\n}\n\" style=\"color:#f6f6f4;display:none\" aria-label=\"\u590d\u5236\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">void<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">wifiScan<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #97E1F1; font-style: italic\">wifi_ap_record_t<\/span><span style=\"color: #F286C4\">*<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #FFB86C; font-style: italic\">ret<\/span><span style=\"color: #F6F6F4\">, <\/span><span style=\"color: #F286C4\">uint16_t*<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #FFB86C; font-style: italic\">number<\/span><span style=\"color: #F6F6F4\">) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_wifi_disconnect<\/span><span style=\"color: #F6F6F4\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_wifi_scan_start<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #BF9EEE\">NULL<\/span><span style=\"color: #F6F6F4\">, <\/span><span style=\"color: #BF9EEE\">true<\/span><span style=\"color: #F6F6F4\">));<\/span><span style=\"color: #7B7F8B\"> \/* \u963b\u585e\u6001\u8fd0\u884c *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_wifi_scan_get_ap_records<\/span><span style=\"color: #F6F6F4\">(number, ret));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #62E884\">ESP_ERROR_CHECK<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #62E884\">esp_wifi_connect<\/span><span style=\"color: #F6F6F4\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">void<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">your_program<\/span><span style=\"color: #F6F6F4\">()<\/span><span style=\"color: #7B7F8B\">\/*\u8fd9\u662f\u793a\u4f8b\u7a0b\u5e8f\uff0c\u8bf7\u66f4\u6539\u4e3a\u4f60\u81ea\u5df1\u7684\u7a0b\u5e8f*\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #97E1F1; font-style: italic\">wifi_ap_record_t<\/span><span style=\"color: #F286C4\">*<\/span><span style=\"color: #F6F6F4\"> ScanRecord <\/span><span style=\"color: #F286C4\">=<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #BF9EEE\">NULL<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #F286C4\">uint16_t<\/span><span style=\"color: #F6F6F4\"> ScanNum <\/span><span style=\"color: #F286C4\">=<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #BF9EEE\">0<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #62E884\">wifiScan<\/span><span style=\"color: #F6F6F4\"> (ScanRecord, <\/span><span style=\"color: #F286C4\">&amp;<\/span><span style=\"color: #F6F6F4\">ScanNum);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    ScanRecord[<\/span><span style=\"color: #BF9EEE\">0<\/span><span style=\"color: #F6F6F4\">].rssi;<\/span><span style=\"color: #7B7F8B\"> \/* \u4fe1\u53f7\u5f3a\u5ea6 *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    ScanRecord[<\/span><span style=\"color: #BF9EEE\">0<\/span><span style=\"color: #F6F6F4\">].ssid;<\/span><span style=\"color: #7B7F8B\">  \/* SSID *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    ScanRecord[<\/span><span style=\"color: #BF9EEE\">0<\/span><span style=\"color: #F6F6F4\">].authmode<\/span><span style=\"color: #7B7F8B\"> \/* \u8ba4\u8bc1\u65b9\u5f0f *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u4f7f\u7528\u7684\u5e93 \u521d\u59cb\u5316\uff08\u5047\u8bbe\u4f60\u5df2\u7ecf\u5b8c\u6210nvs_flash\u521d\u59cb\u5316\uff09 Wifi\u4e8b\u4ef6\u4e0e\u8d44\u6e90\u914d\u7f6e\u53ca\u542f\u52a8 \u793a\u4f8b Wifi\u4e8b\u4ef6\u5904\u7406\u51fd\u6570\u5b9e\u73b0 \u4e8b\u4ef6\u5904\u7406 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[4],"tags":[],"class_list":["post-118","post","type-post","status-publish","format-standard","hentry","category-esp32"],"_links":{"self":[{"href":"https:\/\/yin.nnneri.me\/index.php?rest_route=\/wp\/v2\/posts\/118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yin.nnneri.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yin.nnneri.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yin.nnneri.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yin.nnneri.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=118"}],"version-history":[{"count":17,"href":"https:\/\/yin.nnneri.me\/index.php?rest_route=\/wp\/v2\/posts\/118\/revisions"}],"predecessor-version":[{"id":163,"href":"https:\/\/yin.nnneri.me\/index.php?rest_route=\/wp\/v2\/posts\/118\/revisions\/163"}],"wp:attachment":[{"href":"https:\/\/yin.nnneri.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yin.nnneri.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yin.nnneri.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}