0

So i have this code that whenever i click a button a interrupt starts. In this interrupt i want to do a get request to a webserver.

The thing is seperate the code, the interrupt code works and without an interrupt the http request also works. But when i put this together it doesn't.

Does anybody have an idea why this doesn't work?

// Libraries 
#include <ESP8266HTTPClient.h>
#include<ESP8266WiFi.h>
char ssid[] = "";
char pass[] = "";
int ledpin = 5; // D1(gpio5)
int button = 4; //D2(gpio4)
int buttonState=0;
ICACHE_RAM_ATTR void ISR() {
 static unsigned long last_interrupt_time = 0;
 unsigned long interrupt_time = millis();
 if (interrupt_time - last_interrupt_time > 200)
 {
 Serial.println("Drukknop ingedruk");
 Serial.println("Sending message to server");
 if (WiFi.status()==WL_CONNECTED)
 {
 HTTPClient http;
 String url="<httpurl>";
 http.begin(url);
 http.addHeader("Content-Type","text/plain");
 int httpCode=http.GET();
 Serial.println(httpCode);
 String payload=http.getString();
 Serial.println("While sending I received this from server : "+payload);
 http.end();
 }
 else
 {
 Serial.println("Internet Problem!");
 } 
 }
 last_interrupt_time = interrupt_time; 
}
void setup() {
 Serial.begin(115200);
 WiFi.begin(ssid,pass);
 while(WiFi.status() !=WL_CONNECTED)
 {
 delay(500);
 Serial.println("Waiting for connection");
 }
 Serial.println("Connected...");
 delay(1000);
 if (WiFi.status() ==WL_CONNECTED)
 {
 Serial.println("Wi-Fi Connected!");
 }
 delay(5000);
 Serial.println("ok");
 pinMode(button, INPUT_PULLUP);
 attachInterrupt(digitalPinToInterrupt(button), ISR, RISING);
}
void loop() {
}
asked Mar 25, 2020 at 18:27

1 Answer 1

1

Doing something as complex as a HTTP request in an interrupt is a very very silly idea. Instead set a flag in the interrupt routine and examine that in the main loop() function to perform your HTTP request.

answered Mar 25, 2020 at 18:28
2
  • Thank you, this works Commented Mar 25, 2020 at 18:33
  • @ThomasVanRaemdonck if it works (and it should) please accept Majenko's answer as correct; that helps other users see the correct answer and gives Majenko credit. Commented Mar 25, 2020 at 20:15

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.