From b328ad916c48114af241831eda0eca064e714002 Mon Sep 17 00:00:00 2001 From: Alexey Zholtikov Date: Thu, 22 Dec 2022 18:27:17 +0300 Subject: [PATCH] Version 1.3 Removed a lot of unnecessary functions. --- README.md | 84 ++++----------------------------- examples/Receiver/main.cpp | 17 +------ examples/Transmitter/main.cpp | 17 +------ library.properties | 2 +- src/ZHNetwork.cpp | 89 ++--------------------------------- src/ZHNetwork.h | 27 +---------- 6 files changed, 17 insertions(+), 219 deletions(-) diff --git a/README.md b/README.md index 8f6104c..42b1ee1 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,11 @@ A simple library for creating ESP-NOW based Mesh network for ESP8266/ESP32. 5. Voila. ;-) 6. P.S. Uncomment #define PRINT_LOG in ZHNetwork.h for display to serial port the full operation log. +## Notes + +1. Possibility uses WiFi AP or STA modes at the same time with ESP-NOW using the standard libraries. +2. For correct work at ESP-NOW + STA mode your WiFi router must be set on channel 1. + ## Function descriptions ### Sets the callback function for processing a received broadcast message @@ -60,66 +65,14 @@ void onConfirmReceiving(const uint8_t *target, const bool status) } ``` -### Sets one of the three possibility operating modes - -* ESP_NOW. Default mode. ESP-NOW Mesh network only. -* ESP_NOW_AP. ESP-NOW Mesh network + access point. -* ESP_NOW_STA. ESP-NOW Mesh network + connect to your WiFi router. - -Attention! For correct work on ESP_NOW_STA mode your WiFi router must be set on channel 1. - -```cpp -myNet.setWorkMode(ESP_NOW); -``` - -### Gets used operating mode - -```cpp -myNet.getWorkMode(); -``` - -### Sets ESP-NOW Mesh network name +### ESP-NOW Mesh network initialization 1-20 characters. Note. If network name not set node will work with all ESP-NOW networks. If set node will work with only one network. ```cpp -myNet.setNetName("ZHNetwork"); -``` - -### Gets used ESP-NOW Mesh network name - -```cpp -myNet.getNetName(); -``` - -### Sets WiFi ssid and password for ESP_NOW_STA mode - -Note. Must be called before Mesh network initialization. - -```cpp -myNet.setStaSetting("SSID", "PASSWORD"); -``` - -### Sets access point ssid and password for ESP_NOW_AP mode - -Note. Must be called before Mesh network initialization. - -```cpp -myNet.setApSetting("SSID", "PASSWORD"); -``` - -### ESP-NOW Mesh network initialization - -```cpp -myNet.begin(); -``` - -### ESP-NOW Mesh network deinitialization - -```cpp -myNet.stop(); +myNet.begin("ZHNetwork"); ``` ### Sends broadcast message to all nodes @@ -149,12 +102,6 @@ myNet.maintenance(); myNet.getNodeMac(); ``` -### Gets node IP address - -```cpp -myNet.getNodeIp(); -``` - ### Gets version of this library ```cpp @@ -235,27 +182,12 @@ void setup() { Serial.begin(115200); Serial.println(); - // *** ESP-NOW mode only. - myNet.setWorkMode(ESP_NOW); - // *** Or ESP-NOW + access point mode. - // myNet.setWorkMode(ESP_NOW_AP); - // myNet.setApSetting("ESP NODE TEST", "12345678"); - // *** Or ESP-NOW + connect to your router mode. - // myNet.setWorkMode(ESP_NOW_STA); - // myNet.setStaSetting("SSID", "PASSWORD"); - // *** - myNet.setNetName("ZHNetwork"); // Optional. - myNet.setMaxNumberOfAttempts(3); // Optional. - myNet.setMaxWaitingTimeBetweenTransmissions(50); // Optional. - myNet.setMaxWaitingTimeForRoutingInfo(500); // Optional. - myNet.begin(); + myNet.begin("ZHNetwork"); myNet.setOnBroadcastReceivingCallback(onBroadcastReceiving); myNet.setOnUnicastReceivingCallback(onUnicastReceiving); myNet.setOnConfirmReceivingCallback(onConfirmReceiving); Serial.print("MAC: "); Serial.print(myNet.getNodeMac()); - Serial.print(". IP: "); - Serial.print(myNet.getNodeIp()); Serial.print(". Firmware version: "); Serial.print(myNet.getFirmwareVersion()); Serial.println("."); diff --git a/examples/Receiver/main.cpp b/examples/Receiver/main.cpp index db342b3..a88ded1 100644 --- a/examples/Receiver/main.cpp +++ b/examples/Receiver/main.cpp @@ -9,26 +9,11 @@ void setup() { Serial.begin(115200); Serial.println(); - // *** ESP-NOW mode only. - myNet.setWorkMode(ESP_NOW); - // *** Or ESP-NOW + access point mode. - // myNet.setWorkMode(ESP_NOW_AP); - // myNet.setApSetting("ESP NODE TEST", "12345678"); - // *** Or ESP-NOW + connect to your router mode. - // myNet.setWorkMode(ESP_NOW_STA); - // myNet.setStaSetting("SSID", "PASSWORD"); - // *** - myNet.setNetName("ZHNetwork"); // Optional. - myNet.setMaxNumberOfAttempts(3); // Optional. - myNet.setMaxWaitingTimeBetweenTransmissions(50); // Optional. - myNet.setMaxWaitingTimeForRoutingInfo(500); // Optional. - myNet.begin(); + myNet.begin("ZHNetwork"); myNet.setOnBroadcastReceivingCallback(onBroadcastReceiving); myNet.setOnUnicastReceivingCallback(onUnicastReceiving); Serial.print("MAC: "); Serial.print(myNet.getNodeMac()); - Serial.print(". IP: "); - Serial.print(myNet.getNodeIp()); Serial.print(". Firmware version: "); Serial.print(myNet.getFirmwareVersion()); Serial.println("."); diff --git a/examples/Transmitter/main.cpp b/examples/Transmitter/main.cpp index e5834fe..697c572 100644 --- a/examples/Transmitter/main.cpp +++ b/examples/Transmitter/main.cpp @@ -12,25 +12,10 @@ void setup() { Serial.begin(115200); Serial.println(); - // *** ESP-NOW mode only. - myNet.setWorkMode(ESP_NOW); - // *** Or ESP-NOW + access point mode. - // myNet.setWorkMode(ESP_NOW_AP); - // myNet.setApSetting("ESP NODE TEST", "12345678"); - // *** Or ESP-NOW + connect to your router mode. - // myNet.setWorkMode(ESP_NOW_STA); - // myNet.setStaSetting("SSID", "PASSWORD"); - // *** - myNet.setNetName("ZHNetwork"); // Optional. - myNet.setMaxNumberOfAttempts(3); // Optional. - myNet.setMaxWaitingTimeBetweenTransmissions(50); // Optional. - myNet.setMaxWaitingTimeForRoutingInfo(500); // Optional. - myNet.begin(); + myNet.begin("ZHNetwork"); myNet.setOnConfirmReceivingCallback(onConfirmReceiving); Serial.print("MAC: "); Serial.print(myNet.getNodeMac()); - Serial.print(". IP: "); - Serial.print(myNet.getNodeIp()); Serial.print(". Firmware version: "); Serial.print(myNet.getFirmwareVersion()); Serial.println("."); diff --git a/library.properties b/library.properties index 7f6a994..75f703a 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=ZHNetwork -version=1.12 +version=1.3 author=Alexey Zholtikov maintainer=Alexey Zholtikov sentence=ESP-NOW based Mesh network for ESP8266/ESP32 diff --git a/src/ZHNetwork.cpp b/src/ZHNetwork.cpp index 6765109..127cfe8 100644 --- a/src/ZHNetwork.cpp +++ b/src/ZHNetwork.cpp @@ -31,78 +31,15 @@ ZHNetwork &ZHNetwork::setOnConfirmReceivingCallback(on_confirm_t onConfirmReceiv return *this; } -error_code_t ZHNetwork::setWorkMode(const work_mode_t workMode) -{ - if (workMode < ESP_NOW || workMode > ESP_NOW_STA) - return ERROR; - workMode_ = workMode; - return SUCCESS; -} - -work_mode_t ZHNetwork::getWorkMode() -{ - return workMode_; -} - -error_code_t ZHNetwork::setNetName(const char *netName) -{ - if (strlen(netName) < 1 || strlen(netName) > 20) - return ERROR; - strcpy(netName_, netName); - return SUCCESS; -} - -String ZHNetwork::getNetName() -{ - return netName_; -} - -error_code_t ZHNetwork::setStaSetting(const char *ssid, const char *password) -{ - if (strlen(ssid) < 1 || strlen(ssid) > 32 || strlen(password) > 64) - return ERROR; - strcpy(staSsid_, ssid); - strcpy(staPassword_, password); - return SUCCESS; -} - -error_code_t ZHNetwork::setApSetting(const char *ssid, const char *password) -{ - if (strlen(ssid) < 1 || strlen(ssid) > 32 || strlen(password) < 8 || strlen(password) > 64) - return ERROR; - strcpy(apSsid_, ssid); - strcpy(apPassword_, password); - return SUCCESS; -} - -error_code_t ZHNetwork::begin() +error_code_t ZHNetwork::begin(const char *netName) { randomSeed(analogRead(0)); + if (strlen(netName) > 1 && strlen(netName) < 20) + strcpy(netName_, netName); #ifdef PRINT_LOG Serial.begin(115200); #endif - switch (workMode_) - { - case ESP_NOW: - WiFi.mode(WIFI_STA); - break; - case ESP_NOW_AP: - WiFi.mode(WIFI_AP_STA); - WiFi.softAP(apSsid_, apPassword_); - break; - case ESP_NOW_STA: - WiFi.mode(WIFI_STA); - WiFi.begin(staSsid_, staPassword_); - while (WiFi.status() != WL_CONNECTED) - { - if (WiFi.status() == WL_NO_SSID_AVAIL || WiFi.status() == WL_CONNECT_FAILED) - return ERROR; - delay(500); - } - break; - default: - break; - } + WiFi.mode(WIFI_STA); esp_now_init(); #if defined(ESP8266) wifi_get_macaddr(STATION_IF, localMAC); @@ -116,15 +53,6 @@ error_code_t ZHNetwork::begin() return SUCCESS; } -error_code_t ZHNetwork::stop() -{ - WiFi.mode(WIFI_OFF); - esp_now_deinit(); - esp_now_unregister_recv_cb(); - esp_now_unregister_send_cb(); - return SUCCESS; -} - void ZHNetwork::sendBroadcastMessage(const char *data) { broadcastMessage(data, broadcastMAC, BROADCAST); @@ -456,15 +384,6 @@ String ZHNetwork::getNodeMac() return macToString(localMAC); } -IPAddress ZHNetwork::getNodeIp() -{ - if (workMode_ == ESP_NOW_AP) - return WiFi.softAPIP(); - if (workMode_ == ESP_NOW_STA) - return WiFi.localIP(); - return IPAddress(0, 0, 0, 0); -} - String ZHNetwork::getFirmwareVersion() { return firmware; diff --git a/src/ZHNetwork.h b/src/ZHNetwork.h index cca7aab..eecd480 100644 --- a/src/ZHNetwork.h +++ b/src/ZHNetwork.h @@ -50,13 +50,6 @@ typedef struct uint8_t intermediateTargetMAC[6]{0}; } routing_table_t; -typedef enum -{ - ESP_NOW = 1, - ESP_NOW_AP, - ESP_NOW_STA -} work_mode_t; - typedef enum { BROADCAST = 1, @@ -87,17 +80,7 @@ public: ZHNetwork &setOnUnicastReceivingCallback(on_message_t onUnicastReceivingCallback); ZHNetwork &setOnConfirmReceivingCallback(on_confirm_t onConfirmReceivingCallback); - error_code_t setWorkMode(const work_mode_t workMode); - work_mode_t getWorkMode(void); - - error_code_t setNetName(const char *netName); - String getNetName(void); - - error_code_t setStaSetting(const char *ssid, const char *password); - error_code_t setApSetting(const char *ssid, const char *password); - - error_code_t begin(void); - error_code_t stop(void); + error_code_t begin(const char *netName = ""); void sendBroadcastMessage(const char *data); void sendUnicastMessage(const char *data, const uint8_t *target, const bool confirm = false); @@ -105,7 +88,6 @@ public: void maintenance(void); String getNodeMac(void); - IPAddress getNodeIp(void); String getFirmwareVersion(void); String readErrorCode(error_code_t code); // Just for further development. @@ -133,13 +115,8 @@ private: static uint16_t lastMessageID[10]; static char netName_[20]; - const char *firmware{"1.12"}; + const char *firmware{"1.3"}; const uint8_t broadcastMAC[6]{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; - work_mode_t workMode_{ESP_NOW}; - char apSsid_[32]{"ESP-NOW NODE"}; - char apPassword_[64]{0}; - char staSsid_[32]{0}; - char staPassword_[64]{0}; uint8_t maxNumberOfAttempts_{3}; uint8_t maxWaitingTimeBetweenTransmissions_{50}; uint8_t numberOfAttemptsToSend{1};