From 10dd8fbce203b82deaaded9df4562c157a8b8790 Mon Sep 17 00:00:00 2001 From: arovak Date: Fri, 8 May 2020 19:36:23 +0200 Subject: [PATCH 1/2] Allow simultaneous use of MQTT and Tasmotaslave --- src/hasp_dispatch.cpp | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/hasp_dispatch.cpp b/src/hasp_dispatch.cpp index 80e44a46..ab227e64 100644 --- a/src/hasp_dispatch.cpp +++ b/src/hasp_dispatch.cpp @@ -162,15 +162,15 @@ void dispatchDim(String strDimLevel) if(strDimLevel.length() != 0) guiSetDim(strDimLevel.toInt()); dispatchPrintln(F("DIM"), strDimLevel); char buffer[8]; - -#if HASP_USE_MQTT > 0 +#if defined(HASP_USE_MQTT) || defined(HASP_USE_TASMOTA_SLAVE) itoa(guiGetDim(), buffer, DEC); +#if HASP_USE_MQTT > 0 mqtt_send_state(F("dim"), buffer); #endif #if HASP_USE_TASMOTA_SLAVE > 0 - itoa(guiGetDim(), buffer, DEC); slave_send_state(F("dim"), buffer); #endif +#endif } void dispatchBacklight(String strPayload) @@ -276,12 +276,15 @@ void dispatchJsonl(char * payload) void dispatchIdle(const char * state) { +#if !defined(HASP_USE_MQTT) && !defined(HASP_USE_TASMOTA_SLAVE) + Log.notice(F("OUT: idle = %s"), state); +#else #if HASP_USE_MQTT > 0 mqtt_send_state(F("idle"), state); -#elif HASP_USE_TASMOTA_SLAVE > 0 +#endif +#if HASP_USE_TASMOTA_SLAVE > 0 slave_send_state(F("idle"), state); -#else - Log.notice(F("OUT: idle = %s"), state); +#endif #endif } @@ -303,14 +306,16 @@ void dispatchReboot(bool saveConfig) void dispatch_button(uint8_t id, const char * event) { +#if !defined(HASP_USE_MQTT) && !defined(HASP_USE_TASMOTA_SLAVE) + Log.notice(F("OUT: input%d = %s"), id, event); +#else #if HASP_USE_MQTT > 0 mqtt_send_input(id, event); -#else - Log.notice(F("OUT: input%d = %s"), id, event); #endif #if HASP_USE_TASMOTA_SLAVE>0 slave_send_input(id, event); #endif +#endif } void dispatchWebUpdate(const char * espOtaUrl) @@ -323,12 +328,15 @@ void dispatchWebUpdate(const char * espOtaUrl) void IRAM_ATTR dispatch_obj_attribute_str(uint8_t pageid, uint8_t btnid, const char * attribute, const char * data) { +#if !defined(HASP_USE_MQTT) && !defined(HASP_USE_TASMOTA_SLAVE) + Log.notice(F("OUT: json = {\"p[%u].b[%u].%s\":\"%s\"}"), pageid, btnid, attribute, data); +#else #if HASP_USE_MQTT > 0 mqtt_send_obj_attribute_str(pageid, btnid, attribute, data); -#elif HASP_USE_TASMOTA_SLAVE > 0 +#endif +#if HASP_USE_TASMOTA_SLAVE > 0 slave_send_obj_attribute_str(pageid, btnid, attribute, data); -#else - Log.notice(F("OUT: json = {\"p[%u].b[%u].%s\":\"%s\"}"), pageid, btnid, attribute, data); +#endif #endif } @@ -416,12 +424,15 @@ void dispatchConfig(const char * topic, const char * payload) if(!update) { settings.remove(F("pass")); // hide password in output size_t size = serializeJson(doc, buffer, sizeof(buffer)); +#if !defined(HASP_USE_MQTT) && !defined(HASP_USE_TASMOTA_SLAVE) + Log.notice(F("OUT: config %s = %s"),topic,buffer); +#else #if HASP_USE_MQTT > 0 mqtt_send_state(F("config"), buffer); -#elif HASP_USE_TASMOTA > 0 +#endif +#if HASP_USE_TASMOTA > 0 slave_send_state(F("config"), buffer); -#else - Log.notice(F("OUT: config %s = %s"),topic,buffer); +#endif #endif } } From 647619f1df40f9c8f8f8f4d2f740d7c22c0a6eae Mon Sep 17 00:00:00 2001 From: arovak Date: Fri, 8 May 2020 21:38:24 +0200 Subject: [PATCH 2/2] minor ethernet tweaks --- src/hasp_ethernet.cpp | 22 +++++++++++++++++++--- src/hasp_ethernet.h | 1 + src/main.cpp | 8 +------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/hasp_ethernet.cpp b/src/hasp_ethernet.cpp index f6c1d694..d6f82bff 100644 --- a/src/hasp_ethernet.cpp +++ b/src/hasp_ethernet.cpp @@ -18,7 +18,7 @@ void ethernetSetup() Log.notice(F("ETH: Failed to configure Ethernet using DHCP")); } else { ip = Ethernet.localIP(); - Log.notice(F("ETH: DHCP Success got IP=%d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]); + Log.notice(F("ETH: DHCP Success got IP %d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]); } Log.notice(F("ETH: MAC Address %s"), halGetMacAddress(0, ":")); @@ -33,15 +33,19 @@ void ethernetSetup() mac[4] = (baseUID & 0x0000FF00) >> 8; mac[5] = (baseUID & 0x000000FF); + char ethHostname[12]; + memset(ethHostname, 0 ,sizeof(ethHostname)); + snprintf(ethHostname, sizeof(ethHostname), PSTR("HASP-%02x%02x%02x"), mac[3], mac[4], mac[5]); + Ethernet.setCsPin(W5500_CS); Ethernet.setRstPin(W5500_RST); - Ethernet.setHostname("HASP"); + Ethernet.setHostname(ethHostname); Log.notice(F("ETH: Begin Ethernet W5500")); if(Ethernet.begin(mac) == 0) { Log.notice(F("ETH: Failed to configure Ethernet using DHCP")); } else { ip = Ethernet.localIP(); - Log.notice(F("ETH: DHCP Success got IP=%d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]); + Log.notice(F("ETH: DHCP Success got IP %d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]); } #endif } @@ -77,4 +81,16 @@ void ethernetLoop(void) } } +bool ethernetEvery5Seconds() +{ + bool state; +#if USE_BUILTIN_ETHERNET > 0 + state = Ethernet.linkStatus() == LinkON; +#else + state = Ethernet.link() == 1; +#endif + Log.warning(F("ETH: %s"), state ? F("ONLINE") : F("OFFLINE")); + return state; +} + #endif \ No newline at end of file diff --git a/src/hasp_ethernet.h b/src/hasp_ethernet.h index 0b2b6947..177f0908 100644 --- a/src/hasp_ethernet.h +++ b/src/hasp_ethernet.h @@ -4,4 +4,5 @@ void ethernetSetup(); void ethernetLoop(void); +bool ethernetEvery5Seconds(); #endif \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 229159a8..e03e3c21 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -162,13 +162,7 @@ void loop() #endif #if HASP_USE_ETHERNET > 0 -#if USE_BUILTIN_ETHERNET > 0 - isConnected = Ethernet.linkStatus() == LinkON; - Serial.print(Ethernet.linkStatus()); -#else - isConnected = Ethernet.link() == 1; - Serial.print(Ethernet.link()); -#endif + isConnected = ethernetEvery5Seconds(); #endif #if HASP_USE_HTTP > 0