forked from Buster01/UVR2MQTT
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMQTT.h
93 lines (84 loc) · 2.46 KB
/
MQTT.h
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
WiFiClient wlanClient;
PubSubClient mqtt_client(wlanClient);
boolean mqtt_connect(void) {
if (!wlan_status()) {
return false;
} else {
int counter = 0;
mqtt_client.setServer(mqtt_server, 1883);
//mqtt_client.setCallback(callback);
mqtt_client.connect("UVR2MQTT");
Serial.print("MQTT Connection: ");
while (!mqtt_client.connected())
{
delay(500);
Serial.print(".");
counter++;
if (counter > 15 ) {
Serial.println("Verbindung konnte nicht aufgebaut werden!");
ESP.reset();
delay(2000);
return false;
}
}
Serial.println ("OK");
return true;
}
}
void mqtt_daten_senden() {
Serial.println ("MQTT - Senden!");
String topic = "";
// Sensordaten über mqtt versenden
for (int sv = 1; sv <= 16; sv++) {
if (mqtt_client.connected()) {
topic = "UVR2MQTT/Sensor" + String(sv);
Serial.println("MQTT: " + topic + ": "+ String(SensorValue[sv]));
mqtt_client.publish(topic.c_str(), SensorValue[sv].c_str());
}
else {
mqtt_connect();
}
}
if (mqtt_client.connected()) {
//Wärmemengenzähler über mqtt versenden
mqtt_client.publish("UVR2MQTT/WMZ1currentPower", WMZ1[1].c_str());
mqtt_client.publish("UVR2MQTT/WMZ1kwh", WMZ1[2].c_str());
mqtt_client.publish("UVR2MQTT/WMZ1mwh", WMZ1[3].c_str());
mqtt_client.publish("UVR2MQTT/WMZ2currentPower", WMZ2[1].c_str());
mqtt_client.publish("UVR2MQTT/WMZ2kwh", WMZ2[2].c_str());
mqtt_client.publish("UVR2MQTT/WMZ2mwh", WMZ2[3].c_str());
}
else {
mqtt_connect();
}
// Zustände der Ausgänge übertragen
for (int sv = 1; sv <= 13; sv++) {
if (mqtt_client.connected()) {
topic = "UVR2MQTT/Ausgang" + String(sv);
Serial.println("MQTT: " + topic + ": "+ Ausgang[sv]);
mqtt_client.publish(topic.c_str(), Ausgang[sv]? "1" : "0");
}
else {
mqtt_connect();
}
}
// Drehzahl Ausgänge übertragen
if (mqtt_client.connected()) {
for (int sv = 1; sv <= 4; sv++) {
topic = "UVR2MQTT/Drehzahl" + String(sv);
Serial.println("MQTT: " + topic + ": "+ Drehzahl[sv]);
mqtt_client.publish(topic.c_str(), Drehzahl[sv].c_str());
}
} else {
mqtt_connect();
}
// WLAN RSSI
if (mqtt_client.connected()) {
rssi = WiFi.RSSI();
topic = "UVR2MQTT/RSSI";
Serial.println("MQTT: " + topic + ": "+ rssi);
mqtt_client.publish(topic.c_str(), rssi.c_str());
} else {
mqtt_connect();
}
}