Habe hier gestern ein kleines Projekt realisiert mit dem ESP8266 (Wifi Modul, Daumennagel-groß, ab 3 EUR in der Bucht), mit Hilfe dessen sich z.B. ein Schlüsselanhänger bauen läßt, der auf Knopfdruck mit LED-Blinken die Warmwassertemperatur anzeigt :
// Sketch für ESP8266 WIFI Board
// Verbindet zum WLAN-Access-Point (blaue LED leuchtet ständig)
// Nach Verbindung erlischt LED
// Verbindet sich zum eBus Dämon (DEINEBUSSERVER auf Port 8888)
// Fragt die Boilertemperatur ab (betrd boilertemp => kann je nach Kessel anders sein, gestestet mit Wolf COB20)
// und blinkt je nach Temperatur - 10-19°C - 1 mal, 20-29°C 2mal, 30-39°C - 3mal usw...
// Versuchsaufbau mit ESP8266 und 3 V Batterie, Taster zum Einschalten.
#include <ESP8266WiFi.h>
#undef SERIAL
/* ANPASSEN !!! */
const char* ssid1 = "SSID1";
const char* ssid2 = "SSID2";
const char* password = "T0p$€cr€tp4$$w0rd";
const int MaxTime = 3000;
char server[] = "DEINEBUSSERVER";
WiFiClient client;
unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
const unsigned long postingInterval = 10L * 1000L; // delay between updates, in milliseconds
void setup() {
#ifdef SERIAL
Serial.begin(115200);
delay(10);
#else
pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level
#endif
int TimeElapsed =0;
WiFi.begin(ssid1, password);
while ( (WiFi.status() != WL_CONNECTED) && (TimeElapsed < MaxTime) ) {
delay(500);
TimeElapsed += 500;
#ifdef SERIAL
Serial.print(".");
#endif
}
TimeElapsed =0;
if (WiFi.status() != WL_CONNECTED)
{
WiFi.begin(ssid2, password);
while ( (WiFi.status() != WL_CONNECTED) && (TimeElapsed < MaxTime) ) {
delay(500);
TimeElapsed += 500;
#ifdef SERIAL
Serial.print(".");
#endif
}
}
#ifdef SERIAL
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
#else
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH
delay(500); // Wait for two seconds (to demonstrate the active low LED)
#endif
}
void ebusConnect() {
// close any connection before send a new request.
// This will free the socket on the WiFi shield
client.stop();
// if there's a successful connection:
if (client.connect(server, 8888)) {
#ifdef SERIAL
Serial.println("connecting...");
#endif
// send the HTTP PUT request:
client.println("");
client.println("read betrd boilertemp");
// note the time that the connection was made:
lastConnectionTime = millis();
} else {
// if you couldn't make a connection:
#ifdef SERIAL
Serial.println("connection failed");
#endif
}
}
void loop() {
// if there's incoming data from the net connection.
// send it out the serial port. This is for debugging
// purposes only:
/*
while (client.available()) {
char c = client.read();
Serial.write(c);
}
*/
while(client.available()){
String line = client.readStringUntil('\r');
//Serial.print(line);
float f = line.toFloat();
if ( ( f>1 ) && (f<100) )
{
int i = int(f / 10);
for (int j=0; j<i ; j++)
{
#ifdef SERIAL
Serial.print ("X");
#else
digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level
delay(200); // Wait for a second
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH
delay(500); // Wait for two seconds (to demonstrate the active low LED)
#endif
}
#ifdef SERIAL
Serial.println("");
#endif
}
}
// if ten seconds have passed since your last connection,
// then connect again and send data:
if (millis() - lastConnectionTime > postingInterval) {
ebusConnect();
}
}
Hi,
nette Idee!
Spiele auch schon einige Zeit mit dem ESP8266 rum...
...super was man für das Geld und der Größe bekommt.
Aber das mit dem Schlüsselanhänger wird so nicht funktionieren: Batteriebetrieb!
Ich sehe kein Power-Save Modus etc. (oder ich bin zu blind) und selbst mit (habe ich bereits getestet) halten Batterien nicht wirklich lange:
komme aktuell bei alle 10min für ca. 4-8sec wach (messen, bei mir Tankfüllstand und senden) auf ca. 1Monat...
...allerdings mit DeepSleep dazwischen bzw. schalte ich das ganze mit einem ATtiny, welcher meist im DeepSleep ist, direkt an der Batterie hängt und somit die ganzen StepUp/Down-Module etc. die (evtl.) noch nötig sind und die Sensoren etc. auch mit schlafen zu legen...
Wenn du eine Lösung für Batteriebetrieb hast: BITTE MITTEILEN!!!! DANKE!
Gruß, Joachim
Hallo Joachim. Ja, sehr gut beobachtet - Batterielebensdauer ist ein Problem. Ich hatte das zunächst mal ganz naiv mit einer CR 2032 Zelle getestet, die war natürlich im Nu leer. Momentan läuft das ganze mit 2 AA Zellen und wird nur bei Bedarf mit einem Taster eingechaltet. Du musst also so lange auf dem Taster bleiben, bis die Init-Sequenz vorbei ist.
Ich habe (noch) keine Lösung für das Energie-Problem - meine versteckte Hoffnung war eigentlich, durch das Starten der Diskussion Hinweise und Erfahrungen anderer Benutzer zu erhalten.
LG
Marc
PS : Einschalten mit einem ATTiny ist ne coole Idee ;-)
PPS : Tankfüllstand abfragen ist Auch cool.
=> poste doch bitte mal Deine Sketche !
Hi Marc,
kein schlechter Gedanke!
Prinzipiell...
Aber ich musste leider fesstellen, dass die meisten Threads hier (zumindest die ich bislang finden konnte) sich nicht wirklich um Stromsparen/Batteriebetrieb kümmern...
Hier die wo ich schon unterwegs war:
https://forum.fhem.de/index.php/topic,50388.0.html
(https://forum.fhem.de/index.php/topic,50388.0.html)
https://forum.fhem.de/index.php/topic,46205.msg416402.html#msg416402
(https://forum.fhem.de/index.php/topic,46205.msg416402.html#msg416402)
Aber es gibt glaube ich mittlerweile auch ein eigenes ESP8266 Unterforum...
Allerdings habe ich schon so einiges versucht Strom zu sparen aber für meine Anwendung "Tankfüllstand für Balkonwassertank" mit Mindestlaufzeit 8Monate und ca. alle halbe Stunde/Stunde den Wasserstand komme ich wohl mit dem ESP nicht weiter.
Gut es gibt noch Möglichkeiten: statt 2AA 4AA oder LiIonAccu oder oder aber wenn der ESP an ist, braucht er halt schon ne Menge Saft ca. 500mA und das ist dann sehr viel für Batteriebetrieb, auch wenn er nur alle paar Minuten ein paar Sekunden läuft.
Evtl. für deine Anwendung ab und an mal (so 1-2-3-4 mal am Tag?) kurz aufwecken könnten 2AA schon ein Weilchen halten...
Viel Erfolg!
Aber ich werde jetzt erst mal in Richtung mySensors schauen...
...aber den ESP hab ich noch nicht ganz aufgegeben, macht einfach zu viel Spaß der kleine Käfer ;-)
Gruß, Joachim