{"id":28,"date":"2023-02-03T18:34:59","date_gmt":"2023-02-03T18:34:59","guid":{"rendered":"https:\/\/csguy.org\/technotes\/?p=28"},"modified":"2023-02-04T00:51:05","modified_gmt":"2023-02-04T00:51:05","slug":"wifi-remote-control","status":"publish","type":"post","link":"https:\/\/csguy.org\/technotes\/wifi-remote-control\/","title":{"rendered":"wifi remote control"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">C++ for the Arduino ESP8266 NodeMCU to control 4 remote LEDs\/Relays <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;ESP8266WiFi.h&gt;  \/\/ Node MCU \nconst char *ssid = \"*****\";\nconst char *password = \"*****\";\nconst int LED5 = 2; \/\/ pin to control the built-in LED (2 = built-in LED on NodeMCU)\nconst int LED1 = 4; \/\/ pin to control output 1\nconst int LED2 = 5; \/\/ pin to control output 2\nconst int LED3 = 12; \/\/ pin to control output 3\nconst int LED4 = 14; \/\/ pin to control output 4\nWiFiServer server(80);\n\nvoid setup() {\n  pinMode(LED5, OUTPUT);  digitalWrite(LED5, HIGH);\n  pinMode(LED1, OUTPUT);  digitalWrite(LED1, HIGH);\n  pinMode(LED2, OUTPUT);  digitalWrite(LED2, HIGH);\n  pinMode(LED3, OUTPUT);  digitalWrite(LED3, HIGH);\n  pinMode(LED4, OUTPUT);  digitalWrite(LED4, HIGH);\n  \/\/ Serial.begin(115200);\n  delay(10);\n  WiFi.begin(ssid, password);\n  while (WiFi.status() != WL_CONNECTED) {delay(500);}  \/\/Serial.println(\"Connecting to WiFi...\");}\n  \/\/ Serial.println(\"Connected to WiFi\");\n  server.begin();\n  \/\/ Serial.println(\"Server started\");\n  \/\/ Serial.println(WiFi.localIP());\n}\n\nvoid loop() {\n  \/\/ Check if a client has connected\n  WiFiClient client = server.available();\n  if (!client) {return;}\n\n  \/\/ Wait for the client to send a request\n  \/\/ Serial.println(\"New client\");\n  while(!client.available()){delay(2);}\n  String request = client.readStringUntil('\\r'); \/\/ Serial.println(request);\n  if (request.indexOf(\"\/LED1=ON\") != -1) {\n    digitalWrite(LED1, LOW);\n    client.println(\"HTTP\/1.1 200 OK\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;LED1 is ON&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  } else if (request.indexOf(\"\/LED1=OFF\") != -1) {\n    digitalWrite(LED1, HIGH);\n    client.println(\"HTTP\/1.1 200 OK\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;LED1 is OFF&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  } else if (request.indexOf(\"\/LED2=ON\") != -1) {\n    digitalWrite(LED2, LOW);\n    client.println(\"HTTP\/1.1 200 OK\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;LED2 is ON&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  } else if (request.indexOf(\"\/LED2=OFF\") != -1) {\n    digitalWrite(LED2, HIGH);\n    client.println(\"HTTP\/1.1 200 OK\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;LED2 is OFF&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  } else if (request.indexOf(\"\/LED3=ON\") != -1) {\n    digitalWrite(LED3, LOW);\n    client.println(\"HTTP\/1.1 200 OK\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;LED3 is ON&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  } else if (request.indexOf(\"\/LED3=OFF\") != -1) {\n    digitalWrite(LED3, HIGH);\n    client.println(\"HTTP\/1.1 200 OK\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;LED3 is OFF&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  } else if (request.indexOf(\"\/LED4=ON\") != -1) {\n    digitalWrite(LED4, LOW);\n    client.println(\"HTTP\/1.1 200 OK\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;LED4 is ON&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  } else if (request.indexOf(\"\/LED4=OFF\") != -1) {\n    digitalWrite(LED4, HIGH);\n    client.println(\"HTTP\/1.1 200 OK\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;LED4 is OFF&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  } else if (request.indexOf(\"\/LED5=ON\") != -1) {\n    digitalWrite(LED5, LOW);\n    client.println(\"HTTP\/1.1 200 OK\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;LED5 is ON&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  } else if (request.indexOf(\"\/LED5=OFF\") != -1) {\n    digitalWrite(LED5, HIGH);\n    client.println(\"HTTP\/1.1 200 OK\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;LED5 is OFF&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  } else {\n    client.println(\"HTTP\/1.1 404 Not Found\");\n    client.println(\"Content-Type: text\/html\");\n    client.println();\n    client.println(\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;404 Not Found&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\");\n  }\n  client.stop();\n  \/\/ Serial.println(\"Client disconnected\");\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">and HTML for control from a webpage.  <\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;html&gt;\n  &lt;head&gt;\n    &lt;title&gt;LED Control&lt;\/title&gt;\n    &lt;style&gt;\n      .led-display {height: 30;width: 180px;border-radius: 25px;display: inline-block;margin-right: 10px;}\n    button {height: 40px;}\n    &lt;\/style&gt;\n      \n  &lt;\/head&gt;\n  &lt;\/head&gt;\n  &lt;body&gt;\n    &lt;h1&gt;LED Control&lt;\/h1&gt;\n    &lt;p&gt;\n      &lt;button onclick=\"turnOn(1)\"&gt;Turn LED1 ON&lt;\/button&gt;\n      &lt;button onclick=\"turnOff(1)\"&gt;Turn LED1 OFF&lt;\/button&gt;\n      &lt;div id=\"led1-display\" class=\"led-display\" style=\"background-color: red;\"&gt;&lt;\/div&gt;\n    &lt;\/p&gt;\n    &lt;p&gt;\n      &lt;button onclick=\"turnOn(2)\"&gt;Turn LED2 ON&lt;\/button&gt;\n      &lt;button onclick=\"turnOff(2)\"&gt;Turn LED2 OFF&lt;\/button&gt;\n      &lt;div id=\"led2-display\" class=\"led-display\" style=\"background-color: red;\"&gt;&lt;\/div&gt;\n    &lt;\/p&gt;\n    &lt;p&gt;\n      &lt;button onclick=\"turnOn(3)\"&gt;Turn LED3 ON&lt;\/button&gt;\n      &lt;button onclick=\"turnOff(3)\"&gt;Turn LED3 OFF&lt;\/button&gt;\n      &lt;div id=\"led3-display\" class=\"led-display\" style=\"background-color: red;\"&gt;&lt;\/div&gt;\n    &lt;\/p&gt;\n    &lt;p&gt;\n      &lt;button onclick=\"turnOn(4)\"&gt;Turn LED4 ON&lt;\/button&gt;\n      &lt;button onclick=\"turnOff(4)\"&gt;Turn LED4 OFF&lt;\/button&gt;\n      &lt;div id=\"led4-display\" class=\"led-display\" style=\"background-color: red;\"&gt;&lt;\/div&gt;\n    &lt;\/p&gt;\n    &lt;p&gt;\n      &lt;button onclick=\"turnOn(5)\"&gt;Turn LED5 ON&lt;\/button&gt;\n      &lt;button onclick=\"turnOff(5)\"&gt;Turn LED5 OFF&lt;\/button&gt;\n      &lt;div id=\"led5-display\" class=\"led-display\" style=\"background-color: red;\"&gt;&lt;\/div&gt;\n    &lt;\/p&gt;\n    &lt;script&gt;\n      function turnOn(led) {\n        var xhr = new XMLHttpRequest();\n        xhr.open(\"GET\", \"http:\/\/192.168.1.210\/LED\" + led + \"=ON\", true);\n        xhr.send();\n        updateDisplay(led, \"green\");\n      }\n      function turnOff(led) {\n        var xhr = new XMLHttpRequest();\n        xhr.open(\"GET\", \"http:\/\/192.168.1.210\/LED\" + led + \"=OFF\", true);\n        xhr.send();\n        updateDisplay(led, \"red\");\n      }\n      function updateDisplay(led, color) {\n        document.getElementById(\"led\" + led + \"-display\").style.backgroundColor = color;\n      }\n    &lt;\/script&gt;\n  &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This project was completed in 30 minutes with about 4 or 5 brief sentences given to chat.openai.com.  The code worked flawlessly the first time both functionality and syntax.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>C++ for the Arduino ESP8266 NodeMCU to control 4 remote LEDs\/Relays and HTML for control from a webpage. This project was completed in 30 minutes with about 4 or 5 brief sentences given to chat.openai.com. The code worked flawlessly the first time both functionality and syntax.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-28","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>wifi remote control - Tech Notes<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/csguy.org\/technotes\/wifi-remote-control\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"wifi remote control - Tech Notes\" \/>\n<meta property=\"og:description\" content=\"C++ for the Arduino ESP8266 NodeMCU to control 4 remote LEDs\/Relays and HTML for control from a webpage. This project was completed in 30 minutes with about 4 or 5 brief sentences given to chat.openai.com. The code worked flawlessly the first time both functionality and syntax.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/csguy.org\/technotes\/wifi-remote-control\/\" \/>\n<meta property=\"og:site_name\" content=\"Tech Notes\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-03T18:34:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-04T00:51:05+00:00\" \/>\n<meta name=\"author\" content=\"barry hills\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"barry hills\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/wifi-remote-control\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/wifi-remote-control\\\/\"},\"author\":{\"name\":\"barry hills\",\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/#\\\/schema\\\/person\\\/89e2d600fe21bcb92d502289e27831a4\"},\"headline\":\"wifi remote control\",\"datePublished\":\"2023-02-03T18:34:59+00:00\",\"dateModified\":\"2023-02-04T00:51:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/wifi-remote-control\\\/\"},\"wordCount\":48,\"commentCount\":0,\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/csguy.org\\\/technotes\\\/wifi-remote-control\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/wifi-remote-control\\\/\",\"url\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/wifi-remote-control\\\/\",\"name\":\"wifi remote control - Tech Notes\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/#website\"},\"datePublished\":\"2023-02-03T18:34:59+00:00\",\"dateModified\":\"2023-02-04T00:51:05+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/#\\\/schema\\\/person\\\/89e2d600fe21bcb92d502289e27831a4\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/wifi-remote-control\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/csguy.org\\\/technotes\\\/wifi-remote-control\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/wifi-remote-control\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"wifi remote control\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/#website\",\"url\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/\",\"name\":\"Tech Notes\",\"description\":\"Sharing the tech\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/#\\\/schema\\\/person\\\/89e2d600fe21bcb92d502289e27831a4\",\"name\":\"barry hills\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e7df4c371d55904f1d858a9d27549d002b93713cd2f13d672c3c0898efcb70b4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e7df4c371d55904f1d858a9d27549d002b93713cd2f13d672c3c0898efcb70b4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e7df4c371d55904f1d858a9d27549d002b93713cd2f13d672c3c0898efcb70b4?s=96&d=mm&r=g\",\"caption\":\"barry hills\"},\"url\":\"https:\\\/\\\/csguy.org\\\/technotes\\\/author\\\/barry\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"wifi remote control - Tech Notes","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/csguy.org\/technotes\/wifi-remote-control\/","og_locale":"en_US","og_type":"article","og_title":"wifi remote control - Tech Notes","og_description":"C++ for the Arduino ESP8266 NodeMCU to control 4 remote LEDs\/Relays and HTML for control from a webpage. This project was completed in 30 minutes with about 4 or 5 brief sentences given to chat.openai.com. The code worked flawlessly the first time both functionality and syntax.","og_url":"https:\/\/csguy.org\/technotes\/wifi-remote-control\/","og_site_name":"Tech Notes","article_published_time":"2023-02-03T18:34:59+00:00","article_modified_time":"2023-02-04T00:51:05+00:00","author":"barry hills","twitter_card":"summary_large_image","twitter_misc":{"Written by":"barry hills","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/csguy.org\/technotes\/wifi-remote-control\/#article","isPartOf":{"@id":"https:\/\/csguy.org\/technotes\/wifi-remote-control\/"},"author":{"name":"barry hills","@id":"https:\/\/csguy.org\/technotes\/#\/schema\/person\/89e2d600fe21bcb92d502289e27831a4"},"headline":"wifi remote control","datePublished":"2023-02-03T18:34:59+00:00","dateModified":"2023-02-04T00:51:05+00:00","mainEntityOfPage":{"@id":"https:\/\/csguy.org\/technotes\/wifi-remote-control\/"},"wordCount":48,"commentCount":0,"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/csguy.org\/technotes\/wifi-remote-control\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/csguy.org\/technotes\/wifi-remote-control\/","url":"https:\/\/csguy.org\/technotes\/wifi-remote-control\/","name":"wifi remote control - Tech Notes","isPartOf":{"@id":"https:\/\/csguy.org\/technotes\/#website"},"datePublished":"2023-02-03T18:34:59+00:00","dateModified":"2023-02-04T00:51:05+00:00","author":{"@id":"https:\/\/csguy.org\/technotes\/#\/schema\/person\/89e2d600fe21bcb92d502289e27831a4"},"breadcrumb":{"@id":"https:\/\/csguy.org\/technotes\/wifi-remote-control\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/csguy.org\/technotes\/wifi-remote-control\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/csguy.org\/technotes\/wifi-remote-control\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/csguy.org\/technotes\/"},{"@type":"ListItem","position":2,"name":"wifi remote control"}]},{"@type":"WebSite","@id":"https:\/\/csguy.org\/technotes\/#website","url":"https:\/\/csguy.org\/technotes\/","name":"Tech Notes","description":"Sharing the tech","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/csguy.org\/technotes\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/csguy.org\/technotes\/#\/schema\/person\/89e2d600fe21bcb92d502289e27831a4","name":"barry hills","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e7df4c371d55904f1d858a9d27549d002b93713cd2f13d672c3c0898efcb70b4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e7df4c371d55904f1d858a9d27549d002b93713cd2f13d672c3c0898efcb70b4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e7df4c371d55904f1d858a9d27549d002b93713cd2f13d672c3c0898efcb70b4?s=96&d=mm&r=g","caption":"barry hills"},"url":"https:\/\/csguy.org\/technotes\/author\/barry\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/csguy.org\/technotes\/wp-json\/wp\/v2\/posts\/28","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/csguy.org\/technotes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/csguy.org\/technotes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/csguy.org\/technotes\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/csguy.org\/technotes\/wp-json\/wp\/v2\/comments?post=28"}],"version-history":[{"count":4,"href":"https:\/\/csguy.org\/technotes\/wp-json\/wp\/v2\/posts\/28\/revisions"}],"predecessor-version":[{"id":34,"href":"https:\/\/csguy.org\/technotes\/wp-json\/wp\/v2\/posts\/28\/revisions\/34"}],"wp:attachment":[{"href":"https:\/\/csguy.org\/technotes\/wp-json\/wp\/v2\/media?parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/csguy.org\/technotes\/wp-json\/wp\/v2\/categories?post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/csguy.org\/technotes\/wp-json\/wp\/v2\/tags?post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}