expanded the esp script to send messages whenever a button is pushed OR released.
This commit is contained in:
parent
834bc01610
commit
da9965cb41
1 changed files with 25 additions and 2 deletions
|
|
@ -10,7 +10,7 @@ const char* mqttTopic = "test";
|
||||||
|
|
||||||
const int gpioPins[] = {25, 26, 27, 14}; // GPIO pins to check for shorting
|
const int gpioPins[] = {25, 26, 27, 14}; // GPIO pins to check for shorting
|
||||||
const unsigned int numPins = sizeof(gpioPins) / sizeof(gpioPins[0]);
|
const unsigned int numPins = sizeof(gpioPins) / sizeof(gpioPins[0]);
|
||||||
const unsigned long debounceDelay = 50; // Debounce delay in milliseconds
|
const unsigned long debounceDelay = 40; // Debounce delay in milliseconds
|
||||||
|
|
||||||
WiFiClient wifiClient;
|
WiFiClient wifiClient;
|
||||||
PubSubClient mqttClient(wifiClient);
|
PubSubClient mqttClient(wifiClient);
|
||||||
|
|
@ -55,7 +55,14 @@ void mqttTask(void* parameter) {
|
||||||
if (mqttClient.connected()) {
|
if (mqttClient.connected()) {
|
||||||
for (unsigned int i = 0; i < numPins; i++) {
|
for (unsigned int i = 0; i < numPins; i++) {
|
||||||
if (debouncers[i].fell()) {
|
if (debouncers[i].fell()) {
|
||||||
String message = "Pin shorted: " + String(gpioPins[i]);
|
String message = "Pin fell: " + String(gpioPins[i]);
|
||||||
|
mqttClient.publish(mqttTopic, message.c_str());
|
||||||
|
Serial.println("Message sent to MQTT server");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (unsigned int i = 0; i < numPins; i++) {
|
||||||
|
if (debouncers[i].rose()) {
|
||||||
|
String message = "Pin rose: " + String(gpioPins[i]);
|
||||||
mqttClient.publish(mqttTopic, message.c_str());
|
mqttClient.publish(mqttTopic, message.c_str());
|
||||||
Serial.println("Message sent to MQTT server");
|
Serial.println("Message sent to MQTT server");
|
||||||
}
|
}
|
||||||
|
|
@ -99,6 +106,7 @@ void loop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool anyPinFell = false;
|
bool anyPinFell = false;
|
||||||
|
bool anyPinRose = false;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < numPins; i++) {
|
for (unsigned int i = 0; i < numPins; i++) {
|
||||||
if (debouncers[i].fell()) {
|
if (debouncers[i].fell()) {
|
||||||
|
|
@ -107,6 +115,13 @@ void loop() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < numPins; i++) {
|
||||||
|
if (debouncers[i].rose()) {
|
||||||
|
anyPinRose = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (anyPinFell) {
|
if (anyPinFell) {
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
vTaskNotifyGiveFromISR(mqttTaskHandle, &xHigherPriorityTaskWoken);
|
vTaskNotifyGiveFromISR(mqttTaskHandle, &xHigherPriorityTaskWoken);
|
||||||
|
|
@ -115,5 +130,13 @@ void loop() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (anyPinRose) {
|
||||||
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
|
vTaskNotifyGiveFromISR(mqttTaskHandle, &xHigherPriorityTaskWoken);
|
||||||
|
if (xHigherPriorityTaskWoken == pdTRUE) {
|
||||||
|
portYIELD_FROM_ISR();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
delay(10); // Adjust the delay as per your requirements
|
delay(10); // Adjust the delay as per your requirements
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue