Zuletzt geändert: 2018-08-09

Esp8266 Pushbullet als Arduino Tab.

Pushbullet.ino

// ****************************************************************
// Sketch Esp8266 PushBullet Modular(Tab)
// created: Jens Fleischer, 2018-06-26
// last mod: Jens Fleischer, 2018-08-09
// For more information visit: https://fipsok.de
// ****************************************************************
// Hardware: Esp8266
// 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.
// Die Funktion "Connect();" muss im Setup eingebunden sein.
/**************************************************************************************/

WiFiClientSecure secureClient;

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";
  String messagebody = "{\"type\": \"note\", \"title\": \"Push vom ESP\", \"body\": \"" + message + "\"}";
  uint32_t sendezeit = millis();
  if (!secureClient.connect(host, 443)) {
    Serial.println("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());
  }

  while (!secureClient.available()) {
    if (millis() - sendezeit > timeout) {
      Serial.println("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")) {
      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.

Beispiele



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

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



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

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



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



********** 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", Zeitstempel().c_str());
  }
}
else {
  if (f && freeSpace(100)) {
    f.printf("%s Push Nachricht Senden fehlgeschlagen\n", Zeitstempel().c_str());
  }
}
f.close();


Zurück