Skip to content

Commit

Permalink
MQTT test if sending succeeded to avoid congestion
Browse files Browse the repository at this point in the history
  • Loading branch information
Jan ten Hove committed Jun 19, 2017
1 parent 577ee74 commit f1111e5
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 21 deletions.
3 changes: 2 additions & 1 deletion GoodWeLogger.ino
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@


#include <TimeLib.h>
#include <NTPClient.h>
#include <PubSubClient.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <ESP8266HTTPClient.h>
Expand Down
48 changes: 28 additions & 20 deletions MQTTPublisher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ void MQTTPublisher::handle()

if (sendRegular || sendQuick)
{
bool sendOk = true; //if a mqtt message fails, wait for retransmit at a later time
auto inverters = goodweCommunicator->getInvertersInfo();
for (char cnt = 0; cnt < inverters.size(); cnt++)
{
Expand All @@ -111,43 +112,44 @@ void MQTTPublisher::handle()
Serial.print("Publishing prepend topic for this inverter is: ");
Serial.println(prependTopic);
}

if (inverters[cnt].isOnline)
{
if (sendQuick)
{
//send out fast changing values
client.publish((prependTopic.c_str() + String("/online")).c_str(), String(1).c_str());
client.publish((prependTopic.c_str() + String("/vpv1")).c_str(), String(inverters[cnt].vpv1, 1).c_str());
client.publish((prependTopic.c_str() + String("/vpv2")).c_str(), String(inverters[cnt].vpv2, 1).c_str());
client.publish((prependTopic.c_str() + String("/ipv1")).c_str(), String(inverters[cnt].ipv1, 1).c_str());
client.publish((prependTopic.c_str() + String("/ipv2")).c_str(), String(inverters[cnt].ipv2, 1).c_str());
client.publish((prependTopic.c_str() + String("/vac1")).c_str(), String(inverters[cnt].vac1, 1).c_str());
client.publish((prependTopic.c_str() + String("/iac1")).c_str(), String(inverters[cnt].iac1, 1).c_str());
client.publish((prependTopic.c_str() + String("/fac1")).c_str(), String(inverters[cnt].fac1, 2).c_str());
client.publish((prependTopic.c_str() + String("/pac")).c_str(), String(inverters[cnt].pac).c_str());
client.publish((prependTopic.c_str() + String("/temp")).c_str(), String(inverters[cnt].temp, 1).c_str());
client.publish((prependTopic.c_str() + String("/eday")).c_str(), String(inverters[cnt].eDay).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/online")).c_str(), String(1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/vpv1")).c_str(), String(inverters[cnt].vpv1, 1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/vpv2")).c_str(), String(inverters[cnt].vpv2, 1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/ipv1")).c_str(), String(inverters[cnt].ipv1, 1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/ipv2")).c_str(), String(inverters[cnt].ipv2, 1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/vac1")).c_str(), String(inverters[cnt].vac1, 1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/iac1")).c_str(), String(inverters[cnt].iac1, 1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/fac1")).c_str(), String(inverters[cnt].fac1, 2).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/pac")).c_str(), String(inverters[cnt].pac).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/temp")).c_str(), String(inverters[cnt].temp, 1).c_str());

if (inverters[cnt].isDTSeries)
{
//also send tri fase info
client.publish((prependTopic.c_str() + String("/vac2")).c_str(), String(inverters[cnt].vac2, 1).c_str());
client.publish((prependTopic.c_str() + String("/iac2")).c_str(), String(inverters[cnt].iac2, 1).c_str());
client.publish((prependTopic.c_str() + String("/fac2")).c_str(), String(inverters[cnt].iac2, 2).c_str());
client.publish((prependTopic.c_str() + String("/vac3")).c_str(), String(inverters[cnt].vac3, 1).c_str());
client.publish((prependTopic.c_str() + String("/iac3")).c_str(), String(inverters[cnt].iac3, 1).c_str());
client.publish((prependTopic.c_str() + String("/fac3")).c_str(), String(inverters[cnt].iac3, 2).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/vac2")).c_str(), String(inverters[cnt].vac2, 1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/iac2")).c_str(), String(inverters[cnt].iac2, 1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/fac2")).c_str(), String(inverters[cnt].iac2, 2).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/vac3")).c_str(), String(inverters[cnt].vac3, 1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/iac3")).c_str(), String(inverters[cnt].iac3, 1).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/fac3")).c_str(), String(inverters[cnt].iac3, 2).c_str());
}
}
else
{
//regular
client.publish((prependTopic.c_str() + String("/workmode")).c_str(), String(inverters[cnt].workMode).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/workmode")).c_str(), String(inverters[cnt].workMode).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/eday")).c_str(), String(inverters[cnt].eDay).c_str());
//TODO: Rest of data
}
}
else if(sendRegular) //only send offline info on regular basis
client.publish((prependTopic.c_str() + String("/online")).c_str(), String(0).c_str());
if (sendOk) sendOk = client.publish((prependTopic.c_str() + String("/online")).c_str(), String(0).c_str());
}

}
Expand All @@ -156,6 +158,12 @@ void MQTTPublisher::handle()
lastSentQuickUpdate = millis();
if (sendRegular)
lastSentRegularUpdate = millis();

if (debugMode)
{
Serial.print("MQTT send status: ");
Serial.println(sendOk);
}
}


Expand Down
2 changes: 2 additions & 0 deletions MQTTPublisher.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#pragma once
#define MQTT_SOCKET_TIMEOUT 5
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include "SettingsManager.h"
Expand All @@ -9,6 +10,7 @@

#define RECONNECT_TIMEOUT 5000


class MQTTPublisher
{
private:
Expand Down

0 comments on commit f1111e5

Please sign in to comment.