2018-12-30

Esp32 Pushbullet als Arduino Tab.

Push.ino

// ****************************************************************
// Sketch Esp32 PushBullet Modular(Tab)
// created: Jens Fleischer, 2018-12-30
// last mod: Jens Fleischer, 2018-12-30
// For more information visit: https://fipsok.de
// ****************************************************************
// Hardware: ESP32
// Software: https://pushbullet.com
// Getestet auf: ESP32 NodeMCU-32s
/******************************************************************
  Copyright (c) 2018 Jens Fleischer. All rights reserved.

  This file is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.
  This file is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.
*******************************************************************/
// Diese Version von PushBullet sollte als Tab eingebunden werden.
// #include <WebServer.h> oder #include <WiFi.h> muss im Haupttab aufgerufen werden
// Die Übergabe der Nachricht an "pushbullet(string oder String-Object);" erfolgt als char oder String.
/**************************************************************************************/

#include <WiFiClientSecure.h>

WiFiClientSecure secureClient;

bool Pushbullet(const String &message) {                      // Push Nachricht zum Klingelkasten schicken
  const char* PushBulletAPIKEY = "Key vom Pushbullet-Konto";  // Konto Schlüssel einfügen https://pushbullet.com
  const uint16_t timeout = 2000;                              // Zeit für Wartezeit auf Antwort in Millisekunden einstellen
  const char*  host = "api.pushbullet.com";
  String messagebody = R"({"type": "note", "title": "Push vom ESP 32", "body": ")" + message + R"("})";
  uint32_t sendezeit = millis();
  if (!secureClient.connect(host, 443)) {
    DEBUG("Pushbullet Verbindung fehlgeschlagen !");
    return false;
  }
  else {
    secureClient.printf("POST /v2/pushes HTTP/1.1\r\nHost: %s\r\nAuthorization: Bearer %s\r\nContent-Type: application/json\r\nContent-Length: %d\r\n\r\n%s\r\n"\
                        , host, PushBulletAPIKEY, messagebody.length(), messagebody.c_str());
    DEBUG("Push gesendet");
  }
  while (!secureClient.available()) {
    if (millis() - sendezeit > timeout) {
      DEBUG("Pushbullet Client Timeout !");
      secureClient.stop();
      return false;
    }
  }
  while (secureClient.available()) {               //Emfängt Antwort
    //Serial.printf("Pushbullet Antwort nach: %4ld ms\n", millis() - sendezeit); // zeigt die Zeit bis zur Antwort --> passe den Timeout entsprechend an
    String line = secureClient.readStringUntil('\n');
    if (line.startsWith("HTTP/1.1 200 OK")) {
      secureClient.stop();
      return true;
    }
  }
  return false;
}


Der Aufruf zum senden von Push Nachrichten kann aus jedem beliebigen Programmteil, nach dem Verindungsaufbau erfolgen.
Du kannst "pushbullet();" überall in deinem Sketch einbinden.

Beispiel



******************** Text & Datum/Uhrzeit *********************

void setup() {
  ........
  pushbullet((String)"Systemstart " + localTime());
  ........
}


Zurück