From 3ca9908267d7ecd296dad9ed5ec3a1641e0bfbdf Mon Sep 17 00:00:00 2001 From: Tuan PM Date: Sun, 4 Jan 2015 10:47:26 +0700 Subject: [PATCH] Add published event, resolved #10 --- Makefile | 3 ++- README.md | 37 +++++++++++++++++++++++++++++++++++-- include/user_config.h | 8 ++++---- user/mqtt.c | 11 ++++++----- user/mqtt.h | 2 ++ user/user_main.c | 25 +++++++++++++++++++++++-- 6 files changed, 72 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 5b99f80..468ca9e 100644 --- a/Makefile +++ b/Makefile @@ -93,6 +93,7 @@ MODULE_INCDIR := $(addsuffix /include,$(INCDIR)) FW_FILE_1 := $(addprefix $(FW_BASE)/,$(FW_FILE_1).bin) FW_FILE_2 := $(addprefix $(FW_BASE)/,$(FW_FILE_2).bin) +BLANKER := $(addprefix $(SDK_BASE)/,bin/blank.bin) V ?= $(VERBOSE) ifeq ("$(V)","1") @@ -140,7 +141,7 @@ firmware: $(Q) mkdir -p $@ flash: firmware/0x00000.bin firmware/0x40000.bin - $(PYTHON) $(ESPTOOL) -p $(ESPPORT) write_flash 0x00000 firmware/0x00000.bin 0x40000 firmware/0x40000.bin + $(PYTHON) $(ESPTOOL) -p $(ESPPORT) write_flash 0x00000 firmware/0x00000.bin 0x3C000 $(BLANKER) 0x40000 firmware/0x40000.bin test: flash screen $(ESPPORT) 115200 diff --git a/README.md b/README.md index 9ae45e8..9f4683c 100644 --- a/README.md +++ b/README.md @@ -47,9 +47,35 @@ void mqttDisconnectedCb(uint32_t *args) MQTT_Client* client = (MQTT_Client*)args; INFO("MQTT: Disconnected\r\n"); } -void mqttDataCb(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t lengh) + +void mqttPublishedCb(uint32_t *args) { - INFO("MQTT topic: %s, data: %s \r\n", topic, data); + MQTT_Client* client = (MQTT_Client*)args; + INFO("MQTT: Published\r\n"); +} + + +void mqttDataCb(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t data_len) +{ + char topicBuf[64], dataBuf[64]; + MQTT_Client* client = (MQTT_Client*)args; + + os_memcpy(dataBuf, topic, topic_len); + topicBuf[topic_len] = 0; + + os_memcpy(dataBuf, data, data_len); + dataBuf[data_len] = 0; + + INFO("MQTT topic: %s, data: %s \r\n", topicBuf, dataBuf); + + /* Echo back to /echo channel*/ + MQTT_Publish(client, "/echo", dataBuf, data_len, 0, 0); +} + +void mqttPublishedCb(uint32_t *args) +{ + MQTT_Client* client = (MQTT_Client*)args; + INFO("MQTT: Published\r\n"); } @@ -63,6 +89,7 @@ void user_init(void) MQTT_InitConnection(&mqttClient, sysCfg.mqtt_host, sysCfg.mqtt_port, SEC_SSL); MQTT_InitClient(&mqttClient, sysCfg.device_id, sysCfg.mqtt_user, sysCfg.mqtt_pass, sysCfg.mqtt_keepalive); MQTT_OnConnected(&mqttClient, mqttConnectedCb); + MQTT_OnPublished(&mqttClient, mqttPublishedCb); MQTT_OnDisconnected(&mqttClient, mqttDisconnectedCb); MQTT_OnData(&mqttClient, mqttDataCb); @@ -86,6 +113,12 @@ void MQTT_Publish( MQTT_Client *client, **Default configuration** See: *include/user_config.h* and *include/config.c* If you want to load new default configurations, just change the value of CFG_HOLDER in ***include/user_config.h*** +Now in the Makefile, it will erase section hold the user configuration at 0x3C000 + +```bash +flash: firmware/0x00000.bin firmware/0x40000.bin + $(PYTHON) $(ESPTOOL) -p $(ESPPORT) write_flash 0x00000 firmware/0x00000.bin 0x3C000 $(BLANKER) 0x40000 firmware/0x40000.bin +``` **Create SSL Self sign** ``` diff --git a/include/user_config.h b/include/user_config.h index 09ab492..d894e42 100644 --- a/include/user_config.h +++ b/include/user_config.h @@ -2,12 +2,12 @@ #define _USER_CONFIG_H_ #include "user_interface.h" -#define CFG_HOLDER 0x00FF55A2 -#define CFG_LOCATION 0x3C +#define CFG_HOLDER 0x00FF55A4 +#define CFG_LOCATION 0x3C /* Please don't change or if you know what you doing */ /*DEFAULT CONFIGURATIONS*/ -#define MQTT_HOST "mqtt.yourserver.com" //or "192.168.11.1" +#define MQTT_HOST "mqtt.yourdomain.com" //or "192.168.11.1" #define MQTT_PORT 8443 #define MQTT_BUF_SIZE 1024 #define MQTT_KEEPALIVE 120 /*second*/ @@ -17,7 +17,7 @@ #define MQTT_PASS "DVES_PASS" #define STA_SSID "DVES_HOME" -#define STA_PASS "dvespassword" +#define STA_PASS "wifipassword" #define STA_TYPE AUTH_WPA2_PSK #define MQTT_RECONNECT_TIMEOUT 5 /*second*/ diff --git a/user/mqtt.c b/user/mqtt.c index 71a19cc..3372fd1 100644 --- a/user/mqtt.c +++ b/user/mqtt.c @@ -168,6 +168,8 @@ mqtt_tcpclient_recv(void *arg, char *pdata, unsigned short len) } else { INFO("MQTT: Connected to %s:%d\r\n", client->host, client->port); + if(client->connectedCb) + client->connectedCb((uint32_t*)client); client->connState = MQTT_SUBSCIBE_SEND; } break; @@ -346,11 +348,6 @@ mqtt_tcpclient_connect_cb(void *arg) espconn_regist_sentcb(client->pCon, mqtt_tcpclient_sent_cb);/////// INFO("MQTT: Connected to broker %s:%d\r\n", client->host, client->port); client->connState = MQTT_CONNECT_SEND; - if(client->connectedCb) - client->connectedCb((uint32_t*)client); - - - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); } @@ -562,3 +559,7 @@ void MQTT_OnData(MQTT_Client *mqttClient, MqttDataCallback dataCb) { mqttClient->dataCb = dataCb; } +void MQTT_OnPublished(MQTT_Client *mqttClient, MqttCallback publishedCb) +{ + mqttClient->publishedCb = publishedCb; +} diff --git a/user/mqtt.h b/user/mqtt.h index 73535e8..3ce26cf 100644 --- a/user/mqtt.h +++ b/user/mqtt.h @@ -92,6 +92,7 @@ typedef struct { mqtt_connect_info_t connect_info; MqttCallback connectedCb; MqttCallback disconnectedCb; + MqttCallback publishedCb; MqttDataCallback dataCb; ETSTimer mqttTimer; uint32_t keepAliveTick; @@ -121,6 +122,7 @@ void MQTT_InitConnection(MQTT_Client *mqttClient, uint8_t* host, uint32 port, ui void MQTT_InitClient(MQTT_Client *mqttClient, uint8_t* client_id, uint8_t* client_user, uint8_t* client_pass, uint32_t keepAliveTime); void MQTT_OnConnected(MQTT_Client *mqttClient, MqttCallback connectedCb); void MQTT_OnDisconnected(MQTT_Client *mqttClient, MqttCallback disconnectedCb); +void MQTT_OnPublished(MQTT_Client *mqttClient, MqttCallback publishedCb); void MQTT_OnData(MQTT_Client *mqttClient, MqttDataCallback dataCb); void MQTT_Subscribe(MQTT_Client *client, char* topic); void MQTT_Connect(MQTT_Client *mqttClient); diff --git a/user/user_main.c b/user/user_main.c index 4d09092..955f1c2 100644 --- a/user/user_main.c +++ b/user/user_main.c @@ -54,6 +54,7 @@ void mqttConnectedCb(uint32_t *args) { MQTT_Client* client = (MQTT_Client*)args; INFO("MQTT: Connected\r\n"); + } void mqttDisconnectedCb(uint32_t *args) @@ -61,9 +62,28 @@ void mqttDisconnectedCb(uint32_t *args) MQTT_Client* client = (MQTT_Client*)args; INFO("MQTT: Disconnected\r\n"); } -void mqttDataCb(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t lengh) + +void mqttPublishedCb(uint32_t *args) { - INFO("MQTT topic: %s, data: %s \r\n", topic, data); + MQTT_Client* client = (MQTT_Client*)args; + INFO("MQTT: Published\r\n"); +} + +void mqttDataCb(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t data_len) +{ + char topicBuf[64], dataBuf[64]; + MQTT_Client* client = (MQTT_Client*)args; + + os_memcpy(dataBuf, topic, topic_len); + topicBuf[topic_len] = 0; + + os_memcpy(dataBuf, data, data_len); + dataBuf[data_len] = 0; + + INFO("MQTT topic: %s, data: %s \r\n", topicBuf, dataBuf); + + /* Echo back to /echo channel*/ + MQTT_Publish(client, "/echo", dataBuf, data_len, 0, 0); } @@ -78,6 +98,7 @@ void user_init(void) MQTT_InitClient(&mqttClient, sysCfg.device_id, sysCfg.mqtt_user, sysCfg.mqtt_pass, sysCfg.mqtt_keepalive); MQTT_OnConnected(&mqttClient, mqttConnectedCb); MQTT_OnDisconnected(&mqttClient, mqttDisconnectedCb); + MQTT_OnPublished(&mqttClient, mqttPublishedCb); MQTT_OnData(&mqttClient, mqttDataCb); WIFI_Connect(sysCfg.sta_ssid, sysCfg.sta_pwd, wifiConnectCb);