From ef520b65ec717a4c0b234955522a6c68a86b8c79 Mon Sep 17 00:00:00 2001 From: HorstG-57 Date: Wed, 10 Aug 2022 23:49:38 +0200 Subject: [PATCH] =?UTF-8?q?in=20app.h=20defines=20eingebaut=20mit=20dem=20?= =?UTF-8?q?sich=20das=20verhalten=20der=20app=20in=20Bezug=20auf=20MQTT=20?= =?UTF-8?q?anpassen=20l=C3=A4st=20in=20app.cpp=20bedingte=20Compiler=20Abs?= =?UTF-8?q?chnitte=20eingebaut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/esp8266/app.cpp | 31 ++++++++++++++++++++++--------- tools/esp8266/app.h | 6 ++++++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/tools/esp8266/app.cpp b/tools/esp8266/app.cpp index 9afd4471..b0517c3d 100644 --- a/tools/esp8266/app.cpp +++ b/tools/esp8266/app.cpp @@ -165,9 +165,11 @@ void app::setup(uint32_t timeout) { mMqtt.setup(mqttAddr, mqttTopic, mqttUser, mqttPwd, mqttDevName, mqttPort); mMqtt.mClient->setCallback(std::bind(&app::cbMqtt, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); mMqttTicker = 0; + +#ifdef __MQTT_TEST__ // für mqtt test mMqttTicker = mMqttInterval -10; - +#endif mSerialTicker = 0; if(mqttAddr[0] > 0) { @@ -365,12 +367,17 @@ void app::loop(void) { } } snprintf(val, 10, "%ld", millis()/1000); - // sendMqttDiscoveryConfig(); + +#ifndef __MQTT_NO_DISCOVERCONFIG__ + // MQTTDiscoveryConfig nur wenn nicht abgeschaltet. + sendMqttDiscoveryConfig(); +#endif mMqtt.sendMsg("uptime", val); +#ifdef __MQTT_TEST__ // für einfacheren Test mit MQTT, den MQTT abschnitt in 10 Sekunden wieder ausführen mMqttTicker = mMqttInterval -10; - +#endif } if(mSerialValues) { @@ -495,7 +502,9 @@ bool app::buildPayload(uint8_t id) { //----------------------------------------------------------------------------- void app::processPayload(bool retransmit) { +#ifdef __MQTT_AFTER_RX__ boolean doMQTT = false; +#endif DPRINTLN(DBG_VERBOSE, F("app::processPayload")); for(uint8_t id = 0; id < mSys->getNumInverters(); id++) { @@ -553,23 +562,27 @@ void app::processPayload(bool retransmit) { yield(); } iv->doCalculations(); + +#ifdef __MQTT_AFTER_RX__ doMQTT = true; - +#endif + } } yield(); } } -// ist MQTT aktiviert und es wurden Daten vom einem oder mehreren WR aufbereitet ( doMQTT = true) -// dann die den mMqttTicker auf mMqttIntervall -2 setzen, also -// MQTT aussenden in 2 sek aktivieren -// dies sollte noch über einen Schalter im Setup aktivier / deaktivierbar gemacht werden +#ifdef __MQTT_AFTER_RX__ + // ist MQTT aktiviert und es wurden Daten vom einem oder mehreren WR aufbereitet ( doMQTT = true) + // dann die den mMqttTicker auf mMqttIntervall -2 setzen, also + // MQTT aussenden in 2 sek aktivieren + // dies sollte noch über einen Schalter im Setup aktivier / deaktivierbar gemacht werden if( (mMqttInterval != 0xffff) && doMQTT ) { ++mMqttTicker = mMqttInterval -2; DPRINT(DBG_DEBUG, F("MQTTticker auf Intervall -2 sec ")) ; } - +#endif } diff --git a/tools/esp8266/app.h b/tools/esp8266/app.h index ca9bac1f..8c563fe1 100644 --- a/tools/esp8266/app.h +++ b/tools/esp8266/app.h @@ -17,6 +17,12 @@ #include "hmSystem.h" #include "mqtt.h" +// hier läst sich das Verhalten der app in Bezug auf MQTT +// durch PER-Conpiler defines anpassen +// +// #define __MQTT_TEST__ // MQTT Interval wird auf 10 Sekunden verkürzt ( nur für testzwecke ) +#define __MQTT_AFTER_RX__ // versendet die MQTT Daten sobald die WR daten Aufbereitet wurden ( gehört eigentlich ins Setup ) +// #define __MQTT_NO_DISCOVERCONFIG__ // das versenden der MQTTDiscoveryConfig abschalten ( gehört eigentlich ins Setup ) typedef CircularBuffer BufferType; typedef HmRadio RadioType;