Designing two buttons with separate ON/OFF functions is easy and usually, we can avoid async server or dynamic programming language. When we need a checkbox, we can use Javascript on the server side. iOS style toggle button is essentially a checkbox (or a radio button or it can be anything similar). Fundamentally toggle button is a “cheating”! You can create a toggle switch just with CSS 3. It is also possible to create a toggle button as a set of radio buttons.
The funny cheating part is that, if we change the HTML with Javascript then the state of the toggle will change. That is what happens in some toggle buttons in WordPress plugins. It is not a bug free but it is the easiest way.
How We Create a Toggle Button With Javascript and CSS?
This is a basic example of a checkbox (you can try it on Code Pen) :
---
1 2 3 | Checkbox: <input type="checkbox" id="myCheck" onclick="myFunction()"> <p id="text" style="display:none">Checkbox is CHECKED!</p> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <script> function myFunction() { // Get the checkbox var checkBox = document.getElementById("myCheck"); // Get the output text var text = document.getElementById("text"); // If the checkbox is checked, display the output text if (checkBox.checked == true){ text.style.display = "block"; } else { text.style.display = "none"; } } </script> |
I have created an example toggle button for you:
See the Pen
Untitled by Abhishek Ghosh (@abhishekghosh-the-encoder)
on CodePen.
Here is another example of switch:
1 | https://codepen.io/pedromsduarte/pen/BxpNRN |
Where is the Javascript?
The Javascript pushed by ESP32 will change the toggle button section on the web page. I have demonstrated above the final state of GUI. You’ll need to install two libraries – ESPAsyncWebServer and AsyncTCP. The JavaScript will be initializing a WebSocket connection with the server and handle data exchange.
How to Install the Libraries?
That is most important, else the thing will not work. You need the Arduino IDE to be at the latest version and ESP board-specific software is required to be updated to the latest version (check your JSON file and update it to the latest). If you use an older version, you’ll likely face compilation errors.
Can You Provide Me a Working Code?
Yes. randomnerdtutorials.com
already worked providing a basic example with WiFi control:
1 2 | https://randomnerdtutorials.com/esp32-esp8266-web-server-physical-button/ https://randomnerdtutorials.com/esp32-esp8266-web-server-physical-button/ |
We have explained to you how things work. Our first example will help you to create a nice-looking web page or an Android app because the site-provided code for ESP32 will not work on Code Pen. Also, you can include the CSS, Js as separate files instead of coding them as single .ino
file.