I have an off-grid battery backup system at my home. It is located in the upstairs of my home and once the grid power is failed, the off-grid inverter automatically takes over the power supply to the home. To indicate the source of the power supply, there are 2 panel lights fixed on the instrument panel where the automatic transfer switch is located. The red light indicates the grid power and the green light indicates the battery backup power. These lights are lit whenever the home uses the respective power source. (only one power source is used at a time).
As this mechanism is located upstairs in my house, when we are on the ground floor, it is a little confusing to determine which power source is in use. Therefore, I decided to use two ESP-WROOM-32 modules to indicate the power source for the ground floor. Here, one ESP32 is acting as the transmitter (located upstairs) and the other one as the receiver (downstairs). The receiver acts as a web server and the transmitter pushes the status of the grid power supply to the receiver. (Here I used a relay to detect the availability of the electricity in the grid supply). Codes of both the transmitter and the receiver are given below.
A. Transmitter:
#include <WiFi.h>
#include <HTTPClient.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
const char* ssid = “WiFi-SSID”;
const char* password = “PASSWORD”;
const char* receiverIP = "192.168.0.70"; // Receiver's static IP
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C // Address of the OLED screen
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int buttonPin = 4;
const int ledPin = 13;
const int ledPinG = 2;
bool lastButtonState = LOW;
// Image of a battery
static const uint8_t image_battery[1024] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3c, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0x8f, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// Image of a high tension power post
static const uint8_t image_electric_pole[1024] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1b, 0x80, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1b, 0x80, 0x00, 0x37, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x77, 0x00, 0x00, 0x00, 0x1f, 0xee, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x67, 0x00, 0x00, 0x01, 0xfe, 0x0e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x33, 0x80, 0x00, 0xe7, 0x00, 0x00, 0x1f, 0xf0, 0x1c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0xe7, 0x00, 0x00, 0xff, 0xf0, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0xc7, 0x00, 0x07, 0xfb, 0xf0, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x63, 0x80, 0x01, 0xc7, 0x00, 0x3f, 0xc7, 0xb0, 0x70, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe3, 0x80, 0x01, 0xc7, 0x03, 0xfc, 0x0e, 0x30, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe3, 0x80, 0x03, 0x87, 0x3f, 0xf0, 0x1c, 0x30, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xc3, 0x80, 0x03, 0x87, 0xff, 0xf0, 0x38, 0x31, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xc3, 0x80, 0x03, 0xff, 0xf3, 0xb0, 0x70, 0x33, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xc3, 0x8f, 0xff, 0xff, 0x8f, 0x30, 0xf0, 0x33, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe7, 0x1e, 0x31, 0xc0, 0x37, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, 0x3f, 0x07, 0x3c, 0x33, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xe0, 0x7f, 0x07, 0x70, 0x37, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xf8, 0xf7, 0x07, 0xe0, 0x3e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xbf, 0xc7, 0x07, 0xc0, 0x3e, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0x9f, 0x87, 0x07, 0x80, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0x9f, 0x87, 0x07, 0x80, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xbf, 0xc7, 0x07, 0xc0, 0x3c, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xf8, 0xf7, 0x07, 0xe0, 0x3e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xf0, 0x7f, 0x07, 0x70, 0x37, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, 0x3f, 0x07, 0x3c, 0x33, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe7, 0x1e, 0x31, 0xc0, 0x37, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xc3, 0x8f, 0xff, 0xff, 0x8f, 0x30, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xc3, 0x80, 0x07, 0xff, 0xf3, 0xb0, 0x70, 0x33, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xc3, 0x80, 0x03, 0x87, 0xff, 0xf0, 0x38, 0x31, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe3, 0x80, 0x03, 0x87, 0x3f, 0xf0, 0x1c, 0x30, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe3, 0x80, 0x01, 0xc7, 0x03, 0xfc, 0x0e, 0x30, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x63, 0x80, 0x01, 0xc7, 0x00, 0x3f, 0xc7, 0x30, 0x70, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0xc7, 0x00, 0x07, 0xfb, 0xf0, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0xe7, 0x00, 0x00, 0xff, 0xf0, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x33, 0x80, 0x00, 0xe7, 0x00, 0x00, 0x1f, 0xf0, 0x1c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x67, 0x00, 0x00, 0x01, 0xfe, 0x0c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3f, 0xee, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1b, 0x80, 0x00, 0x37, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1b, 0x80, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
void setup() {
Serial.begin(115200);
// Set pin modes
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT); // Red LED (Grid power on)
pinMode(ledPinG, OUTPUT); // Green LED (Battery power on)
// Initialize OLED display
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
}
delay(2000); // alowe 2s to initialise the display
display.clearDisplay();
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
bool buttonState = digitalRead(buttonPin);
// Check if the button state has changed
if (buttonState != lastButtonState) {
lastButtonState = buttonState;
// Update local LED
digitalWrite(ledPin, buttonState ? HIGH : LOW);
digitalWrite(ledPinG, buttonState ? LOW : HIGH);
// Display image based on button state
if (buttonState) {
display.clearDisplay();
display.drawBitmap(0, 0, image_electric_pole, 128, 64, 1); // Grid power
display.display();
} else {
display.clearDisplay();
display.drawBitmap(0, 0, image_battery, 128, 64, 1); // Battery power
display.display();
}
// Send HTTP request to receiver
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = String("http://") + receiverIP + "/setLED?state=" + (buttonState ? "1" : "0");
http.begin(url);
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
Serial.println("Sent request to receiver successfully.");
} else {
Serial.print("Error in sending request: ");
Serial.println(httpResponseCode);
}
http.end();
} else {
Serial.println("WiFi not connected");
}
}
delay(100); // Debounce delay
B. Receiver:
#include <WiFi.h>
#include <WebServer.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
const char* ssid = "WiFi-SSID";
const char* password = "PASSWORD";
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int ledPin = 13;
const int ledPinG = 2;
WebServer server(80);
// Image of a battery
static const uint8_t image_battery[1024] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3c, 0x0f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0xcf, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x8f, 0xff, 0x8f, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// Image of a high tension power post
static const uint8_t image_electric_pole[1024] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1b, 0x80, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1b, 0x80, 0x00, 0x37, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x77, 0x00, 0x00, 0x00, 0x1f, 0xee, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x67, 0x00, 0x00, 0x01, 0xfe, 0x0e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x33, 0x80, 0x00, 0xe7, 0x00, 0x00, 0x1f, 0xf0, 0x1c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0xe7, 0x00, 0x00, 0xff, 0xf0, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0xc7, 0x00, 0x07, 0xfb, 0xf0, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x63, 0x80, 0x01, 0xc7, 0x00, 0x3f, 0xc7, 0xb0, 0x70, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe3, 0x80, 0x01, 0xc7, 0x03, 0xfc, 0x0e, 0x30, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe3, 0x80, 0x03, 0x87, 0x3f, 0xf0, 0x1c, 0x30, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xc3, 0x80, 0x03, 0x87, 0xff, 0xf0, 0x38, 0x31, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xc3, 0x80, 0x03, 0xff, 0xf3, 0xb0, 0x70, 0x33, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xc3, 0x8f, 0xff, 0xff, 0x8f, 0x30, 0xf0, 0x33, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe7, 0x1e, 0x31, 0xc0, 0x37, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, 0x3f, 0x07, 0x3c, 0x33, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xe0, 0x7f, 0x07, 0x70, 0x37, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xf8, 0xf7, 0x07, 0xe0, 0x3e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xbf, 0xc7, 0x07, 0xc0, 0x3e, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0x9f, 0x87, 0x07, 0x80, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0x9f, 0x87, 0x07, 0x80, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xbf, 0xc7, 0x07, 0xc0, 0x3c, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xf8, 0xf7, 0x07, 0xe0, 0x3e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0xf0, 0x7f, 0x07, 0x70, 0x37, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, 0x3f, 0x07, 0x3c, 0x33, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe7, 0x1e, 0x31, 0xc0, 0x37, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xc3, 0x8f, 0xff, 0xff, 0x8f, 0x30, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xc3, 0x80, 0x07, 0xff, 0xf3, 0xb0, 0x70, 0x33, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xc3, 0x80, 0x03, 0x87, 0xff, 0xf0, 0x38, 0x31, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe3, 0x80, 0x03, 0x87, 0x3f, 0xf0, 0x1c, 0x30, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe3, 0x80, 0x01, 0xc7, 0x03, 0xfc, 0x0e, 0x30, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x63, 0x80, 0x01, 0xc7, 0x00, 0x3f, 0xc7, 0x30, 0x70, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0xc7, 0x00, 0x07, 0xfb, 0xf0, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0xe7, 0x00, 0x00, 0xff, 0xf0, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x33, 0x80, 0x00, 0xe7, 0x00, 0x00, 0x1f, 0xf0, 0x1c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x67, 0x00, 0x00, 0x01, 0xfe, 0x0c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3f, 0xee, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1b, 0x80, 0x00, 0x37, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1b, 0x80, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
void handleSetLED() {
if (server.hasArg("state")) {
int state = server.arg("state").toInt();
digitalWrite(ledPin, state == 1 ? HIGH : LOW);
digitalWrite(ledPinG, state == 1 ? LOW : HIGH);
// Update display based on received state
if (state == 1) {
display.clearDisplay();
display.drawBitmap(0, 0, image_electric_pole, 128, 64, 1); //Grid power
display.display();
} else {
display.clearDisplay();
display.drawBitmap(0, 0, image_battery, 128, 64, 1); // Battery power
display.display();
}
server.send(200, "text/plain", "LED state set");
Serial.println("LED state changed by transmitter");
} else {
server.send(400, "text/plain", "Bad request");
}
}
void setup() {
Serial.begin(115200);
// Set pin modes
pinMode(ledPin, OUTPUT);
pinMode(ledPinG, OUTPUT);
// Initialize OLED display
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
}
delay(2000); // alowe 2s to initialise the display
display.clearDisplay();
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...")
}
Serial.println("Connected to WiFi");
// Configure server routes
server.on("/setLED", handleSetLED);
server.begin();
}
void loop() {
server.handleClient();
}
Both these sketches worked fine when I flashed the ESP32 modules with Arduino IDE. (Each ESP32 has 128x64 OLED displays and they show a battery or a high-tension power post respectively).
Now I want to do the same after connecting both ESP32 modules with ESPHOME. As I’m not used to coding in yml format, can anyone help me convert the above two sketches to ESPHOME codes?
Thank you.