diff --git a/components/WebGUIAppComponent b/components/WebGUIAppComponent index 9358549..8914422 160000 --- a/components/WebGUIAppComponent +++ b/components/WebGUIAppComponent @@ -1 +1 @@ -Subproject commit 935854966712986baf3eab6d5b8bb57e5e1d63f6 +Subproject commit 8914422aac9c95e2373f21270be24b70afc67ad3 diff --git a/main/MQTTCustom.c b/main/MQTTCustom.c index 972b9df..d798886 100644 --- a/main/MQTTCustom.c +++ b/main/MQTTCustom.c @@ -22,10 +22,46 @@ */ #include "MQTT.h" +#include "SystemConfiguration.h" +#include "esp_log.h" +#define TAG "MQTTCustom" -void UserDataHndlr(char *data, uint32_t len, int idx) + +void UserMQTTEventHndlr(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data) { - // Here do something with incoming mqtt data + esp_mqtt_event_handle_t event = event_data; + esp_mqtt_client_handle_t client = event->client; + mqtt_client_t *ctx = (mqtt_client_t*) event->user_context; + int msg_id; + char topic[CONFIG_WEBGUIAPP_MQTT_MAX_TOPIC_LENGTH]; + switch ((esp_mqtt_event_id_t) event_id) + { + case MQTT_EVENT_CONNECTED: + ComposeTopic(topic, + GetSysConf()->mqttStation[ctx->mqtt_index].RootTopic, + "DOWNLINK", + GetSysConf()->mqttStation[ctx->mqtt_index].ClientID, + "USER"); + //Subscribe to the service called "USER" + msg_id = esp_mqtt_client_subscribe(client, (const char*) topic, 0); + ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id); + break; + case MQTT_EVENT_DATA: + ComposeTopic(topic, + GetSysConf()->mqttStation[ctx->mqtt_index].RootTopic, + "DOWNLINK", + GetSysConf()->mqttStation[ctx->mqtt_index].ClientID, + "USER"); + if (!memcmp(topic, event->topic, event->topic_len)) + { + //Here data for service called "USER" + ESP_LOGI(TAG, "USER data handler on client %d", ctx->mqtt_index); + } + break; + default: + ESP_LOGI(TAG, "Other event id:%d", event->event_id); + break; + } } diff --git a/main/main.c b/main/main.c index 0d4bc92..bbf04f9 100644 --- a/main/main.c +++ b/main/main.c @@ -12,16 +12,14 @@ int HTTPPrintCustom(httpd_req_t *req, char *buf, char *var); HTTP_IO_RESULT AfterPostHandlerCustom(httpd_req_t *req, const char *filename, char *PostData); -void UserDataHndlr(char *data, uint32_t len, int idx); +void UserMQTTEventHndlr(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data); void app_main(void) { - - WebGuiAppInit(); regHTTPPrintCustom(&HTTPPrintCustom); regAfterPostHandlerCustom(&AfterPostHandlerCustom); - regUserDataHandler(&UserDataHndlr); - + regUserEventHandler(&UserMQTTEventHndlr); + WebGuiAppInit(); while (true) { diff --git a/sdkconfig b/sdkconfig index 13948d4..2bcf2ec 100644 --- a/sdkconfig +++ b/sdkconfig @@ -1215,7 +1215,7 @@ CONFIG_WPA_MBEDTLS_CRYPTO=y # # WebGuiApp configuration # -CONFIG_WEBGUIAPP_PROJECT_VER="0.0.0.0001" +CONFIG_WEBGUIAPP_PROJECT_VER="0.0.0.0002" CONFIG_WEBGUIAPP_HOSTNAME="DEVICE_HOSTNAME" CONFIG_WEBGUIAPP_USERNAME="user" CONFIG_WEBGUIAPP_USERPASS="password" @@ -1290,14 +1290,16 @@ CONFIG_ETH_SPI_PHY_ADDR0=1 # MQTT settings # CONFIG_WEBGUIAPP_MQTT_ENABLE=y -CONFIG_MQTT_CLIENTS_NUM=1 -CONFIG_MQTT_ON=y -CONFIG_MQTT_SERVER_URL="iotronic.cloud" -CONFIG_MQTT_SERVER_PORT=1883 -CONFIG_MQTT_CLIENT_ID_1="DEVID1" -CONFIG_MQTT_ROOT_TOPIC="CHARGEPOINT" -CONFIG_MQTT_USERNAME="chargepoint" -CONFIG_MQTT_PASSWORD="chargepoint" +CONFIG_WEBGUIAPP_MQTT_CLIENTS_NUM=2 +CONFIG_WEBGUIAPP_MQTT_ON=y +CONFIG_WEBGUIAPP_MQTT_MAX_TOPIC_LENGTH=64 +CONFIG_WEBGUIAPP_MQTT_SERVER_URL="myfirstmqttserver.com" +CONFIG_WEBGUIAPP_MQTT_SERVER_PORT=1883 +CONFIG_WEBGUIAPP_MQTT_CLIENT_ID_1="DEVID1" +CONFIG_WEBGUIAPP_MQTT_CLIENT_ID_2="DEVID2" +CONFIG_WEBGUIAPP_MQTT_ROOT_TOPIC="ROOTTOPIC" +CONFIG_WEBGUIAPP_MQTT_USERNAME="username" +CONFIG_WEBGUIAPP_MQTT_PASSWORD="password" # end of MQTT settings # diff --git a/sdkconfig.old b/sdkconfig.old index a28fba5..13948d4 100644 --- a/sdkconfig.old +++ b/sdkconfig.old @@ -1290,12 +1290,11 @@ CONFIG_ETH_SPI_PHY_ADDR0=1 # MQTT settings # CONFIG_WEBGUIAPP_MQTT_ENABLE=y -CONFIG_MQTT_CLIENTS_NUM=2 +CONFIG_MQTT_CLIENTS_NUM=1 CONFIG_MQTT_ON=y CONFIG_MQTT_SERVER_URL="iotronic.cloud" CONFIG_MQTT_SERVER_PORT=1883 CONFIG_MQTT_CLIENT_ID_1="DEVID1" -CONFIG_MQTT_CLIENT_ID_2="DEVID2" CONFIG_MQTT_ROOT_TOPIC="CHARGEPOINT" CONFIG_MQTT_USERNAME="chargepoint" CONFIG_MQTT_PASSWORD="chargepoint"