From a75939b3fad616b50bb8bff3ff31ab9ef52dfcc7 Mon Sep 17 00:00:00 2001 From: "RZ_MINIX\\rober" Date: Tue, 24 Jun 2025 10:51:05 -0700 Subject: [PATCH] Added MAC address to be part of every returned message --- .continue/mcpServers/new-mcpServer.yaml | 10 +++ main/CommandProcessor.cpp | 98 +++++++++++++++++++++---- 2 files changed, 94 insertions(+), 14 deletions(-) create mode 100644 .continue/mcpServers/new-mcpServer.yaml diff --git a/.continue/mcpServers/new-mcpServer.yaml b/.continue/mcpServers/new-mcpServer.yaml new file mode 100644 index 0000000..a716716 --- /dev/null +++ b/.continue/mcpServers/new-mcpServer.yaml @@ -0,0 +1,10 @@ +name: New mcpServer +version: 0.0.1 +schema: v1 +mcpServers: + - name: New MCP server + command: npx + args: + - -y + - + env: {} diff --git a/main/CommandProcessor.cpp b/main/CommandProcessor.cpp index c9a551c..26678ae 100644 --- a/main/CommandProcessor.cpp +++ b/main/CommandProcessor.cpp @@ -24,32 +24,48 @@ char * getElementAt(int el, Parser & p, char * buffer) bool CommandProcessor::cmdSetGroupId(Parser & p, char * buffer) { int value = 0; - + uint8_t wifi_mac[8]; + esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA); if(strToInt(getElementAt(1, p, buffer), value)) { ESP_LOGW(TAG, "new group value: %u", value); SETTINGS.device.group_id = value; SETTINGS_SAVE; - strcpy(m_buffer, "Z|ok"); + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|Z|ok"); + strcpy(m_buffer, m_rw.getBuffer()); return true; } - strcpy(m_buffer, "Z|fail"); + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|Z|fail"); + strcpy(m_buffer, m_rw.getBuffer()); return false; } bool CommandProcessor::cmdSetWorkingId(Parser & p, char * buffer) { int value = 0; - + uint8_t wifi_mac[8]; + esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA); if(strToInt(getElementAt(1, p, buffer), value)) { ESP_LOGW(TAG, "new device working id: %u", value); SETTINGS.device.tata_id = value; SETTINGS_SAVE; - strcpy(m_buffer, "-|ok"); + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|-|ok"); + strcpy(m_buffer, m_rw.getBuffer()); + return true; } - strcpy(m_buffer, "-|fail"); + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|-|fail"); + strcpy(m_buffer, m_rw.getBuffer()); + return false; } @@ -61,18 +77,31 @@ bool CommandProcessor::cmdRestart(Parser & p, char * buffer) bool CommandProcessor::cmdDeleteStoredSsids(Parser & p, char * buffer) { + uint8_t wifi_mac[8]; + esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA); + ESP_LOGW(TAG, "delete stored ssid's"); SETTINGS.wifi.num = 0; SETTINGS_SAVE; - strcpy(m_buffer, "d|ok"); + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|d|ok"); + strcpy(m_buffer, m_rw.getBuffer()); + return true; } bool CommandProcessor::cmdReturnCurrentSsid(Parser & p, char * buffer) { + uint8_t wifi_mac[8]; + esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA); + ESP_LOGW(TAG, "return current ssid %s and rssi %d", WiFi.SSID().c_str(), WiFi.RSSI()); m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|"); + m_rw.appendf("a|%s,%d", WiFi.SSID().c_str(), WiFi.RSSI()); ESP_LOGI(TAG, "'%s'", m_rw.getBuffer()); @@ -83,11 +112,18 @@ bool CommandProcessor::cmdReturnCurrentSsid(Parser & p, char * buffer) bool CommandProcessor::cmdReturnVisibleNetworks(Parser & p, char * buffer) { + + uint8_t wifi_mac[8]; + esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA); + ESP_LOGI(TAG, "Scanning wifi networks..."); int num_networks = WiFi.scanNetworks(false, false, false, 0); m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|"); + m_rw.appendf("w|%d|", num_networks); for(int n = 0; n < num_networks; n++) { @@ -106,6 +142,10 @@ bool CommandProcessor::cmdReturnVisibleNetworks(Parser & p, char * buffer) bool CommandProcessor::cmdAddNetwork(Parser & p, char * buffer) { + + uint8_t wifi_mac[8]; + esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA); + if(p.getElementAt(1, buffer, BUF_LEN)) { ESP_LOGI(TAG, "ssid/pwd: '%s'", buffer); @@ -127,21 +167,34 @@ bool CommandProcessor::cmdAddNetwork(Parser & p, char * buffer) SETTINGS.wifi.num = ix + 1; SETTINGS_SAVE; - strcpy(m_buffer, "W|ok"); + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|W|ok"); + strcpy(m_buffer, m_rw.getBuffer()); + return true; } } } } - strcpy(m_buffer, "W|fail"); + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|W|fail"); + strcpy(m_buffer, m_rw.getBuffer()); + return false; } bool CommandProcessor::cmdReportAllSettings(Parser & p, char * buffer) { int64_t up_time = esp_timer_get_time(); + uint8_t wifi_mac[8]; + //added mac address + esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA); m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|"); m_rw.appendf("-,%u", SETTINGS.device.tata_id); //wid m_rw.append("|"); m_rw.appendf("Z,%u", SETTINGS.device.group_id); //group id @@ -170,31 +223,48 @@ bool CommandProcessor::cmdReportAllSettings(Parser & p, char * buffer) bool CommandProcessor::cmdSetMqttDevId(Parser & p, char * buffer) { + uint8_t wifi_mac[8]; + esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA); if(p.getElementAt(1, buffer, BUF_LEN)) { ESP_LOGI(TAG, "new mqtt dev id: '%s'", buffer); strcpy(SETTINGS.mqtt.device_id, buffer); - SETTINGS_SAVE; - strcpy(m_buffer, "0|ok"); + SETTINGS_SAVE; + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|0|ok"); + strcpy(m_buffer, m_rw.getBuffer()); return true; } - strcpy(m_buffer, "0|fail"); + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|0|fail"); + strcpy(m_buffer, m_rw.getBuffer()); return true; } bool CommandProcessor::cmdSetTemperatureOffset(Parser & p, char * buffer) { float value = 0; + uint8_t wifi_mac[8]; + esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA); if(strToFloat(getElementAt(1, p, buffer), value)) { ESP_LOGW(TAG, "new temp offset: %f", value); SETTINGS.sensors.temperature.temp_offset = value; SETTINGS_SAVE; - strcpy(m_buffer, "9|ok"); + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|9|ok"); + strcpy(m_buffer, m_rw.getBuffer()); + return true; } - strcpy(m_buffer, "9|fail"); + m_rw.reset(); + m_rw.appendf("mac,%02x%02x%02x%02x%02x%02x", wifi_mac[0], wifi_mac[1], wifi_mac[2], wifi_mac[3], wifi_mac[4], wifi_mac[5]); + m_rw.append("|9|fail"); + strcpy(m_buffer, m_rw.getBuffer()); return false; }