@@ -37,7 +37,6 @@ TimerHandle_t mqttReconnectTimer;
37
37
extern t_wifi_state wifi_state;
38
38
char time_str[32 ];
39
39
40
-
41
40
/* Global initalization (on TTGO startup) */
42
41
void MQTT::init () {
43
42
}
@@ -70,10 +69,16 @@ void MQTT::netsetup() {
70
69
if (strlen (sonde.config .mqtt .password ) > 0 ) {
71
70
mqttClient.setCredentials (sonde.config .mqtt .username , sonde.config .mqtt .password );
72
71
}
72
+
73
+ char lwt[128 ];
74
+ snprintf (lwt, sizeof (lwt), " %sstatus" , sonde.config .mqtt .prefix );
75
+ mqttClient.setWill (lwt, MQTT_QOS, MQTT_RETAIN_TRUE, " lost connection" );
76
+
73
77
MQTT::connectToMqtt ();
74
78
}
75
79
76
80
void MQTT::netshutdown () {
81
+ publishLwt (" offline" );
77
82
mqttClient.disconnect (false ); // nice shutdown....
78
83
delay (200 );
79
84
mqttClient.disconnect (true ); // force
@@ -91,6 +96,7 @@ void MQTT::updateStation( PosInfo *pi ) {
91
96
unsigned long now = millis ();
92
97
if ( (lastMqttUptime == 0 ) || (now - lastMqttUptime >= sonde.config .mqtt .report_interval ) ) {
93
98
MQTT::connectToMqtt ();
99
+ publishLwt (" online" );
94
100
publishUptime ();
95
101
publishPmuInfo ();
96
102
publishGps ();
@@ -106,6 +112,12 @@ int MQTT::mqttGate(uint flag){
106
112
return ((sonde.config .mqtt .active & flag) && mqttClient.connected ());
107
113
}
108
114
115
+ void MQTT::publishLwt (const char *message) {
116
+ char lwt[128 ];
117
+ snprintf (lwt, sizeof (lwt), " %sstatus" , sonde.config .mqtt .prefix );
118
+ mqttClient.publish (lwt, MQTT_QOS, MQTT_RETAIN_TRUE, message);
119
+ }
120
+
109
121
int MQTT::connectToMqtt () {
110
122
if (mqttClient.connected ())
111
123
return 1 ;
@@ -115,6 +127,7 @@ int MQTT::connectToMqtt() {
115
127
return 0 ;
116
128
LOG_D (TAG, " MQTT not connected, connecting...." );
117
129
mqttClient.connect ();
130
+ publishLwt (" online" );
118
131
return 1 ;
119
132
}
120
133
@@ -160,7 +173,7 @@ void MQTT::publishUptime()
160
173
LOG_D (TAG, " publishUptime: sending %s\n " , payload);
161
174
char topic[128 ];
162
175
snprintf (topic, 128 , " %s%s" , sonde.config .mqtt .prefix , " uptime" );
163
- mqttClient.publish (topic, 1 , 1 , payload);
176
+ mqttClient.publish (topic, MQTT_QOS, MQTT_RETAIN_TRUE , payload);
164
177
}
165
178
166
179
void MQTT::publishPmuInfo ()
@@ -187,7 +200,7 @@ void MQTT::publishPmuInfo()
187
200
188
201
char topic[128 ];
189
202
snprintf (topic, sizeof (topic), " %s%s" , sonde.config .mqtt .prefix , " pmu" );
190
- mqttClient.publish (topic, 1 , 1 , payload);
203
+ mqttClient.publish (topic, MQTT_QOS, MQTT_RETAIN_TRUE , payload);
191
204
}
192
205
193
206
@@ -209,7 +222,7 @@ void MQTT::publishGps()
209
222
210
223
char topic[128 ];
211
224
snprintf (topic, sizeof (topic), " %s%s" , sonde.config .mqtt .prefix , " gps" );
212
- mqttClient.publish (topic, 1 , 1 , payload);
225
+ mqttClient.publish (topic, MQTT_QOS, MQTT_RETAIN_TRUE , payload);
213
226
}
214
227
215
228
@@ -225,7 +238,7 @@ void MQTT::publishPeak(double pf, int rssi)
225
238
226
239
char topic[128 ];
227
240
snprintf (topic, sizeof (topic), " %s%s" , sonde.config .mqtt .prefix , " spectrum" );
228
- mqttClient.publish (topic, 1 , /* retain */ false , payload);
241
+ mqttClient.publish (topic, MQTT_QOS_NONE, MQTT_RETAIN_FALSE , payload);
229
242
}
230
243
231
244
// What's the scanner looking at?
@@ -243,7 +256,7 @@ void MQTT::publishQRG(int num, const char* type, char* launchsite, float mhz)
243
256
244
257
char topic[128 ];
245
258
snprintf (topic, sizeof (topic), " %s%s" , sonde.config .mqtt .prefix , " qrg" );
246
- mqttClient.publish (topic, 1 , /* retain */ false , payload);
259
+ mqttClient.publish (topic, MQTT_QOS_NONE, MQTT_RETAIN_FALSE , payload);
247
260
}
248
261
249
262
@@ -257,7 +270,7 @@ void MQTT::publishDebug(char *debugmsg)
257
270
snprintf (payload, 256 , " {\" msg\" : %s}" , debugmsg);
258
271
char topic[128 ];
259
272
snprintf (topic, sizeof (topic), " %s%s" , sonde.config .mqtt .prefix , " debug" );
260
- mqttClient.publish (topic, 1 , /* retain */ false , payload);
273
+ mqttClient.publish (topic, MQTT_QOS_NONE, MQTT_RETAIN_FALSE , payload);
261
274
}
262
275
263
276
void MQTT::publishPacket (SondeInfo *si)
@@ -279,7 +292,7 @@ void MQTT::publishPacket(SondeInfo *si)
279
292
char topic[128 ];
280
293
snprintf (topic, 128 , " %s%s" , sonde.config .mqtt .prefix , " packet" );
281
294
LOG_D (TAG, " publishPacket: %s\n " , payload);
282
- mqttClient.publish (topic, 1 , 1 , payload);
295
+ mqttClient.publish (topic, MQTT_QOS, MQTT_RETAIN_TRUE , payload);
283
296
}
284
297
285
298
String MQTT::getStatus () {
0 commit comments