-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathPOL_MQTT.cpp
54 lines (47 loc) · 1.2 KB
/
POL_MQTT.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include "POL_MQTT.h"
#include "POL_Config.h"
WiFiClient espClient;
PubSubClient clientMQTT(espClient);
POL_MQTT::POL_MQTT() { }
void POL_MQTT::setup(MQTT_CALLBACK_SIGNATURE)
{
clientMQTT.setServer(mqttServer, mqttPort);
clientMQTT.setCallback(callback);
}
void POL_MQTT::checkConnection() {
if (!clientMQTT.connected()) {
Serial.println("Try to reconnect to mqtt server...");
reconnect();
}
clientMQTT.loop();
}
void POL_MQTT::reconnect() {
Serial.println("Reconnecting...");
while (!clientMQTT.connected()) {
if (clientMQTT.connect(mqttClientId, mqttUser, mqttPass)) {
Serial.println("conected");
clientMQTT.publish(mqttPublishID, "HELLO!");
clientMQTT.subscribe(mqttSubscribeID);
} else {
delay(5000);
Serial.println("MQTT Failed");
}
}
}
void POL_MQTT::sendMessage(char* message) {
checkConnection();
if (clientMQTT.connected()) {
clientMQTT.publish(mqttPublishID, message);
}
}
String POL_MQTT::getPayloadText(byte* payload, unsigned int length) {
String payloadText;
for (int i = 0; i < length; i++)
{
char c = (char)payload[i];
payloadText += c;
}
return payloadText;
}