mirror of
https://gitlab.fdmci.hva.nl/technische-informatica-sm3/ti-projectten/rooziinuubii79.git
synced 2025-08-03 20:04:58 +00:00
added mqtt connection safety
This commit is contained in:
@@ -17,6 +17,7 @@ void parseMQTT(std::string message);
|
|||||||
void CapnSend();
|
void CapnSend();
|
||||||
void reconnectKobuki();
|
void reconnectKobuki();
|
||||||
void monitorKobukiConnection();
|
void monitorKobukiConnection();
|
||||||
|
void monitorMQTTConnection();
|
||||||
// ip, clientID, username, password
|
// ip, clientID, username, password
|
||||||
MqttClient client("ws://145.92.224.21/ws/", "KobukiRPI", "rpi",
|
MqttClient client("ws://145.92.224.21/ws/", "KobukiRPI", "rpi",
|
||||||
"rpiwachtwoordofzo"); // create a client object
|
"rpiwachtwoordofzo"); // create a client object
|
||||||
@@ -32,15 +33,16 @@ void setup() {
|
|||||||
client.connect();
|
client.connect();
|
||||||
client.subscribe("home/commands");
|
client.subscribe("home/commands");
|
||||||
|
|
||||||
// std::thread monitorThread(monitorKobukiConnection);
|
std::thread monitorThread(monitorKobukiConnection);
|
||||||
// monitorThread.detach();
|
std::thread mqttMonitorThread(monitorMQTTConnection);
|
||||||
|
mqttMonitorThread.detach();
|
||||||
|
monitorThread.detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
setup();
|
setup();
|
||||||
// reconnectKobuki();
|
reconnectKobuki();
|
||||||
|
|
||||||
// std::thread connectionMonitor(monitorKobukiConnection);
|
|
||||||
std::thread image(CapnSend);
|
std::thread image(CapnSend);
|
||||||
std::thread safety([&]() { robot.robotSafety(&message); });
|
std::thread safety([&]() { robot.robotSafety(&message); });
|
||||||
std::thread sendMqtt([&]() { sendKobukiData(robot.parser.data); });
|
std::thread sendMqtt([&]() { sendKobukiData(robot.parser.data); });
|
||||||
@@ -57,29 +59,40 @@ int main() {
|
|||||||
image.join();
|
image.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
// void reconnectKobuki() {
|
void reconnectKobuki() {
|
||||||
// unsigned char *null_ptr(0);
|
unsigned char *null_ptr(0);
|
||||||
// while (true) {
|
while (true) {
|
||||||
// if (robot.startCommunication("/dev/ttyUSB0", true, null_ptr) != -1) {
|
if (robot.startCommunication("/dev/ttyUSB0", true, null_ptr) != -1) {
|
||||||
// std::cout << "Kobuki opnieuw verbonden!" << std::endl;
|
std::cout << "Kobuki opnieuw verbonden!" << std::endl;
|
||||||
// break; // Verlaat de loop als de verbinding succesvol is
|
break; // Verlaat de loop als de verbinding succesvol is
|
||||||
// } else {
|
} else {
|
||||||
// std::cerr << "Kobuki niet verbonden. Probeer opnieuw over 3 seconden..." << std::endl;
|
std::cerr << "Kobuki niet verbonden. Probeer opnieuw over 3 seconden..." << std::endl;
|
||||||
// std::this_thread::sleep_for(std::chrono::seconds(3));
|
std::this_thread::sleep_for(std::chrono::seconds(3));
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// void monitorKobukiConnection() {
|
void monitorKobukiConnection() {
|
||||||
// while (true) {
|
while (true) {
|
||||||
// // Check regelmatig of de verbinding actief is
|
// Check regelmatig of de verbinding actief is
|
||||||
// if (!robot.isConnected()) {
|
if (!robot.isConnected()) {
|
||||||
// std::cerr << "Kobuki verbinding verloren. Reconnectie starten..." << std::endl;
|
std::cerr << "Kobuki verbinding verloren. Reconnectie starten..." << std::endl;
|
||||||
// reconnectKobuki();
|
reconnectKobuki();
|
||||||
// }
|
}
|
||||||
// std::this_thread::sleep_for(std::chrono::seconds(5)); // Check iedere 5 seconden
|
std::this_thread::sleep_for(std::chrono::seconds(5)); // Check iedere 5 seconden
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
void monitorMQTTConnection() {
|
||||||
|
while (true) {
|
||||||
|
if (!client.isConnected()) { // Controleer of de client nog verbonden is
|
||||||
|
std::cerr << "MQTT verbinding verloren. Probeer opnieuw te verbinden..." << std::endl;
|
||||||
|
client.connect();
|
||||||
|
client.subscribe("home/commands");
|
||||||
|
}
|
||||||
|
std::this_thread::sleep_for(std::chrono::seconds(5)); // Controleer iedere 5 seconden
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
std::string readMQTT() {
|
std::string readMQTT() {
|
||||||
|
Reference in New Issue
Block a user