{"id":336,"date":"2020-03-30T19:57:32","date_gmt":"2020-03-31T00:57:32","guid":{"rendered":"https:\/\/sundrysites.com\/?page_id=336"},"modified":"2024-02-27T20:45:24","modified_gmt":"2024-02-28T01:45:24","slug":"arduino-to-hca","status":"publish","type":"page","link":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/","title":{"rendered":"Arduino to HCA"},"content":{"rendered":"\n<p>The Arduinos are out collecting data and at some point that data needs to be sent to HCA, either for record-keeping or to take some action, like sending me an email. This posting provides an overview of how I accomplish this.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>For the geeks: there are two basic techniques to do this, called synchronous and asynchronous.&nbsp; After screwing around with both I ended up simplifying it greatly by designing the interaction to always be asynchronous.&nbsp; I use UDP packets, which have no mechanism to detect missing or duplicate packets.&nbsp; The simplicity is that I can send and receive packets to\/from either end without regard for what else is going on.&nbsp; The tradeoff is simplicity vs reliability.&nbsp; As a practical matter, as far as I know, the reliability has been rock-solid over my wired network.&nbsp; Wireless networks may present more of a problem.<\/p>\n\n\n\n<p>The basic components include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The Arduino with an ethernet shield, programmed to send a UDP packet to HCA&#8217;s IP address.<\/li>\n\n\n\n<li>A continually-running Perl program that is constantly looking for incoming packets.&nbsp; When it detects one it reads it, optionally parses it, and places the result into a text file.&nbsp; The records in this text file are in the form of HCA flags.<\/li>\n\n\n\n<li>A continually-running program in HCA that reads all the flags in the text file (in my case, currently every 30 seconds) and sets them inside HCA.<\/li>\n\n\n\n<li>Other HCA programs that either record or take some action as the flags change.<\/li>\n<\/ul>\n\n\n\n<p><strong>The Arduino<\/strong><\/p>\n\n\n\n<p>As an example, an Arduino detects a fire alarm has triggered.&nbsp; The Arduino program to send HCA would contain the following lines:<\/p>\n\n\n\n<p>byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x69 };<br>\nIPAddress ip(192, 168, 0, 69);&nbsp; \/\/ local IP address<br>\nIPAddress IP_Remote(192, 168, 0, 10);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ IP address for HCA<br>\nunsigned int Port_Remote = 5000;&nbsp;&nbsp;&nbsp; \/\/ perl pgms port<br>\nEthernetUDP Udp;<br>\nvoid setup()<br>\n{<br>\nEthernet.begin(mac,ip);<br>\nUdp.begin(localPort);<br>\n}<\/p>\n\n\n\n<p>void loop()<br>\n{<br>\nUdp.beginPacket(IP_Remote, Port_Remote);<br>\nUdp.write(&#8220;ardfirealarm=yes&#8221;);<br>\nUdp.endPacket();<br>\n}<\/p>\n\n\n\n<p>As you might guess,&nbsp;IP_Remote is HCA&#8217;s IP address and&nbsp; Port_Remote is the IP port that the Perl program is listening on.&nbsp; The ardfirealarm=yes is an HCA flag, in just the form that HCA expects to see it.<\/p>\n\n\n\n<p><strong>The Perl Program<\/strong><\/p>\n\n\n\n<p>The operational part of the Perl program looks like:<\/p>\n\n\n\n<p>my ($socket,$received_data);<br>\nmy $outln = &#8220;&#8221;;<br>\nmy $outfile = &#8220;minutely.txt&#8221;;&nbsp; #picked up by hca<br>\n$socket = new IO::Socket::INET (<br>\nLocalPort =&gt; &#8216;5000&#8217;,<br>\nProto =&gt; &#8216;udp&#8217;, )<br>\nwhile(1)&nbsp; # run forever<br>\n{<\/p>\n\n\n\n<p>#read operation on the socket<\/p>\n\n\n\n<p>$socket-&gt;recv($received_data,1024);<br>\n$outln = $received_data . &#8220;\\n&#8221;;<br>\nopen OUTPUT, &#8220;&gt;&gt; $outfile&#8221; or die &#8220;Output file open error: $!&#8221;;<br>\nprint OUTPUT $outln;<br>\nclose OUTPUT;<br>\n}<\/p>\n\n\n\n<p>See how the Arduino&#8217;s remote port agrees with Perl&#8217;s local port?&nbsp; Doesn&#8217;t work so well if it doesn&#8217;t.&nbsp; First hand experience\u2026 Also note outfile&#8217;s value of &#8220;minutely.txt&#8221;.&nbsp; That becomes important shortly.<\/p>\n\n\n\n<p><strong>The HCA Read File Program<\/strong><\/p>\n\n\n\n<p>Meanwhile HCA has a program that is also continually running.&nbsp; The operational part of it looks like:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"148\" height=\"279\" src=\"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic.jpg\" alt=\"\" class=\"wp-image-443\"\/><\/figure>\n<\/div>\n\n\n<p>This picture gives you an idea of how easy programming HCA can be.&nbsp; The little boxes are the different functions HCA provides.&nbsp; You drag them into the program and connect them.&nbsp; Each box, depending upon its function, contains more instructions.&nbsp; In this case, the box at the upper left is a loop.&nbsp; When you click on this box&#8217;s properties you get the following window:<\/p>\n\n\n\n<p>Note the &#8220;repeat forever&#8221; box is checked.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"424\" height=\"248\" src=\"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic-1.jpg\" alt=\"\" class=\"wp-image-444\" srcset=\"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic-1.jpg 424w, https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic-1-300x175.jpg 300w\" sizes=\"auto, (max-width: 424px) 100vw, 424px\" \/><\/figure>\n<\/div>\n\n\n<p>Immediately below the loop box is a &#8220;delay&#8221; box.&nbsp; Click on its properties and as you can guess the window is set for, in my case, 30 seconds.<\/p>\n\n\n\n<p>Immediately below the delay box is the &#8220;read file&#8221; box.&nbsp; If you click on its properties it shows the location of the file to be read.&nbsp; In 30 seconds there might be more than one flag in the file.&nbsp; No matter.&nbsp; HCA will read all of them in turn and set its flags accordingly.&nbsp; Note that the name of the file, &#8220;minutely.exe&#8221;, must agree with the output of the Perl program above.<\/p>\n\n\n\n<p>In my case I have two input files, one for Arduinos and one for other stuff.&nbsp; Finally, the two boxes at the bottom are &#8220;execute external&#8221; functions.&nbsp; I found that it was cleanest to rewrite the file to nulls to clean it out, as opposed to deleting it.&nbsp; Here&#8217;s the properties&#8217; window:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"559\" height=\"411\" src=\"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic-2.jpg\" alt=\"\" class=\"wp-image-445\" srcset=\"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic-2.jpg 559w, https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic-2-300x221.jpg 300w\" sizes=\"auto, (max-width: 559px) 100vw, 559px\" \/><\/figure>\n<\/div>\n\n\n<p>This function is an important one, so I&#8217;ll take some time with it.&nbsp; It allows you to execute any external program or batch file on the computer.&nbsp; In this case I&#8217;m executing the Perl interpreter, perl.exe.&nbsp; The working directory is set so that all the necessary files are accessible &#8211; in this case just the file used to transfer the flags.&nbsp; The command line argument is the name of the Perl program I wrote to clear the file.&nbsp; One of these days I guess I&#8217;ll get rid of the &#8220;test&#8221; nomenclature.&nbsp; That Perl program is rather small.&nbsp; Here it is, in its entirety.<\/p>\n\n\n\n<p>my $outfile = &#8220;minutely.txt&#8221;;&nbsp; #picked up by hca<br>\nmy $outln = &#8220;&#8221;;<br>\nopen OUTPUT, &#8220;&gt; $outfile&#8221; or die &#8220;Output file open error: $!&#8221;;<br>\nprint OUTPUT $outln;<br>\nclose OUTPUT;<\/p>\n\n\n\n<p><strong>HCA Takes Action<\/strong><\/p>\n\n\n\n<p>FINALLY, you can set up HCA programs to start upon a number of conditions.&nbsp; One of these is when a flag changes.&nbsp; Here&#8217;s what it looks like inside HCA.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"230\" height=\"124\" src=\"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic-4.jpg\" alt=\"\" class=\"wp-image-446\"\/><\/figure>\n<\/div>\n\n\n<p>Note how the &#8220;ardfirealarm&#8221; agrees with what was created by the Arduino way back up at the start?&nbsp; And what does this program do?&nbsp; Here&#8217;s the flow diagram for it:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"63\" height=\"402\" src=\"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic-3.jpg\" alt=\"\" class=\"wp-image-447\" srcset=\"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic-3.jpg 63w, https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic-3-47x300.jpg 47w\" sizes=\"auto, (max-width: 63px) 100vw, 63px\" \/><\/figure>\n<\/div>\n\n\n<p>In order, the boxes do the following.&nbsp; First I log the event to one of HCA&#8217;s three logs.&nbsp; In the next two boxes I send an email and an sms message to let me know something is going on.&nbsp; Finally, the box in red is an &#8220;execute internal&#8221; function that starts another HCA program.&nbsp; In this case that other program asks the appropriate Arduinos to send back their temperature readings so maybe the nature of the fire can be determined.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Arduinos are out collecting data and at some point that data needs to be sent to HCA, either for record-keeping or to take some action, like sending me an email. This posting provides an overview of how I accomplish this.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":332,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-336","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>Arduino to HCA - 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\/project-basics\/arduino-to-hca\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arduino to HCA - Sundrysites\" \/>\n<meta property=\"og:description\" content=\"The Arduinos are out collecting data and at some point that data needs to be sent to HCA, either for record-keeping or to take some action, like sending me an email. This posting provides an overview of how I accomplish this.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/\" \/>\n<meta property=\"og:site_name\" content=\"Sundrysites\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-28T01:45:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic.jpg\" \/>\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=\"6 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\\\/project-basics\\\/arduino-to-hca\\\/\",\"url\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/project-basics\\\/arduino-to-hca\\\/\",\"name\":\"Arduino to HCA - Sundrysites\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sundrysites.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/project-basics\\\/arduino-to-hca\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/project-basics\\\/arduino-to-hca\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sundrysites.com\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/minutely-pic.jpg\",\"datePublished\":\"2020-03-31T00:57:32+00:00\",\"dateModified\":\"2024-02-28T01:45:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/project-basics\\\/arduino-to-hca\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/project-basics\\\/arduino-to-hca\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/project-basics\\\/arduino-to-hca\\\/#primaryimage\",\"url\":\"https:\\\/\\\/sundrysites.com\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/minutely-pic.jpg\",\"contentUrl\":\"https:\\\/\\\/sundrysites.com\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/minutely-pic.jpg\",\"width\":148,\"height\":279},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/project-basics\\\/arduino-to-hca\\\/#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\":\"Project Basics\",\"item\":\"https:\\\/\\\/sundrysites.com\\\/index.php\\\/home-info\\\/arduino-projects\\\/project-basics\\\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Arduino to HCA\"}]},{\"@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":"Arduino to HCA - 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\/project-basics\/arduino-to-hca\/","og_locale":"en_US","og_type":"article","og_title":"Arduino to HCA - Sundrysites","og_description":"The Arduinos are out collecting data and at some point that data needs to be sent to HCA, either for record-keeping or to take some action, like sending me an email. This posting provides an overview of how I accomplish this.","og_url":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/","og_site_name":"Sundrysites","article_modified_time":"2024-02-28T01:45:24+00:00","og_image":[{"url":"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/","url":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/","name":"Arduino to HCA - Sundrysites","isPartOf":{"@id":"https:\/\/sundrysites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/#primaryimage"},"image":{"@id":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/#primaryimage"},"thumbnailUrl":"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic.jpg","datePublished":"2020-03-31T00:57:32+00:00","dateModified":"2024-02-28T01:45:24+00:00","breadcrumb":{"@id":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/#primaryimage","url":"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic.jpg","contentUrl":"https:\/\/sundrysites.com\/wp-content\/uploads\/2020\/03\/minutely-pic.jpg","width":148,"height":279},{"@type":"BreadcrumbList","@id":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/arduino-to-hca\/#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":"Project Basics","item":"https:\/\/sundrysites.com\/index.php\/home-info\/arduino-projects\/project-basics\/"},{"@type":"ListItem","position":5,"name":"Arduino to HCA"}]},{"@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\/336","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=336"}],"version-history":[{"count":3,"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/pages\/336\/revisions"}],"predecessor-version":[{"id":535,"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/pages\/336\/revisions\/535"}],"up":[{"embeddable":true,"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/pages\/332"}],"wp:attachment":[{"href":"https:\/\/sundrysites.com\/index.php\/wp-json\/wp\/v2\/media?parent=336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}