Added MAC variable it related coinfigurations

This commit is contained in:
Manticore 2025-03-26 15:45:26 +05:30
parent 55d997c072
commit 2b08509a1b
6 changed files with 182 additions and 29 deletions

View File

@ -2154,8 +2154,6 @@ char* get_mac(void){
}
/* Initialize. */
int comms_init(void)
{

View File

@ -90,9 +90,9 @@ typedef enum
#define MCU_POST_URL3 MCU_BASE_URL3
//URL to get configuration flags from servers 1, 2, and 3
#define MCU_GET_CONFIG_FLAGS_URL1 TESTING_SERVER_BASE_URL"/hae/tempstick/%s/config/"//MCU_BASE_URL1//config/flag/server1
#define MCU_GET_CONFIG_FLAGS_URL2 TESTING_SERVER_BASE_URL"/hae/tempstick/%s/config/"//MCU_BASE_URL2//config/flag/server2
#define MCU_GET_CONFIG_FLAGS_URL3 TESTING_SERVER_BASE_URL"/hae/tempstick/%s/config/"//MCU_BASE_URL3//config/flag/server3
#define MCU_GET_CONFIG_FLAGS_URL1 TESTING_SERVER_BASE_URL"/hae/azuma/%s/update/"//MCU_BASE_URL1//config/flag/server1
#define MCU_GET_CONFIG_FLAGS_URL2 TESTING_SERVER_BASE_URL"/hae/azuma/%s/update/"//MCU_BASE_URL2//config/flag/server2
#define MCU_GET_CONFIG_FLAGS_URL3 TESTING_SERVER_BASE_URL"/hae/azuma/%s/update/"//MCU_BASE_URL3//config/flag/server3
/* this endpoint not implemented yet in the code (customer pending) */
// if the config_update flag is set

View File

@ -35,6 +35,7 @@
#include "rtc.h"
#include "data_processing.h"
#include "wifi_Client.h"
@ -44,6 +45,7 @@
#define CONFIG_BROKER_URL "mqtt://broker.mqtt.cool"
#define MQTT_TOPIC_SUB "/topic/qos0"
#define MQTT_TOPIC_PUB "/topic/qos0"
char MAC_ID[15];
#define WEB_SERVER "54.204.230.201"
#define WEB_PORT "8085"
@ -52,16 +54,129 @@
#define MCU_PROG_VER "/hae/azuma/353165803930522/mcu_pgm_download/version/"
#define MCU_UPDATE "/hae/azuma/353165803930522/update/"
//#define BROCKER_URL_TEST "mqtt://broker.mqtt.cool:1883"
#define BROCKER_URL_TEST "mqtt://broker.mqtt.cool:1883"
#define BROCKER_URL_TEST "mqtt://azumamqtt1.cedalo.cloud:1883"
#define SP3_URL "http://54.204.230.201:8085/hae/azuma/353165803930522/update/"
//#define BROCKER_URL_TEST "mqtt://azumamqtt1.cedalo.cloud:1883"
uint8_t comms_mode = DEFAULT_COMMS_MODE;
char MAC_ID[15];
char HTTP_GET_DATA[512];
const char *TAG = "main";
char* SP1_data(void) {
static char sp1[] = "SP1 F/W TIME_DATA";
return sp1;
}
void get_mac_add(void) { // The function modifies the passed buffer
uint8_t mac[6];
esp_efuse_mac_get_default(mac);
printf("MAC Address (Hex): %02X:%02X:%02X:%02X:%02X:%02X\n",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
// Convert MAC address to a decimal string
char full_mac_decimal[20];
int len = snprintf(full_mac_decimal, sizeof(full_mac_decimal), "%d%d%d%d%d%d",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
// Ensure exactly 15 characters
if (len < 15) {
memset(MAC_ID, '0', 15 - len);
strcpy(MAC_ID + (15 - len), full_mac_decimal);
} else {
strncpy(MAC_ID, full_mac_decimal, 15);
}
// MAC_ID[15] = '\0';
printf("Formatted MAC (15 Characters): %s\n", MAC_ID);
}
typedef enum {
MQTT_STATE_INIT,
MQTT_STATE_CONNECT,
MQTT_STATE_PUBLISH,
MQTT_STATE_DISCONNECT,
MQTT_STATE_ERROR
} mqtt_state_t;
static mqtt_state_t state = MQTT_STATE_INIT;
static esp_mqtt_client_handle_t client;
void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data) {
esp_mqtt_event_handle_t event = event_data;
esp_mqtt_client_handle_t client = event->client;
switch (event_id) {
case MQTT_EVENT_CONNECTED:
ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");
state = MQTT_STATE_PUBLISH;
break;
case MQTT_EVENT_DISCONNECTED:
ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
state = MQTT_STATE_ERROR;
break;
case MQTT_EVENT_PUBLISHED:
ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED");
state = MQTT_STATE_DISCONNECT;
break;
default:
break;
}
}
void mqtt_task(void *param) {
esp_mqtt_client_config_t mqtt_cfg = {
.broker.address.uri = BROCKER_URL_TEST,
};
client = esp_mqtt_client_init(&mqtt_cfg);
esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL);
while (1) {
switch (state) {
case MQTT_STATE_INIT:
ESP_LOGI(TAG, "Initializing MQTT");
esp_mqtt_client_start(client);
state = MQTT_STATE_CONNECT;
break;
case MQTT_STATE_CONNECT:
ESP_LOGI(TAG, "Connecting to broker...");
vTaskDelay(pdMS_TO_TICKS(2000));
break;
case MQTT_STATE_PUBLISH:
ESP_LOGI(TAG, "Publishing message");
SP1_data();
// esp_mqtt_client_publish(client, "/topic/qos0", "Hello ESP32", 0, 1, 0);
// esp_mqtt_client_publish(client, "/topic/qos0", sp1(), 0, 1, 0);
esp_mqtt_client_publish(client, "/topic/qos0", SP1_data(), 0, 1, 0);
state = MQTT_STATE_DISCONNECT;
break;
case MQTT_STATE_DISCONNECT:
ESP_LOGI(TAG, "Disconnecting...");
esp_mqtt_client_stop(client);
state = MQTT_STATE_INIT;
vTaskDelay(pdMS_TO_TICKS(7200000)); // 2 hours delay
break;
case MQTT_STATE_ERROR:
ESP_LOGE(TAG, "Error encountered, retrying...");
state = MQTT_STATE_INIT;
vTaskDelay(pdMS_TO_TICKS(5000));
break;
}
vTaskDelay(pdMS_TO_TICKS(100));
}
}
void extract_json(const char *input, char *output) {
const char *start = strchr(input, '{'); // Find the first '{'
const char *end = strrchr(input, '}'); // Find the last '}'
@ -87,7 +202,7 @@ void extract_mcu_update(const char *json_data, char *output) {
}
}
/*
static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
{
ESP_LOGD(TAG, "Event dispatched from event loop base=%s, event_id=%" PRIi32 "", base, event_id);
@ -119,6 +234,7 @@ static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_
break;
}
}
*/
void http_get_request(const char *path) {
char request[512];
@ -181,22 +297,19 @@ void app_main(void)
/* Create the UART tasks for both UART0 and UART1 */
uart_create_rx_tasks();
char mac[15];
snprintf(mac,sizeof(mac), get_mac());
ESP_LOGI(TAG, "======> Mac id: %s", mac);
// Get firmwae version
const esp_app_desc_t *app_desc = esp_app_get_description();
ESP_LOGI(TAG, "Firmware Version: %s", app_desc->version);
// const esp_app_desc_t *app_desc = esp_app_get_description();
// ESP_LOGI(TAG, "Firmware Version: %s", app_desc->version);
while(1){
vTaskDelay(100 / portTICK_PERIOD_MS);
// while(1){
// vTaskDelay(100 / portTICK_PERIOD_MS);
// get_time();
// ESP_LOGI("TIME", "Current time =====> %s", buff);
ESP_LOGI(TAG,"====>>> Test data <<<=========");
}
// ESP_LOGI(TAG,"====>>> Test data <<<=========");
// }
/*
uint8_t* test_str[] = {0xA5,0x05,0x4C,0x4C,0x42}; // Example command to request current value
@ -216,12 +329,6 @@ void app_main(void)
ESP_LOGI(TAG,"*** data send ***");
}
*/
/* read the comms-mode from the NVS (if any) */
comms_mode = nvm_read_comms_mode();
if((COMMS_OVER_CELL != comms_mode))
{
/* Start On-Boarding process */
webserver_start();
@ -231,14 +338,57 @@ void app_main(void)
vTaskDelay(750/portTICK_PERIOD_MS);
port_red_led_toggle();
}
}
port_blue_led_on();
wifi_first_init();
Connect_wifi_sta(WIFI_MODE_STA);
ESP_LOGI(TAG," -------------> Wifi Connected ... :)");
// xTaskCreate(mqtt_task, "mqtt_task", 4096, NULL, 5, NULL);
char buf[512];
// get SP3 update
http_client_get(SP3_URL, buf);
get_mac_add();
while(1){
vTaskDelay(100 / portTICK_PERIOD_MS);
// get_time();
// ESP_LOGI("TIME", "Current time =====> %s", buff);
ESP_LOGI(TAG,"====>>> Test data <<<=========");
}
http_client_do_get_request(0, IMEI, buf);
http_client_do_get_request(1, IMEI, buf);
http_client_do_get_request(2, IMEI, buf);
while(1){
vTaskDelay(100 / portTICK_PERIOD_MS);
// get_time();
// ESP_LOGI("TIME", "Current time =====> %s", buff);
ESP_LOGI(TAG,"====>>> Test data <<<=========");
}
http_get_request(MCU_CONFIG);
while(1){
vTaskDelay(100 / portTICK_PERIOD_MS);
// get_time();
// ESP_LOGI("TIME", "Current time =====> %s", buff);
// ESP_LOGI(TAG,"====>>> Test data <<<=========");
}
/*
obtain_time(); // Sync time with NTP
get_time();
@ -290,6 +440,7 @@ void app_main(void)
ESP_LOGI(TAG, "[APP] Startup..");
ESP_LOGI(TAG, "[APP] Free memory: %" PRIu32 " bytes", esp_get_free_heap_size());
ESP_LOGI(TAG, "[APP] IDF version: %s", esp_get_idf_version());
*/
/*
esp_log_level_set("*", ESP_LOG_INFO);

View File

@ -8,6 +8,8 @@
#ifndef MAIN_MAIN_H_
#define MAIN_MAIN_H_
extern char MAC_ID[15];
#define SENS_INT_WAKEUP 0
#define SENS_INT_WAKEUP0 1

View File

@ -198,7 +198,7 @@ void uart_create_rx_tasks(void)
void uart_ifx_init(void)
{
uart_config_t uart_config = {
.baud_rate = 115200,
.baud_rate = 4800,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,

View File

@ -461,7 +461,8 @@ esp_err_t http_client_do_get_request(get_req_type_t target_url, char* device_ime
if(selected_server == SERVER_TWO)
{
sprintf(server_url, MCU_GET_CONFIG_FLAGS_URL2, device_imei);
http_client_get((const char*)server_url,response_buf);
retval = http_client_get((const char*)MCU_GET_CONFIG_FLAGS_URL2,response_buf);
if(retval != WIFI_OK)
{
selected_server = SERVER_THREE;
@ -473,7 +474,8 @@ esp_err_t http_client_do_get_request(get_req_type_t target_url, char* device_ime
if(selected_server == SERVER_THREE)
{
sprintf(server_url, MCU_GET_CONFIG_FLAGS_URL3, device_imei);
http_client_get((const char*)server_url,response_buf);
// http_client_get((const char*)server_url,response_buf);
retval = http_client_get((const char*)MCU_GET_CONFIG_FLAGS_URL3,response_buf);
if(retval != WIFI_OK)
{
selected_server = SERVER_ONE;