Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. S0 - Signal mit Wemos D1 Mini erzeugen?

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    12
    2
    276

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

S0 - Signal mit Wemos D1 Mini erzeugen?

S0 - Signal mit Wemos D1 Mini erzeugen?

Scheduled Pinned Locked Moved Hardware
wemos d1 minis0-signalwärmepumpepv-anlagepv-überschusswärmepumpe pv photovoltaikfronius wechselrichter
78 Posts 7 Posters 11.6k Views 7 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Andy123Andy1

    @dieter_p das ist eine nibe s320

    https://www.photovoltaikforum.com/core/attachment/215014-ih-pv-modulsteuerung-allg-pdf/

    D Offline
    D Offline
    Dieter_P
    wrote on last edited by Dieter_P
    #69

    @andy123andy1

    Ich weiß nicht genau was Du vor hast, aber nach dem Handbuch wird über die S0 Schnittstelle der Eigenverbrauchszähler der Wärmepumpe angeklemmt.

    PV Erzeugungsdaten kommen per Modbus oder SunSpec Protokoll. Liegen die bereits an?

    Heißt vom Prinzip: Dein S0 gibt Vollgas, heißt maximaler Eigenverbrauch und die WP sollte tendentiell irgendwann runterregeln bzw sogar aus bleiben.

    Schließt Du gar keinen S0 an, wäre der Eigenverbrauch 0 und somit reagiert die WP "sofort" auf den Bedarf -> schaltet ein/regelt hoch.

    Oder wie ist Deine Erwartungshaltung?

    A 1 Reply Last reply
    0
    • D Dieter_P

      @andy123andy1

      Ich weiß nicht genau was Du vor hast, aber nach dem Handbuch wird über die S0 Schnittstelle der Eigenverbrauchszähler der Wärmepumpe angeklemmt.

      PV Erzeugungsdaten kommen per Modbus oder SunSpec Protokoll. Liegen die bereits an?

      Heißt vom Prinzip: Dein S0 gibt Vollgas, heißt maximaler Eigenverbrauch und die WP sollte tendentiell irgendwann runterregeln bzw sogar aus bleiben.

      Schließt Du gar keinen S0 an, wäre der Eigenverbrauch 0 und somit reagiert die WP "sofort" auf den Bedarf -> schaltet ein/regelt hoch.

      Oder wie ist Deine Erwartungshaltung?

      A Offline
      A Offline
      Andy123Andy1
      wrote on last edited by Andy123Andy1
      #70

      @dieter_p S0 ist der Verbrauch (Lichtstrom) ohne Wäremepumpe. Entsteht ein PV Überschuss soll die anlange die Heiz/ Kühl kurve um 2 verschieben und das Brauchwasser auf "hoch" stellen. So die Idee.

      TCP modbus funktioniert.

      MartinPM D 2 Replies Last reply
      0
      • A Andy123Andy1

        @dieter_p S0 ist der Verbrauch (Lichtstrom) ohne Wäremepumpe. Entsteht ein PV Überschuss soll die anlange die Heiz/ Kühl kurve um 2 verschieben und das Brauchwasser auf "hoch" stellen. So die Idee.

        TCP modbus funktioniert.

        MartinPM Online
        MartinPM Online
        MartinP
        wrote on last edited by
        #71

        Ich bin schon mehrfach auf den Thread hereingfallen ...
        Könnte der Thread-Ersteller den Thread-Titel etwas ergänzen?

        S0 ist recht mehrdeutig, mir fiel zuerst ISDN ein, und ich dachte, da wollte jemand mit einem D1 Mini einen VOIP -> ISDN Adapter bauen, um sein altes ISDN-Telefon weiter nutzen zu können ...

        Ich weiss .... ich finde die 60 Buchstaben Limitierung für Titel auch nervig ...

        Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
        Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.13)
        kernel Linux pve 6.8.12-15-pve
        6 GByte RAM für den Container
        Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
        Remote-Access über Wireguard der Fritzbox

        1 Reply Last reply
        0
        • A Andy123Andy1

          @dieter_p S0 ist der Verbrauch (Lichtstrom) ohne Wäremepumpe. Entsteht ein PV Überschuss soll die anlange die Heiz/ Kühl kurve um 2 verschieben und das Brauchwasser auf "hoch" stellen. So die Idee.

          TCP modbus funktioniert.

          D Offline
          D Offline
          Dieter_P
          wrote on last edited by Dieter_P
          #72

          @andy123andy1 said in S0 - Signal mit Wemos D1 Mini erzeugen?:

          @dieter_p S0 ist der Verbrauch (Lichtstrom) ohne Wäremepumpe. Entsteht ein PV Überschuss soll die anlange die Heiz/ Kühl kurve um 2 verschieben und das Brauchwasser auf "hoch" stellen. So die Idee.

          TCP modbus funktioniert.

          Ok verstanden.

          Wo da die Schaltschwellen inkl. Pufferzeiten liegen kann ich Dir nicht sagen. Das steckt in der Logik dieser Steuerung. Tendentiell würde ich nur keine "HauRuck"-Aktionen der Logik erwarten und andauerndes Takten für solche Vorgänge ist eher schädlich. Du schaltest immerhin 11kW im Worst-Case.
          Das muß erstmal vom Dach kommen.
          Daher würde ich bei so einer Simulation den Verbrauch des sonstigen Haushaltstroms eher zum Testen runter setzen und Du simlierst doch gerade eine Dauerlast (Haushaltsstrom) von 1kW. Das finde ich schon heftig und bin bei mir eher bei 0,25kW. Kommt natürlich auch darauf an was gerade von Deinem Dach kommt und welche Leistung die WP zieht.

          A 2 Replies Last reply
          0
          • D Dieter_P

            @andy123andy1 said in S0 - Signal mit Wemos D1 Mini erzeugen?:

            @dieter_p S0 ist der Verbrauch (Lichtstrom) ohne Wäremepumpe. Entsteht ein PV Überschuss soll die anlange die Heiz/ Kühl kurve um 2 verschieben und das Brauchwasser auf "hoch" stellen. So die Idee.

            TCP modbus funktioniert.

            Ok verstanden.

            Wo da die Schaltschwellen inkl. Pufferzeiten liegen kann ich Dir nicht sagen. Das steckt in der Logik dieser Steuerung. Tendentiell würde ich nur keine "HauRuck"-Aktionen der Logik erwarten und andauerndes Takten für solche Vorgänge ist eher schädlich. Du schaltest immerhin 11kW im Worst-Case.
            Das muß erstmal vom Dach kommen.
            Daher würde ich bei so einer Simulation den Verbrauch des sonstigen Haushaltstroms eher zum Testen runter setzen und Du simlierst doch gerade eine Dauerlast (Haushaltsstrom) von 1kW. Das finde ich schon heftig und bin bei mir eher bei 0,25kW. Kommt natürlich auch darauf an was gerade von Deinem Dach kommt und welche Leistung die WP zieht.

            A Offline
            A Offline
            Andy123Andy1
            wrote on last edited by Andy123Andy1
            #73

            @dieter_p Genau um dabei sicher zu sein hätte ich, wenn es funktioniert, den akutellen Lichtstrom-Verbrauch auf den Adurino/S0 geschrieben. Die Logik der Wärmepumpe hätte dann die Kontrolle über die Taktung. Die alternative wäre per tcp-modbus der LWP die Wert (wasser hoch/ kurve +-2) zu setzen. Dadurch würde man aber über die Taktung selbst entscheiden.

            Im Moment habe ich einfach eine Zeitsteuerung der LWP von 22:00-08:00 Uhr alles blockiert und von 14:00-17:00 Uhr Brauchwasser hoch.

            Ohne den S0 macht die LWP mit den werten der PV Anlage nix.

            A 1 Reply Last reply
            0
            • A Andy123Andy1

              @dieter_p Genau um dabei sicher zu sein hätte ich, wenn es funktioniert, den akutellen Lichtstrom-Verbrauch auf den Adurino/S0 geschrieben. Die Logik der Wärmepumpe hätte dann die Kontrolle über die Taktung. Die alternative wäre per tcp-modbus der LWP die Wert (wasser hoch/ kurve +-2) zu setzen. Dadurch würde man aber über die Taktung selbst entscheiden.

              Im Moment habe ich einfach eine Zeitsteuerung der LWP von 22:00-08:00 Uhr alles blockiert und von 14:00-17:00 Uhr Brauchwasser hoch.

              Ohne den S0 macht die LWP mit den werten der PV Anlage nix.

              A Offline
              A Offline
              Andy123Andy1
              wrote on last edited by Andy123Andy1
              #74

              Mit einem Adurino UNO klappt es sofort. Allerdings hab ich ein Ver­ständ­nis Problem der Zähler der LWP zählt nur nach oben. Ich dachte da soll der aktuelle verbrauchte Stromverbrauch abgebildet werden. Um eben die Differenz aus PV Strom und aktuell verbrauchten Strom zu bilden.

              edit
              Daraus kann man dann den aktuellen Strom verbrauch errechnen okay 🙂

              Frag mich nur gerade ob der Aufwand dem Nutzen wert ist. Ich müsste jetzt den Wechselrichter fragen wie viel Strom verbracht das Haus, dann die LWP wie viel verbrauchst du. Daraus die Differenz bilden und warten bis eine kWh erreicht ist. Diese Information müsste ich dann dem Adurino geben der wiederum den S0 Eingang der LWP anspricht.

              1 Reply Last reply
              0
              • D Dieter_P

                @andy123andy1 said in S0 - Signal mit Wemos D1 Mini erzeugen?:

                @dieter_p S0 ist der Verbrauch (Lichtstrom) ohne Wäremepumpe. Entsteht ein PV Überschuss soll die anlange die Heiz/ Kühl kurve um 2 verschieben und das Brauchwasser auf "hoch" stellen. So die Idee.

                TCP modbus funktioniert.

                Ok verstanden.

                Wo da die Schaltschwellen inkl. Pufferzeiten liegen kann ich Dir nicht sagen. Das steckt in der Logik dieser Steuerung. Tendentiell würde ich nur keine "HauRuck"-Aktionen der Logik erwarten und andauerndes Takten für solche Vorgänge ist eher schädlich. Du schaltest immerhin 11kW im Worst-Case.
                Das muß erstmal vom Dach kommen.
                Daher würde ich bei so einer Simulation den Verbrauch des sonstigen Haushaltstroms eher zum Testen runter setzen und Du simlierst doch gerade eine Dauerlast (Haushaltsstrom) von 1kW. Das finde ich schon heftig und bin bei mir eher bei 0,25kW. Kommt natürlich auch darauf an was gerade von Deinem Dach kommt und welche Leistung die WP zieht.

                A Offline
                A Offline
                Andy123Andy1
                wrote on last edited by
                #75

                @dieter_p said in S0 - Signal mit Wemos D1 Mini erzeugen?:

                @andy123andy1 said in S0 - Signal mit Wemos D1 Mini erzeugen?:

                @dieter_p S0 ist der Verbrauch (Lichtstrom) ohne Wäremepumpe. Entsteht ein PV Überschuss soll die anlange die Heiz/ Kühl kurve um 2 verschieben und das Brauchwasser auf "hoch" stellen. So die Idee.

                TCP modbus funktioniert.

                Ok verstanden.

                Wo da die Schaltschwellen inkl. Pufferzeiten liegen kann ich Dir nicht sagen. Das steckt in der Logik dieser Steuerung. Tendentiell würde ich nur keine "HauRuck"-Aktionen der Logik erwarten und andauerndes Takten für solche Vorgänge ist eher schädlich. Du schaltest immerhin 11kW im Worst-Case.
                Das muß erstmal vom Dach kommen.
                Daher würde ich bei so einer Simulation den Verbrauch des sonstigen Haushaltstroms eher zum Testen runter setzen und Du simlierst doch gerade eine Dauerlast (Haushaltsstrom) von 1kW. Das finde ich schon heftig und bin bei mir eher bei 0,25kW. Kommt natürlich auch darauf an was gerade von Deinem Dach kommt und welche Leistung die WP zieht.

                Ich hatte das so Verstanden: Wenn das Haus 1kWH verbaucht wird dieser vom Überschuss abgezogen. Heißt wenn 6kwH Überschuss vorhanden sind kann die LWP nur 5kwH verwenden. Ich würde den Wert sogar auf 2kWH setzen dann ist man vermutlich zu 90% auf der sicheren Seite. Wenn von der PV Anlage 8 kWH kommen werden 2 kWH abgezogen. Bleiben also 4kWH für die LWP. Wenn keine Sonne scheint oder die Leistung der PV Anlage nicht über 2kWH steigt wird eben nichts optimiert. Zumindest so mein Verständnis.

                D 1 Reply Last reply
                0
                • A Andy123Andy1

                  @dieter_p said in S0 - Signal mit Wemos D1 Mini erzeugen?:

                  @andy123andy1 said in S0 - Signal mit Wemos D1 Mini erzeugen?:

                  @dieter_p S0 ist der Verbrauch (Lichtstrom) ohne Wäremepumpe. Entsteht ein PV Überschuss soll die anlange die Heiz/ Kühl kurve um 2 verschieben und das Brauchwasser auf "hoch" stellen. So die Idee.

                  TCP modbus funktioniert.

                  Ok verstanden.

                  Wo da die Schaltschwellen inkl. Pufferzeiten liegen kann ich Dir nicht sagen. Das steckt in der Logik dieser Steuerung. Tendentiell würde ich nur keine "HauRuck"-Aktionen der Logik erwarten und andauerndes Takten für solche Vorgänge ist eher schädlich. Du schaltest immerhin 11kW im Worst-Case.
                  Das muß erstmal vom Dach kommen.
                  Daher würde ich bei so einer Simulation den Verbrauch des sonstigen Haushaltstroms eher zum Testen runter setzen und Du simlierst doch gerade eine Dauerlast (Haushaltsstrom) von 1kW. Das finde ich schon heftig und bin bei mir eher bei 0,25kW. Kommt natürlich auch darauf an was gerade von Deinem Dach kommt und welche Leistung die WP zieht.

                  Ich hatte das so Verstanden: Wenn das Haus 1kWH verbaucht wird dieser vom Überschuss abgezogen. Heißt wenn 6kwH Überschuss vorhanden sind kann die LWP nur 5kwH verwenden. Ich würde den Wert sogar auf 2kWH setzen dann ist man vermutlich zu 90% auf der sicheren Seite. Wenn von der PV Anlage 8 kWH kommen werden 2 kWH abgezogen. Bleiben also 4kWH für die LWP. Wenn keine Sonne scheint oder die Leistung der PV Anlage nicht über 2kWH steigt wird eben nichts optimiert. Zumindest so mein Verständnis.

                  D Offline
                  D Offline
                  Dieter_P
                  wrote on last edited by Dieter_P
                  #76

                  @andy123andy1

                  Naja, verlässt nun etwas das Beitragsthema.
                  Ob das sinnvoll ist und in welcher individuellen Konstellation, da kann man bestimmt prima Seiten darüber füllen und es diskutieren.

                  Meine Gedanken zu der Situation:

                  A) Du hast keinen Zähler für Hausstrom ohne Wärmepumpe und darum diese Simulation

                  B) Die Schwankungen Deiner PV-Anlage und auch des Haustroms sind üblicherweise viel viel größer als es sinnvoll wäre Deine 11KW Wärmepumpe zu takten. Entsprechend ist die Simulation mit Bedacht zu wählen, da dahinter noch eine unbekannte Logik aggiert

                  C) Letzlich ist für mich ein Hauptfaktor entscheident und das ist mein Zähler vom Stromanschluß. Der ist die maßgebliche Größe was sich bei mir im Geldbeutel abspielt. Insofern wäre meine Präferenz eine Verrechnung/Prüfung Deiner Simulation auf der Basis der Leistung am Hauszähler durchzuführen.
                  Grob in der Art und Weise:
                  Solange Du Strom einspeist ist Deine Simulation des S0 ok.
                  Fängst Du an Strom von draußen zu kaufen, gilt es den S0 zu steigern.
                  Diese Anpassung des S0 würde ich auf eine realistische minimale Grenze (bei mir ca 250W Grundlast) limitieren.

                  D) Ob das alles (Kaskadierte Regelungen/Simulation) noch Sinn ergibt, bezweifel ich stark. Hier kommt soviel verkette Technik ins Spiel, dass sowohl die Verfügbarkeit aber auch Logik leiden dürfte. Ich würde meinen Fokus darauf lenken "einfach" den realen aktuellen Strombedarf ohne WP auf den S0 zu bekommen. Ist dabei ein selbserzeugter S0 im Spiel weil zB Kabelwege zu aufwendig sind, ein Zähler fehlt oder es etwas zu verrechnen gilt, macht das für mich Sinn.

                  M 1 Reply Last reply
                  0
                  • D Dieter_P

                    @andy123andy1

                    Naja, verlässt nun etwas das Beitragsthema.
                    Ob das sinnvoll ist und in welcher individuellen Konstellation, da kann man bestimmt prima Seiten darüber füllen und es diskutieren.

                    Meine Gedanken zu der Situation:

                    A) Du hast keinen Zähler für Hausstrom ohne Wärmepumpe und darum diese Simulation

                    B) Die Schwankungen Deiner PV-Anlage und auch des Haustroms sind üblicherweise viel viel größer als es sinnvoll wäre Deine 11KW Wärmepumpe zu takten. Entsprechend ist die Simulation mit Bedacht zu wählen, da dahinter noch eine unbekannte Logik aggiert

                    C) Letzlich ist für mich ein Hauptfaktor entscheident und das ist mein Zähler vom Stromanschluß. Der ist die maßgebliche Größe was sich bei mir im Geldbeutel abspielt. Insofern wäre meine Präferenz eine Verrechnung/Prüfung Deiner Simulation auf der Basis der Leistung am Hauszähler durchzuführen.
                    Grob in der Art und Weise:
                    Solange Du Strom einspeist ist Deine Simulation des S0 ok.
                    Fängst Du an Strom von draußen zu kaufen, gilt es den S0 zu steigern.
                    Diese Anpassung des S0 würde ich auf eine realistische minimale Grenze (bei mir ca 250W Grundlast) limitieren.

                    D) Ob das alles (Kaskadierte Regelungen/Simulation) noch Sinn ergibt, bezweifel ich stark. Hier kommt soviel verkette Technik ins Spiel, dass sowohl die Verfügbarkeit aber auch Logik leiden dürfte. Ich würde meinen Fokus darauf lenken "einfach" den realen aktuellen Strombedarf ohne WP auf den S0 zu bekommen. Ist dabei ein selbserzeugter S0 im Spiel weil zB Kabelwege zu aufwendig sind, ein Zähler fehlt oder es etwas zu verrechnen gilt, macht das für mich Sinn.

                    M Offline
                    M Offline
                    Mistral
                    wrote on last edited by Mistral
                    #77

                    @dieter_p

                    @andy123andy1 said in S0 - Signal mit Wemos D1 Mini erzeugen?:

                    @mistral Guten Morgen, ich suche gerade auch nach einer Lösung ein S0 Signal zu erzeugen. Kannst du die verwendetet Hardware und evtl. den Code der Öffentlichkeit zur Verfügung stellen? Dann brauche ich nicht alles neu Recherchieren und Testen 🙂

                    Das ist die benötigte Hardware wenn ich es richtig aus den vorherigen Post lese:

                    1675434481039-d6d9c7f4-3b51-4f12-9c83-7a71a0238e2c-grafik.png

                    Wenn jetzt noch jemand einen Code Schnipsel hätte wäre ich glücklich 🙂

                    Hab mal rumprobiert hier mein Ergebnis:

                    #include <ESP8266WiFi.h>
                    #include <PubSubClient.h>
                    
                    // WiFi configuration
                    const char* ssid = "your_SSID";
                    const char* password = "your_PASSWORD";
                    
                    // MQTT configuration
                    const char* mqtt_server = "broker_address";
                    const char* mqtt_topic = "energy/consumption";
                    const int mqtt_port = 1883;
                    
                    // S0 Pin configuration
                    const int s0Pin = 7; // Pin connected to the S0 output signal
                    
                    // Timing variables
                    unsigned long pulseDuration = 100; // Duration of each pulse in milliseconds
                    unsigned long pulseInterval = 720; // Interval between pulses in milliseconds (initial value)
                    
                    // WiFi and MQTT clients
                    WiFiClient espClient;
                    PubSubClient client(espClient);
                    
                    // Function to handle received MQTT messages
                    void callback(char* topic, byte* payload, unsigned int length) {
                      char message[length + 1];
                      strncpy(message, (char*)payload, length);
                      message[length] = '\0';
                    
                      float kWh = atof(message); // Convert received message to float
                    
                      // Assuming 1000 pulses per kWh and 3600 seconds in an hour
                      pulseInterval = (3600 * 1000) / (kWh * 1000) - pulseDuration;
                    }
                    
                    void setup() {
                      // Set the S0 pin as an output
                      pinMode(s0Pin, OUTPUT);
                    
                      // Initialize Serial for debugging
                      Serial.begin(115200);
                    
                      // Connect to WiFi
                      setup_wifi();
                    
                      // Set up MQTT client
                      client.setServer(mqtt_server, mqtt_port);
                      client.setCallback(callback);
                    
                      // Connect to MQTT broker
                      reconnect();
                    }
                    
                    void loop() {
                      if (!client.connected()) {
                        reconnect();
                      }
                      client.loop();
                    
                      // Generate a pulse
                      digitalWrite(s0Pin, HIGH);  // Set the S0 pin HIGH
                      delay(pulseDuration);       // Wait for the pulse duration
                      digitalWrite(s0Pin, LOW);   // Set the S0 pin LOW
                      delay(pulseInterval);       // Wait for the interval before the next pulse
                    }
                    
                    void setup_wifi() {
                      delay(10);
                      // Connect to WiFi
                      Serial.println();
                      Serial.print("Connecting to ");
                      Serial.println(ssid);
                    
                      WiFi.begin(ssid, password);
                    
                      while (WiFi.status() != WL_CONNECTED) {
                        delay(500);
                        Serial.print(".");
                      }
                    
                      Serial.println("");
                      Serial.println("WiFi connected");
                      Serial.println("IP address: ");
                      Serial.println(WiFi.localIP());
                    }
                    
                    void reconnect() {
                      // Loop until we're reconnected
                      while (!client.connected()) {
                        Serial.print("Attempting MQTT connection...");
                        // Attempt to connect
                        if (client.connect("ESP8266Client")) {
                          Serial.println("connected");
                          // Subscribe to topic
                          client.subscribe(mqtt_topic);
                        } else {
                          Serial.print("failed, rc=");
                          Serial.print(client.state());
                          Serial.println(" try again in 5 seconds");
                          // Wait 5 seconds before retrying
                          delay(5000);
                        }
                      }
                    }
                    
                    

                    Hab leider kein Oszilloskop um das mal zu prüfen.

                    @Andy123Andy1 :
                    Ich habe noch einige Wochen nach meinem letzten post hier geschaut, ob es einen reply gibt, jetzt aber leider bereits etwas länger nicht mehr.
                    Ist Deine Frage an mich noch aktuell?
                    Falls ja, gleich anschliessend ein paar Infos:

                    • HW: Habe ich nur die S0 Schnittstelle hier besprochen. Ich habe sonst andere HW mit ESP32 verwendet. 1x ein Olimex Board mit LAN Anschluss (ist jetzt auch bei mir in Gebrauch), 1x ein ESP32 WIFI Modul (hatte auch funktioniert und war temporär in Verwendung, ich wollte dann aber noch auf einen LAN Anschluss wechseln). Welche Beschreibung benötigst Du? Die LAN Variante sieht bei mir so aus (die S0 Leitung ist bei den blauen Klemmen, bei diesem Foto nicht angeschlossen):
                      235e5d94-8071-4b40-9629-5bcc6741c7a7-image.png
                    • Ich habe für beide Varianten ein eigenes PCB Design erstellt (die "grüne" Platine im oberen Foto; und die Komponenten entweder direkt darauf gelötet bzw. für das ESP board Buchsenleisten auf das PCB board gelötet).
                    • Software: Die Werte (kW Einspeiseleistung) müssen in meiner Software separat noch von der PV Anlage bezogen und über einen MQTT Broker an das board weitergeleitet werden. Zusätzlich ist meine source code etwas länger, da ich auch exception handlings eingebaut habe, z.B., falls die kW Leistungsinfo aus irgendeinem Grund nicht mehr aktualisiert werden würde oder dass zu tiefe W Leistungsinfos die Übermittlung von eventuell anschliessend höheren kW Werten nicht zu sehr verzögert. Hier habe ich ebenfalls separaten source code für das WIFI ESP32 board und das Olimex ESP32 LAN boad (der USB Anschluss für die Programmierung und wird bei POE bei diesem board im Betrieb nicht benötigt. Da ich jedoch einen Switch ohne POE verwende, habe ich hier den USB Anschluss auch für die Stromversorgung ebenfalls angeschlossen).
                    M 1 Reply Last reply
                    0
                    • M Mistral

                      @dieter_p

                      @andy123andy1 said in S0 - Signal mit Wemos D1 Mini erzeugen?:

                      @mistral Guten Morgen, ich suche gerade auch nach einer Lösung ein S0 Signal zu erzeugen. Kannst du die verwendetet Hardware und evtl. den Code der Öffentlichkeit zur Verfügung stellen? Dann brauche ich nicht alles neu Recherchieren und Testen 🙂

                      Das ist die benötigte Hardware wenn ich es richtig aus den vorherigen Post lese:

                      1675434481039-d6d9c7f4-3b51-4f12-9c83-7a71a0238e2c-grafik.png

                      Wenn jetzt noch jemand einen Code Schnipsel hätte wäre ich glücklich 🙂

                      Hab mal rumprobiert hier mein Ergebnis:

                      #include <ESP8266WiFi.h>
                      #include <PubSubClient.h>
                      
                      // WiFi configuration
                      const char* ssid = "your_SSID";
                      const char* password = "your_PASSWORD";
                      
                      // MQTT configuration
                      const char* mqtt_server = "broker_address";
                      const char* mqtt_topic = "energy/consumption";
                      const int mqtt_port = 1883;
                      
                      // S0 Pin configuration
                      const int s0Pin = 7; // Pin connected to the S0 output signal
                      
                      // Timing variables
                      unsigned long pulseDuration = 100; // Duration of each pulse in milliseconds
                      unsigned long pulseInterval = 720; // Interval between pulses in milliseconds (initial value)
                      
                      // WiFi and MQTT clients
                      WiFiClient espClient;
                      PubSubClient client(espClient);
                      
                      // Function to handle received MQTT messages
                      void callback(char* topic, byte* payload, unsigned int length) {
                        char message[length + 1];
                        strncpy(message, (char*)payload, length);
                        message[length] = '\0';
                      
                        float kWh = atof(message); // Convert received message to float
                      
                        // Assuming 1000 pulses per kWh and 3600 seconds in an hour
                        pulseInterval = (3600 * 1000) / (kWh * 1000) - pulseDuration;
                      }
                      
                      void setup() {
                        // Set the S0 pin as an output
                        pinMode(s0Pin, OUTPUT);
                      
                        // Initialize Serial for debugging
                        Serial.begin(115200);
                      
                        // Connect to WiFi
                        setup_wifi();
                      
                        // Set up MQTT client
                        client.setServer(mqtt_server, mqtt_port);
                        client.setCallback(callback);
                      
                        // Connect to MQTT broker
                        reconnect();
                      }
                      
                      void loop() {
                        if (!client.connected()) {
                          reconnect();
                        }
                        client.loop();
                      
                        // Generate a pulse
                        digitalWrite(s0Pin, HIGH);  // Set the S0 pin HIGH
                        delay(pulseDuration);       // Wait for the pulse duration
                        digitalWrite(s0Pin, LOW);   // Set the S0 pin LOW
                        delay(pulseInterval);       // Wait for the interval before the next pulse
                      }
                      
                      void setup_wifi() {
                        delay(10);
                        // Connect to WiFi
                        Serial.println();
                        Serial.print("Connecting to ");
                        Serial.println(ssid);
                      
                        WiFi.begin(ssid, password);
                      
                        while (WiFi.status() != WL_CONNECTED) {
                          delay(500);
                          Serial.print(".");
                        }
                      
                        Serial.println("");
                        Serial.println("WiFi connected");
                        Serial.println("IP address: ");
                        Serial.println(WiFi.localIP());
                      }
                      
                      void reconnect() {
                        // Loop until we're reconnected
                        while (!client.connected()) {
                          Serial.print("Attempting MQTT connection...");
                          // Attempt to connect
                          if (client.connect("ESP8266Client")) {
                            Serial.println("connected");
                            // Subscribe to topic
                            client.subscribe(mqtt_topic);
                          } else {
                            Serial.print("failed, rc=");
                            Serial.print(client.state());
                            Serial.println(" try again in 5 seconds");
                            // Wait 5 seconds before retrying
                            delay(5000);
                          }
                        }
                      }
                      
                      

                      Hab leider kein Oszilloskop um das mal zu prüfen.

                      @Andy123Andy1 :
                      Ich habe noch einige Wochen nach meinem letzten post hier geschaut, ob es einen reply gibt, jetzt aber leider bereits etwas länger nicht mehr.
                      Ist Deine Frage an mich noch aktuell?
                      Falls ja, gleich anschliessend ein paar Infos:

                      • HW: Habe ich nur die S0 Schnittstelle hier besprochen. Ich habe sonst andere HW mit ESP32 verwendet. 1x ein Olimex Board mit LAN Anschluss (ist jetzt auch bei mir in Gebrauch), 1x ein ESP32 WIFI Modul (hatte auch funktioniert und war temporär in Verwendung, ich wollte dann aber noch auf einen LAN Anschluss wechseln). Welche Beschreibung benötigst Du? Die LAN Variante sieht bei mir so aus (die S0 Leitung ist bei den blauen Klemmen, bei diesem Foto nicht angeschlossen):
                        235e5d94-8071-4b40-9629-5bcc6741c7a7-image.png
                      • Ich habe für beide Varianten ein eigenes PCB Design erstellt (die "grüne" Platine im oberen Foto; und die Komponenten entweder direkt darauf gelötet bzw. für das ESP board Buchsenleisten auf das PCB board gelötet).
                      • Software: Die Werte (kW Einspeiseleistung) müssen in meiner Software separat noch von der PV Anlage bezogen und über einen MQTT Broker an das board weitergeleitet werden. Zusätzlich ist meine source code etwas länger, da ich auch exception handlings eingebaut habe, z.B., falls die kW Leistungsinfo aus irgendeinem Grund nicht mehr aktualisiert werden würde oder dass zu tiefe W Leistungsinfos die Übermittlung von eventuell anschliessend höheren kW Werten nicht zu sehr verzögert. Hier habe ich ebenfalls separaten source code für das WIFI ESP32 board und das Olimex ESP32 LAN boad (der USB Anschluss für die Programmierung und wird bei POE bei diesem board im Betrieb nicht benötigt. Da ich jedoch einen Switch ohne POE verwende, habe ich hier den USB Anschluss auch für die Stromversorgung ebenfalls angeschlossen).
                      M Offline
                      M Offline
                      Mistral
                      wrote on last edited by Mistral
                      #78

                      @Andy123Andy1 : Ich habe mir nun Dein Pdf noch etwas angeschaut. Soweit ich dies sehe, musst Du gemäss diesem der WP ja den Eigenverbrauch (und nicht den PV Überschussstrom, wie bei mir) angeben. Aber hätte auf meine Lösung keinen Einfluss, da ich nur einen kW Wert über MQTT übermittle und damit auch ein anderer Wert übermittelt werden könnte.
                      Info: Falls Du nur einen Stromzähler hast, welcher "nicht smart" ist, gibt es diverse "Leseköpfe", welche entweder die Impulse zählen können oder z.B. die open source Lösung AI on the edge etc. (und ja, wäre dann etwas hin und her gerechnet, da Du Energie damit auslesen würdest und dies dann auf Leistung umrechnen müsstest; was aber einfach geht, da Du die Intervallrate Deiner Abfragen kennst).
                      Oder Dein WR hat diese Infos bereits (ist z.B. bei mir so) und kannst Du dort auslesen und damit direkt verwenden.

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      192

                      Online

                      32.4k

                      Users

                      81.3k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe