Added MAC address to be part of every returned message

This commit is contained in:
RZ_MINIX\rober 2025-06-24 10:51:05 -07:00
parent 554381cf2d
commit a75939b3fa
2 changed files with 94 additions and 14 deletions

View File

@ -0,0 +1,10 @@
name: New mcpServer
version: 0.0.1
schema: v1
mcpServers:
- name: New MCP server
command: npx
args:
- -y
- <your-mcp-server>
env: {}

View File

@ -24,32 +24,48 @@ char * getElementAt(int el, Parser & p, char * buffer)
bool CommandProcessor::cmdSetGroupId(Parser & p, char * buffer) bool CommandProcessor::cmdSetGroupId(Parser & p, char * buffer)
{ {
int value = 0; int value = 0;
uint8_t wifi_mac[8];
esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA);
if(strToInt(getElementAt(1, p, buffer), value)) if(strToInt(getElementAt(1, p, buffer), value))
{ {
ESP_LOGW(TAG, "new group value: %u", value); ESP_LOGW(TAG, "new group value: %u", value);
SETTINGS.device.group_id = value; SETTINGS.device.group_id = value;
SETTINGS_SAVE; 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; 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; return false;
} }
bool CommandProcessor::cmdSetWorkingId(Parser & p, char * buffer) bool CommandProcessor::cmdSetWorkingId(Parser & p, char * buffer)
{ {
int value = 0; int value = 0;
uint8_t wifi_mac[8];
esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA);
if(strToInt(getElementAt(1, p, buffer), value)) if(strToInt(getElementAt(1, p, buffer), value))
{ {
ESP_LOGW(TAG, "new device working id: %u", value); ESP_LOGW(TAG, "new device working id: %u", value);
SETTINGS.device.tata_id = value; SETTINGS.device.tata_id = value;
SETTINGS_SAVE; 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; 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; return false;
} }
@ -61,18 +77,31 @@ bool CommandProcessor::cmdRestart(Parser & p, char * buffer)
bool CommandProcessor::cmdDeleteStoredSsids(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"); ESP_LOGW(TAG, "delete stored ssid's");
SETTINGS.wifi.num = 0; SETTINGS.wifi.num = 0;
SETTINGS_SAVE; 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; return true;
} }
bool CommandProcessor::cmdReturnCurrentSsid(Parser & p, char * buffer) 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()); ESP_LOGW(TAG, "return current ssid %s and rssi %d", WiFi.SSID().c_str(), WiFi.RSSI());
m_rw.reset(); 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()); m_rw.appendf("a|%s,%d", WiFi.SSID().c_str(), WiFi.RSSI());
ESP_LOGI(TAG, "'%s'", m_rw.getBuffer()); 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) 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..."); ESP_LOGI(TAG, "Scanning wifi networks...");
int num_networks = WiFi.scanNetworks(false, false, false, 0); int num_networks = WiFi.scanNetworks(false, false, false, 0);
m_rw.reset(); 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); m_rw.appendf("w|%d|", num_networks);
for(int n = 0; n < num_networks; n++) 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) 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)) if(p.getElementAt(1, buffer, BUF_LEN))
{ {
ESP_LOGI(TAG, "ssid/pwd: '%s'", buffer); ESP_LOGI(TAG, "ssid/pwd: '%s'", buffer);
@ -127,21 +167,34 @@ bool CommandProcessor::cmdAddNetwork(Parser & p, char * buffer)
SETTINGS.wifi.num = ix + 1; SETTINGS.wifi.num = ix + 1;
SETTINGS_SAVE; 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; 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; return false;
} }
bool CommandProcessor::cmdReportAllSettings(Parser & p, char * buffer) bool CommandProcessor::cmdReportAllSettings(Parser & p, char * buffer)
{ {
int64_t up_time = esp_timer_get_time(); 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.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.appendf("-,%u", SETTINGS.device.tata_id); //wid
m_rw.append("|"); m_rw.append("|");
m_rw.appendf("Z,%u", SETTINGS.device.group_id); //group id 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) 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)) if(p.getElementAt(1, buffer, BUF_LEN))
{ {
ESP_LOGI(TAG, "new mqtt dev id: '%s'", buffer); ESP_LOGI(TAG, "new mqtt dev id: '%s'", buffer);
strcpy(SETTINGS.mqtt.device_id, buffer); strcpy(SETTINGS.mqtt.device_id, buffer);
SETTINGS_SAVE; SETTINGS_SAVE;
strcpy(m_buffer, "0|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("|0|ok");
strcpy(m_buffer, m_rw.getBuffer());
return true; 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; return true;
} }
bool CommandProcessor::cmdSetTemperatureOffset(Parser & p, char * buffer) bool CommandProcessor::cmdSetTemperatureOffset(Parser & p, char * buffer)
{ {
float value = 0; float value = 0;
uint8_t wifi_mac[8];
esp_read_mac(wifi_mac, ESP_MAC_WIFI_STA);
if(strToFloat(getElementAt(1, p, buffer), value)) if(strToFloat(getElementAt(1, p, buffer), value))
{ {
ESP_LOGW(TAG, "new temp offset: %f", value); ESP_LOGW(TAG, "new temp offset: %f", value);
SETTINGS.sensors.temperature.temp_offset = value; SETTINGS.sensors.temperature.temp_offset = value;
SETTINGS_SAVE; 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; 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; return false;
} }