-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHD_MQTT.h
More file actions
93 lines (63 loc) · 2.82 KB
/
HD_MQTT.h
File metadata and controls
93 lines (63 loc) · 2.82 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//======================================== M Q T T ==========================================
void mqttpub (String topic, String msg) // Publish MQTT data
{
if (!setting[MQTT_ENAB].toInt() || !state_mqtt_init) {return;}
String s;
const char *m;
const char *top;
//s = String(g_wifi_mac) + "/" + topic;
s = "klippare/" + topic;
top = s.c_str();
m = msg.c_str();
trace("MQTT Pub: " + s + ", P:" + msg,"SER LF");
client.publish(top, m, false);
}
//-------------------------------------------------------------------------------------------
void mqtt_callback(char* topic, byte* payload, unsigned int length) { // Incomming subscribed MQTT messages
String top, pay;
bool Hit=0;
byte i;
for (int i = 0; i < length; i++) {pay += (char)payload[i]; }
top = String(topic);
if (!Hit){
trace("Unknown MQTT message: " + top + ", P:" + pay,"SER LOG LF");
}
}
//-------------------------------------------------------------------------------------------
void reconnect() { // MQTT reconnect if loosing network
if (FailedMQTTConnectCounter>10) FailedMQTTConnectCounter++; // Connecta en gång per min i 10 min sedan en gång per timme.
if (!setting[MQTT_ENAB].toInt() || (FailedMQTTConnectCounter>10 && FailedMQTTConnectCounter<60)) return;
char m[20];
//trace("Attempting MQTT connection... ","SER LOG");
// Attempt to connect
if (client.connect(g_wifi_mac, setting[MQTT_USER].c_str(), setting[MQTT_PASS].c_str())) {
//if (client.connect(g_wifi_mac, cfg_MQTT_USER, cfg_MQTT_PASS)) {
//connect(const char* id, const char* user, const char* pass, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage, boolean cleanSession);
trace("MQTT Connected with user/pass","SER LOG LF");
FailedMQTTConnectCounter = 0;
// ... and resubscribe
/*
if (setting[MQTT_SUBS].toInt())
{
sprintf(m,"%s/ALARM/SET/#",g_wifi_mac);
client.subscribe(m);
}
*/
state_mqtt_init = true;
}
else
{
//Serial.print("failed, rc="); //Serial.print(client.state());
state_mqtt_init = false;
trace("Failed MQTT connect attempt: " + String(FailedMQTTConnectCounter), "SER LOG LF");
FailedMQTTConnectCounter++;
if (FailedMQTTConnectCounter>60) FailedMQTTConnectCounter=11; // Försök igen om 50 min
}
}
//=====================================================================================================
void mqtt_pub_all() // Send all values on request DUMP
{
if (!setting[MQTT_ENAB].toInt() && state_mqtt_init) return;
mqttpub ("status", lyfcoStatus) ;
mqttpub ("distance", String(distance)) ;
}