void sendMQTTMessage(const char *topic,const char *payload) { bool result = mqttClient.publish(topic, payload, false); } bool mqttReconnect() { int MQTT_RECONNECT_RETRIES = 0; while (!mqttClient.connected() && MQTT_RECONNECT_RETRIES < MQTT_MAX_RECONNECT_TRIES) { MQTT_RECONNECT_RETRIES++; if (mqttClient.connect(HOSTNAME, MQTT_USER, MQTT_PASS)) { char *message = new char[16 + strlen(HOSTNAME) + 1]; strcpy(message, "p1 meter alive: "); strcat(message, HOSTNAME); mqttClient.publish("sensors/power/p1meter/status", message); } else { delay(5000); } } if (MQTT_RECONNECT_RETRIES >= MQTT_MAX_RECONNECT_TRIES) { return false; } return true; } void sendMetric(String name, String metric) { //if (metric > 0) //{ //char output[10]; //ltoa(metric, output, sizeof(output)); String topic = String(MQTT_ROOT_TOPIC) + "/" + name; sendMQTTMessage(topic.c_str(), metric.c_str()); //} } void sendDataToBroker() { String Metric=""; for ( int i = 0; i < 7; i++) { if ( i != 4) { char output[10]; ltoa(telegramObjects[i].value, output, sizeof(output)); String Str_Data(output); ( i == 0 ) ? Metric = Str_Data : Metric = Metric + ";" + Str_Data; } } sendMetric("KWH_Metric", Metric ); char output[10]; ltoa(telegramObjects[4].value, output, sizeof(output)); String Str_Gas(output); sendMetric("Gas_Metric", Str_Gas ); }