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.
******************** Text & Datum/Uhrzeit *********************
void setup() {
........
pushbullet((String)"Systemstart " + localTime());
........
}