Dann halte dich mal ran. Ich glaub es sind 5 Stück, die man haben muss.
Hier gibt es unfassbar viele interessante Themen.
Alternativ könntest Du in einem separaten Thread Dein geplantes Projekt vorstellen.
Dann halte dich mal ran. Ich glaub es sind 5 Stück, die man haben muss.
Hier gibt es unfassbar viele interessante Themen.
Alternativ könntest Du in einem separaten Thread Dein geplantes Projekt vorstellen.
Done.
Danke für den Hinweis.
Auf der Suche nach anderen Platinen, hatte ich die DIG Platinen die Tage noch in der Hand. Also ja, ich habe noch welche liegen.
Alles weitere via PN - aber da gab es Einschränkungen, soweit ich weiß. Du musst erst eine bestimmte Anzahl Beiträge geschrieben haben. Oder den Admin bezirzen ![]()
So evtl. flackerfrei
#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <TFT_eSPI.h>
#include <SPI.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
/* =====================
WLAN / SHELLY
===================== */
const char* ssid = "daheim";
const char* password = "Dein Wlan Passwort";
String Shelly_IP = "192.168.1.100"; // <-- IP DES SHELLY
/* =====================
HARDWARE
===================== */
#define LDR_PIN 34
#define TFT_BL 21
/* =====================
DISPLAY
===================== */
TFT_eSPI tft = TFT_eSPI();
TFT_eSprite sprite = TFT_eSprite(&tft);
/* =====================
VARIABLEN
===================== */
unsigned long timer = 0;
unsigned long interval = 2000;
int pwr1 = 0, pwr2 = 0, pwr3 = 0, pwrsum = 0;
int showIP = 1;
bool debugging = false;
/* =====================
SHELLY HTTP
===================== */
int getPower(const String& url)
{
HTTPClient http;
WiFiClient client;
int pwr = 0;
if (http.begin(client, url))
{
int code = http.GET();
if (code == HTTP_CODE_OK)
{
JsonDocument doc;
deserializeJson(doc, http.getString());
pwr = doc["power"] | 0;
}
http.end();
}
return pwr;
}
/* =====================
SETUP
===================== */
void setup()
{
Serial.begin(115200);
pinMode(TFT_BL, OUTPUT);
digitalWrite(TFT_BL, HIGH);
analogReadResolution(12);
// TFT
tft.init();
tft.setRotation(0);
tft.fillScreen(TFT_BLACK);
// Sprite (Framebuffer)
sprite.setColorDepth(16);
sprite.createSprite(240, 320);
// WLAN
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
ArduinoOTA.handle();
delay(10);
}
// OTA
ArduinoOTA.setHostname("Shelly_ESP32_2432");
ArduinoOTA.setPassword("admin");
ArduinoOTA.begin();
}
/* =====================
LOOP
===================== */
void loop()
{
ArduinoOTA.handle();
if (millis() - timer > interval)
{
timer = millis();
if (WiFi.status() == WL_CONNECTED)
{
pwr1 = getPower("http://" + Shelly_IP + "/emeter/0");
pwr2 = getPower("http://" + Shelly_IP + "/emeter/1");
pwr3 = getPower("http://" + Shelly_IP + "/emeter/2");
pwrsum = pwr1 + pwr2 + pwr3;
}
// ---------- BACKLIGHT ----------
int ldr = analogRead(LDR_PIN);
int pwm = map(ldr, 4095, 0, 40, 255);
pwm = constrain(pwm, 40, 255);
ledcWrite(0, pwm);
// ---------- SPRITE ZEICHNEN ----------
sprite.fillSprite(TFT_BLACK);
sprite.setTextWrap(true);
// Titel
sprite.setTextColor(TFT_YELLOW);
sprite.setTextSize(2);
sprite.setCursor(10, 10);
sprite.println("FSA 24.03.2023");
// Summe
sprite.setTextSize(4);
sprite.setTextColor(pwrsum >= 0 ? TFT_WHITE : TFT_ORANGE);
sprite.setCursor(20, 60);
sprite.println(pwrsum);
// Phasen
sprite.setTextSize(2);
sprite.setTextColor(pwr1 >= 0 ? TFT_GREEN : TFT_ORANGE);
sprite.setCursor(20, 140);
sprite.printf("A: %d\n", pwr1);
sprite.setTextColor(pwr2 >= 0 ? TFT_GREEN : TFT_ORANGE);
sprite.setCursor(20, 170);
sprite.printf("B: %d\n", pwr2);
sprite.setTextColor(pwr3 >= 0 ? TFT_GREEN : TFT_ORANGE);
sprite.setCursor(20, 200);
sprite.printf("C: %d\n", pwr3);
// IP (nur beim Start)
if (showIP < 6)
{
sprite.setTextSize(1);
sprite.setTextColor(TFT_YELLOW);
sprite.setCursor(10, 300);
sprite.print("IP: ");
sprite.print(WiFi.localIP());
showIP++;
}
// ---------- AUF DISPLAY ÜBERTRAGEN ----------
sprite.pushSprite(0, 0);
}
}
Display More
Frohe Weihnachten zuammen.
Nach langer Abstinenz habe ich heute hier vorbei geschaut und prompt gesehen, dass jemand meinen uralten Sketch noch mal raus gekramt hat.
Ohne Garantie und Support.
Probier das mal. Könnte aber noch flackern:
/*
TFT_eSPI installieren
⚠️ User_Setup.h von TFT_eSPI anpassen
In der Datei TFT_eSPI/User_Setup.h:
#define ILI9341_DRIVER
#define TFT_WIDTH 240
#define TFT_HEIGHT 320
#define TFT_MOSI 23
#define TFT_MISO 19
#define TFT_SCLK 18
#define TFT_CS 15
#define TFT_DC 2
#define TFT_RST 4
#define TFT_BL 21
#define TFT_BACKLIGHT_ON HIGH
*/
#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <TFT_eSPI.h>
#include <SPI.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
/* =====================
WLAN / SHELLY
===================== */
const char* ssid = "daheim";
const char* password = "Dein Wlan Passwort";
String Shelly_IP = "192.168.1.100"; // <-- IP DES SHELLY
/* =====================
HARDWARE
===================== */
#define LDR_PIN 34 // ADC Pin
#define TFT_BL 21 // Backlight
/* =====================
OBJEKTE
===================== */
TFT_eSPI tft = TFT_eSPI();
/* =====================
VARIABLEN
===================== */
unsigned long timer = 0;
unsigned long interval = 2000;
int pwr1 = 0, pwr2 = 0, pwr3 = 0, pwrsum = 0;
int showIP = 1;
bool debugging = false;
/* =====================
SHELLY HTTP
===================== */
int getPower(const String& url)
{
HTTPClient http;
WiFiClient client;
int pwr = 0;
if (http.begin(client, url))
{
int code = http.GET();
if (code == HTTP_CODE_OK)
{
JsonDocument doc;
deserializeJson(doc, http.getString());
pwr = doc["power"] | 0;
}
http.end();
}
return pwr;
}
/* =====================
SETUP
===================== */
void setup()
{
Serial.begin(115200);
pinMode(TFT_BL, OUTPUT);
digitalWrite(TFT_BL, HIGH);
analogReadResolution(12);
// TFT
tft.init();
tft.setRotation(0);
tft.fillScreen(TFT_BLACK);
// WLAN
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
ArduinoOTA.handle();
delay(10);
}
// OTA
ArduinoOTA.setHostname("Shelly_ESP32_2432");
ArduinoOTA.setPassword("admin");
ArduinoOTA.begin();
}
/* =====================
LOOP
===================== */
void loop()
{
ArduinoOTA.handle();
if (millis() - timer > interval)
{
timer = millis();
if (WiFi.status() == WL_CONNECTED)
{
pwr1 = getPower("http://" + Shelly_IP + "/emeter/0");
pwr2 = getPower("http://" + Shelly_IP + "/emeter/1");
pwr3 = getPower("http://" + Shelly_IP + "/emeter/2");
pwrsum = pwr1 + pwr2 + pwr3;
}
int ldr = analogRead(LDR_PIN);
int pwm = map(ldr, 4095, 0, 20, 255);
pwm = constrain(pwm, 20, 255);
ledcWrite(0, pwm);
tft.fillScreen(TFT_BLACK);
// Titel
tft.setTextColor(TFT_YELLOW);
tft.setTextSize(2);
tft.setCursor(10, 10);
tft.println("FSA 24.03.2023");
// Summe
tft.setTextSize(4);
tft.setTextColor(pwrsum >= 0 ? TFT_WHITE : TFT_ORANGE);
tft.setCursor(20, 60);
tft.println(pwrsum);
// Phasen
tft.setTextSize(2);
tft.setTextColor(pwr1 >= 0 ? TFT_GREEN : TFT_ORANGE);
tft.setCursor(20, 140);
tft.printf("A: %d\n", pwr1);
tft.setTextColor(pwr2 >= 0 ? TFT_GREEN : TFT_ORANGE);
tft.setCursor(20, 170);
tft.printf("B: %d\n", pwr2);
tft.setTextColor(pwr3 >= 0 ? TFT_GREEN : TFT_ORANGE);
tft.setCursor(20, 200);
tft.printf("C: %d\n", pwr3);
if (showIP < 6)
{
tft.setTextSize(1);
tft.setTextColor(TFT_YELLOW);
tft.setCursor(10, 300);
tft.print("IP: ");
tft.print(WiFi.localIP());
showIP++;
}
}
}
Display More
Hier ist ja noch richtig was los.
Meine Lösung werkelt noch immer im seinerzeit hier vorgestellten Zustand. Anfang des Jahres war mal der Akku leer und musste via Powerbank nachgeladen werde. Ziemlich unspektakulär. Aber ich bin gespannt, wie lange der Akku jetzt durchhalten wird. Ansonsten läuft das genau so wie es soll. Post und Pakete werden getrennt voneinander zuverlässig gemeldet.
Eine Solarzelle zum Nachladen des Akkus ist am Montageort meines Briefkastens nicht sinnvoll möglich, da er sich auf der Nordseite des Hauses im überdachten Bereich vor der Haustür befindet. Dort kommt keine Sonne (und Regen) hin. Ein Kabel zu einer Solarzelle zu verlegen scheidet auf Grund des WAF aus.
Bei dem von Dir vorgeschlagenen Board wird offenbar ein RT9080-33GJ5 als LDO eingesetzt. Sehr sparsame Hardware. Bei vielen anderen Boards sieht das ganz anders aus. Um das Problem komplett zu umgehen habe ich mich für den ESP8266-07 entschieden. Da gibt es bis auf die LED gar kein Bauteil, dass unnötig Strom verbraucht.
Nach langer langer Zeit ein Update:
Der RasPi läuft mit der Software seit 2014 anstandslos 24/7 durch.
Leider hat der Sensor im August 2024, also nach gut 10 Jahren das Zeitliche gesegnet. Da andere Projekte höhere Prio hatten als der Wasserpegel habe ich mich erst gestern daran begeben den Sensor zu tauschen. Ein beherztes Abknicken des angeklebten Sensors machte Platz für den neuen Sensor, der übrigens zeitgleich mit dem jetzt defekten Sensor (also irgendwann 2014) gekauft wurde und seitdem als Ersatzteil sein Dasein fristete. Diesen habe ich genau so montiert wie den ersten Sensor, also komplett mit Heißkleber vergossen. Da das Gehäuse innen trocken war mussten keine Kabel oder Verbindungen erneuert werden. Es konnte einfach der Stecker auf den neuen Sensor gesteckt werden. Und schon lief die Anzeige wieder.
Da die Zisterne sowieso offen war, habe ich zusätzlich zum Ultraschall Sensor einen QDY30A-B 4-20mA Drucksensor von Aliexpress installiert. Dieser wird demnächst an ein Shelly AddOn angeklemmt. Aber das ist eine andere Geschichte und hat nichts mit dem RasPi zu tun.
Hört sich gut an.
Meine Lösung werkelt ja nun schon seit ein paar Monaten. Vor ein paar Tagen erhielt ich keine Benachrichtigungen mehr. Der Akku war ziemlich leer. Also habe ich ihn per Powerbank nachgeladen. Nun läuft wieder alles wie es soll. Bislang gab es keine Probleme mit den Meldungen oder einen Fall, in dem die Meldung nicht richtig gesendet wurde. Für mich läuft alles so wie es soll.
Ich habe zwei ESP07 verbaut. Einen für den Briefkastenschlitz und einen für den Paketeinwurf. Beide werden über den RST aus dem Tiefschlaf geholt, wenn der Magnetschalter (bzw. Reset-Maker) dafür sorgt.
Für mich ist die Lösung so völlig okay. Vielleicht ergibt sich in Zukunft ein weiterer Anwendungsfall, so dass ich noch mal dran muss. Aber im Moment fällt mir keiner ein, der sinnvoll oder notwendig wäre. Diesmal KISS ohne Spielereien.
Ich bin schon gespannt, was dabei raus kommt, wenn alles so läuft, wie Du es haben möchtest. Auf mein Projekt wird das nicht 1:1 übertragbar sein, da ich zwei Klappen durch den ESP überwachen lassen muss.
Mir hat das von Dir geschilderte Szenario mit der offen stehenden Klappe aber auch keine Ruhe gelassen. Daher habe ich inzwischen den oben verlinkten "Reset Maker" in die Leitung des Magnetkontaktes an der Briefkastenklappe eingebaut. Bis dahin war es so, dass ein Öffnen der Klappe den Reset nicht auslöste. Erst das Schließen löste den Reset und damit die Nachricht aus (weil der Pegel am GPIO dann von GND nach Vcc wechselt).
Nun ist es so, dass der Reset ausgelöst wird, sobald die Klappe geöffnet wird. Denn es liegt bei offen stehender Klappe am Reset-Eingang des ESP kein dauerhaftest GND-Signal mehr an, sondern eben nur der GND-Impuls, den der Reset-Maker erzeugt. Und prompt hat der amazon-Bote es heute geschafft eine Lieferung im Format eines Papp-Briefumschlages in den Schlitz zu stecken, aber eben nicht in den Kasten hinein zu stecken. Der Umschlag hing also noch ein wenig aus dem Kasten heraus, so dass die Klappe noch halb offen stand. Mit der ursprünglichen Lösung hätte ich keine Nachricht erhalten. Dank der kürzlichen Nachbesserung habe ich sie aber bekommen.
Du schreibst einem Softwareleghasteniker
Falls Du Verbesserungen vom oder Fragen zum Code hast lass mich einfach wissen.
Im Ernst: Mein Horizont bezüglich Software ist extrem gering. Oftmals nur von der Stirn bis zum Brett.
Wenn ich ein Problem in Software oder Hardware lösen kann, wähle ich nahezu immer den Lötkolben.
Das habe ich die Tage auch gemacht. Müsste Morgen geliefert werden. Meine Wahl fiel auf einen seeed studio xiao ESP32-C3.
Aktuell habe ich noch ein paar andere Baustellen abzuarbeiten. Daher lasse ich meine Hardwar erst einmal wie sie ist. Denn bislang funktioniert das zuverlässig und auch der Akku entleert sich nicht unvorhergesehen.
Aber ich werde mir Deine Lösung auch noch anschauen.
Du kannst hier gerne weiter schreiben. Denn letztlich ist es ja nicht OT, sondern passt zum Projekt.
Wenn Du das per Software lösen willst, kannst Du es nach meinem Wissensstand nicht über den RST Eingang machen.
Dazu würde sich eher das Aufwecken per Interrupt anbieten. Ob das mit dem ESP geht, weiss ich allerdings nicht. Beim alten Projekt habe ich dafür einen ATTiny genommen, der seinerseits dann die Spannungsversorgung des ESP für eine bestimmte Zeit aktiviert hat. Das war was die Stromspareffizienz anging schon ziemlich effektiv. Aber ich wollte hier einen einfacheren Weg probieren. Sollte es tatsächlich mal zu der von Dir erwähnten offen stehenden Klappe kommen, werde ich den Reset-Maker testen. So lange lasse ich meine Lösung erst einmal wie sie ist. Denn bislang wurde jeder Einwurf korrekt gemeldet.
edit: Wenn Du nur einmalig eine Benachrichtung brauchst, könntest Du es vielleicht mit einem weiteren Magnetkontakt realisieren, der betätigt wird, wenn der BK von Dir geöffnet wird. Der stellt den ESP dann wieder "scharf".
Das sind genau die Magnetkontakte, die ich Dir jetzt verlinkt hätte. Mein neuer Briefkasten ist tief genug, damit auch die Tageszeitung komplett in den Briefeinwurf passt. Sollte etwas zu groß sein, passt es in das Paketfach. Daher habe ich das Problem mit der offen stehenden Klappe nicht mehr. Zumindest theoretisch. Praktisch hängt es vom Lieferanten ab.
Beim alten Briefkasten (RasPiPo(st)2) war es aber auch so, wie Du es beschreibst. Allerdings gab es kein Problem mit endlosen Benachrichtigungen, da der Sender nur einmalig per Interrupt ausgelöst hat.
Ich habe aber auch noch nicht getestet, wie sich der Stromverbrauch des ESP verhält, wenn man den RST dauerhaft mit GND belegt. Das wäre im von Dir genannten Fall gegeben. Man könnte es vielleicht so lösen, dass eine kleine Schaltung dazwischen gebaut wird, die "nur ein Ping" auf den RST durchlässt. Ist schon ein paar Tage her, aber das Problem tauchte immer mal wieder auf, weshalb ich es seinerzeit final auf einer Platine gelöst habe. Das ersparte mir die immer wieder aufgebauten fliegenden Verdrahtungen.
Die Spannung automatisch zu senden wäre stromsparend mit jeder Betätigung möglich. Dann braucht es aber eine Gegenstelle die das auswertet oder vernünftig anzeigt. Im bisherigen Briefkasten hatte ich das auch hinterlegt, nun aber verworfen, da der Stormverbrauch wirklich extrem gering ist. Bisher habe ich mit 3 Eneloop 1V2 gearbeitet. Das lief bei jeglicher Außentemperatur einwandfrei.
Auch bei den 18650 LiPo sehe ich erst einmal kein Temperaturproblem. Ich will damit ja keinen Motor betreiben, sondern nur einen ESP für ein paar Sekunden einschalten. Selbst wenn das im Peak 500mA wären, wäre das bezogen auf rund 3Ah Kapazität nur I/6. Da bleibe ich erst mal ganz entspannt und warte den kommenden Winter ab. Der soll, sofern die Prognosen bezüglich Umkehr von El Niño zutreffen, ziemlich kalt werden. Dann weiß ich, ob ich richtig liege. Falls nicht, rüste ich wieder um auf 3x Eneloop. Die liefen bislang 10 Jahre erfolgreich bei jeder Temperatur.
Genau das meinte ich. Nach dem 30 Tage Testzeitraum ist ein Heiermann fällig. Ich finde das einen sehr überschaubaren Beitrag dafür, dass ich diesen gut funktionierenden Push-Service nutzen kann.
Einen Schaltplan des Projektes gibt es nicht in schriftlicher Form. Ich habe von der verlinkten Platine noch einige hier liegen. Die habe ich auf der Rückseite mit den Widerständen und einen Kondensator bestückt. Auf der Vorderseite mit Stiftbuchsen und zu Testzwecken noch dem Reset-Taster, der aber eigentlich auch nicht notwendig ist. Den ESP habe ich in meinem ESP-Programmierer geflasht und dann auf die Sockelleiste gesetzt. Die Versorgungsspannung 3V3 der Platine geht direkt auf den Akku (der aber wegen der Spannung nur halb voll ist).
Masse ist an den Magnetkontakt angeschlossen und läuft auf den RST Pin des ESP. Um etwas Strom zu sparen habe ich noch eine der beiden LED des ESP entfernt, die leuchtete, sobald Spannung anlag. Wenn ich nichts vergessen habe, war es das auch schon.
Wahrscheinlich würde das auch mit den üblich verwendeten Platinen (Wemos, etc.) laufen. Nur weiß ich nicht, ob das ganze für dieses Projekt nicht notwendige sonstige Geraffel auf der Platine noch Strom zieht, wenn der ESP schläft. Da ich keine Lust hatte ein Reverse Engineering zu betreiben, habe ich die mir bekannte, gut funktionierende Platine gewählt, da ich alle Bauteile hier liegen hatte. Wenn Du Bedarf hast, schreib mir eine PN.
Der Stromverbrauch im Tiefschlaf liegt bei unter 1mA. Bis dahin zeigt mein Netzteil den Verbrauch relativ genau an. Aber sobald er schläft steht dort 0.000A. Ich habe mir nicht die Mühe gemacht den Verbrauch exakt zu ermitteln, da mir diese Info genügt. Wenn ich nun alle paar Wochen den Taster des Testers vorne auf dem Gehäuse drücke um zu sehen, wie es um die Akkuladung bestellt ist, sollte das ausreichen. Wenn sich der Akku leert, wird die Powerbank für 1h angschlossen. Die Platine (z. B. ebay 351405495686 incl. Erklärung zu den Widerständen) zum laden des 18650 habe ich per Widerstand auf 1A eingestellt (vorher 400mA). Der Akku hat irgendwas um 3Ah. So muss man nicht lange rechnen.
Nach langer Zeit mal wieder ein neues Projekt:
Vor einigen Jahren kam die Idee auf, eine Nachricht zu erhalten, wenn Post in den Briefkasten gesteckt wird. Daraus ist das Projekt RasPiPo(st) geworden. Im weiteren Verlauf wurde der RasPi durch einen ESP8266 ersetzt und es gab das Projekt RasPiPo(st)2, dass eine E-Mail mit diversen Infos verschickte.
Seit einigen Tagen habe ich einen neuen Briefkasten, in den praktischer Weise auch Pakete eingeworfen werden können, was das Problem beheben soll, dass ich durch die halbe Stadt fahren muss, um ein nicht zugestelltes Paket aus dem Shop abzuholen.
Da ich (noch immer) nicht programmieren kann und der damalige Mitstreiter joh.raspi schon seit vielen Jahren nicht mehr erreichbar ist, musste eine neue Lösung her. Inzwischen gibt es diverse Möglichkeiten, Infos als Push-Nachricht auf das Handy zu bekommen. Diesen Ansatz habe ich gewählt. Letztendlich erhalte ich nun zwar "nur" noch eine Info darüber, dass die Klappe des Briefkastens betätigt wurde, aber im Grunde sollte das ausreichen.
Um den Einwurf von Brief und Paket unterscheiden zu können, habe ich Lösung doppelt aufgebaut.
Die Hardware ist sehr überschaubar. Ein mit rudimentären externen Bauteilen (ohne Spannungsregler) bestückter ESP8266 ist direkt an einen 18650 LiIon Akku angeschlossen. Der Akku hängt zusätzlich an einer Ladeschaltung, deren Eingang an einem USB-Kabel angeschlossen ist, dass ich zum Laden des Akkus an eine Powerbank anschließen kann. Um die Spannung des Akkus abfragen zu können habe ich noch eine kleine Akkuanzeige auf das Gehäuse geklebt, die per in die Plusleitung eingeschliffenem Taster temporär aktiviert werden kann. Da es dann doch ein paar Kabel mehr wurden, die zusammen geführt werden müssen, habe ich diese in 221 Wago-Klemmen verdrahtet. Das geht selbst mit 0,14mm² erstaunlich gut.
Als Kontakte habe ich mich für NO/NC Magnetkontakte entschieden. Im geschlossenen Zustand (Magnet ist über dem Sensor) ist der Kontakt geöffnet. Wird die Klappe bewegt, wird der ESP8266 über den Reset-Eingang (gegen Masse) neu gestartet und arbeitet seinen Sketch ab.
Ich habe mich für den ESP8266-07 entschieden, weil ich so die Option habe, eine externe W-Lan Antenne installieren zu können. Die wurde aber gar nicht gebraucht, da der W-Lan Repeater im Raum auf der anderen Seite der Wand hängt.
Die Software ist ebenfalls sehr überschaubar. Ich habe mich für Pushover entschieden. Die Software kostetet einmalig rund 5€. Installiert man die Pushover.h in der Arduino IDE, erhält man unter anderem Beispieldateien hierzu. Diese habe ich genommen, meine Daten eingetragen, im anzulegenden Account zwei Punkte (einer für Briefe, einer für Pakete) definiert und schon lief alles. Selbst für Software-Legastheniker wie mich war das machbar.
#include <ESP8266WiFi.h>
#include "Pushover.h"
void setup() {
Serial.begin(57600);
WiFi.begin("Wifi-Name", "Passwort");
while (WiFi.status() != WL_CONNECTED) delay(50);
Serial.println(" ");
Serial.println(" ");
Serial.println("Connected");
Pushover po = Pushover("geheim","auch geheim", UNSAFE);
po.setMessage("Es ist ein Paket in der Paketbox");
po.setSound("bike");
Serial.println(po.send()); //should return 1 on success
delay(2000);
Serial.println("Going to sleep");
Serial.println(" ");
Serial.println(" ");
ESP.deepSleep(0);
}
void loop() {
}
Display More
Hier noch ein paar Fotos:
Vorweg zur Klarstellung damit das hier im Faden nicht abdriftet: Nein, ich bin kein fanatischer Grüner, der ideologisch verblendet alles toll findet, was die gewählten Leute unsers Landes so verzapfen. Ich bin Pragmatiker und finde viele (nicht alle) der Lösungen gut, aber beschixxen gegenüber den Bürgern kommuniziert.
Ich nehme an didilamken bezog sich auf die Erfassung der Wechselrichter-Werte und hat es nur etwas unklar formuliert.
Um den Überschuss berechnen zu können werden beide Werte benötigt. Sowohl die 3phasige Ermittlung hinter dem Zähler im Zählerschrank als auch die Leistungsermittlung der Wechselrichter.
Die Zähler in privaten Wohnhäusern in DE arbeiten (bis auf Exoten) saldierend. Es wird dem Kunden vom Anbieter nur die Summe der drei Phasen in Rechnung gestellt. Wenn also auf L1 ein Wechselrichter 500W einspeist, auf L2 die Dauerverbraucher (Standbygeräte, Router, etc.) 100W benötigen und auf L3 der Toaster mit 600W einen Teil des Frühstücks bereitet, dann sind das unter dem Strich immer noch 200W Verbrauch. Ist der Toaster fertig, sind es schlagartig 400W Überschuss, der in das Netz eingespeist wird. Geräte, Werte und Verwendungszweck lassen sich nahezu beliebig ändern. Denn nicht jeder mag Toast zum Frühstück ![]()
Wenn dann Erzeugung abzüglich Verbrauch einen dauerhaft positiven Wert hat kann man diesen "Überschuss" verwerten, indem weitere Verbraucher z. B. via Shelly geschaltet werden. Sowohl Mindestdauer als auch Höhe des Überschusses können frei definiert werden.
Bei mir ist es so gelöst, dass die "Klemmen" des 3EM zwischen Zähler und Klemmsteinen montiert wurden. Zusätzlich habe ich einen Shelly per Shelly App auf 1.000 W begrenzt (über meine Beweggründe möchte ich an dieser Stelle nicht diskutieren) und in eine unbenutzte Steckdose im Flur verbaut. Dort wird einzig und allein der E-Scooter angeschlossen. Die Steuerung erfolgt über evcc auf einem alten RasPi 2. Ist ausreichend Überschuss vorhanden, wird das Ladegerät des E-Scooters per Relais im Shelly mit Strom versorgt. So ist sicher gestellt, dass er zumindest an 6 Monaten im Jahr nur mit Sonnenstrom geladen wird.
Ab 2025 wird es theoretisch die Möglichkeit geben, variable Stromtarife über seinen Anbieter zu beziehen. Dann wäre es auch möglich z. B. Preisvorgaben zu machen. Sinngemäß "Ladung nur, wenn Strompreis <0,xx €" Im Winter würde dies von wenigen Ausnahmen abgesehen zu einer Ladung in der Nacht führen, da dann ausreichend günstiger Windstrom im Netz vorhanden ist.
OT:
Die Energiewende kann also jeder für sich schon im relativ überschaubaren Rahmen sinnvoll umsetzen, selbst wenn er keine (Balkon) PV hat. Denn das häufige "zu viel" an Windstrom im Winter kann entweder sinnvoll genutzt werden oder in der zeitweisen Abschaltung der Windkraftanlagen enden. Die Betreiber erhalten aktuell aber trotzdem weiterhin eine Vergütung (was ich für fair halte), die der Allgemeinheit auf die Rechnung geschrieben wird. Aus meiner Sicht wäre es sinnvoller die Vergütung zu zahlen und dafür statt still stehender Windkraftanlagen den damit erzeugten Strom zu nutzen.
Just my 2ct.
Hallo Leute,
kaum ist man mal ein paar Wochen nicht hier, schon passiert was in meinem alten Faden ![]()
Erst einmal vielen Dank an die, die wissen, wie Software funktioniert und ihr Wissen hier teilen!! Mir ist diese Gabe leider nicht gegeben. Aber auch wenn mein Sketch "Kraut und Rüben" ist, funktioniert er so, wie ich es haben wollte. Aber trotzdem finde ich es toll, dass sich jemand die Mühe macht, nach relativ langer Zeit den ursprünglichen Code noch mal durchzuschauen und die Fehler zu benennen.
Wie ich in #7 schon schrieb, war dieses Projekt für mich nur der Einstieg, wenn auch nicht geplant. Wie ich heute weiß, war es der Einstieg in meine private "Energiewende". Denn inzwischen sind große Teile von Wärme, (Komfortstrom) und Mobilität umgestellt. Eine riesige Spielwiese für alle die gerne programmieren, basteln, fuckeln, Ideen umsetzen, etc. "Maker" sozusagen. Als Stichworte, die einen Bezug zum RasPi haben nenne ich mal Victron mit "Venus OS" und "evcc". Mit evcc kann man nicht nur die Wallbox-Überschussladung einer großen PV Anlage steuern, sondern z. B. auch die Ladung des E-Scooters mit dem Überschuss einer Balkon-PV. Oder das Einschalten von Spül- oder Waschmaschine, oder oder oder. Man muss nicht zwangsweise eine Immobilie mit großer PV-Anlage auf dem Dach haben, um sich damit tolle Lösungen zu bauen. Der Phantasie sind dabei kaum Grenzen gesetzt.