{"id":658,"date":"2022-12-14T15:24:22","date_gmt":"2022-12-14T07:24:22","guid":{"rendered":"http:\/\/wordpress.loc\/?p=658"},"modified":"2024-01-11T13:11:14","modified_gmt":"2024-01-11T05:11:14","slug":"esp32_ch2-8","status":"publish","type":"post","link":"https:\/\/www.nmking.io\/index.php\/2022\/12\/14\/658\/","title":{"rendered":"ESP32CAM \u8d85\u97f3\u6ce2\u611f\u6e2c \u62cd\u7167\u50b3LINE"},"content":{"rendered":"\n<figure class=\"wp-block-pullquote\"><blockquote><p>ESP32CAM\u611f\u6e2c\u8d85\u97f3\u6ce2\u5f8c\u50b3Line\u901a\u77e5<\/p><\/blockquote><\/figure>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-ht-block-toc is-style-rounded htoc htoc--position-wide toc-list-style-plain\" data-htoc-state=\"expanded\"><span class=\"htoc__title\"><span class=\"ht_toc_title\">Table of Contents<\/span><span class=\"htoc__toggle\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\"><g fill=\"#444\"><path d=\"M15 7H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z\"><\/path><path d=\"M15 1H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1zM15 13H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z\"><\/path><\/g><\/svg><\/span><\/span><div class=\"htoc__itemswrap\"><ul class=\"ht_toc_list\"><li class=\"\"><a href=\"#htoc-\">\u64cd\u4f5c\u524d\u6e96\u5099<\/a><\/li><li class=\"\"><a href=\"#htoc-line\">LINE\u50b3\u9001\u4e3b\u7a0b\u5f0f<\/a><\/li><\/ul><\/div><\/div>\n\n\n\n<p>\u6211\u7684ESP32\u5be6\u505a\u66f8\u7c4d\uff1a<a rel=\"noreferrer noopener\" href=\"https:\/\/www.nmking.io\/index.php\/2022\/11\/10\/esp32_ch1-2\/\" target=\"_blank\">\u6211\u51fa\u66f8\u4e86 ESP32 \u7269\u806f\u7db2\u5c08\u984c<\/a><br>\u535a\u5ba2\u4f86\u7db2\u5740\uff1a<a rel=\"noreferrer noopener\" href=\"https:\/\/www.books.com.tw\/products\/0010901195\" target=\"_blank\">https:\/\/www.books.com.tw\/products\/0010901195<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"htoc-\">\u64cd\u4f5c\u524d\u6e96\u5099<\/h2>\n\n\n\n<p>ESP32CAM\u611f\u6e2c\u8d85\u97f3\u6ce2\u5f8c\u50b3Line\u901a\u77e5<\/p>\n\n\n\n<p>\u8acb\u505a\u597d\u6e96\u5099\u5de5\u4f5c\uff1a<\/p>\n\n\n\n<p>1.\u5148\u8981\u6709\u4e00\u500bESP32CAM\uff1a\u53ef\u53c3\u8003\u672c\u8ce3\u5834\uff1a<a href=\"https:\/\/www.ruten.com.tw\/item\/show?21910115309507\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.ruten.com.tw\/item\/show?21910115309507<\/a>\uff0c\u6709CH340\u6216CP2102\u53ef\u9078\uff0cCH340\u6e2c\u8a66\u53ef\u53c3\u8003\u672c\u7bc7\uff1a<a href=\"https:\/\/www.nmking.io\/index.php\/2022\/12\/14\/esp32_ch2-9\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u5e36CH340\u7684ESP32CAM\u7c21\u6613\u6e2c\u8a66<\/a><\/p>\n\n\n\n<p>2.\u5b89\u88dd\u74b0\u5883\u4e26\u6e2c\u8a66\u81ea\u5df1\u7684ESP32CAM\uff1a\u53ef\u53c3\u8003\u672c\u6587\uff1a<a href=\"https:\/\/www.nmking.io\/index.php\/2022\/11\/03\/esp32_ch2\/\" target=\"_blank\" rel=\"noreferrer noopener\">ESP32-CAM (arduino)\u5f71\u50cf\u4f3a\u670d\u5668\u53ca\u81c9\u90e8\u8fa8\u8b58\u6559\u5b78\u539f\u59cb\u6a94Video Stream Server<\/a><\/p>\n\n\n\n<p>\u5b8c\u6210\u4e0a\u8ff0\u6e96\u5099\u5de5\u4f5c\u5f8c\uff0c\u63a5\u4e0b\u4f86\u8a2d\u5b9aLINE\u5e33\u865f<\/p>\n\n\n\n<p>3.Line Notify\u6b0a\u6756(\u5bc6\u78bc)\uff1a\u8acb\u53c3\u8003\u672c\u7bc7\u6587\uff1a<a href=\"https:\/\/www.nmking.io\/index.php\/2022\/11\/21\/esp32_ch1-16\/\">\u7b2c<\/a><a href=\"https:\/\/www.nmking.io\/index.php\/2022\/11\/21\/esp32_ch1-16\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u5341\u4e09\u7bc7 ESP32 LINE\u901a\u77e5\uff1a\u5009\u5eab\u6eab\u5ea6\u7570\u5e38\u6a5f\u5668<\/a><a href=\"https:\/\/www.nmking.io\/index.php\/2022\/11\/21\/esp32_ch1-16\/\">\u4eba<\/a><\/p>\n\n\n\n<p>4.ESP32CAM\u5b89\u88dd\u8d85\u97f3\u6ce2\u4e26\u6e2c\u8a66\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"477\" src=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2024\/01\/2024-01-11-12-56-20-%E7%9A%84%E8%9E%A2%E5%B9%95%E6%93%B7%E5%9C%96-edited.png?resize=636%2C477&#038;ssl=1\" alt=\"\" class=\"wp-image-1379\" style=\"aspect-ratio:1.3333333333333333;width:589px;height:auto\" srcset=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2024\/01\/2024-01-11-12-56-20-%E7%9A%84%E8%9E%A2%E5%B9%95%E6%93%B7%E5%9C%96-edited.png?w=636&amp;ssl=1 636w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2024\/01\/2024-01-11-12-56-20-%E7%9A%84%E8%9E%A2%E5%B9%95%E6%93%B7%E5%9C%96-edited.png?resize=300%2C225&amp;ssl=1 300w\" sizes=\"auto, (max-width: 636px) 100vw, 636px\" \/><\/figure>\n\n\n\n<p>\u5c07ESP32CAM\u8207\u8d85\u97f3\u6ce2\u9023\u63a5<\/p>\n\n\n\n<p class=\"quote\">\u7531\u65bcESP32CAM\u7684\u96fb\u58d3\u8f38\u51fa\u53ea\u67093.3V\uff0c\u56e0\u6b64\u8981\u8a18\u5f97\u8cfc\u8cb73.3V\u7684\u8d85\u97f3\u6ce2\uff0c\u7b46\u8005\u6709\u8aa4\u75285V\u8d85\u97f3\u6ce2\u5c0e\u81f4\u7121\u6cd5\u611f\u6e2c\u7684\u7d93\u9a57\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">\u8d85\u97f3\u6ce2<\/th><th class=\"has-text-align-center\" data-align=\"center\">ESP<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">VCC<\/td><td class=\"has-text-align-center\" data-align=\"center\">VCC<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Trig<\/td><td class=\"has-text-align-center\" data-align=\"center\">GPIO15<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Echo<\/td><td class=\"has-text-align-center\" data-align=\"center\">GPIO14<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">GND<\/td><td class=\"has-text-align-center\" data-align=\"center\">GND<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u6e2c\u8a66\u8d85\u97f3\u6ce2\u72c0\u6cc1<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int TrigPin =15;\/\/\u767c\u51fa\u8072\u6ce2\nint EchoPin =14;\/\/\u63a5\u6536\u8072\u6ce2\nfloat CM_Value;\nvoid setup(){\n  Serial.begin(115200);\n  pinMode(TrigPin, OUTPUT);\n  pinMode(EchoPin, INPUT);\n}\n\nvoid loop() {\n  digitalWrite(TrigPin, LOW); \/\/\u95dc\u9589\n  delayMicroseconds(5);\n  digitalWrite(TrigPin, HIGH);\/\/\u555f\u52d5\n  delayMicroseconds(10);  \n  digitalWrite(TrigPin, LOW); \/\/\u95dc\u9589\n  CM_Value = pulseIn(EchoPin, HIGH); \/\/\u50b3\u56de\u6642\u9593\n  CM_Value = CM_Value * 34 \/ 1000 \/ 2; \/\/\u8f49\u63db\u6210\u8ddd\u96e2\n  Serial.println(CM_Value);\n  \/\/Serial.println(\" cm\");  \n  delay(100);\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"htoc-line\">LINE\u50b3\u9001\u4e3b\u7a0b\u5f0f<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"398\" src=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2024\/01\/2024-01-11-12-58-36-%E7%9A%84%E8%9E%A2%E5%B9%95%E6%93%B7%E5%9C%96-edited-1.png?resize=636%2C398&#038;ssl=1\" alt=\"\" class=\"wp-image-1382\" style=\"aspect-ratio:1.3333333333333333;width:497px;height:auto\" srcset=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2024\/01\/2024-01-11-12-58-36-%E7%9A%84%E8%9E%A2%E5%B9%95%E6%93%B7%E5%9C%96-edited-1.png?w=636&amp;ssl=1 636w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2024\/01\/2024-01-11-12-58-36-%E7%9A%84%E8%9E%A2%E5%B9%95%E6%93%B7%E5%9C%96-edited-1.png?resize=300%2C188&amp;ssl=1 300w\" sizes=\"auto, (max-width: 636px) 100vw, 636px\" \/><\/figure>\n\n\n\n<p class=\"quote\">\u8a18\u5f97\u6539WiFi\u7684 SSID\u3001Password\u3001\u9084\u6709\u88dc\u4e0a\u4f60\u7684Line \u6b0a\u6756<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/Modify from: ChungYi Fu, You could only send up to 50 images to Line Notify in one hour.\n\/\/The maximum size image is XGA(1024x768).\n\n\/\/ Enter your WiFi ssid and password\nconst char* ssid     = \"SSID\";   \/\/your network SSID\nconst char* password = \"Password\";   \/\/your network password\nString myLineNotifyToken = \"LINE\u6b0a\u6756\u5bc6\u78bc\";    \/\/Line Notify Token\uff0cYou can refer this post to get Line token\uff1ahttps:\/\/t.ly\/LZwKn\nint trigPin = 15;                  \/\/\u8acb\u5c07Trig\u63a5GPIO15\nint echoPin = 14;               \/\/Echo Pin \u63a5GPIO14\n\n#include &lt;WiFi.h>\n#include &lt;WiFiClientSecure.h>\n#include \"soc\/soc.h\"\n#include \"soc\/rtc_cntl_reg.h\"\n#include \"esp_camera.h\"\n#define CAMERA_MODEL_AI_THINKER\n#define PWDN_GPIO_NUM     32\n#define RESET_GPIO_NUM    -1\n#define XCLK_GPIO_NUM      0\n#define SIOD_GPIO_NUM     26\n#define SIOC_GPIO_NUM     27\n#define Y9_GPIO_NUM       35\n#define Y8_GPIO_NUM       34\n#define Y7_GPIO_NUM       39\n#define Y6_GPIO_NUM       36\n#define Y5_GPIO_NUM       21\n#define Y4_GPIO_NUM       19\n#define Y3_GPIO_NUM       18\n#define Y2_GPIO_NUM        5\n#define VSYNC_GPIO_NUM    25\n#define HREF_GPIO_NUM     23\n#define PCLK_GPIO_NUM     22\n\nString sendImage2LineNotify(String msg) {\n  camera_fb_t * fb = NULL;\n  fb = esp_camera_fb_get();\/\/\u53d6\u5f97\u76f8\u6a5f\u5f71\u50cf\u653e\u7f6efb\n  if (!fb) {\n    delay(100);\n    Serial.println(\"Camera capture failed, Reset\");\n    ESP.restart();\n  }\n  WiFiClientSecure client_tcp;\/\/\u555f\u52d5SSL wificlient\n  Serial.println(\"Connect to notify-api.line.me\");\n  if (client_tcp.connect(\"notify-api.line.me\", 443)) {\n    Serial.println(\"Connection successful\");\n    String head = \"--Taiwan\\r\\nContent-Disposition: form-data; name=\\\"message\\\"; \\r\\n\\r\\n\" + msg + \"\\r\\n--Taiwan\\r\\nContent-Disposition: form-data; name=\\\"imageFile\\\"; filename=\\\"esp32-cam.jpg\\\"\\r\\nContent-Type: image\/jpeg\\r\\n\\r\\n\";\n    String tail = \"\\r\\n--Taiwan--\\r\\n\";\n    uint16_t imageLen = fb->len;\n    uint16_t extraLen = head.length() + tail.length();\n    uint16_t totalLen = imageLen + extraLen;\n    \/\/\u958b\u59cbPOST\u50b3\u9001\u8a0a\u606f\n    client_tcp.println(\"POST \/api\/notify HTTP\/1.1\");\n    client_tcp.println(\"Connection: close\");\n    client_tcp.println(\"Host: notify-api.line.me\");\n    client_tcp.println(\"Authorization: Bearer \" + myLineNotifyToken);\n    client_tcp.println(\"Content-Length: \" + String(totalLen));\n    client_tcp.println(\"Content-Type: multipart\/form-data; boundary=Taiwan\");\n    client_tcp.println();\n    client_tcp.print(head);\n    uint8_t *fbBuf = fb->buf;\n    size_t fbLen = fb->len;\n    Serial.println(\"Data Sending....\");\n    \/\/\u7167\u7247\uff0c\u5206\u6bb5\u50b3\u9001\n    for (size_t n = 0; n &lt; fbLen; n = n + 2048) {\n      if (n + 2048 &lt; fbLen) {\n        client_tcp.write(fbBuf, 2048);\n        fbBuf += 2048;\n      } else if (fbLen % 2048 > 0) {\n        size_t remainder = fbLen % 2048;\n        client_tcp.write(fbBuf, remainder);\n      }\n    }\n    client_tcp.print(tail);\n    client_tcp.println();\n    String getResponse = \"\", Feedback = \"\";\n    boolean state = false;\n    int waitTime = 3000;   \/\/ \u4f9d\u64da\u7db2\u8def\u8abf\u6574\u7b49\u5019\u6642\u9593\uff0c3000\u4ee3\u8868\uff0c\u6700\u591a\u7b493\u79d2\n    long startTime = millis();\n    delay(1000);\n    Serial.print(\"Get Response\");\n    while ((startTime + waitTime) > millis())    {\n      Serial.print(\".\");\n      delay(100);\n      bool jobdone=false;\n      while (client_tcp.available())\n      {\/\/\u7576\u6709\u6536\u5230\u56de\u8986\u8cc7\u6599\u6642\n        jobdone=true;\n        char c = client_tcp.read();\n        if (c == '\\n')\n        {\n          if (getResponse.length() == 0) state = true;\n          getResponse = \"\";\n        }\n        else if (c != '\\r')\n          getResponse += String(c);\n        if (state == true) Feedback += String(c);\n        startTime = millis();\n      }\n      if (jobdone) break;\n    }\n    client_tcp.stop();\n    esp_camera_fb_return(fb);\/\/\u6e05\u9664\u7de9\u885d\u5340\n    return Feedback;\n  }\n  else {\n    esp_camera_fb_return(fb);\n    return \"Send failed.\";\n  }\n\n}\n\nvoid setup() {\n  Serial.begin(115200);\n  \/\/\u521d\u59cb\u5316\u76f8\u6a5f\u7d50\u675f\n  camera_config_t config;\n  config.ledc_channel = LEDC_CHANNEL_0;\n  config.ledc_timer = LEDC_TIMER_0;\n  config.pin_d0 = Y2_GPIO_NUM;\n  config.pin_d1 = Y3_GPIO_NUM;\n  config.pin_d2 = Y4_GPIO_NUM;\n  config.pin_d3 = Y5_GPIO_NUM;\n  config.pin_d4 = Y6_GPIO_NUM;\n  config.pin_d5 = Y7_GPIO_NUM;\n  config.pin_d6 = Y8_GPIO_NUM;\n  config.pin_d7 = Y9_GPIO_NUM;\n  config.pin_xclk = XCLK_GPIO_NUM;\n  config.pin_pclk = PCLK_GPIO_NUM;\n  config.pin_vsync = VSYNC_GPIO_NUM;\n  config.pin_href = HREF_GPIO_NUM;\n  config.pin_sscb_sda = SIOD_GPIO_NUM;\n  config.pin_sscb_scl = SIOC_GPIO_NUM;\n  config.pin_pwdn = PWDN_GPIO_NUM;\n  config.pin_reset = RESET_GPIO_NUM;\n  config.xclk_freq_hz = 20000000;\n  config.pixel_format = PIXFORMAT_JPEG;\n  config.jpeg_quality = 10;  \/\/10-63 lower number means higher quality\n  config.fb_count = 2;\n  config.frame_size = FRAMESIZE_VGA;\/\/ FRAMESIZE_ + UXGA|SXGA|XGA|SVGA|VGA|CIF|QVGA|HQVGA|QQVGA\n  \/\/Line notify don't accept bigger than SVGA\n  esp_err_t err = esp_camera_init(&amp;config);\n  if (err != ESP_OK) {\n    Serial.printf(\"Camera init failed with error 0x%x\", err);\n    delay(1000);\n    ESP.restart();\n  }\n  \/\/\u521d\u59cb\u5316\u76f8\u6a5f\u7d50\u675f\uff0c\u958b\u59cb\u7db2\u8def\u9023\u7dda\n  WiFi.mode(WIFI_STA);\n  Serial.println(\"\");\n  Serial.print(\"Connecting to \");\n  Serial.println(ssid);\n  WiFi.begin(ssid, password);\n  long int StartTime = millis();\n  while (WiFi.status() != WL_CONNECTED) {\n    delay(500);\n    if ((StartTime + 10000) &lt; millis()) break;\n  }\n\n  Serial.println(\"\");\n  Serial.println(\"IP address: \");\n  Serial.println(WiFi.localIP());\n  Serial.println(\"\");\n  if (WiFi.status() != WL_CONNECTED) {\n    Serial.println(\"Reset\");\n    delay(1000);\n    ESP.restart();\/\/\u9023\u7dda\u4e0d\u6210\u529f\uff0c\u5247\u91cd\u65b0\u958b\u6a5f\n  }\n  pinMode(trigPin, OUTPUT);        \/\/Define inputs and outputs\n  pinMode(echoPin, INPUT);\n\n\n}\n\nvoid loop() {\n  digitalWrite(trigPin, LOW);\n  delayMicroseconds(5);\n  digitalWrite(trigPin, HIGH);     \/\/ \u7d66 Trig \u9ad8\u96fb\u4f4d\uff0c\u6301\u7e8c 10\u5fae\u79d2\n  delayMicroseconds(10);\n  digitalWrite(trigPin, LOW);\n  long cm = pulseIn(echoPin, HIGH);   \/\/ \u6536\u5230\u9ad8\u96fb\u4f4d\u6642\u7684\u6642\u9593\n  cm = (cm \/ 2) \/ 29.1;       \/\/ \u5c07\u6642\u9593\u63db\u7b97\u6210\u8ddd\u96e2 cm \u6216 inch\n  Serial.println(cm);\n  if (cm &lt;= 30) {\n    Serial.println(\"starting to Line\");\n    String payload = sendImage2LineNotify(\"There is someone coming....\");\n    Serial.println(payload);\n    delay(10000);\n  }\n  delay(100);  \/\/You could only send up to 50 images to Line Notify in one hour.\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>ESP32CAM\u611f\u6e2c\u8d85\u97f3\u6ce2\u5f8c\u50b3Line\u901a\u77e5 \u6211\u7684ESP32\u5be6\u505a\u66f8\u7c4d\uff1a\u6211\u51fa\u66f8\u4e86 ESP32 \u7269\u806f\u7db2\u5c08\u984c\u535a\u5ba2\u4f86\u7db2\u5740 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1,26],"tags":[],"class_list":["post-658","post","type-post","status-publish","format-standard","hentry","category-esp32","category-esp32cam"],"blocksy_meta":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/posts\/658","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/comments?post=658"}],"version-history":[{"count":5,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/posts\/658\/revisions"}],"predecessor-version":[{"id":1383,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/posts\/658\/revisions\/1383"}],"wp:attachment":[{"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/media?parent=658"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/categories?post=658"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/tags?post=658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}