Files
firmware/firmware.ino
2026-05-06 09:34:32 +02:00

94 lines
2.2 KiB
C++

#include <WiFi.h>
#include <esp_now.h>
#include <esp_wifi.h>
void readMacAddress(){
uint8_t baseMac[6];
esp_err_t ret = esp_wifi_get_mac(WIFI_IF_STA, baseMac);
if (ret == ESP_OK) {
Serial.printf("%02x:%02x:%02x:%02x:%02x:%02x\n",
baseMac[0], baseMac[1], baseMac[2],
baseMac[3], baseMac[4], baseMac[5]);
} else {
Serial.println("Failed to read MAC address");
}
}
esp_now_peer_info_t peerInfo;
// String send_data = "";
// Callback when data is sent
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
if (status != ESP_NOW_SEND_SUCCESS) {
Serial.println("SENDMSGERR");
} else {
Serial.println("SENDMSGDONE");
}
}
// Callback when data is received
void OnDataRecv(uint8_t * mac, uint8_t *incomingData, int len) {
String message = String((char *)incomingData).substring(0, len);
if (message == "PING") {
AutoSendMessageToPeer("PONG", mac);
} else {
//Serial.printf("INMSG %02x:%02x:%02x:%02x:%02x:%02x",
// mac[0], mac[1], mac[2],
// mac[3], mac[4], mac[5]);
Serial.print("MI");
for (int i = 0; i < 6; i++) {
if (i > 0) Serial.print(":");
if (mac[i] < 16) Serial.print("0");
Serial.print(mac[i], HEX);
}
Serial.print("D");
Serial.println(message);
}
}
void setup(){
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.STA.begin();
Serial.print("C");
readMacAddress();
if (esp_now_init() != ESP_OK) {
Serial.println("ELC1500");
return;
}
esp_now_register_send_cb(esp_now_send_cb_t(OnDataSent));
esp_now_register_recv_cb(esp_now_recv_cb_t(OnDataRecv));
}
String waitForInput() {
while(Serial.available() == 0) {}
String input = Serial.readString();
return input;
}
void loop() {
String input = waitForInput();
if (input == "C" || input == "C\n") {
Serial.print("C");
readMacAddress();
} else if (input.startsWith("S")) {
if (input.startsWith("ST")) {
String receiverMacStr = input.substring(2,19);
uint8_t receiverMac[6];
macStringToBytes(receiverMacStr, receiverMac);
if (input.charAt(19) == 'D') {
String msgtxt = input.substring(20);
AutoSendMessageToPeer(msgtxt, receiverMac);
}
}
}
}