Update: 2020-05-23

Esp8266 Pushbullet als Arduino Tab.

Push.ino

// ****************************************************************
// Sketch Esp8266 PushBullet Modular(Tab)
// created: Jens Fleischer, 2018-06-26
// last mod: Jens Fleischer, 2020-05-23
// For more information visit: https://fipsok.de
// ****************************************************************
// Hardware: Esp8266
// Software: Esp8266 Arduino Core 2.4.2 / 2.5.2 / 2.6.3 / 2.7.1
// Getestet auf: Nodemcu, Wemos D1 Mini Pro, Sonoff Switch, Sonoff Dual
/******************************************************************
  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 <ESP8266WebServer.h> oder #include <ESP8266WiFi.h> muss im Haupttab aufgerufen werden
// Die Übergabe der Nachricht an "pushbullet(string oder String-Object);" erfolgt als char oder String.
/**************************************************************************************/

bool pushbullet(const String &message) {                                 // Push Nachricht senden
  const char* PushBulletAPIKEY = {"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"};
  uint32_t broadcastingTime {millis()};
  WiFiClientSecure secureClient;
  secureClient.setInsecure();
  if (!secureClient.connect(HOST, 443)) {
    Serial.println(F("Pushbullet Verbindung fehlgeschlagen!"));
    return false;
  }
  else {
    String messagebody = R"({"type": "note", "title": "Push vom ESP", "body": ")" + message + R"("})";
    secureClient.printf(PSTR("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());
  }

  while (!secureClient.available()) {
    if (millis() - broadcastingTime > TIMEOUT) {
      Serial.println(F("Pushbullet Client Timeout!"));
      secureClient.stop();
      return false;
    }
  }
  while (secureClient.available()) {               //Emfängt Antwort
    //Serial.printf("Pushbullet Antwort nach: %4ld ms\n", millis() - broadcastingTime); // zeigt die Zeit bis zur Antwort --> passe den Timeout entsprechend an
    String line = secureClient.readStringUntil('\n');
    //Serial.printf("Funktion: %s meldet in Zeile: %d Responce: %s\n", __PRETTY_FUNCTION__, __LINE__, line.c_str());
    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 erfolgen.
Du kannst "pushbullet();" überall in deinem Sketch einbinden.

Beispiel:

******************** Text senden *********************

pushbullet("Wifi verbunden");		// am Ende der "Connect.ino" einfügen.

Beispiel:

*************** Text & Variable senden ***************

float aussentemperatur;
  
pushbullet("Temperatur aussen: " + static_cast<String>(aussentemperatur));

Beispiel:

******* Text senden falls Bedingung erfüllt ist*******

static bool freigabe = true;

if (freigabe && Kesseltemperatur < 75) {
  pushbullet("Holz nachlegen")
  freigabe = !freigabe;
}
if (!freigabe && Kesseltemperatur > 76) {
  freigabe = !freigabe;
}

Beispiel:

********** Uhrzeit & Text senden und loggen **********

File f = SPIFFS.open("/log.txt", "a");                        // Logdatei zum schreiben öffnen
if (pushbullet(Zeitstempel() + " Dein Text")) {
  if (f && freeSpace(100)) {               // Ruft die Funktion im Spiffs Tab, zum prüfen ob genügend freier Speicherplatz vorhanden ist, auf.
    f.printf("%s Push Nachricht gesendet\n", localTime().c_str());
  }
}
else {
  if (f && freeSpace(100)) {
    f.printf("%s Push Nachricht Senden fehlgeschlagen\n", localTime().c_str());
  }
}
f.close();