• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

NodeMCU - IFTTT Trigger funktioniert nicht.

Zuyas

Mau

Registriert
13 Sep. 2013
Beiträge
257
Ort
Aachen
Hallo,

ich habe ein "NodeMCU ESP8266 ESP-12E WiFi" und als IDE verwende ich Arduino.
Ich Sammel grade meine ersten Erfahrungen damit und für mein Projekt möchte ich per Knopfdruck eine IFTTT aktion Auslösen.
Wenn ich die URL selber im Browser aufrufe klappt das auch, per Knopfdruck auf dem Controller jedoch nicht.

Der Code ist:
#include <ESP8266WiFi.h>

const char* ssid = "XXXX";
const char* password = "XXXX";
const char* host = "maker.ifttt.com";
const char* apiKey = "XXXX";

int pin = 0;

volatile int flag = false;
const char* PIN_state = "not pressed";

void PINStatus()
{
PIN_state = "bell pressed";
flag = true;
}

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

Serial.println("door bell integration with IFTTT");
delay(100);
pinMode(pin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(pin), PINStatus, FALLING);

Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}

void loop() {
if(flag)
{
Serial.print("connecting to ");
Serial.println(host);

WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort))
{
Serial.println("connection failed");
return;
}

String url = "/trigger/door_bell/with/key/";
url += apiKey;

Serial.print("Requesting URL: ");
Serial.println(url);
client.print(String("POST ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Content-Type: application/x-www-form-urlencoded\r\n" +
"Content-Length: 13\r\n\r\n" +
"value1=" + PIN_state + "\r\n");
flag = false;
}

delay(100);
}
Der Serial Monitor zeigt mir an:
um 0x2d
v0fd86a07
~ld
door bell integration with IFTTT
Connecting XXXX
.
IP address:
192.168.0.31
und wenn ich den Knopf drücke sagt er mir:
connecting to maker.ifttt.com
Requesting URL: /trigger/door_bell/with/key/XXXX
Allerdings triggert das Event nicht. Hat jemand eine Idee?

lg Zuyas
 

Ungesund

Feiner Herr

Registriert
15 Juli 2013
Beiträge
1.830
Ort
Achterbahn
Heyho Zuyas,

ist das Event "trigger/doorbell/with/key/" ein offizielles IFTTT Event, speziell für den Einsatz als Türklingel, oder nutzt du dazu auch die IFTTT Maker Webhooks, und hast das selbst definiert? Wenns Webhooks sind, kommt der evtl. nicht mit den Slashes klar... würde in dem Fall das Event so simpel wie nur möglich nennen, ist ja nur fürs triggern.

Ich bin auch kein Mega-Arduino-Crack, habe aber vor einem halben Jahr etwas ähnliches gebastelt.

Ist eine Vorrichtung um den eigenen Briefkasten "smart" zu machen, ebenfalls aud NodeMCU Basis. Beim Auslösen eines Kontakts im Briefkasten schließt sich der Stromkreis an dem der ESP hängt und der Sketch wird ausgeführt (sende Message an Handy via IFTTT). Danach geht der ESP in den deep Sleep, entnehmen der Post trennt ihn wieder vom Strom, bis zum nächsten auslösen. (Wegen Battery-Usage)

Evtl. hilft dir ja der Sketch den ich dafür geschrieben habe, musste ich damals auch Dokumentieren, das passt ja jetzt. Musst du halt schauen was du da für deine Zwecke raus ziehen kannst, aber zumindest stellt es eine getestete Umsetzung des triggerns der IFTTT-Webhooks dar. :)

[KW]/*
Erstellt unter Zuhilfename von:
c't "Dashbutton Build": https://github.com/pinae/ESP8266-Dash
IFTTT Maker Guide: https://platform.ifttt.com/maker/guide
ESP8266 Arduino-IDE Example "Blink"
ESP8266 Arduino-IDE Example "Wificlient"
*/

// Miteinbezogene Haupt-Libraries:

#include <IFTTTMaker.h> // https://github.com/witnessmenow/arduino-ifttt-maker
#include <ESP8266WiFi.h> //weitere Infos dazu hier: http://esp8266.github.io/Arduino/versions/2.1.0-rc1/doc/libraries.html
#include <WiFiClientSecure.h>

// Variabeln werden hier definiert:
// IFTTT Login/Trigger Infos

#define KEY "HIER IFTTT_API KEY EINFÜGEN" // IFTTT Key, also der 22-Stellige Code in der URL unter "https://ifttt.com/services/maker_webhooks/settings"
#define EVENT_NAME "button_pressed" // Name des "Events" festgelegt beim erstellen eines IFTTT Applets
#define AIO_SERVER "maker.ifttt.com" // IFTTT Server URL

// LED für Status-Info wird definiert. Hier bediene ich mich der Internen ESP3266-NODEMCU LED

#define LED LED_BUILTIN

// Login Infos des Wlans

#define mySSID "Wifi-Netzwerkname"
#define myPASSWORD "Wifi-Passwort"


WiFiClientSecure client;
IFTTTMaker ifttt(KEY, client);

void setup() {
Serial.begin(115200);
delay(100);
Serial.println("Start");

pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH);

// Der Wlan-Mode wird als Client (Station) definiert (WIFI_STA)

WiFi.mode(WIFI_STA);
delay(100);

// Verbindung mit dem Wlan wird hergestellt.
// Dazu nutzen wir die im Sketch oben festgelegten Variabeln.

Serial.print("Connecting Wifi: ");

// Dazu nutzen wir die im Sketch oben festgelegten Variabeln.

Serial.println(mySSID);
WiFi.begin(mySSID, myPASSWORD);

// Ebenso legen wir fest nach wie vielen Versuchen der Verbindungsaufbau abgebrochen wird.

int retries = 50;
while (WiFi.status() != WL_CONNECTED && --retries > 0) {
Serial.print(".");

// Ist eine verbindung aufgebaut, geben wir dem ganzen ein wenig Zeit

delay(500);
}
if (retries == 0) ESP.restart();
Serial.println("");
Serial.print("WiFi connected ");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.print("Connecting IFTTT: ");
retries = 10;
digitalWrite(LED, HIGH);
unsigned long entry = millis();

// Hier wird das IFTTT Event getriggert. Dazu können noch 3 eigene Variabeln definiert werden.
while (!ifttt.triggerEvent(EVENT_NAME, "Die Post war da!", "Post wartet im Briefkasten.", "Lala!") && retries > 0) {
Serial.println((millis() - entry) / 1000.0);
entry = millis();
Serial.print("!");
}
if (retries > 0) {
Serial.println("Successfully sent");
blinkSuccess();
}
else {
Serial.println("Got no success message.");
blinkError();
}
Serial.println("Going to sleep.");
ESP.deepSleep(0);
}

void loop() {
yield();
}

// Hier wird das Verhalten der LED bei erfolgreichem Versenden des Requests an IFTTT definiert.
// Dazu habe ich zwei schöne LED Pattern aus dem oben genannten Sketch "ESP8266-Dash" kopiert,
// da meinem Mathematik-unfähigen Hirn die darin gemachten Berechnungen im for-loop völlig abgehen.

// Blink Success ist ein Blinken dass langsamer wird, Symbolisch für eine Nachricht die in die Ferne geschickt wird.

void blinkSuccess() {
for (int i = 4; i < 50; i = (5 * i) >> 2) {
digitalWrite(LED, HIGH); // turn the LED off
delay(10 * i); // wait
digitalWrite(LED, LOW); // turn the LED on
delay(10 * i); // wait
}
}

// BlinkError ist ein schnelles, beständiges Blinken, das nervt und zeigt dass etwas nicht stimmt.

void blinkError() {
for (int i = 0; i < 28; i++) {
digitalWrite(LED, HIGH); // turn the LED off
delay(125); // wait
digitalWrite(LED, LOW); // turn the LED on
delay(125); // wait
}
}

// Hat der ESP366 alle Aufgaben erfüllt, geht er in einen Deep-Sleep Modus, bis zum nächsten Reset,
// bei dem der Sketch dann erneut ausgeführt wird.

void shutdown() {
Serial.println("Shutting down.");
Serial.println("Going to sleep.");
//digitalWrite(PORT, LOW); // make sure, the ESP is enabled even if button is released
ESP.deepSleep(0);
Serial.println("Sleep failed.");
while (1) {
blinkError();
}
}
[/KW]
 

Zuyas

Mau

Registriert
13 Sep. 2013
Beiträge
257
Ort
Aachen
  • Thread Starter Thread Starter
  • #3
Vielen Dank für deine Antwort.
ist das Event "trigger/doorbell/with/key/" ein offizielles IFTTT Event, speziell für den Einsatz als Türklingel, oder nutzt du dazu auch die IFTTT Maker Webhooks, und hast das selbst definiert?
Maker Webhooks selbst definiert.

Auch mit deinem Code habe ich das Problem, dass nichts passiert. Hier der Log:
um 0x2d
v0fd86a07
~ld
Start
Connecting Wifi: XXXX
...
WiFi connected IP address: 192.168.0.31
Connecting IFTTT: 0.67
!0.63
!0.71
!0.74
!0.67
!0.63
!0.64
!0.64
!0.64
!Got no success message.
Going to sleep.
 

Ungesund

Feiner Herr

Registriert
15 Juli 2013
Beiträge
1.830
Ort
Achterbahn
- Hast du in der Arduino IDE alle Libraries die im Sketch genannt sind installiert?
- Hast du bei IFTTT ein Event mit dem Namen "button_pressed" erstellt, und deinen eigenen API-Key in den sketch eingefügt, bevor du ihn ausgeführt hast? Sonst hat der ja nichts was er triggern könnte.
- Kommentier mal den Part mit dem er in den sleep-mode geht raus, und schau ob du den ESP auf netzwerkebene überhaupt anpingen kannst, nachdem er sich laut log mit dem Wlan verbunden hat.
- Wenn dem so ist und du ihn anpingen kannst, verhindert evtl. dein Router eine Verbindung des ESP zu IFTTT, da mal schauen was die firewall sagt.
- Letztendlich weiß ich nicht wie du dein IFTTT configt hast, da können auch noch Fehlerquellen liegen.
 

Zuyas

Mau

Registriert
13 Sep. 2013
Beiträge
257
Ort
Aachen
  • Thread Starter Thread Starter
  • #5
Problem liegt am Netzwerk, ich habe dafür einen neuen Beitrag angelegt.
 

Anhänge

  • ifttt.png
    ifttt.png
    87,7 KB · Aufrufe: 527
Zuletzt bearbeitet:
Oben