Tag 22: TalkBack
In dem heutigen Projekt geht es um eine weitere App der ThingSpeak-Seite, nämlich der TalkBack-App. Mit dieser Funktion ist es möglich, ein Kommando zu erstellen, das vom Controller ausgelesen und ausgeführt wird. Was mit nur einem Controller zunächst sinnlos erscheint, macht Sinn, wenn man zwei oder sogar ein ganzes Netzwerk von Controllern einsetzt. Einige Boards können dann als Sensoren agieren, beispielsweise mit Bewegungsmeldern, und beim Entdecken einer Bewegung ein TalkBack-Kommando senden. Ein weiteres Modul liest das Kommando von der ThingSpeak-Seite und öffnet dann die Tür oder meldet Alarm.
Hinter dem heutigen Türchen befindet sich ein weiterer Taster. Der Aufbau des heutigen Versuchs besteht aus einer LED mit Vorwiderstand und zwei Tastern, wie auf dem unteren Bild zu sehen ist.
Das Programm: Day22_ThinkSpeakTalkback
Zunächst muss nun unter APPS – TalkBack ein neuer TalkBack-Kanal erstellt werden. Wenn Sie möchten, können Sie die Kommandos auch in einem Channel eintragen lassen. Dies kann der bereits erstellte Light-Kanal des 19. Tages sein, oder auch ein eigener Kanal. Alle Kommandos werden dann protokolliert. Wichtig ist aber vor allem der API-Key den Sie an die Stelle #define TalkBackKEY eintragen. Zusätzlich zum API-KEY ist diesmal auch eine ID notwendig, die Sie in der Übersicht unter TalkBack ID finden, nachdem Sie auf Save-TalkBack geklickt haben. Diese ID Tragen Sie hier #define TalkBackID in das Programm ein.
Wenn Sie nun das Programm uploaden und den Seriellen Monitor aufrufen, werden Sie zunächst die Meldung No Command sehen. Drücken Sie nun einen der beiden Taster. Nach kurzer Zeit erscheint dann die Meldung OpenDoor oder CloseDoor, je nach dem welchen Button Sie gedrückt haben. Beim OpenDoor-Kommando beginnt die LED außerdem zu leuchten
Hi,
da die Button mit GND geschaltet werden liegt beim schalten auf Pin 2 und 7 auch Strom. Ich habe mal das Programm geändert und habe diese Pin mit angegeben, da läuft es bei mir stabiler und das ständige einwählen in das Wlan geht gegen Null. auch die Wartezeit von 50 auf 100 erhöht.
#define BUTTON1 5
#define BUTTON2 10
#define BUTTON3 2
#define BUTTON4 7
#define LED 9
#define LED_WLAN 13
#define DEBUG true
#include
SoftwareSerial esp8266(11, 12); // RX, TX
const byte thingPost[] PROGMEM = {
80, 79, 83, 84, 32, 42, 85, 82, 76, 42, 32, 72, 84, 84, 80, 47, 49, 46, 49, 10, 72, 111, 115, 116, 58, 32, 97, 112, 105, 46, 116, 104, 105, 110, 103, 115, 112, 101, 97, 107, 46, 99, 111, 109, 10, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 58, 32, 99, 108, 111, 115, 101, 10, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 120, 45, 119, 119, 119, 45, 102, 111, 114, 109, 45, 117, 114, 108, 101, 110, 99, 111, 100, 101, 100, 10, 67, 111, 110, 116, 101, 110, 116, 45, 76, 101, 110, 103, 116, 104, 58, 32, 42, 76, 69, 78, 42, 10, 10, 42, 65, 80, 80, 69, 78, 68, 42, 10
};
void setup() {
Serial.begin(19200);
esp8266.begin(19200);
if (!espConfig()) serialDebug();
else digitalWrite(LED_WLAN, HIGH);
pinMode(BUTTON1, INPUT_PULLUP);
pinMode(BUTTON2, INPUT_PULLUP);
pinMode(BUTTON3, INPUT_PULLUP);
pinMode(BUTTON4, INPUT_PULLUP);
pinMode(LED, OUTPUT);
}
void loop() {
String com = getTalkBackCom(TalkBackKEY, TalkBackID);
if (com == „“) {
debug („No Command“);
}
else
{
if (com == „OpenDoor“) digitalWrite(LED, HIGH);
if (com == „CloseDoor“) digitalWrite(LED, LOW);
debug(com);
}
for (int i = 0; i <= 20; i++)
{
if (!digitalRead(BUTTON1)) {
sendTalkbackPost(TalkBackKEY, TalkBackID, "OpenDoor");
debug("Send Open");
while (!digitalRead(BUTTON1));
}
if (!digitalRead(BUTTON2)) {
sendTalkbackPost(TalkBackKEY, TalkBackID, "CloseDoor");
debug("Send Close");
while (!digitalRead(BUTTON2));
}
delay(100);
}
}
Hey
ich habe foldenges Problem beim heutigen Tag:
Es wird angezeigt, dass eine Verbindung mit dem WLAN besteht. Dann kommt folgende Fehlermeldung:
ESP SEND ERROR: AT+CIPSTART=“TCP“,“api.thingspeak.com“,80
ESP SEND ERROR: AT+CIPSEND=102
Danach wird neu verbunden und die Fehlereldung erscheint erneut.
Hat jemand eine Idee, wo der Fehler liegen kann?
Schonmal vielen Dank im voraus.
Liebe Grüße
Ralph
Hallo!
Das Board wählt sich ins W-LAN ein, TalkBack ist erstellt,
aber wenn ich auf einen der Taster drücke . . .k passiert nichts. Muss man auf dem TalkBack noch die Commands eintragen? Wenn ich das mache, und auf „SAVE“ drücke, erscheint bei mir im seriellen Monitor „OPENDOOR“. Ansonsten erscheint da sekündlich „No Command“. Mehr passiert nicht. Nix LED nix Tastersignal. Wisst ihr da eine Lösung?
Hi, vielleicht hast du die LED verkehrt angeschlossen.
Der Button am Pin 5 ist für OpenDoor.
Der Button am Pin 10 ist CloseDoor.
Bei meinen Button muss ich beim drücken etwas hin und her bewegen damit sie schalten.
Danke dir für die Hilfe. Ich hatte die Buttons falsch angeschlossen. Deswegen kam kein Signal durch.
Bei Thingspeak/APPS/TalkBack/CommandTest/Edit
Was genau trage ich da bei Commands ein?
Das heutige Programm versteht „OpenDoor“ und „CloseDoor“. Du kannst natürlich auch eigene Texte einbauen.
In diesem Beispiel wird ca jede Sekunde (20*50ms) eine Verbindung auf- und wieder abgebaut. Das scheint mir etwas viel. Vielleicht kommen daher Probleme.
Danach wählt der NanoESP sich wieder neu ins WLAN, das finde ich nicht schön.
Das heutige Projekt funktioniert nicht richtig. Oft kommen „ESP SEND ERROR“. Dann startet der Mikrocontroller teilweise neu.
Den Grund konnte ich bisher leider nicht finden. Die Close wurden jedenfalls immer korrekt gesendet.
Habe selbes Problem, nach mehrmaligen Taster drücken open/close friert das Programm ein.
Teilweise auch Fehlermeldungen wie:
ESP SEND ERROR: AT+CIPSTART=“TCP“,“api.thingspeak.com“,80
ESP SEND ERROR: AT+CIPSEND=102
Hallo zusammen
Seit Tag 11 funktioniert bei mir kein Projekt mehr…
Ich konnte nicht mit der IP des Moduls auf eine Webseite zugreifen(fehlermeldung).
Error im seriellen Monitor…. etc
auf *keine
… LED mit Vorwiederstand …
Hab den heutigen Fehler gefunden!
Welchen Fehler meinst du?
So Schön! Ha Ha. Den ersten und hoffentlich einzigen.
„Vorwiderstand“ wäre richtig