{"id":3399,"date":"2025-02-27T17:26:39","date_gmt":"2025-02-27T17:26:39","guid":{"rendered":"https:\/\/iotthinghub.com\/?p=3399"},"modified":"2025-02-27T18:05:34","modified_gmt":"2025-02-27T18:05:34","slug":"iot-wifi-load-control","status":"publish","type":"post","link":"https:\/\/iotthinghub.com\/?p=3399","title":{"rendered":"IoT : WiFi Load Control"},"content":{"rendered":"\n<p class=\"has-text-color has-link-color wp-elements-1 wp-block-paragraph\" style=\"color:#5c5c5c\">WiFi (Wireless Fidelity) is a technology that allows devices to connect to the internet or communicate with each other wirelessly using radio waves. It operates based on the IEEE 802.11 standard, enabling high-speed data transfer over short distances. The ESP8266 operates exclusively in the 2.4 GHz frequency band. It supports WiFi communication based on the IEEE 802.11 b\/g\/n standards, which makes it ideal for various IoT applications due to its balance of range and data throughput, as well as its low power consumption. Notably, since it only uses the 2.4 GHz band, it does not support the 5 GHz frequency, which is often used for higher-speed networks in environments with less interference.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"372\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/esp8266-pinout-1024x372.jpg\" alt=\"\" class=\"wp-image-3401\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/esp8266-pinout-1024x372.jpg 1024w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/esp8266-pinout-300x109.jpg 300w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/esp8266-pinout-768x279.jpg 768w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/esp8266-pinout.jpg 1145w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"381\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-6-1024x381.jpg\" alt=\"\" class=\"wp-image-3403\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-6-1024x381.jpg 1024w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-6-300x112.jpg 300w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-6-768x286.jpg 768w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-6.jpg 1074w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-2 wp-block-paragraph\" style=\"color:#5c5c5c\">In the previous article we discuss about Bluetooth communication. In HC05 Bluetooth module we initialize it earlier, but in WiFi, esp8266 module we initialize it at run time. In this article we modify our Bluetooth logic with lot\u2019s of changes but the operation will be same. The esp8266 module works on AT command mode. Before starting let\u2019s see some command mode that we need in this article.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"281\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-7-1024x281.jpg\" alt=\"\" class=\"wp-image-3407\" style=\"width:776px;height:auto\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-7-1024x281.jpg 1024w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-7-300x82.jpg 300w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-7-768x211.jpg 768w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-7.jpg 1279w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-3 wp-block-paragraph\" style=\"color:#5c5c5c\">The esp8266 module has many other commands, but in this article we only deal with the above commands. Please see my Youtube video for command set up. At first we send commands through hyper serial terminal. \u00a0Use any serial terminal software for command; here I use \ud83d\udcbb <a href=\"https:\/\/sourceforge.net\/projects\/realterm\/files\/latest\/download\">Realterm software<\/a> for command. Every commands will send with &#8220;\\r\\n\u00a0 &#8221; at the end. Let\u2019s create a function for sending commands.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nchar display&#x5B;140],wifi_send&#x5B;50],RX_ST&#x5B;140];\nvoid ESP8266_RX(char *b_send)\n{\n\tsprintf(wifi_send,&quot;%s&quot;,b_send);\n\tHAL_UART_Transmit(&amp;huart1,(uint8_t*)wifi_send,strlen(wifi_send),1000);\n\twhile(1)\n\t{\n\t\tsprintf(RX_ST,&quot;%s&quot;,display);\n\t\tif(strstr(RX_ST,&quot;OK&quot;)) break;\n\t}\n\tmemset (wifi_send, &#039;\\0&#039;, 50);  \/\/ clear the buffer\n\tmemset (RX_ST, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n\tcount=0;\n\tHAL_Delay(2000);\n}\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-4 wp-block-paragraph\" style=\"color:#5c5c5c\">Here we use character type variable: display to store the RX received data. Every response of esp8266 has a common string of &#8220;OK&#8221;, so set a break point at &#8220;OK&#8221; signal. For receiving character we use interrupt call back function.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nuint8_t rx_char,count;\nvoid HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)\n{\n  if(huart-&gt;Instance==USART1 )\n  {\n    display&#x5B;count++]=rx_char;\n    HAL_UART_Receive_IT(&amp;huart1,&amp;rx_char,1);\n  }\n} \n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-5 wp-block-paragraph\" style=\"color:#5c5c5c\">The call function will become very simple-<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nESP8266_RX(&quot;AT\\r\\n&quot;);                           \/\/ test function\nESP8266_RX(&quot;ATE0\\r\\n&quot;);                      \/\/ echo off\nESP8266_RX(&quot;AT+CWMODE=3\\r\\n&quot;);  \/\/ both softAP + station mode\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-6 wp-block-paragraph\" style=\"color:#5c5c5c\">The esp8266 module needs to connect with your WiFi network, i.e. the AT+CWLAP command will show the available networks for esp8266 access point. If it doesn\u2019t show your router name, please enable the 2.4GHz frequency bandwidth. For connecting with router-<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nchar WIFI_NAME&#x5B;]=&quot;WiFi_Name&quot;;\nchar WIFI_PASS&#x5B;]=&quot;WiFi_Password&quot;;\nESP8266_Connect(WIFI_NAME,WIFI_PASS);\nvoid ESP8266_Connect(char *wifi_name,char *wifi_pass)\n{\n\tsprintf(wifi_send,&quot;AT+CWJAP=\\&quot;%s\\&quot;,\\&quot;%s\\&quot;\\r\\n&quot;, wifi_name, wifi_pass);\n\tHAL_UART_Transmit(&amp;huart1,(uint8_t*)wifi_send,strlen(wifi_send),1000);\n\twhile(1)\n\t{\n\t\tsprintf(RX_ST,&quot;%s&quot;,display);\n\t\tif(strstr(RX_ST,&quot;GOT IP&quot;)) break;\n\t}\n\tmemset (wifi_send, &#039;\\0&#039;, 50);  \/\/ clear the buffer\n\tmemset (RX_ST, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n\tcount=0;\n\tHAL_Delay(8000);\n}\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-7 wp-block-paragraph\" style=\"color:#5c5c5c\">The above function wills same as the previous function with only change in break point at &#8220;GOT IP&#8221; signal. Create server with multiple connection through pipe line port 80.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nESP8266_RX(&quot;AT+CIPMUX=1\\r\\n&quot;);       \/\/ multiple connection\nESP8266_RX(&quot;AT+CIPSERVER=1,80\\r\\n&quot;); \/\/ Create server with port 80\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-8 wp-block-paragraph\" style=\"color:#5c5c5c\">Since the AT+CIFSR command return both the APIP (Access Point IP Address) &amp; STAIP (Station IP Address). In Station Mode (STA), esp8266 connects to an existing WiFi router or hotspot like a regular device (smartphone, laptop, etc.) &amp; in Access Point (AP) Mode, it creates its own WiFi network, and other devices (phones, laptops) can connect to it. The default APIP is 192.168.4.1, but it can be changed. Here we only deals with STAIP<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nchar IPV4&#x5B;16];\nESP8266_IP(&quot;AT+CIFSR\\r\\n&quot;);\nvoid ESP8266_IP(char *getIP)\n{\n\tsprintf(wifi_send,&quot;%s&quot;,getIP);\n\tHAL_UART_Transmit(&amp;huart1,(uint8_t*)wifi_send,strlen(wifi_send),1000);\n\twhile(1)\n\t{\n\t\tsprintf(RX_ST,&quot;%s&quot;,display);\n\t\tif(strstr(RX_ST,&quot;STAMAC&quot;)) break;\n\t}\n\tfor(uint8_t i=0;i&lt;140;i++)\n\t{\n\tif(RX_ST&#x5B;i]==&#039;S&#039;&amp;&amp; RX_ST&#x5B;i+1]==&#039;T&#039; &amp;&amp; RX_ST&#x5B;i+2]==&#039;A&#039;&amp;&amp; RX_ST&#x5B;i+3]==&#039;I&#039; &amp;&amp; RX_ST&#x5B;i+4]==&#039;P&#039;)\n     {\n\t\tfor(uint8_t j=0;j&lt;16;j++)\n\t\t{\n\t\t\tIPV4&#x5B;j]=RX_ST&#x5B;i+j+7];\n\t\t\tif(IPV4&#x5B;j] == &#039;&quot;&#039;) \n\t\t\t{\t\n\t\t\t\tIPV4&#x5B;j]=&#039;\\0&#039;; \/\/ filter\n\t\t\t  break;\n\t\t\t}\n\t\t}\n\t  }\t\n\t}\n\tmemset (wifi_send, &#039;\\0&#039;, 50);  \/\/ clear the buffer\n\tmemset (display, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n\tcount=0;\n}\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-9 wp-block-paragraph\" style=\"color:#5c5c5c\">We are done with our initialization part. In our Bluetooth article we use serial Bluetooth terminal mobile app, here we use \ud83d\udcf1<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=de.kai_morich.serial_wifi_terminal&amp;hl=en\">serial WiFi terminal mobile app<\/a>. In Devices -> Add Device with any name, Host with the esp8266 STAIP (Station IP Address) port 80. Here we use one GPIO for load on\/off &amp; one PWM signal. In this article we use system clock as 48MHz internal clock. For PWM the formula is-<\/p>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color wp-elements-10 wp-block-paragraph\" style=\"color:#252525\">&nbsp;&nbsp;&nbsp;&nbsp; PWM frequency f<sub>PWM<\/sub> = f<sub>cpu<\/sub>\/((1+Prescaler)*(1+ARR))<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-11 wp-block-paragraph\" style=\"color:#5c5c5c\">Let ARR=19999 &amp;Prescaler 47, will generate a frequency of 50Hz. For 50% Duty cycle the CCRx register value will be 9999. Here I use Timer 15 channel 1 for PWM, for 50% Duty cycle-<\/p>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color wp-elements-12 wp-block-paragraph\" style=\"color:#252525\">TIM15->CCR1=9999<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-13 wp-block-paragraph\" style=\"color:#5c5c5c\">Initialize UART with 115200 baud rate, 1 stop bit &amp; None parity. Here I use UART1 for communicating with Interrupt function. When we connect esp8266 with STAIP, the terminal will return &#8220;CONNECT&#8221; as string &amp; at disconnected &#8220;CLOSED&#8221; string. Reading string will tell us if the WiFi device is connected or not. Make some setting in the serial WiFi terminal mobile app so that different button will set different function.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"652\" height=\"218\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-8.jpg\" alt=\"\" class=\"wp-image-3428\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-8.jpg 652w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/function-8-300x100.jpg 300w\" sizes=\"(max-width: 652px) 100vw, 652px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-14 wp-block-paragraph\" style=\"color:#5c5c5c\">In the forever loop the controlling function of GPIO pin as-<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nif(strstr(RX_ST,&quot;load1&quot;))\n    {\n      HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1);\n      if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1))\n      OLCD_write_string(5,1,&quot;LOAD 1 ON      &quot;);\n      else OLCD_write_string(5,1,&quot;LOAD 1 OFF     &quot;);\n\t  count=0;\n      memset (RX_ST, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n\t  memset (display, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n    }\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-15 wp-block-paragraph\" style=\"color:#5c5c5c\">This is the same as Bluetooth tutorial. Here we use OLED 128*64 as display purpose. For\u00a0 controlling fan will be same-<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nchar fan_display&#x5B;16];\nuint8_t b_fan,duty=50;\nif(strstr(RX_ST,&quot;fan&quot;))\n    {\n      b_fan=b_fan^0x01;\n      if(b_fan)\n      {\n        HAL_TIM_PWM_Start(&amp;htim15,TIM_CHANNEL_1);\n        sprintf(fan_display,&quot;FAN Sp:%i    &quot;,duty);\n        OLCD_write_string(6,1,fan_display);\n      }else{\n        HAL_TIM_PWM_Stop(&amp;htim15,TIM_CHANNEL_1);\n        OLCD_write_string(6,1,&quot;FAN OFF        &quot;);\n      }\n\t  count=0;\n      memset (RX_ST, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n\t  memset (display, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n    }\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">For changing duty cycle, the code will be-<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nif(strstr(RX_ST,&quot;increment&quot;))\n    {\n     int speed=2;\n      if(b_fan)\n      {\n       speed++;\n       if(speed&gt;=5)speed=4;\n       switch(speed)\n       {\n       case 0: TIM15-&gt;CCR1=4999; \/\/for 25% duty cycle\n       OLCD_write_string(6,1,&quot;FAN ON SP:25% &quot;);\n       duty=25;\n       break;\n       case 1: TIM15-&gt;CCR1=9999; \/\/for 50% duty cycle\n       OLCD_write_string(6,1,&quot;FAN ON SP:50% &quot;);\n       duty=50;\n       break;\n       case 2: TIM15-&gt;CCR1=14999;\/\/for 75% duty cycle\n       OLCD_write_string(6,1,&quot;FAN ON SP:75% &quot;);\n       duty=75;\n       break;\n       case 3: TIM15-&gt;CCR1=17999;\/\/for 90% duty cycle\n       OLCD_write_string(6,1,&quot;FAN ON SP:90%  &quot;);\n       duty=90;\n       break;\n\t\t\t case 4: TIM15-&gt;CCR1=19998;\/\/for 100% duty cycle\n       OLCD_write_string(6,1,&quot;FAN ON SP:100%  &quot;);\n       duty=100;\n       break;\n       }\n      }\n\t  count=0;\n      memset (RX_ST, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n\t  memset (display, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n    }\n<\/pre><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nif(strstr(RX_ST,&quot;decrement&quot;))\n    {\n     int speed=2;\n      if(b_fan)\n      {\n       speed--;\n       if(speed&lt;=0)speed=0;\n       switch(speed)\n       {\n       case 0: TIM15-&gt;CCR1=4999; \/\/for 25% duty cycle\n       OLCD_write_string(6,1,&quot;FAN ON SP:25% &quot;);\n       duty=25;\n       break;\n       case 1: TIM15-&gt;CCR1=9999; \/\/for 50% duty cycle\n       OLCD_write_string(6,1,&quot;FAN ON SP:50% &quot;);\n       duty=50;\n       break;\n       case 2: TIM15-&gt;CCR1=14999;\/\/for 75% duty cycle\n       OLCD_write_string(6,1,&quot;FAN ON SP:75% &quot;);\n       duty=75;\n       break;\n       case 3: TIM15-&gt;CCR1=17999;\/\/for 90% duty cycle\n       OLCD_write_string(6,1,&quot;FAN ON SP:90% &quot;);\n       duty=90;\n       break;\n\t   case 4: TIM15-&gt;CCR1=19998;\/\/for 100% duty cycle\n       OLCD_write_string(6,1,&quot;FAN ON SP:100%  &quot;);\n       duty=100;\n       break;\n       }\n      }\n\t  count=0;\n      memset (RX_ST, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n\t  memset (display, &#039;\\0&#039;, 140);     \/\/ clear the buffer\n\t\t}\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-16 wp-block-paragraph\" style=\"color:#5c5c5c\">Combine all the function will be our full program. This tutorial is very lengthy &amp; I discuss about some basic part. Please read my other articles then it will be easier to you. Please see my Youtube video &amp; download the full code, it will help you.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"IoT \u25b6 WiFi Load Control \u25b6 MCU - STM32 \u25b6 esp8266\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/EgfkohZPKTE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-3e41869c wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-font-size has-medium-font-size\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/WiFi-LOAD-CONTROL.rar\" style=\"padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--50)\">download<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-link-color has-medium-font-size wp-elements-17 wp-block-paragraph\" style=\"color:#252525\"><a href=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/02\/WiFi-LOAD-CONTROL.rar\">WiFi LOAD CONTROL.rar<\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WiFi (Wireless Fidelity) is a technology that allows devices to connect to the internet or communicate with each other wirelessly using radio waves. It operates based on the IEEE 802.11 standard, enabling high-speed data transfer over short distances. The ESP8266 operates exclusively in the 2.4 GHz frequency band. It supports WiFi communication based on the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"class_list":["post-3399","post","type-post","status-publish","format-standard","hentry","category-wireless-iot"],"_links":{"self":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts\/3399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3399"}],"version-history":[{"count":29,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts\/3399\/revisions"}],"predecessor-version":[{"id":3440,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts\/3399\/revisions\/3440"}],"wp:attachment":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}