From 2d613c3f907ff003e1a9a57ed6b6645253394d45 Mon Sep 17 00:00:00 2001 From: martin-ger Date: Wed, 2 Jan 2019 09:21:22 +0100 Subject: [PATCH] longer mqtt_id --- .gitignore | 2 ++ firmware/0x00000.bin | Bin 42384 -> 42384 bytes firmware/0x10000.bin | Bin 310780 -> 310764 bytes firmware/sha1sums | 4 ++-- user/cli.c | 32 ++++++++++++++++---------------- user/config_flash.c | 10 +++++----- user/config_flash.h | 2 +- user/user_config.h | 2 +- 8 files changed, 27 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index 963f8cb..eceb219 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ build/ .settings/ .DS_Store include/user_config.local.h +scripts/script.demo +scripts/script.timers diff --git a/firmware/0x00000.bin b/firmware/0x00000.bin index 00f8ab9df58f7fde2e312125db2bb74943dece46..a9fbf0a98f24889c8d10aae26bb73aed849f05df 100644 GIT binary patch delta 1138 zcmZ9LZ){Ul7{<@JT}P2_tlQ8o(C)V9-cfKuSs2^M;(akhCk&loI*ly0u102tl<+5n zX;$LK*x01uf@YbK8TqiX8Md5$kO&EweQ2^x8$;qhjEzFF4~r6o1V~tYuB*x7Nq%|W z_c`Z1_nvd#8=qF<)5=6jv1ejB70Fp;TH#SSWIw3bV?8>>O_$>hK4KnlbQVq^PlF7& z(<2``Ht=e80$yJ}Q=y-Kzn4X!ad4@cvE)=98$mn)u7THD`pXC!lC6&o^HmvytQRmA zQ=#f*Kix13oRSCRb*EH#S{`0Grf`zJ;++Z)$$h1}6&{ni=0q=Rx2iifiUC>CLpgF9c zgQ}kF(?&fuW+=SxEuxuxLETuS7JwCkG|Z*&0LMx}O^u9V2^5YAN{$PfHwC?F9`HZ0 z&T&x?-SCrEC@6K6QRyp!_NM(5x#y?k-x?kL&QE!NXyi60{lc4?*XT=7)F;RdRFLWw zRF7wlz9awg|77EuoULf#ywubKZ|l(^d{D+hYXB}OK1gs&)y2^N$c2A>9@H^Vh(g#o% zv>YTrGRHpX2TSsga`6S|V2w`GIex^SVa031I_-WFciX1ZMsNvO@m=tG&5p_rST~)18gEd>LtF~5eQmcZS>SX=L4Ta7?#bTeM@|S-A DWgd-& delta 1138 zcmY+DeP~lx7{<@JZE9T8n%Zr)vq^7r?sd_*nvT}AQg&a5Owr0Bi(gn-Vk@iSuw9KS zQ)y&=O}91kwrt|miu&m#oqw(pzqe)N`G9ye9#NOwy`L*A6%|u?3>YiHUggnX|Q?Y@$vw)U2c8uG=Cuj>pY55 zj75D=^*ayUHj5mRtMZydD*TR&%o$R6KvvCNqwse5-t%uOJSMNbc#iX=43~B0m1Iun z#2IUMexj2PsPg`NlNSYG`$0R1nulG#@hLOx_RsEJiY*&-nljJ3Ta=3RWvYy*xp;)U4q{zWMC55u7FH7mQaUw+?&`IzZ4Ss6SuO z1m;gby{_!*#tIa6V&RnANvQ%shcHPk0)>JWV{8l?*yjieG%-3hC@3=|C^0PPu_-8I zc6jD3bY2uhH$0>j3mUu1C>a#gmiAEV6AvZ+)Trx64>=xcq?&P$aHl6VN`f!D@G@Wk z1U?Ydh&_7`$Ui){@_2>3zF;Hg6{hZeSC5{;-(oCO0dPnmwKQu?9-THE@S8AJhIoaH zdwV##V)>#U@_Dl?S+aXB+V$Y_b384p-pD%mgsgh&k<~CI>-LrMDfwyZd>dM8aK{zJ zRy(NCq};LV6>I0d-KUFO6Kga|Yz3<|N)75X8Df+MU+>pwRIWYnJMZp^2zr0-|2fk+ z6Q}mfsK|{6p@n^dUIGh2Jy;1gfW$Lwhu@QnKZ2eF=fMbI>VJ>ddgM@dIqzQlM59{p z0BvU}2j$>p5C@4I5$K6$;4cd()#aZ zwHns!+Ut^`gXOciUw(M}qN6O>7ExD6cBwTDs;_>TZ|Sl+zxtZ5rd~FFv8vdiE|}?a HtgQJ5`B9Ff diff --git a/firmware/0x10000.bin b/firmware/0x10000.bin index c033b91f654e5ede3f5621d99877beb39c4bebfb..788962fba48a71871592715de88807a12a5c1c25 100644 GIT binary patch delta 33380 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 delta 34020 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

_IN@PcxzoEGpU<+L+!w6>fkrX-re4Tjy}hN7Kt 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 diff --git a/firmware/sha1sums b/firmware/sha1sums index e58ff2f..b8881ee 100644 --- a/firmware/sha1sums +++ b/firmware/sha1sums @@ -1,2 +1,2 @@ -7163ff45862ab01f061e256cd16ad1e083fe8df0 0x00000.bin -92fdb9a489a04461351fff59ac94adc618a3d17d 0x10000.bin +834399a6fc66a609ab06b6ac58e0e371d853d256 0x00000.bin +bad4fb09c6ac1b86e06de459e570fe3aee8186e0 0x10000.bin diff --git a/user/cli.c b/user/cli.c index 2a9ab13..e25e2dd 100644 --- a/user/cli.c +++ b/user/cli.c @@ -909,8 +909,8 @@ void ICACHE_FLASH_ATTR console_handle_command(struct espconn *pespconn) { } if (strcmp(tokens[1], "broker_user") == 0) { - os_strncpy(config.mqtt_broker_user, tokens[2], 32); - config.mqtt_broker_user[31] = '\0'; + os_strncpy(config.mqtt_broker_user, tokens[2], sizeof(config.mqtt_broker_user)); + config.mqtt_broker_user[sizeof(config.mqtt_broker_user)-1] = '\0'; os_sprintf_flash(response, "Broker username set\r\n"); goto command_handled; } @@ -919,8 +919,8 @@ void ICACHE_FLASH_ATTR console_handle_command(struct espconn *pespconn) { if (os_strcmp(tokens[2], "none") == 0) { config.mqtt_broker_password[0] = '\0'; } else { - os_strncpy(config.mqtt_broker_password, tokens[2], 32); - config.mqtt_broker_password[31] = '\0'; + os_strncpy(config.mqtt_broker_password, tokens[2], sizeof(config.mqtt_broker_password)); + config.mqtt_broker_password[sizeof(config.mqtt_broker_password)-1] = '\0'; } os_sprintf_flash(response, "Broker password set\r\n"); goto command_handled; @@ -993,8 +993,8 @@ void ICACHE_FLASH_ATTR console_handle_command(struct espconn *pespconn) { #endif #ifdef NTP if (strcmp(tokens[1], "ntp_server") == 0) { - os_strncpy(config.ntp_server, tokens[2], 32); - config.ntp_server[31] = 0; + os_strncpy(config.ntp_server, tokens[2], sizeof(config.ntp_server)); + config.ntp_server[sizeof(config.ntp_server)-1] = '\0'; ntp_set_server(config.ntp_server); os_sprintf(response, "NTP server set to %s\r\n", config.ntp_server); goto command_handled; @@ -1036,16 +1036,16 @@ void ICACHE_FLASH_ATTR console_handle_command(struct espconn *pespconn) { #endif #ifdef DNS_RESP if (strcmp(tokens[1], "dns_name") == 0) { - os_strncpy(config.broker_dns_name, tokens[2], 32); - config.mqtt_host[31] = 0; + os_strncpy(config.broker_dns_name, tokens[2], sizeof(config.broker_dns_name)); + config.mqtt_host[sizeof(config.broker_dns_name)-1] = '\0'; os_sprintf_flash(response, "DNS name set\r\n"); goto command_handled; } #endif #ifdef MQTT_CLIENT if (strcmp(tokens[1], "mqtt_host") == 0) { - os_strncpy(config.mqtt_host, tokens[2], 32); - config.mqtt_host[31] = 0; + os_strncpy(config.mqtt_host, tokens[2], sizeof(config.mqtt_host)); + config.mqtt_host[sizeof(config.mqtt_host)-1] = '\0'; os_sprintf_flash(response, "MQTT host set\r\n"); goto command_handled; } @@ -1063,22 +1063,22 @@ void ICACHE_FLASH_ATTR console_handle_command(struct espconn *pespconn) { } if (strcmp(tokens[1], "mqtt_user") == 0) { - os_strncpy(config.mqtt_user, tokens[2], 32); - config.mqtt_user[31] = 0; + os_strncpy(config.mqtt_user, tokens[2], sizeof(config.mqtt_user)); + config.mqtt_user[sizeof(config.mqtt_user)-1] = '\0'; os_sprintf_flash(response, "MQTT user set\r\n"); goto command_handled; } if (strcmp(tokens[1], "mqtt_password") == 0) { - os_strncpy(config.mqtt_password, tokens[2], 32); - config.mqtt_password[31] = 0; + os_strncpy(config.mqtt_password, tokens[2], sizeof(config.mqtt_password)); + config.mqtt_password[sizeof(config.mqtt_password)-1] = '\0'; os_sprintf_flash(response, "MQTT password set\r\n"); goto command_handled; } if (strcmp(tokens[1], "mqtt_id") == 0) { - os_strncpy(config.mqtt_id, tokens[2], 32); - config.mqtt_id[31] = 0; + os_strncpy(config.mqtt_id, tokens[2], sizeof(config.mqtt_id)); + config.mqtt_id[sizeof(config.mqtt_id)-1] = '\0'; os_sprintf_flash(response, "MQTT id set\r\n"); goto command_handled; } diff --git a/user/config_flash.c b/user/config_flash.c index 191f22e..0c459f7 100644 --- a/user/config_flash.c +++ b/user/config_flash.c @@ -87,13 +87,13 @@ int ICACHE_FLASH_ATTR config_load(sysconfig_p config) { return -1; } - os_printf("\r\nConfig found and loaded\r\n"); + os_printf("\r\nConfig found and loaded\r\n"); spi_flash_read(base_address * SPI_FLASH_SEC_SIZE, (uint32 *) config, sizeof(sysconfig_t)); if (config->length != sizeof(sysconfig_t)) { - os_printf("Length Mismatch, probably old version of config, loading defaults\r\n"); - config_load_default(config); - config_save(config); - return -1; + os_printf("Length Mismatch, probably old version of config, loading defaults\r\n"); + config_load_default(config); + config_save(config); + return -1; } return 0; } diff --git a/user/config_flash.h b/user/config_flash.h index a39e0c4..ec793d1 100644 --- a/user/config_flash.h +++ b/user/config_flash.h @@ -74,7 +74,7 @@ typedef struct uint8_t mqtt_user[32]; // Username for broker login, "none" if empty uint8_t mqtt_password[32]; // Password for broker login - uint8_t mqtt_id[32]; // MQTT clientId + uint8_t mqtt_id[48]; // MQTT clientId #endif #ifdef NTP uint8_t ntp_server[32]; // IP or hostname of the MQTT broker, "none" if empty diff --git a/user/user_config.h b/user/user_config.h index 5057a72..171bbf5 100644 --- a/user/user_config.h +++ b/user/user_config.h @@ -1,7 +1,7 @@ #ifndef _USER_CONFIG_ #define _USER_CONFIG_ -#define ESP_UBROKER_VERSION "V2.0.7" +#define ESP_UBROKER_VERSION "V2.0.8" #define WIFI_SSID "ssid" #define WIFI_PASSWORD "password"