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.
******************** 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();