{"id":518,"date":"2014-09-28T17:42:33","date_gmt":"2014-09-28T15:42:33","guid":{"rendered":"http:\/\/www.verelec.nl\/?page_id=518"},"modified":"2014-09-28T18:02:42","modified_gmt":"2014-09-28T16:02:42","slug":"playing-with-the-esp8266","status":"publish","type":"page","link":"https:\/\/www.verelec.nl\/?page_id=518","title":{"rendered":"Playing with the ESP8266"},"content":{"rendered":"<p><a href=\"https:\/\/www.verelec.nl\/wp-content\/uploads\/2014\/09\/ESP8266-WI07c-Wifi-Module-02.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-534\" src=\"https:\/\/www.verelec.nl\/wp-content\/uploads\/2014\/09\/ESP8266-WI07c-Wifi-Module-02.jpg\" alt=\"ESP8266-WI07c-Wifi-Module-02\" width=\"1000\" height=\"709\" srcset=\"https:\/\/www.verelec.nl\/wp-content\/uploads\/2014\/09\/ESP8266-WI07c-Wifi-Module-02.jpg 1000w, https:\/\/www.verelec.nl\/wp-content\/uploads\/2014\/09\/ESP8266-WI07c-Wifi-Module-02-300x212.jpg 300w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a>There is a new Chinese module on the market which will enable enthousiasts to build their own IoT (internet of Things) applications at relative low cost. Time to try them out. I bought 5 of them at AliExpress and received them yesterday. Today I go a simple application working (mostly borrowed code from the WEB). The code I use is:<\/p>\n<p>[cpp]<br \/>\n\/\/<br \/>\n\/\/ libraries<br \/>\n\/\/<br \/>\n#include &quot;Arduino.h&quot;<br \/>\n#include &quot;SoftwareSerial.h&quot;<br \/>\n#include &quot;JsonParser.h&quot;<br \/>\n#include &lt;avr\/wdt.h&gt;<\/p>\n<p>using namespace ArduinoJson::Parser;<\/p>\n<p>\/\/<br \/>\n\/\/ global defines<br \/>\n\/\/<br \/>\n#define SSID &quot;your SSID&quot;\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ WiFi lan at home<br \/>\n#define PASS &quot;your SSID Password&quot;\u00a0\u00a0 \u00a0\u00a0\u00a0 \/\/ password for WiFi lan<br \/>\n#define CONNECT_RETRIES\u00a0\u00a0 \u00a05\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ allow 5 retries to connect to WiFi<\/p>\n<p>#define DST_IP &quot;188.226.224.148&quot; \/\/baidu.com<br \/>\n#define LOCATIONID &quot;2925533&quot; \/\/ location id<\/p>\n<p>#define DEBUG_RX\u00a0\u00a0 \u00a010\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ pin 10 is used for receiving input from debug serial<br \/>\n#define DEBUG_TX\u00a0\u00a0 \u00a011\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ pin 11 is used for sending output to debug serial<\/p>\n<p>SoftwareSerial dbgSerial(DEBUG_RX, DEBUG_TX); \u00a0\u00a0 \u00a0\/\/ used for debugging<br \/>\nJsonParser&lt;32&gt; parser;<br \/>\n\/\/<br \/>\n\/\/ function prototypes<br \/>\n\/\/<br \/>\nboolean connectWiFi();\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ function to connect to WiFi<br \/>\nvoid software_Reboot();<\/p>\n<p>\/\/<br \/>\n\/\/ global variables<br \/>\n\/\/<br \/>\nchar cmd[100];\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ buffer used build messages<br \/>\nchar buffer[100];<br \/>\n\/**<br \/>\n\u00a0* @name setup()<br \/>\n\u00a0* initialize the program<br \/>\n\u00a0*\/<br \/>\nvoid setup() {<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/ Open serial communication with WiFi module<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0Serial.begin(115200);<br \/>\n\u00a0\u00a0 \u00a0Serial.setTimeout(5000);<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/ open debug serial<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0dbgSerial.begin(9600); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/can&#8217;t be faster than 19200 for softserial<br \/>\n\u00a0\u00a0 \u00a0dbgSerial.println(&quot;ESP8266 Demo&quot;);\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ show demo is starting<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/test if the module is ready<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0bool moduleReady = false;<br \/>\n\u00a0\u00a0 \u00a0for (uint8_t i = 0; i &lt; CONNECT_RETRIES; i++){<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0Serial.println(&quot;AT+RST&quot;);\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ reset the module<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0delay(1000);<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (Serial.find(&quot;OK&quot;)) {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ the module is ready to receive commands<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0dbgSerial.println(&quot;Module is ready&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0moduleReady = true;<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0break;<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0} else {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0dbgSerial.println(&quot;Module is not responding&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}<br \/>\n\u00a0\u00a0 \u00a0}<br \/>\n\u00a0\u00a0 \u00a0if (!moduleReady) {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ module is not responding<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0dbgSerial.println(&quot;Module non functional.&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ reboot and try again<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0software_Reboot();<br \/>\n\u00a0\u00a0 \u00a0}<br \/>\n\/\/\u00a0\u00a0 \u00a0delay(1000);<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/ now connect to the wifi<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0boolean connected = false;<br \/>\n\u00a0\u00a0 \u00a0for (int i = 0; i &lt; CONNECT_RETRIES; i++) {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ check if we are connected<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (connectWiFi()) {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ we have a connection<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0connected = true;<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ done<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0break;<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}<br \/>\n\u00a0\u00a0 \u00a0}<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/ if we cannot connect no use continuing<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0if (!connected) {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ inform user<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0dbgSerial.println(&quot;Cannot connect to WiFi lan&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0while (1) {};<br \/>\n\u00a0\u00a0 \u00a0}<\/p>\n<p>\u00a0\u00a0 \u00a0delay(5000);<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/ show the IP address we have received<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0Serial.println(&quot;AT+CIFSR&quot;);<br \/>\n\u00a0\u00a0 \u00a0delay(3000);<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/ wait for incoming message with IP address<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0while (!Serial.available()){};<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/ copy the message to output<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0uint16_t bufferIndex = 0;<br \/>\n\u00a0\u00a0 \u00a0while (Serial.available()) {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0char x = Serial.read();<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ ignore any CR&#8217;s, LF&#8217;s and zero characters<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (x != 0x0D &amp;&amp; x != 0x0A &amp;&amp; x != 0x0) {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ add character to buffer<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0buffer[bufferIndex] = x;<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0bufferIndex++;<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}<br \/>\n\u00a0\u00a0 \u00a0}<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/ put in a string terminator<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0buffer[bufferIndex] = &#8216;&#92;&#48;&#8217;;<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/ and display the IP address<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0dbgSerial.print(&quot;ip address: &quot;);<br \/>\n\u00a0\u00a0 \u00a0dbgSerial.println(&amp;buffer[8]);<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0\/\/ set the single connection mode<br \/>\n\u00a0\u00a0 \u00a0\/\/<br \/>\n\u00a0\u00a0 \u00a0Serial.println(&quot;AT+CIPMUX=0&quot;);<br \/>\n}<br \/>\nvoid loop() {<br \/>\n\u00a0\u00a0 \u00a0String cmd = &quot;AT+CIPSTART=\\&quot;TCP\\&quot;,\\&quot;&quot;;<br \/>\n\u00a0\u00a0 \u00a0\u00a0 cmd += DST_IP;<br \/>\n\u00a0\u00a0 \u00a0\u00a0 cmd += &quot;\\&quot;,80&quot;;<br \/>\n\u00a0\u00a0 \u00a0\u00a0 Serial.println(cmd);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 dbgSerial.println(cmd);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 if(Serial.find(&quot;Error&quot;)) return;<br \/>\n\u00a0\u00a0 \u00a0\u00a0 cmd = &quot;GET \/data\/2.5\/weather?id=&quot;;<br \/>\n\u00a0\u00a0 \u00a0\u00a0 cmd += LOCATIONID;<br \/>\n\u00a0\u00a0 \u00a0\u00a0 cmd += &quot; HTTP\/1.0\\r\\nHost: api.openweathermap.org\\r\\n\\r\\n&quot;;<br \/>\n\u00a0\u00a0 \u00a0\u00a0 Serial.print(&quot;AT+CIPSEND=&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 Serial.println(cmd.length());<br \/>\n\u00a0\u00a0 \u00a0\u00a0 if(Serial.find(&quot;&gt;&quot;)){<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 dbgSerial.print(&quot;&gt;&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 }else{<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 Serial.println(&quot;AT+CIPCLOSE&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 dbgSerial.println(&quot;connection timeout&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 delay(1000);<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 return;<br \/>\n\u00a0\u00a0 \u00a0\u00a0 }<br \/>\n\u00a0\u00a0 \u00a0\u00a0 Serial.print(cmd);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 unsigned int i = 0; \/\/timeout counter<br \/>\n\u00a0\u00a0 \u00a0\u00a0 int n = 1; \/\/ char counter<br \/>\n\u00a0\u00a0 \u00a0\u00a0 char json[100]=&quot;{&quot;;<br \/>\n\u00a0\u00a0 \u00a0\u00a0 while (!Serial.find(&quot;\\&quot;main\\&quot;:{&quot;)){} \/\/ find the part we are interested in.<br \/>\n\u00a0\u00a0 \u00a0\u00a0 while (i&lt;60000) {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 if(Serial.available()) {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 char c = Serial.read();<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 json[n]=c;<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if(c==&#8217;}&#8217;) break;<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 n++;<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 i=0;<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 i++;<br \/>\n\u00a0\u00a0 \u00a0\u00a0 }<br \/>\n\u00a0\u00a0 \u00a0\u00a0 dbgSerial.println(json);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 JsonObject root = parser.parse(json);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 double temp = root[&quot;temp&quot;];<br \/>\n\u00a0\u00a0 \u00a0\u00a0 double pressure = root[&quot;pressure&quot;];<br \/>\n\u00a0\u00a0 \u00a0\u00a0 double humidity = root[&quot;humidity&quot;];<br \/>\n\u00a0\u00a0 \u00a0\u00a0 temp -= 273.15; \/\/ from kelvin to degree celsius<br \/>\n\u00a0\u00a0 \u00a0\u00a0 dbgSerial.println(temp);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 dbgSerial.println(pressure);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 dbgSerial.println(humidity);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 dbgSerial.println(&quot;====&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0 delay(30000);<br \/>\n}<br \/>\nboolean connectWiFi() {<br \/>\n\u00a0\u00a0 \u00a0Serial.println(&quot;AT+CWMODE=1&quot;);<br \/>\n\u00a0\u00a0 \u00a0strcpy(cmd,&quot;AT+CWJAP=\\&quot;&quot;);<br \/>\n\u00a0\u00a0 \u00a0strcat(cmd,SSID);<br \/>\n\u00a0\u00a0 \u00a0strcat(cmd, &quot;\\&quot;,\\&quot;&quot;);<br \/>\n\u00a0\u00a0 \u00a0strcat(cmd, PASS);<br \/>\n\u00a0\u00a0 \u00a0strcat(cmd, &quot;\\&quot;&quot;);<br \/>\n\u00a0\u00a0 \u00a0dbgSerial.println(cmd);<br \/>\n\u00a0\u00a0 \u00a0Serial.println(cmd);<br \/>\n\u00a0\u00a0 \u00a0delay(2000);<br \/>\n\u00a0\u00a0 \u00a0if (Serial.find(&quot;OK&quot;)) {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0dbgSerial.println(&quot;OK, Connected to WiFi.&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return true;<br \/>\n\u00a0\u00a0 \u00a0} else {<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0dbgSerial.println(&quot;Can not connect to the WiFi.&quot;);<br \/>\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return false;<br \/>\n\u00a0\u00a0 \u00a0}<br \/>\n}<br \/>\nvoid software_Reboot()<br \/>\n{<br \/>\n\u00a0 wdt_enable(WDTO_15MS);<br \/>\n\u00a0 while(1)<br \/>\n\u00a0 {<br \/>\n\u00a0 }<br \/>\n}<\/p>\n<p>[\/cpp]<\/p>\n<p>But most important&#8230;. It works :).\u00a0 I used a simple DC-DC switcher to convert from 5V -&gt; 3.3V. No level shifters&#8230; Sofar the chip still works and does not get hot or anything.\u00a0 Pretty straight forward. Next steps:<\/p>\n<ul>\n<li>Connect the module to a local webserver on my home router<\/li>\n<li>See if I can switch things on\/off through an app connected on my local LAN.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There is a new Chinese module on the market which will enable enthousiasts to build their own IoT (internet of Things) applications at relative low cost. Time to try them out. I bought 5 of them at AliExpress and received &hellip; <a href=\"https:\/\/www.verelec.nl\/?page_id=518\">Lees verder <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/www.verelec.nl\/index.php?rest_route=\/wp\/v2\/pages\/518"}],"collection":[{"href":"https:\/\/www.verelec.nl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.verelec.nl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.verelec.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.verelec.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=518"}],"version-history":[{"count":18,"href":"https:\/\/www.verelec.nl\/index.php?rest_route=\/wp\/v2\/pages\/518\/revisions"}],"predecessor-version":[{"id":545,"href":"https:\/\/www.verelec.nl\/index.php?rest_route=\/wp\/v2\/pages\/518\/revisions\/545"}],"wp:attachment":[{"href":"https:\/\/www.verelec.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}