{"id":376,"date":"2020-03-30T20:22:04","date_gmt":"2020-03-31T01:22:04","guid":{"rendered":"https:\/\/sundrysites.com\/?page_id=376"},"modified":"2020-03-30T20:22:04","modified_gmt":"2020-03-31T01:22:04","slug":"dht22-sketch","status":"publish","type":"page","link":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/","title":{"rendered":"DHT22 Sketch"},"content":{"rendered":"\n<p>This sketch has a DHT22 temperature\/humidity sensor attached.&nbsp; It queries the DHT22 whenever HCA tells it to, and reports the results to HCA.<\/p>\n\n\n\n<p>#include &lt;SPI.h&gt;<br>#include &lt;Ethernet.h&gt;<br>#include &lt;EthernetUdp.h&gt;<br>#include &lt;stdlib.h&gt;<br>#include &lt;DHT22.h&gt;<br>\/\/ Only used for sprintf<br>#include &lt;stdio.h&gt;<\/p>\n\n\n\n<p>\/\/ Data wire is plugged into port 7 on the Arduino<br>\/\/ Connect a 4.7K resistor between VCC and the data pin (strong pullup)<br>#define DHT22a_PIN 6<br>#define DHT22b_PIN 7<\/p>\n\n\n\n<p>\/\/ Setup a DHT22 instance<br>DHT22 myDHT22a(DHT22a_PIN);<br>DHT22 myDHT22b(DHT22b_PIN);<\/p>\n\n\n\n<p>\/\/ Enter a MAC address and IP address for your controller below.<br>\/\/ The IP address will be dependent on your local network:<br>byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x71 };<br>IPAddress ip(192,168,0,71);<br>unsigned int Port_Remote = 5000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ remote port<br>IPAddress IP_Remote(192, 168, 0, 10);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ IP address for smarthome<br>unsigned int localPort = 5001;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ local port to listen on<br>char cmdGetData = &#8216;1&#8217;;&nbsp;&nbsp; &nbsp; \/\/ a &#8220;1&#8221; means read all the data<br>char cmdIn = &#8216;0&#8217;;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;\/\/ used to obtain and compare buffer character<br>char cmdStatusCheck = &#8216;9&#8217;;&nbsp;&nbsp; \/\/ a &#8220;9&#8221; means smarthome is asking for status<br>\/\/ can not use dig pins 2, 4, 10, 11, 12, 13<br>\/\/ An EthernetUDP instance to let us receive packets over UDP<br>EthernetUDP Udp;<br>char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; \/\/buffer to hold incoming packet<br>char fahr[10];<br>char RH[10];<br>char cent[10];<br>String dht22TaName = &#8220;ard71atemp=&#8221;;<br>String dht22HaName = &#8220;ard71ahum=&#8221;;<br>String dht22TbName = &#8220;ard71btemp=&#8221;;<br>String dht22HbName = &#8220;ard71bhum=&#8221;;<br>String tempPacket = &#8220;&#8221;;<\/p>\n\n\n\n<p>void setup()<br>{<br>Serial.begin(9600);<br>delay(5000);<br>Serial.println(&#8220;Starting 71-v1&#8221;);<br>\/\/ start the Ethernet and UDP:<br>Ethernet.begin(mac,ip);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ no need for gateway or mask<br>Udp.begin(localPort);<br>}<\/p>\n\n\n\n<p>void loop() {<br>DHT22_ERROR_t errorCode;<br>\/\/ initialize variables<br>delay(10000);<br>float tCent;<br>float tFahr;<br>float tRH;<\/p>\n\n\n\n<p>\/\/ listen for incoming packets<br>int packetSize = Udp.parsePacket();<br>if(packetSize)<br>{<br>Serial.print(&#8220;Received packet of size &#8220;);<br>Serial.println(packetSize);<br>Serial.print(&#8220;From &#8220;);<br>IPAddress remote = Udp.remoteIP();<br>for (int i =0; i &lt; 4; i++)<br>{<br>Serial.print(remote[i], DEC);<br>if (i &lt; 3)<br>{<br>Serial.print(&#8220;.&#8221;);<br>}<br>}<br>\/\/<br>Serial.print(&#8220;, port &#8220;);<br>Serial.println(Udp.remotePort());<\/p>\n\n\n\n<p>\/\/ read the packet into packetBufffer<br>Udp.read(packetBuffer,1);<br>Serial.print(&#8220;Contents:&#8221;);<br>Serial.println(packetBuffer);<br>cmdIn = (packetBuffer[0]);<br>if (cmdIn == cmdGetData)<br>{<\/p>\n\n\n\n<p>\/\/ gather data for a<br>Serial.print(&#8220;Requesting data&#8230;&#8221;);<br>errorCode = myDHT22a.readData();<br>switch(errorCode)<br>{<br>case DHT_ERROR_NONE:<br>Serial.print(&#8220;Got Data &#8220;);<br>tCent = (myDHT22a.getTemperatureC());<br>tFahr = (tCent * 9 \/ 5) + 32;<br>dtostrf(tFahr,4,1,fahr);<br>tempPacket = dht22TaName + fahr;<br>\/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Serial.println(tempPacket);<br>Udp.beginPacket(IP_Remote, Port_Remote);<br>Udp.print(tempPacket);<br>Udp.endPacket();<br>tRH = (myDHT22a.getHumidity());<br>dtostrf(tRH,4,1,RH);<br>tempPacket = dht22HaName + RH;<br>\/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Serial.println(tempPacket);<br>Udp.beginPacket(IP_Remote, Port_Remote);<br>Udp.print(tempPacket);<br>Udp.endPacket();<br>break;<br>case DHT_ERROR_CHECKSUM:<br>Serial.print(&#8220;check sum error &#8220;);<br>Serial.print(myDHT22a.getTemperatureC());<br>Serial.print(&#8220;C &#8220;);<br>Serial.print(myDHT22a.getHumidity());<br>Serial.println(&#8220;%&#8221;);<br>break;<br>case DHT_BUS_HUNG:<br>Serial.println(&#8220;BUS Hung &#8220;);<br>break;<br>case DHT_ERROR_NOT_PRESENT:<br>Serial.println(&#8220;Not Present &#8220;);<br>break;<br>case DHT_ERROR_ACK_TOO_LONG:<br>Serial.println(&#8220;ACK time out &#8220;);<br>break;<br>case DHT_ERROR_SYNC_TIMEOUT:<br>Serial.println(&#8220;Sync Timeout &#8220;);<br>break;<br>case DHT_ERROR_DATA_TIMEOUT:<br>Serial.println(&#8220;Data Timeout &#8220;);<br>break;<br>case DHT_ERROR_TOOQUICK:<br>Serial.println(&#8220;Polled too quick &#8220;);<br>break;<br>}<br>\/\/ end of switch section for a<\/p>\n\n\n\n<p>delay(1000);<\/p>\n\n\n\n<p>\/* \/\/gather data for b<br>\/\/&nbsp;&nbsp; &nbsp;Serial.print(&#8220;Requesting data&#8230;&#8221;);<br>errorCode = myDHT22b.readData();<br>switch(errorCode)<br>{<br>case DHT_ERROR_NONE:<br>\/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Serial.print(&#8220;Got Data &#8220;);<br>tCent = (myDHT22b.getTemperatureC());<br>tFahr = (tCent * 9 \/ 5) + 32;<br>dtostrf(tFahr,4,1,fahr);<br>tempPacket = dht22TbName + fahr;<br>\/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Serial.println(tempPacket);<br>Udp.beginPacket(IP_Remote, Port_Remote);<br>Udp.print(tempPacket);<br>Udp.endPacket();<br>tRH = (myDHT22b.getHumidity());<br>dtostrf(tRH,4,1,RH);<br>tempPacket = dht22HbName + RH;<br>\/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Serial.println(tempPacket);<br>Udp.beginPacket(IP_Remote, Port_Remote);<br>Udp.print(tempPacket);<br>Udp.endPacket();<br>break;<br>case DHT_ERROR_CHECKSUM:<br>Serial.print(&#8220;check sum error &#8220;);<br>Serial.print(myDHT22b.getTemperatureC());<br>Serial.print(&#8220;C &#8220;);<br>Serial.print(myDHT22b.getHumidity());<br>Serial.println(&#8220;%&#8221;);<br>break;<br>case DHT_BUS_HUNG:<br>Serial.println(&#8220;BUS Hung &#8220;);<br>break;<br>case DHT_ERROR_NOT_PRESENT:<br>Serial.println(&#8220;Not Present &#8220;);<br>break;<br>case DHT_ERROR_ACK_TOO_LONG:<br>Serial.println(&#8220;ACK time out &#8220;);<br>break;<br>case DHT_ERROR_SYNC_TIMEOUT:<br>Serial.println(&#8220;Sync Timeout &#8220;);<br>break;<br>case DHT_ERROR_DATA_TIMEOUT:<br>Serial.println(&#8220;Data Timeout &#8220;);<br>break;<br>case DHT_ERROR_TOOQUICK:<br>Serial.println(&#8220;Polled too quick &#8220;);<br>break;<br>}<br>*\/ \/\/end of switch section for b<br>}<br>\/\/ end of cmdGetData = 1 section<\/p>\n\n\n\n<p>\/\/ respond to status check<br>if (cmdIn == cmdStatusCheck)<br>{<br>Serial.println(&#8220;matched9!&#8221;);<br>Udp.beginPacket(IP_Remote, Port_Remote);<br>Udp.write(&#8220;ard71ok=yes&#8221;);&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;\/\/ send packet good status<br>Udp.endPacket();<br>}&nbsp; \/\/ end of status check<br>}&nbsp; \/\/ end of packet size section<br>}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This sketch has a DHT22 temperature\/humidity sensor attached.&nbsp; It queries the DHT22 whenever HCA tells it to, and reports the results to HCA. #include &lt;SPI.h&gt;#include &lt;Ethernet.h&gt;#include &lt;EthernetUdp.h&gt;#include &lt;stdlib.h&gt;#include &lt;DHT22.h&gt;\/\/ Only used for sprintf#include &lt;stdio.h&gt; \/\/ Data wire is plugged into port 7 on the Arduino\/\/ Connect a 4.7K resistor between VCC and the data pin &hellip; <a href=\"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">DHT22 Sketch<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":370,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-376","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DHT22 Sketch - Sundrysites<\/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:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DHT22 Sketch - Sundrysites\" \/>\n<meta property=\"og:description\" content=\"This sketch has a DHT22 temperature\/humidity sensor attached.&nbsp; It queries the DHT22 whenever HCA tells it to, and reports the results to HCA. #include &lt;SPI.h&gt;#include &lt;Ethernet.h&gt;#include &lt;EthernetUdp.h&gt;#include &lt;stdlib.h&gt;#include &lt;DHT22.h&gt;\/\/ Only used for sprintf#include &lt;stdio.h&gt; \/\/ Data wire is plugged into port 7 on the Arduino\/\/ Connect a 4.7K resistor between VCC and the data pin &hellip; Continue reading DHT22 Sketch &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/\" \/>\n<meta property=\"og:site_name\" content=\"Sundrysites\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/sketches\\\/dht22-sketch\\\/\",\"url\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/sketches\\\/dht22-sketch\\\/\",\"name\":\"DHT22 Sketch - Sundrysites\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sundrysites.com\\\/#website\"},\"datePublished\":\"2020-03-31T01:22:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/sketches\\\/dht22-sketch\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/sketches\\\/dht22-sketch\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/sketches\\\/dht22-sketch\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sundrysites.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Home Info\",\"item\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Arduino Projects\",\"item\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Sketches\",\"item\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/sketches\\\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"DHT22 Sketch\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sundrysites.com\\\/#website\",\"url\":\"https:\\\/\\\/sundrysites.com\\\/\",\"name\":\"Sundrysites\",\"description\":\"As In Various and Sundry\",\"publisher\":{\"@id\":\"https:\\\/\\\/sundrysites.com\\\/#\\\/schema\\\/person\\\/1e11ce6af1587a3431e57dfc0797ab61\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sundrysites.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/sundrysites.com\\\/#\\\/schema\\\/person\\\/1e11ce6af1587a3431e57dfc0797ab61\",\"name\":\"Wayne Gulden\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c0392cdfb7826ed5407aad362998bc6dd03fe293560ce15ccc2211357e3cec6e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c0392cdfb7826ed5407aad362998bc6dd03fe293560ce15ccc2211357e3cec6e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c0392cdfb7826ed5407aad362998bc6dd03fe293560ce15ccc2211357e3cec6e?s=96&d=mm&r=g\",\"caption\":\"Wayne Gulden\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c0392cdfb7826ed5407aad362998bc6dd03fe293560ce15ccc2211357e3cec6e?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/sundrysites.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DHT22 Sketch - Sundrysites","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:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/","og_locale":"en_US","og_type":"article","og_title":"DHT22 Sketch - Sundrysites","og_description":"This sketch has a DHT22 temperature\/humidity sensor attached.&nbsp; It queries the DHT22 whenever HCA tells it to, and reports the results to HCA. #include &lt;SPI.h&gt;#include &lt;Ethernet.h&gt;#include &lt;EthernetUdp.h&gt;#include &lt;stdlib.h&gt;#include &lt;DHT22.h&gt;\/\/ Only used for sprintf#include &lt;stdio.h&gt; \/\/ Data wire is plugged into port 7 on the Arduino\/\/ Connect a 4.7K resistor between VCC and the data pin &hellip; Continue reading DHT22 Sketch &rarr;","og_url":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/","og_site_name":"Sundrysites","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/","url":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/","name":"DHT22 Sketch - Sundrysites","isPartOf":{"@id":"https:\/\/sundrysites.com\/#website"},"datePublished":"2020-03-31T01:22:04+00:00","breadcrumb":{"@id":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/dht22-sketch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sundrysites.com\/"},{"@type":"ListItem","position":2,"name":"Home Info","item":"https:\/\/sundrysites.com\/index.php\/home-info\/"},{"@type":"ListItem","position":3,"name":"Arduino Projects","item":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/"},{"@type":"ListItem","position":4,"name":"Sketches","item":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/sketches\/"},{"@type":"ListItem","position":5,"name":"DHT22 Sketch"}]},{"@type":"WebSite","@id":"https:\/\/sundrysites.com\/#website","url":"https:\/\/sundrysites.com\/","name":"Sundrysites","description":"As In Various and Sundry","publisher":{"@id":"https:\/\/sundrysites.com\/#\/schema\/person\/1e11ce6af1587a3431e57dfc0797ab61"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sundrysites.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/sundrysites.com\/#\/schema\/person\/1e11ce6af1587a3431e57dfc0797ab61","name":"Wayne Gulden","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c0392cdfb7826ed5407aad362998bc6dd03fe293560ce15ccc2211357e3cec6e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c0392cdfb7826ed5407aad362998bc6dd03fe293560ce15ccc2211357e3cec6e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c0392cdfb7826ed5407aad362998bc6dd03fe293560ce15ccc2211357e3cec6e?s=96&d=mm&r=g","caption":"Wayne Gulden"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/c0392cdfb7826ed5407aad362998bc6dd03fe293560ce15ccc2211357e3cec6e?s=96&d=mm&r=g"},"sameAs":["https:\/\/sundrysites.com"]}]}},"_links":{"self":[{"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/pages\/376","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/comments?post=376"}],"version-history":[{"count":1,"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/pages\/376\/revisions"}],"predecessor-version":[{"id":377,"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/pages\/376\/revisions\/377"}],"up":[{"embeddable":true,"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/pages\/370"}],"wp:attachment":[{"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/media?parent=376"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}