From e3b494b70f49e6f5daedc2fa5a745d30486b9038 Mon Sep 17 00:00:00 2001 From: Martin Ger Date: Wed, 8 Nov 2017 22:53:36 +0100 Subject: [PATCH] moved cleanup into the libmqtt --- Arduino/mqtt_server.h | 4 ++++ README.md | 6 ++++++ firmware/0x00000.bin | Bin 44640 -> 44608 bytes firmware/0x10000.bin | Bin 300204 -> 300252 bytes firmware/libmqtt.a | Bin 291262 -> 292392 bytes firmware/sha1sums | 4 ++-- mqtt/include/mqtt_server.h | 1 + mqtt/mqtt_server.c | 11 +++++++++++ user/user_main.c | 9 +-------- 9 files changed, 25 insertions(+), 10 deletions(-) diff --git a/Arduino/mqtt_server.h b/Arduino/mqtt_server.h index 21faf44..e77a5fb 100644 --- a/Arduino/mqtt_server.h +++ b/Arduino/mqtt_server.h @@ -24,6 +24,10 @@ bool MQTT_local_publish(uint8_t* topic, uint8_t* data, uint16_t data_length, uin bool MQTT_local_subscribe(uint8_t* topic, uint8_t qos); bool MQTT_local_unsubscribe(uint8_t* topic); +// Interface to cleanup after STA disconnect + +void MQTT_server_cleanupClientCons(); + // Interface for persistence of retained topics // Topics can be serialized to a buffer and reinitialized later after reboot // Application is responsible for saving and restoring that buffer (i.e. to/from flash) diff --git a/README.md b/README.md index 945d908..d9804b1 100644 --- a/README.md +++ b/README.md @@ -279,6 +279,12 @@ If an *MqttAuthCallback* function is registered with MQTT_server_onAuth(), it is The *MqttConnectCallback* function does a similar check for the connection, but it is called right after the connect request before the MQTT connect request is processed. This is done in order to reject requests from unautorized clients in an early stage. The number of currently connected clients (incl. the current one) is given in the *client_count* paramater. With this info you can reject too many concurrent connections. +If you want to force a cleanup when the broker as a WiFi client (WIFI_STA mode) has lost connectivity to the AP, call: +```c +void MQTT_server_cleanupClientCons(); +``` +This will remove all broken connections, publishing LWT if defined. + # Limitations on the number of clients To adjust memory consumption of one MQTT connection and thus the max number of concurrent connections you can redefine MQTT_BUF_SIZE and QUEUE_BUFFER_SIZE in "user_config.h". MQTT_BUF_SIZE is the max. size of pending inbound messages for one connection (and thus also the max. size of a single MQTT message) and QUEUE_BUFFER_SIZE is the max. size of all pending outbound messages for one connection. Currently these parameters are set to 1024 resp. 2048 bytes, resulting in a memory consumption of about 4 KB per connection and a max number of connections of about 8-9 (depending on the memory usage of the rest of the program). When you reduce buffer sizes, e.g. to 512 and 1024 bytes, a single connection requires only about 2.5 KB resulting in up to 13 possible concurrent MQTT connections. In any case you have to increase the number of TCP connections (default 5) first by calling "espconn_tcp_set_max_con(n)" with n, the max. number of concurrent TCP connections, less or equal to 15. diff --git a/firmware/0x00000.bin b/firmware/0x00000.bin index 53b9b097e1ec567f5b6ed21c56c080962e474a90..4fe62daca41e50913a10efbc30d87cddbe6be816 100644 GIT binary patch delta 4398 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

A|dQPg{1t-sN5O~mfq4i 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 delta 30709 zcmZU53s_V|8}OOgJqyTLV7ZBkvgdGdK~^~H4O3)UJ%|?+ND)m-Nb!>QOKRx{qK8il z3telhtkAU7G%r|KX#sjr5=%%^3lpztsUP0*!tS2`orCs$|Nrwm!#Oka-sYWmX5M*c z&Ngii+_^n)&qRb~IP*|9lLbu_r&WKzOZjP#m1Ac(Z|ak=($U$CeI6_8oJDN7iCr+rR?dcAVrp5Y zD&8#3ckW_4#!7{QIP5JR-yCx}%(74bB!e^hIS!3N0$1 z1VxHY!o2PoT9n}#8XMk^!fd(^Ff#gIn2CQf%<%uh>HEpfetfGcwyKnzXOMG}!Go21 z6_dPjQS9R4X!}G+t01lX%9BzC&&RtwDMj#XhI9Z@6{I~CSG|A3Sn{c;@vTOf9pIFW z8?iLo8R?f4CMPE1@=1m|m4UyvSZ+$u7-ur8xSaF-x?3$E@aNT}jeU9K@2O&#<>%B@-rjuIBqN8}7kYVb+;m#yeBNs( z`cdVY&6Guhwbqvr%8@YKA`fyt^zVgRiYvMYypDtANl>miy9Y&Jc|^s?pmc<#n2Ps;f7D^t?VJ{th?P4PAB0KXSQ_ZOWS))^of&+4 zpMVw7_5hx@uXN7jA7J@L#Ux<>!t!b7mdI6Dsdsjd8jjgx&ZSYKuw3J8jGBVkgU)`@ zA`UKa&Wf(b$^&Qrm|k6^tFhi<(;f>~zd4Dwa;fVcDP1FCIqA*-3n#ZY-;RlEC;iy1 zK2Z9#o3zq-IOc22UUUAdYn(~?zFVlkNHyK~6RHr%u&bS4ckSe*{29vyDkkS|UHb;G z$74Cn1#x<*u{#&Y{_2dfWMX-I#jBP^j2=}C>6TzX_KGFqKoGmZ`JHW)Ngfby@B!`V zY(c(`ax7&zBYO#`Wt$ znTJ+CHqW^&^&ysjc5ZSk#PTd>*uW?(cdi&P(2BA0q++Ht3Yny}@xn|mHdY^6+;Y-t zmabGZrllgRs=8)1YlyIawD+O&Ii?^1E1Aw!1#>W4 z?tD_PDo~QU-YHZ==jo&sU2k6E0_6{#>!-x~D#cyp@4Ds)jKWkLpAwESTj9JhZ9bal zoG|^>1opGIS`7Wk*vc808Q4$bQ1W&DxF?%=C7)-#CI=VvHqFCKOnYDG1UA%(Ux~r2 zmox5_RFjg{wT4HHJiabIN-YhPhE*(m#f5|BfRx&#hOoeJfj)>`<9u^gs!tJ=KW?X{ zm@7`t`b>w)E0)dcp=Yb0bWg>Xug=nA`A|jl>lucQY?+leyYD)}VDfbE9c|@<2Y=!R z7AL<|QM#Om>Bm~Jd&L*nOTHG#Vd0b2%mQOhAR-ZR1+b#dw zHf5W$@{LtkDz8X=GX>+8l8WLr0%Ds%0;Xd7TdyOOSP@+og-z@f3pY-6pe`Vs`a^~(#bay6xoNV=%uQ}g-KO3{3 zIxoL}8f7}a{vZX-aX$W_6)USM{@%C-Z15AO{L%M@J^zljxBS~V^kW4}W1OaPr%%AD zXnP{0Oy{ohvsg)~`1htlLnPY}b!_d~P1pB&FAuCvgtdt&1DGmEQNe0T3p@iVVz<3a zTd-z(S3O!<@#U^J5n5l7x*L>o%DH^+Us$Pd&f3=>f|b6-ah?pI9;NKoK@6(IObXQllCks#X2XN|f`-H}8ZfXOjxB_sNFT0*wE*Uahym zfa9H8zMb7ude|F=SwbISM9f*i8HlI z3RHH31mbm--9w+pJnZg@4OK}9nVk*QsRN|Fi2{$H(ek^!Ehh0VRU*B`KUItA9LI&E zTRB7ij1WgK9@{xKT%HLK>0B~OkIK5NI)WM5%b8g-T*rEPJ3p>j+EXb32GaMv{~xVL z@;_Q(Wlb5JUTJ%gS2{-?=3!LNJ^UZG2qZ3dPCjDpD(Cg)7)xiLgH3^;3tKM(%QS^Z zmsEp}>cX}$cH{F_KPAz*^N1BIR_AX=uK6mTKcy^BaMmj^o!A$8TaC#aryp{Ntyk0T zs)>d z$IiKRkzR71XfY{coFCNXwQGi!7QN|7X?eTC@WZSim@XHd4{X;(>d@PW3vjzm{j2&{ zBv$h=I2PuroJ>Zr8sxl+t$z&mg-*M5_wZ0l8FVfrJEST|l^&5#lywLm@-o^v1-L26!G zQTt#Yi<{R~yw;k}np&VN(Mcx&paW^nm$#5_KYY?z`J^AZ?S-42m46OIfygIdJpe*V zs$?Y;fsnm2It?8ULYb9!#-a;4G^es*0-E9j&%RU8%Q{q4`Qdal5}`73>lKuNl~U4w z1}Z}3N_MsB&mz8V0->$wm~B(GJWE+JB#Nf{JaU9ncyg~Dv~*3DxkmQ?Pl zLROfnA5}J0qtWoPoAfx0@+P0mkG2muBG}6(Lk~e}fqW4>CqlAAGDBh@HBSOdf>aKv z2+~AIc1UJO45a3lp&n8>q%ufzAZ0>IgcMNu_%Qk&kM5ZpZQlthV1P&F0eE_=DNF&- zfMka>5z-t;MUcuMl|#y09 zQS=fk=S4~}l|LRubD@b(H-Q zNhBkGKyP3+pZxX%s>D)x<@)0&6XBME%4_xL8ywy|HQMf~^rV0zP?Lvak&j7EG1UjM z#U=%jgFhi2X1V~<{1b}7QYi60iB`0e?giA(3ox0b`{bRI=v{x-Vybu0{B#qzraJOm z1B$}RSTeBzg7ZS*q&O&O2)CB1Yq*K!?W10|n_$|{(!FkjN%MU6)K95F$=lKzN@H-mV zG2j)=HL~R~LLTzrK#r-Bnb8~B+YlG`E?@F}>S3Q6!L&K3405Yg3?p6f z{YOb{s#IdhmUj3UmYrmlFYcq0-2r5qFYa$-O9M8!3pt;4L#Hd3$Q@rimQ^kUC{1J} zhp%JhwaUIm+!NfXFDhsIaX+-U1x(jb>Oidng2sU$#`DU<%VxI1Z!USIxb?o&6FVP+Z8UX!Zh0VM}-(tTH>yPoV5uKy`EzVXsz14^c zsnE8~ut!0spu7_!o>Vh9AoeDu_#ag~p>jA~$32gFlha*rf8QOd_)xWAE*M3U@Cclo zs4Q27YO``xJ;vqSY&B5#5@doRsfhk(uc)F(cc6|)*j{-dAF?_E5B8E?Q>h`4GZ8p0 zT3SSP`=;DOJpGlYJmMPL`Xo&}rnyIk{J-v@n493n19gPE=w}>eNZR0Z%2Y z6Bi8j1sj9-PJEF^5Eyigwv5LreZNfK#b(+yFR0zE2yJ{F3e5KV$q0y@@5ukEYWBr% z@YG?-@5ZMulbAt5o0d~e3U|-xdfKEzveDyRE z6or$~mn16+4=Wt(IcGYHtsKM%(G_ab8Q@8Q@g8!+yLi#9S?J5?8=9q|#j~ciC<4&( z5#{Tw7*QycV>E;Y$DRc?*LEz_rUsqZz7TpafHzBjux5vu!(D^@I3XF?q2c{02B!;L z>rc8w&q{aLwJtI}8prfxm$*4yydJt_+H%0D{##A`TLmGJ5)Q#e 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 diff --git a/firmware/libmqtt.a b/firmware/libmqtt.a index 33a1807dfc5f881dddbdc88b21cd1a79980f5548..9db11b17a7d050748ebb914593f1ab57326c4091 100644 GIT binary patch delta 38515 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 A!2kdN delta 37300 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 diff --git a/firmware/sha1sums b/firmware/sha1sums index 01778b1..4438de1 100644 --- a/firmware/sha1sums +++ b/firmware/sha1sums @@ -1,2 +1,2 @@ -4bc31b324e50df7c9a27dd1fd25989b91683b5ce 0x00000.bin -d8421d85140ee997f675adeecc1b6ff52499e498 0x10000.bin +c50dd78b2343c1a3c899a54d55fca90b9d13ea84 0x00000.bin +f72c7c5d01d946b3639edfb50e4539706fd45b4d 0x10000.bin diff --git a/mqtt/include/mqtt_server.h b/mqtt/include/mqtt_server.h index 9a1810e..e5362d5 100644 --- a/mqtt/include/mqtt_server.h +++ b/mqtt/include/mqtt_server.h @@ -43,6 +43,7 @@ extern MQTT_ClientCon *clientcon_list; uint16_t MQTT_server_countClientCon(); void MQTT_server_disconnectClientCon(MQTT_ClientCon *mqttClientCon); bool MQTT_server_deleteClientCon(MQTT_ClientCon *mqttClientCon); +void MQTT_server_cleanupClientCons(); bool MQTT_server_start(uint16_t portno, uint16_t max_subscriptions, uint16_t max_retained_topics); void MQTT_server_onConnect(MqttConnectCallback connectCb); diff --git a/mqtt/mqtt_server.c b/mqtt/mqtt_server.c index 996e3cc..0043225 100644 --- a/mqtt/mqtt_server.c +++ b/mqtt/mqtt_server.c @@ -258,6 +258,17 @@ bool ICACHE_FLASH_ATTR MQTT_server_deleteClientCon(MQTT_ClientCon * mqttClientCo return true; } +void ICACHE_FLASH_ATTR MQTT_server_cleanupClientCons() { + MQTT_ClientCon *clientcon, *clientcon_tmp; + for (clientcon = clientcon_list; clientcon != NULL; ) { + clientcon_tmp = clientcon; + clientcon = clientcon->next; + if (clientcon_tmp->pCon->state == ESPCONN_CLOSE) { + MQTT_server_deleteClientCon(clientcon_tmp); + } + } +} + void ICACHE_FLASH_ATTR MQTT_server_disconnectClientCon(MQTT_ClientCon * mqttClientCon) { MQTT_INFO("MQTT:ServerDisconnect\r\n"); diff --git a/user/user_main.c b/user/user_main.c index bcd84a3..cb626a1 100644 --- a/user/user_main.c +++ b/user/user_main.c @@ -1505,14 +1505,7 @@ void wifi_handle_event_cb(System_Event_t * evt) { evt->event_info.disconnected.ssid, evt->event_info.disconnected.reason); connected = false; - MQTT_ClientCon *clientcon, *clientcon_tmp; - for (clientcon = clientcon_list; clientcon != NULL; ) { - clientcon_tmp = clientcon; - clientcon = clientcon->next; - if (clientcon_tmp->pCon->state == ESPCONN_CLOSE) { - MQTT_server_deleteClientCon(clientcon_tmp); - } - } + MQTT_server_cleanupClientCons(); #ifdef MQTT_CLIENT if (mqtt_enabled)