Hallo zusammen,
heute habe ich das letzte Projekt für dieses Jahr abgeschlossen. Einen DIY Dash Button mit Akku Überwachung. Die Amazon Dash Buttons sind günstig und OK, ABER für mich nicht „Maker“ freundlich. Gut das gestern der erste meiner Amazon Dash Buttons kaputt gegangen ist
Als Grundlage dient wieder ein ESP8266 und ein LIPO Akku mit Schutzelektronik. Dieses mal benutze ich beim ESP8266 keinen DeepSleep, sondern lasse den ESP8266 über den Taster mit Spannung versorgen. Bedeutet: Der Taster muss so lange gedrückt werden, bis der HTTP Request abgesetzt wurde. Das dauert in der Regel 2-3 Sekunden. Vorteil: Wenn der Taster nicht gedrückt ist, fließt auch kein Strom und der Akku hält theoretisch ewig ( Selbstentladung gibt es natürlich ).
Der ESP8266 ist auch bei diesem Projekt mit der Arduino IDE programmiert. Sobald der Taster gedrückt wird, verbindet sich der ESP mit dem WIFI und setzt einen HTTP Request an Symcon ab. Dabei wird auch gleich die Spannung vom Akku mit übertragen und in einer Variable in Symcon geloggt. Mal sehen, wie lange der Akku hält :-). Gehäuse ist in Fusion 360 gezeichnet und auf meinem CR-10 gedruckt.
Hier der Code vom ESP:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
ADC_MODE(ADC_VCC); //vcc read
const char* ssid = "xxx";
const char* password = "xxx";
#define LED D4 //GPIO2 - Led auf dem Modul selbst
int i;
void setup()
// Connect with WIFI
{
pinMode(LED, OUTPUT); // Port aus Ausgang schalten
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print("Connecting..");
}
// Send Webhook only once
digitalWrite(LED, LOW);
float vdd = ESP.getVcc() / 1000.0;
vdd = vdd + 0.1;
String vdd_string;
vdd_string = String(vdd);
//Serial.println(vdd);
if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status
HTTPClient http; //Declare an object of class HTTPClient
http.begin("http://xxx.xxx.xxx.xxx:3777/hook/dash_linus/?VCC="+vdd_string); //Specify request destination
int httpCode = http.GET(); //Send the request
if (httpCode > 0) { //Check the returning code
String payload = http.getString(); //Get the request response payload
Serial.println(payload); //Print the response payload
}
http.end(); //Close connection
}
digitalWrite(LED, HIGH);
}
void loop() {
}
In IP Symcon habe ich einen Webhook erstellt, der beim Aufruf das Modbus Coil toggelt und den Wert des Akkus in eine Variable schreibt.