Как правильно выполнить запрос POST с ESP8266 к сервису IFTTT Webhook? - PullRequest
0 голосов
/ 16 октября 2019

Я совершенно новичок в модулях Python и ESP8266 (как Arduino). Я пытаюсь сделать запрос POST IFTTT webhook, когда модуль включен, и он успешно подключился к Wi-Fi. Но похоже, что я сделал что-то не так, это не сработало вообще, и я, вероятно, совершенно не в курсе, могу ли я что-нибудь сделать и, возможно, узнать что-то новое?

Следующий код сделан из постоянной копии иВставить, так как я не имею опыта работы с Python (только пока?). Извините, если это выглядит ужасно и непрактично, но это только то, что я имею сейчас.

#include <IFTTTWebhook.h>
#include <ESP8266WiFi.h>

#define led LED_BUILTIN
#define ssid "ssid name"
#define password "pass"
#define IFTTT_API_KEY "key"
#define IFTTT_EVENT_NAME "your event"
//these were filled with the required data, I changed it for privacy reasons.

void setup() {
  Serial.begin(74880);

  connectToWifi();

  //just connected to Wi-Fi
  IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME);
  hook.trigger();
  Serial.print("hook triggered");

  pinMode(led, OUTPUT);
  digitalWrite(led, HIGH);   
  delay(200);              
  digitalWrite(led, LOW); 
  //now sending board to sleep

  ESP.deepSleep(wakePin); 
}
void loop(){
  //if deep sleep is working, this code will never run.
  Serial.println("This shouldn't get printed");
}

void connectToWifi() {
  Serial.print("Connecting to: "); //uncomment next line to show SSID name
  Serial.print(ssid); 
  WiFi.begin(ssid, password);  
  Serial.println(" ");// print an empty line
  Serial.print("Attempting to connect: ");

  //try to connect for 10 seconds
  int i = 10;
  while(WiFi.status() != WL_CONNECTED && i >=0) {
    delay(1000);
    Serial.print(i);
    Serial.print(", ");
    i--;
  }
  Serial.println(" ");// print an empty line

  //print connection result
  if(WiFi.status() == WL_CONNECTED){
    Serial.print("Connected."); 
    Serial.println(" ");// print an empty line
    Serial.print("NodeMCU ip address: "); 
    Serial.println(WiFi.localIP());
  }
  else {
    Serial.println("Connection failed - check your credentials or connection");
  }
}

, если модуль успешно подключился к Wi-Fi, он автоматически отправит POST-запрос webhook, и я получууведомление на моем мобильном телефоне, но в итоге ничего не выходит.

Спасибо за потраченное время.

1 Ответ

0 голосов
/ 16 октября 2019

Если это моя библиотека IFTTTWebhook, я забираю библиотеку. Не используйте это. У меня нет времени, чтобы поддерживать это. Я не хочу публиковать библиотеку, которая небезопасно общается с IFTTT. Обработка HTTPS была движущейся целью (по уважительным причинам), поэтому я забираю библиотеку. Извините за ваше время, потраченное на это. Я бы порекомендовал прочитать API IFTTT и связаться с ним напрямую с помощью ESP8266HTTPClient;это довольно тривиальное упражнение.

...