#include #include #include "Button2.h" const int mainTriggerPin = 25; // GPIO pins to check for shorting and wake-up Button2 mainTriggerButton; const char* ssid = "ProotAP"; const char* password = "prootproot!"; const char* mqttServer = "192.168.10.1"; const int mqttPort = 1883; const char* mqttTopic = "test"; WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); TaskHandle_t mqttTaskHandle = NULL; void setupWiFi() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); } void callback(char* topic, byte* payload, unsigned int length) { // This function is called when a message is received from the MQTT server // Add your desired code here to handle the received message } void reconnectMQTT() { while (!mqttClient.connected()) { Serial.println("Connecting to MQTT server..."); if (mqttClient.connect("ESP32Client")) { Serial.println("Connected to MQTT server"); mqttClient.subscribe(mqttTopic); } else { Serial.print("MQTT connection failed, rc="); Serial.print(mqttClient.state()); Serial.println(" Retrying in 5 seconds..."); delay(5000); } } } void setup() { Serial.begin(115200); delay(50); setupWiFi(); mqttClient.setServer(mqttServer, mqttPort); mqttClient.setCallback(callback); mainTriggerButton.begin(mainTriggerPin); mainTriggerButton.setDebounceTime(2); mainTriggerButton.setLongClickTime(250); mainTriggerButton.setClickHandler(mainTriggerHandler); mainTriggerButton.setLongClickHandler(mainTriggerHandler); // this will only be called upon release // mainTriggerButton.setLongClickDetectedHandler(mainTriggerHandler); // this will only be called upon detection mainTriggerButton.setDoubleClickHandler(mainTriggerHandler); mainTriggerButton.setTripleClickHandler(mainTriggerHandler); //xTaskCreatePinnedToCore( // mqttTask, // Task function // "mqttTask", // Task name // 4096, // Stack size (bytes) // NULL, // Task parameter // 1, // Task priority // &mqttTaskHandle, // Task handle // 1 // Task core (0 or 1) //); } int lastInput = 0; String message = ""; void mainTriggerHandler(Button2& btn) { switch (btn.getType()) { case single_click: Serial.print("single "); if (lastInput < 5){ lastInput = lastInput + 1; } else { lastInput = 1; } message = "Butn_000" + String(lastInput) + "_0001"; mqttClient.publish(mqttTopic, message.c_str()); break; case double_click: Serial.print("double "); message = "Butn_0003_0001"; lastInput = 3; mqttClient.publish(mqttTopic, message.c_str()); break; case triple_click: Serial.print("triple "); message = "Butn_0002_0001"; lastInput = 2; mqttClient.publish(mqttTopic, message.c_str()); break; case long_click: Serial.print("long"); message = "Butn_0004_0001"; lastInput = 4; mqttClient.publish(mqttTopic, message.c_str()); break; } Serial.print("click"); Serial.print(" ("); Serial.print(btn.getNumberOfClicks()); Serial.println(")"); Serial.println("sent: " + message); } void loop() { if (!mqttClient.connected()) { reconnectMQTT(); } mainTriggerButton.loop(); mqttClient.loop(); }