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.

Aufbau mit zwei Schaltern an D5 und D10 und einer LED an D9

Aufbau mit zwei Schaltern an D5 und D10 und einer LED an D9

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.

Die TalkBack-APP

Die TalkBack-APP

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

17 Kommentare

  1. Dirk

    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);
    }
    }

  2. Ralph

    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

  3. Leuchten

    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?

    1. Dirk

      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.

      1. Leuchten

        Danke dir für die Hilfe. Ich hatte die Buttons falsch angeschlossen. Deswegen kam kein Signal durch.

  4. Christoph

    Bei Thingspeak/APPS/TalkBack/CommandTest/Edit

    Was genau trage ich da bei Commands ein?

    1. Klaus

      Das heutige Programm versteht „OpenDoor“ und „CloseDoor“. Du kannst natürlich auch eigene Texte einbauen.

  5. nerd

    In diesem Beispiel wird ca jede Sekunde (20*50ms) eine Verbindung auf- und wieder abgebaut. Das scheint mir etwas viel. Vielleicht kommen daher Probleme.

    1. Dirk

      Danach wählt der NanoESP sich wieder neu ins WLAN, das finde ich nicht schön.

  6. Klaus

    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.

    1. hugoboss

      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

  7. stefan

    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

    1. stefan

      auf *keine

  8. Raabinator

    … LED mit Vorwiederstand …

    Hab den heutigen Fehler gefunden!

    1. Dirk

      Welchen Fehler meinst du?

      1. Duden

        So Schön! Ha Ha. Den ersten und hoffentlich einzigen.

      2. Raabinator

        „Vorwiderstand“ wäre richtig

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.