Update: 2024-03-10

Esp32 Pushbullet als Arduino Tab.

Push.ino

// ****************************************************************
// Arduino IDE Tab Esp32 PushBullet Modular
// created: Jens Fleischer, 2018-12-30
// last mod: Jens Fleischer, 2021-05-06
// For more information visit: https://fipsok.de
// ****************************************************************
// Hardware: ESP32
// Software: Esp32 Arduino Core 1.0.5 - 2.0.14
// 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* APIKEY = {"Key vom Pushbullet-Konto"}            // Konto Schlüssel einfügen http://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 broadcastingTime {millis()};
  secureClient.setInsecure();                                  // für Core Version vor 1.0.5 Zeile auskommentiren
  if (!secureClient.connect(HOST, 443)) {
    DEBUG_P("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, APIKEY, messagebody.length(), messagebody.c_str());
    DEBUG_P("Push gesendet");
  }
  while (!secureClient.available()) {
    if (millis() - broadcastingTime > timeout) {
      DEBUG_P("Pushbullet Client Timeout !");
      secureClient.stop();
      return false;
    }
  }
  while (secureClient.available()) {               //Emfängt Antwort
    //DEBUG_F("Pushbullet Antwort nach: %4ld ms\n", millis() - broadcastingTime); // 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());
  ........
}