Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Das subscribe in der Reconnect Procedure sollte doch nur nach einem conect ausgeführt werden und nicht bei jedem Duchlauf #138

Merged
merged 4 commits into from
Aug 11, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 22 additions & 9 deletions tools/esp8266/app.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was hat es denn mit den mMqttInterval -10 / -5 / -2 auf sich ?
Ich verstehe die Logik dahinter noch nicht.
Für mich verkürzt sich dadurch das Intervall um 10/5/2 Sekunden oder habe ich da einen Denkfehler ?


#endif
mSerialTicker = 0;

if(mqttAddr[0] > 0) {
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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++) {
Expand Down Expand Up @@ -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
}


Expand Down
6 changes: 6 additions & 0 deletions tools/esp8266/app.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@
#include "hmSystem.h"
#include "mqtt.h"

// hier läst sich das Verhalten der app in Bezug auf MQTT
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@HorstG-57 insgesamt gute Sache, Danke !

  • Jetzt sollten wir noch die Option __MQTT_NO_DISCOVERCONFIG__ über das Setup änderbar machen.

Die beiden anderen Defines können im Prinzip eigentlich wieder weg:

  • Das __MQTT_AFTER_RX__ ist gut und richtig (!) und
  • __MQTT_TEST__ verstehe ich wie gesagt nicht ganz.
    Für mich liest sich das wie "MQTT Interval wird auf/um 10 Sekunden verkürzt ( nur für testzwecke )"

// 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<packet_t, PACKET_BUFFER_SIZE> BufferType;
typedef HmRadio<RF24_CE_PIN, RF24_CS_PIN, RF24_IRQ_PIN, BufferType> RadioType;
Expand Down