Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Füllstandsmessung per Pegelsonde.

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

Füllstandsmessung per Pegelsonde.

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
604 Beiträge 63 Kommentatoren 202.9k Aufrufe 69 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    Maze77
    schrieb am zuletzt editiert von
    #235

    Danke schonmal :)

    Hast du noch eine Bezugsquelle zu deinem Arduino-Clone und vorallem dem Ethernet Shield?
    Hab nur Shields für den "Uno" von den Abmaßen gefunden.

    Gruß
    Maze

    1 Antwort Letzte Antwort
    0
    • L ltathome

      Hi - das Thema pull-Request hatten wir neulich schon mal auch per Chat - hatten wir dann nicht weiterverfolgt. Ich hab dir hier den diff beigepackt: patch.diff

      und kann dir gerne helfen die wichtigen Stellen zu erklären - melde dich halt.

      Grundsätzlich folgendes angepackt:
      einen Pin (PIN 2) als Input-Pin deklariert:

      #define MODE_PIN 2
      #define MODE_ZISTERNE 0
      #define MODE_HAUSWASSER 1
      #define MODE_AUTO 2
      #define MODE_COUNT 10
      bool setmode = false;
      const char *modes[] = {"Zisterne", "Hauswasser", "Auto"};
      int mode_count = MODE_COUNT;
      int mode = MODE_AUTO;
      int old_mode = MODE_AUTO;
      int pin_stat;
      int old_stat;
      

      der wird im loop auf Low/high-Übergänge geprüft und mit erstem auslösen setzt sich das System in einen "Mode-Change" Modus für 10 sekunden, in dem jeder weitere Übergang die Modi durchschaltet und den Countdown wieder auf 10 Sekunden setzt (damit das nicht prellt, zwischen den Übergängen 200ms delay:

          pin_stat = digitalRead(MODE_PIN);
          pinMillis = millis();
          if (pin_stat == LOW) {
              if (pinMillis - lastMillis > 200) {
                  //USE_SERIAL.println("Impuls Low");
                  lastMillis = pinMillis;
                  mode_count = MODE_COUNT;
                  if (!setmode) {
                      setmode = true;
                      old_mode = mode;
                      //sprintf(buf, "Enter Settings-Mode %d (%s)", mode, modes[mode]);
                      //USE_SERIAL.println(buf);
                  } else {
                      mode--;
                      if (mode < 0) {
                          mode = 2;
                      }
                      //sprintf(buf, "Mode change to %d (%s)", mode, modes[mode]);
                      //USE_SERIAL.println(buf);
                  }
              }
          }
      

      Wenn im Settingsmodus - den Zähler runterzählen und sonst die entscheidung treffen, ob das Ventil umzuschalten ist (Limits)

              if (setmode) {
                  mode_count--;
                  if (mode_count <= 0) {
                      //sprintf(buf, "leaving Settings-Mode - change from %d to %d (%s)", old_mode, mode, modes[mode]);
                      //USE_SERIAL.println(buf);
                      old_mode = mode;
                      setmode = false;
                  }
              }
              if (!setmode) {
                  if (mode == MODE_ZISTERNE) {
                      new_valve = VALVE_ZISTERNE;
                      reason = 0;
                  } else if (mode == MODE_HAUSWASSER) {
                      new_valve = VALVE_HAUSWASSER;
                      reason = 0;
                  } else if (mode == MODE_AUTO) {
                      if (liter >= limit_high) {
                          new_valve = VALVE_ZISTERNE;
                          reason = 1;
                      }
                      if (liter <= limit_low) {
                          new_valve = VALVE_HAUSWASSER;
                          reason = 2;
                      }
                  }
              }
              /*-----------------------------------------------------------
               * Wenn Ventil umzuschalten ist
              */
              if (new_valve != valve) {
                  valve = new_valve;
                  digitalWrite(VALVE_PIN, valve);
                  //sprintf(buf, "Set Valve to %s (%s)", valves[valve], reasons[reason]);
                  //USE_SERIAL.println(buf);
              }
      

      Einen PIN (3) als Ausgang für das Ventil-Relais:

      
      #define VALVE_PIN 3
      #define VALVE_ZISTERNE LOW
      #define VALVE_HAUSWASSER HIGH
      int valve = VALVE_ZISTERNE;
      int new_valve = VALVE_ZISTERNE;
      int reason = 0;
      const char *valves[] = {"Zisterne", "Hauswasser"};
      const char *reasons[] = {"manuelle Steuerung", "Automatik voll", "Automatik leer"};
      
      

      Die MQTT-Publishes erweitert:

      void Mqttpublish(void) {
              if (mqttclient.connected()) {
                  dtostrf(analog, 5, 2, buf);
                  mqttclient.publish("Zisterne/Analog", buf);
                  dtostrf(liter, 5, 0, buf);
                  mqttclient.publish("Zisterne/Liter", buf);
                  dtostrf(limit_low, 1, 0, buf);
                  mqttclient.publish("Zisterne/LiterLow", buf);
                  dtostrf(limit_high, 1, 0, buf);
                  mqttclient.publish("Zisterne/LiterHigh", buf);
                  dtostrf(percent, 5, 0, buf);
                  mqttclient.publish("Zisterne/Prozent", buf);
                  
                  if (mode == 2) {
                      mqttclient.publish("Zisterne/Modus", "Auto");
                  } else {
                      mqttclient.publish("Zisterne/Modus", "Manuell");          
                  }
                  dtostrf(mode, 1, 0, buf);
                  mqttclient.publish("Zisterne/Mode", buf);
                  dtostrf(valve, 1, 0, buf);
                  mqttclient.publish("Zisterne/Valve", buf);
                  mqttclient.publish("Zisterne/Ventil", valves[valve]);
          
                  // System
                  mqttclient.publish("Zisterne/Uptime", uptime);
              } else {
                  MqttConnect(mqttuser, mqttpass);  
              }
          }
      

      und natürlich den Subscribe eingebaut:

      
      
      void MqttConnect(char *user, char* pass) {
      
          mqttclient.setClient(ethClient);
          mqttclient.setServer(mqttserver, mqttport);
          mqttclient.setCallback(MqttCallback);
          
          mqttconnected = mqttclient.connect(MQTT_ID, user, pass);
          if (mqttconnected) {
              // USE_SERIAL.println("Connected to Mqtt-Server");
              mqttclient.subscribe("Zisterne/cmnd/Mode");
              mqttclient.subscribe("Zisterne/cmnd/Limit");
              mqttclient.subscribe("Zisterne/Mode");
              // USE_SERIAL.println("subscribing to Zisterne/cmnd/Mode");
          }
      }
      
      

      sowie den Callback definiert:

      
      void MqttCallback(char *topic, byte *payload, unsigned int length) {
          char *payloadvalue;
          char *payloadkey;
      
          payload[length] = '\0';
          payloadkey = (char *)&payload[0];
      
          // USE_SERIAL.println(payloadstring);
          if (strcmp(topic, "Zisterne/cmnd/Mode") == 0 || strcmp(topic, "Zisterne/Mode") == 0) {
              if (strcmp(payloadkey, "0") == 0 || strcmp(payloadkey, "Zisterne") == 0) {
                  mode = MODE_ZISTERNE;
              } else if (strcmp(payloadkey, "1") == 0 || strcmp(payloadkey, "Hauswasser") == 0) {
                  mode = MODE_HAUSWASSER;
              } else if (strcmp(payloadkey, "2") == 0 || strcmp(payloadkey, "Auto") == 0) {
                  mode = MODE_AUTO;
              }
          } else if (strcmp(topic, "Zisterne/cmnd/Limit") == 0) {
              int eq = 0;
              for (int i = 0; i < length; i++) {
                  if (payload[i] == '=') {
                      eq = i;
                      break;
                  }
              }
              if (eq > 0) {
                  payload[eq++] = 0;
                  payloadvalue = (char *)&payload[eq];
                  if (strcmp((char *)payload, "Low") == 0 || strcmp((char *)payload, "low") == 0) {
                      limit_low = atoi(payloadvalue);
                  }
                  if (strcmp((char *)payload, "High") == 0 || strcmp((char *)payload, "high") == 0) {
                      limit_high = atoi(payloadvalue);
                  }
              }
          }
      }
      

      wie gesagt - melde dich, wenn ich helfen kann/soll.

      EisbaeeerE Offline
      EisbaeeerE Offline
      Eisbaeeer
      Developer
      schrieb am zuletzt editiert von
      #236

      @ltathome Da hast du mir ja ein paar Zeilen Code verheimlicht ;-)
      ABER der diff hat alles gerettet. Hab eben den Code aktualisiert und fehlerfrei compiliert. Werde ihn die nächsten Tage hoffentlich mal einspielen, testen und in Github hochladen.
      Danke für die Anpassung.
      Gruß Eisbaeeer

      Kein support per PM. Bitte im Forum Fragen stellen!

      L 1 Antwort Letzte Antwort
      0
      • EisbaeeerE Eisbaeeer

        Nicht wirklich ein Schaltplan, aber ich hoffe man kann es nachvollziehen.
        Der Aufwand für Eagle war mir jetzt zu hoch. Aber es sollte ersichtlich sein, wie man das verschaltet.
        Schaltplan.jpg
        Ansonsten einfach fragen.
        Grüße Eisbaeeer

        E Offline
        E Offline
        ede70
        schrieb am zuletzt editiert von
        #237

        @Eisbaeeer ich bekomme bei dem von dir angegebenen Wandler die 0V am linken Poti nicht kalibriert. Minimal kriege ca. 3V. Weniger geht nicht und man hört beim Weiterdrehen ein leises Klicken im Poti?
        e6c99ea7-8909-4582-b962-c16339912678-grafik.png
        Jumper sind beide gezogen.
        Lötstellen habe ich "nachgelötet", dann das Modul ausgetauscht gg. ein baugleiches. Auf 0V komme ich nicht.
        Deine Anleitung ist ja super, aber ich verzweifle langsam. Gibt es noch ein Tipp?

        Vielen Dank für die Hilfe!
        Torsten

        EisbaeeerE 1 Antwort Letzte Antwort
        0
        • E ede70

          @Eisbaeeer ich bekomme bei dem von dir angegebenen Wandler die 0V am linken Poti nicht kalibriert. Minimal kriege ca. 3V. Weniger geht nicht und man hört beim Weiterdrehen ein leises Klicken im Poti?
          e6c99ea7-8909-4582-b962-c16339912678-grafik.png
          Jumper sind beide gezogen.
          Lötstellen habe ich "nachgelötet", dann das Modul ausgetauscht gg. ein baugleiches. Auf 0V komme ich nicht.
          Deine Anleitung ist ja super, aber ich verzweifle langsam. Gibt es noch ein Tipp?

          Vielen Dank für die Hilfe!
          Torsten

          EisbaeeerE Offline
          EisbaeeerE Offline
          Eisbaeeer
          Developer
          schrieb am zuletzt editiert von
          #238

          @ede70 hab eben nochmals nachgeschaut. Deine Jumper sind richtig gesteckt. Welchen Wert hast du denn ohne Sonde?20200530_195133.jpg
          Gruß Eisbaeeer

          Kein support per PM. Bitte im Forum Fragen stellen!

          E 1 Antwort Letzte Antwort
          0
          • EisbaeeerE Eisbaeeer

            @ede70 hab eben nochmals nachgeschaut. Deine Jumper sind richtig gesteckt. Welchen Wert hast du denn ohne Sonde?20200530_195133.jpg
            Gruß Eisbaeeer

            E Offline
            E Offline
            ede70
            schrieb am zuletzt editiert von
            #239

            @Eisbaeeer ca. 5,3V

            1 Antwort Letzte Antwort
            0
            • EisbaeeerE Eisbaeeer

              @ltathome Da hast du mir ja ein paar Zeilen Code verheimlicht ;-)
              ABER der diff hat alles gerettet. Hab eben den Code aktualisiert und fehlerfrei compiliert. Werde ihn die nächsten Tage hoffentlich mal einspielen, testen und in Github hochladen.
              Danke für die Anpassung.
              Gruß Eisbaeeer

              L Offline
              L Offline
              ltathome
              schrieb am zuletzt editiert von
              #240

              @Eisbaeeer said in Füllstandsmessung per Pegelsonde.:

              @ltathome Da hast du mir ja ein paar Zeilen Code verheimlicht ;-)
              ABER der diff hat alles gerettet. Hab eben den Code aktualisiert und fehlerfrei compiliert. Werde ihn die nächsten Tage hoffentlich mal einspielen, testen und in Github hochladen.
              Danke für die Anpassung.
              Gruß Eisbaeeer

              Ich hatte erwartet, dass klar ist, dass das nur die wesentlichen Ausschnitte waren - sorry.

              EisbaeeerE 1 Antwort Letzte Antwort
              0
              • L ltathome

                @Eisbaeeer said in Füllstandsmessung per Pegelsonde.:

                @ltathome Da hast du mir ja ein paar Zeilen Code verheimlicht ;-)
                ABER der diff hat alles gerettet. Hab eben den Code aktualisiert und fehlerfrei compiliert. Werde ihn die nächsten Tage hoffentlich mal einspielen, testen und in Github hochladen.
                Danke für die Anpassung.
                Gruß Eisbaeeer

                Ich hatte erwartet, dass klar ist, dass das nur die wesentlichen Ausschnitte waren - sorry.

                EisbaeeerE Offline
                EisbaeeerE Offline
                Eisbaeeer
                Developer
                schrieb am zuletzt editiert von
                #241

                @ltathome Kein Problem ;-) War nicht als Kritik gemeint!
                Gruß

                Kein support per PM. Bitte im Forum Fragen stellen!

                1 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  Maze77
                  schrieb am zuletzt editiert von Maze77
                  #242

                  Hallo Zusammen,

                  ich hatte jetzt auch mal ein wenig Zeit mir den Cdoe anzusehen.

                  Meiner Hardware ist folgende:

                  Ardunio MKR 1000
                  LCD 2x16

                  Drucksonde, DC-DC-Step Up und Messbrücke kommen noch.

                  Nachdem ich mich erst einmal in das Thema einarbeiten musste, bin ich jetzt soweit, dass der Code angepasst auf meine WiFi Verbindung und das 16x2 Display läuft.

                  Die Messwerte habe ich mittels Poti simuliert.

                  Hierbei ist mir ein Fehler in deinem Skript aufgefallen @Eisbaeeer und zwar bei der Glättung des Analogen Messwertes.
                  Der Fehler fällt bei deinen 60 Messungen nicht wirklich stark ins Gewicht, aber er ist da :) Bei 2 Messungen liegst du um 100% daneben. Du hast vergessen den Wert "fuel" wieder zu resetten. Somit addierst du auf den alten Wert die neuen hinzu. Der Fehler liegt somit bei (messungen+ 1) / (messungen).
                  Die eine Zeile im Code behebt den Fehler.

                      // Werte aufaddieren
                          fuel = 0; // Initialisierung HINZUGEFÜGT, da Berechnung sonst falsch
                          for (int i = 0; i < messungen; i++)
                            {
                             fuel = fuel + myArray[i];
                            }
                          // Summe durch Anzahl
                             fuel = fuel / messungen;
                  

                  Dann Frage ich mich, warum du die Prozentzahl so "seltsam" berechnest.

                      percent = fuel * 0.132;
                  

                  Du gibts in dem Skript doch den maximalen Analog Wert an und hast den aktuellen vorliegen. Somit wäre folgender Code eigentlich richtig:

                  percent = fuel / analog_value * 100;
                  

                  Was mir noch aufgefallen ist, ist dass die Pointerschleife zuweit läuft:

                      if ( pointer > messungen ) {
                        pointer = 0;
                      } else {
                        pointer++;  
                      }
                  

                  Bei dir mit zB messungen = 60 ginge der Pointer von 0 bis 60 was 61 Messpunkten entspricht. (die 0 nicht vergessen).

                  Was sehr schade an dem Code ist, ist der Umstand, dass er mittlerweile für ein 20x4 LCD geschrieben ist. In deiner Teile List und auch im Header vom Code stehen 16x2, was vielleicht den ein oder anderen zum "Fehlkauf" verleitet ;)

                  Aber im Großen und Ganzen läuft der Code und die Kommunikation zu meinem IP-Symcon MQTT Server funktioniert auch 1A.

                  Sobald der Drucksensor kommt sollte sich somit das Zisternenüberwachungsproblem erledigt haben :)

                  Danke nochmal und Gruß
                  Maze

                  PS:
                  Beim Arduino MKR können die Analogen Inputs mit bis zu 12Bit ausgelesen werden (0-4095).

                  EisbaeeerE L 2 Antworten Letzte Antwort
                  0
                  • M Maze77

                    Hallo Zusammen,

                    ich hatte jetzt auch mal ein wenig Zeit mir den Cdoe anzusehen.

                    Meiner Hardware ist folgende:

                    Ardunio MKR 1000
                    LCD 2x16

                    Drucksonde, DC-DC-Step Up und Messbrücke kommen noch.

                    Nachdem ich mich erst einmal in das Thema einarbeiten musste, bin ich jetzt soweit, dass der Code angepasst auf meine WiFi Verbindung und das 16x2 Display läuft.

                    Die Messwerte habe ich mittels Poti simuliert.

                    Hierbei ist mir ein Fehler in deinem Skript aufgefallen @Eisbaeeer und zwar bei der Glättung des Analogen Messwertes.
                    Der Fehler fällt bei deinen 60 Messungen nicht wirklich stark ins Gewicht, aber er ist da :) Bei 2 Messungen liegst du um 100% daneben. Du hast vergessen den Wert "fuel" wieder zu resetten. Somit addierst du auf den alten Wert die neuen hinzu. Der Fehler liegt somit bei (messungen+ 1) / (messungen).
                    Die eine Zeile im Code behebt den Fehler.

                        // Werte aufaddieren
                            fuel = 0; // Initialisierung HINZUGEFÜGT, da Berechnung sonst falsch
                            for (int i = 0; i < messungen; i++)
                              {
                               fuel = fuel + myArray[i];
                              }
                            // Summe durch Anzahl
                               fuel = fuel / messungen;
                    

                    Dann Frage ich mich, warum du die Prozentzahl so "seltsam" berechnest.

                        percent = fuel * 0.132;
                    

                    Du gibts in dem Skript doch den maximalen Analog Wert an und hast den aktuellen vorliegen. Somit wäre folgender Code eigentlich richtig:

                    percent = fuel / analog_value * 100;
                    

                    Was mir noch aufgefallen ist, ist dass die Pointerschleife zuweit läuft:

                        if ( pointer > messungen ) {
                          pointer = 0;
                        } else {
                          pointer++;  
                        }
                    

                    Bei dir mit zB messungen = 60 ginge der Pointer von 0 bis 60 was 61 Messpunkten entspricht. (die 0 nicht vergessen).

                    Was sehr schade an dem Code ist, ist der Umstand, dass er mittlerweile für ein 20x4 LCD geschrieben ist. In deiner Teile List und auch im Header vom Code stehen 16x2, was vielleicht den ein oder anderen zum "Fehlkauf" verleitet ;)

                    Aber im Großen und Ganzen läuft der Code und die Kommunikation zu meinem IP-Symcon MQTT Server funktioniert auch 1A.

                    Sobald der Drucksensor kommt sollte sich somit das Zisternenüberwachungsproblem erledigt haben :)

                    Danke nochmal und Gruß
                    Maze

                    PS:
                    Beim Arduino MKR können die Analogen Inputs mit bis zu 12Bit ausgelesen werden (0-4095).

                    EisbaeeerE Offline
                    EisbaeeerE Offline
                    Eisbaeeer
                    Developer
                    schrieb am zuletzt editiert von
                    #243

                    @Maze77 Hi Maze
                    Du hast dann aber nicht meinen Code von github verwendet!? Der ist und bleibt für ein zweizeiliges Display. Die Änderung auf ein 4 zeiliges ist dort nicht drin. Ich habe inzwischen schon ein paar Änderungen aber noch nicht gepusht. Ich schaue mir deine erwähnten Stellen noch an und fixe das.
                    Gruß Eisbaeeer

                    Kein support per PM. Bitte im Forum Fragen stellen!

                    M 1 Antwort Letzte Antwort
                    0
                    • EisbaeeerE Eisbaeeer

                      @Maze77 Hi Maze
                      Du hast dann aber nicht meinen Code von github verwendet!? Der ist und bleibt für ein zweizeiliges Display. Die Änderung auf ein 4 zeiliges ist dort nicht drin. Ich habe inzwischen schon ein paar Änderungen aber noch nicht gepusht. Ich schaue mir deine erwähnten Stellen noch an und fixe das.
                      Gruß Eisbaeeer

                      M Offline
                      M Offline
                      Maze77
                      schrieb am zuletzt editiert von Maze77
                      #244

                      @Eisbaeeer

                      Ich dachte schon, dass es der richtige Code aus Git ist.

                      Header war von Dir und die Version war 1.4.

                      Ich schau aber nach, sobald ich am PC bin.

                      edit:
                      Den Sketch hatte ich von folgender Seite:

                      https://github.com/Eisbaeeer/Arduino.Ethernet.Zisterne#abgleich

                      edit2:
                      Nur um das kurz Klarzustellen:
                      Es läuft schon auf einem 16x2 LCD, aber die Uptime und nochwas werden auf Zeile 3/4 geschrieben und erscheinen somit natürlich nicht.

                      1 Antwort Letzte Antwort
                      0
                      • M Maze77

                        Hallo Zusammen,

                        ich hatte jetzt auch mal ein wenig Zeit mir den Cdoe anzusehen.

                        Meiner Hardware ist folgende:

                        Ardunio MKR 1000
                        LCD 2x16

                        Drucksonde, DC-DC-Step Up und Messbrücke kommen noch.

                        Nachdem ich mich erst einmal in das Thema einarbeiten musste, bin ich jetzt soweit, dass der Code angepasst auf meine WiFi Verbindung und das 16x2 Display läuft.

                        Die Messwerte habe ich mittels Poti simuliert.

                        Hierbei ist mir ein Fehler in deinem Skript aufgefallen @Eisbaeeer und zwar bei der Glättung des Analogen Messwertes.
                        Der Fehler fällt bei deinen 60 Messungen nicht wirklich stark ins Gewicht, aber er ist da :) Bei 2 Messungen liegst du um 100% daneben. Du hast vergessen den Wert "fuel" wieder zu resetten. Somit addierst du auf den alten Wert die neuen hinzu. Der Fehler liegt somit bei (messungen+ 1) / (messungen).
                        Die eine Zeile im Code behebt den Fehler.

                            // Werte aufaddieren
                                fuel = 0; // Initialisierung HINZUGEFÜGT, da Berechnung sonst falsch
                                for (int i = 0; i < messungen; i++)
                                  {
                                   fuel = fuel + myArray[i];
                                  }
                                // Summe durch Anzahl
                                   fuel = fuel / messungen;
                        

                        Dann Frage ich mich, warum du die Prozentzahl so "seltsam" berechnest.

                            percent = fuel * 0.132;
                        

                        Du gibts in dem Skript doch den maximalen Analog Wert an und hast den aktuellen vorliegen. Somit wäre folgender Code eigentlich richtig:

                        percent = fuel / analog_value * 100;
                        

                        Was mir noch aufgefallen ist, ist dass die Pointerschleife zuweit läuft:

                            if ( pointer > messungen ) {
                              pointer = 0;
                            } else {
                              pointer++;  
                            }
                        

                        Bei dir mit zB messungen = 60 ginge der Pointer von 0 bis 60 was 61 Messpunkten entspricht. (die 0 nicht vergessen).

                        Was sehr schade an dem Code ist, ist der Umstand, dass er mittlerweile für ein 20x4 LCD geschrieben ist. In deiner Teile List und auch im Header vom Code stehen 16x2, was vielleicht den ein oder anderen zum "Fehlkauf" verleitet ;)

                        Aber im Großen und Ganzen läuft der Code und die Kommunikation zu meinem IP-Symcon MQTT Server funktioniert auch 1A.

                        Sobald der Drucksensor kommt sollte sich somit das Zisternenüberwachungsproblem erledigt haben :)

                        Danke nochmal und Gruß
                        Maze

                        PS:
                        Beim Arduino MKR können die Analogen Inputs mit bis zu 12Bit ausgelesen werden (0-4095).

                        L Offline
                        L Offline
                        ltathome
                        schrieb am zuletzt editiert von
                        #245

                        @Maze77 said in Füllstandsmessung per Pegelsonde.:

                        Hierbei ist mir ein Fehler in deinem Skript aufgefallen @Eisbaeeer und zwar bei der Glättung des Analogen Messwertes.
                        Der Fehler fällt bei deinen 60 Messungen nicht wirklich stark ins Gewicht, aber er ist da Bei 2 Messungen liegst du um 100% daneben. Du hast vergessen den Wert "fuel" wieder zu resetten. Somit addierst du auf den alten Wert die neuen hinzu. Der Fehler liegt somit bei (messungen+ 1) / (messungen).
                        Die eine Zeile im Code behebt den Fehler.
                        // Werte aufaddieren
                        fuel = 0; // Initialisierung HINZUGEFÜGT, da Berechnung sonst falsch
                        for (int i = 0; i < messungen; i++)
                        {
                        fuel = fuel + myArray[i];
                        }
                        // Summe durch Anzahl
                        fuel = fuel / messungen;

                        hui - das dürfte stimmen...
                        @Eisbaeeer : meine Version im Diff hat zwar einen anderen Namen für die Variable aber noch den gleichen Fehler.

                        1 Antwort Letzte Antwort
                        0
                        • M Offline
                          M Offline
                          Maze77
                          schrieb am zuletzt editiert von Maze77
                          #246

                          Mal eine doofe Frage zu dem Bilin Strom zu Spannungswandler.

                          Wenn ich den Wandler mit 24V speise ( auf GND und VCC) kann ich dann an dem Anschlussterminal für den Sensor (I- und I+) die 24V messen?

                          ich habe nur 24V zwischen VCC und I- oder I+, aber keine Spannung zwischen beiden I polen.

                          Somit bekomme ich auch keinen Strom vom Sensor.

                          Wenn ich den Sensor direkt an 24V packe dann bekomme ich 4mA trocken und bei ca. 1.4m die 8mA.

                          Ich scheine das Wandler Board noch nicht zu verstehen...

                          Danke schonmal für Eure Anregungen.

                          Maze

                          edit:
                          Hat sich erledigt. In @Eisbaeeer Anschluss Bild war es ersichtlich.
                          Frage mich nur, warum meine Bridge da Anschlussterminals hat. Hätte man den Ground auch direkt auf I- legen können und das Terminal so auslegen, dass da eine Sonde direkt angeschlossen werden kann...

                          1 Antwort Letzte Antwort
                          0
                          • EisbaeeerE Offline
                            EisbaeeerE Offline
                            Eisbaeeer
                            Developer
                            schrieb am zuletzt editiert von
                            #247

                            Heute mal viel gießen im Garten. Zisterne leer. Zeit für eine neue Version ;-)
                            Ich habe die Änderungen im Github mit einfließen lassen. Über MQTT sind jetzt dank @ltathome https://forum.iobroker.net/user/ltathome Grenzwerte setzbar. Das heisst ihr könnt Eure Frischwasser Nachspeisung oder Telegram oder was auch sonst mit einbauen. Wer noch Optimierungen findet, gerne hier posten. Der RAM ist ziemlich voll und ich hatte schon den ein oder anderen Hänger. Ich bin gespannt, wie lange die Uptime bei mir wird. Ihr findet den neuen Sketch wie immer in meinem Github: Zisterne
                            Grüße Eisbaeeer

                            Kein support per PM. Bitte im Forum Fragen stellen!

                            AtifanA 1 Antwort Letzte Antwort
                            0
                            • EisbaeeerE Eisbaeeer

                              Heute mal viel gießen im Garten. Zisterne leer. Zeit für eine neue Version ;-)
                              Ich habe die Änderungen im Github mit einfließen lassen. Über MQTT sind jetzt dank @ltathome https://forum.iobroker.net/user/ltathome Grenzwerte setzbar. Das heisst ihr könnt Eure Frischwasser Nachspeisung oder Telegram oder was auch sonst mit einbauen. Wer noch Optimierungen findet, gerne hier posten. Der RAM ist ziemlich voll und ich hatte schon den ein oder anderen Hänger. Ich bin gespannt, wie lange die Uptime bei mir wird. Ihr findet den neuen Sketch wie immer in meinem Github: Zisterne
                              Grüße Eisbaeeer

                              AtifanA Offline
                              AtifanA Offline
                              Atifan
                              schrieb am zuletzt editiert von Atifan
                              #248

                              Hi, möchte auch den Füllstand der Zisterne ermitteln und wenn zu wenig Wasser drin ist über nen Sonoff den Strom meines Hauswasserwerks abschalten, damit es nicht leer läuft.
                              Habe jetzt schon mit Ultraschallsensor und TOF VL53L1X probiert, leider sind beide zu ungenau.
                              Als nächstes wollte ich es mit diesem Füllstandsanzeiger probieren.
                              Funktioniert das alles gut und lässt sich der Füllstand gut und genau ermitteln?
                              Was brauch ich alles für Hardware?
                              Füllstandssensor
                              Stepup-Board
                              Board das 4-20mA umwandelt in 0-5V
                              Wemos D1 Mini
                              fehlt noch was?

                              1 Antwort Letzte Antwort
                              0
                              • R rostnagel

                                Hi,

                                Ich überwache zurzeit eine Trinkwasserzysterne mit einem Kapazitiven Füllstandsmesser von Homematic/ELV. Das teil ist aber sowas von Störanfällig (ständig unplausible messwerte).

                                Eine Messung per Ultraschall wie im Thread viewtopic.php?t=13199#p138881 fällt wohl aus. Jetzt im winter ist die Luftfeuchtigkeit bei 100% und es tropft von der Decke. Selbst mit Wasserdichter Sensorik wird es da zu Messfehlern kommen.

                                Deshalb dachte ich an eine Pegelsonde:

                                sowas zum beispiel:

                                https://www.tecson.de/files/tecson/pdf- … s-61xx.pdf

                                Jetzt ist nur die Frage wie ich die werte in den iobroker bekomme.

                                Die Zisterne ist etwa 50 m entfernt.

                                Wasserstand voll: 1,40m

                                Löten kann ich. am ehesten wird sowas mit nem Wemos umsetzbar sein?

                                über strom mach ich mir erst später gedanken. entweder strom legen oder per bleiakku und solarpanel.

                                über ideen würde ich mich freuen :-)

                                E Offline
                                E Offline
                                ElseKling
                                schrieb am zuletzt editiert von ElseKling
                                #249

                                Hallo zusammen,
                                die Lösung mit der Pegelsonde und MQTT wäre für mich genau die Lösung. Da sich hier die verschiedenen Ansätze vermischen (D1 mini, NodeMCU, Arduino Nano..) würde ich gerne eine Anleitung erstellen, die am Ende den Nachbau für alle Interssierten einfach in einem Ablauf ermöglicht. Im zweiten Schritt dann mit der Erweiterung des Displays.
                                Habe ich den Aufbau mit einem Node MCU so richtig verstanden oder muss der Strom-zu-Spannungs-Converter noch rein?
                                plan.jpg

                                EisbaeeerE AtifanA S E 4 Antworten Letzte Antwort
                                0
                                • E ElseKling

                                  Hallo zusammen,
                                  die Lösung mit der Pegelsonde und MQTT wäre für mich genau die Lösung. Da sich hier die verschiedenen Ansätze vermischen (D1 mini, NodeMCU, Arduino Nano..) würde ich gerne eine Anleitung erstellen, die am Ende den Nachbau für alle Interssierten einfach in einem Ablauf ermöglicht. Im zweiten Schritt dann mit der Erweiterung des Displays.
                                  Habe ich den Aufbau mit einem Node MCU so richtig verstanden oder muss der Strom-zu-Spannungs-Converter noch rein?
                                  plan.jpg

                                  EisbaeeerE Offline
                                  EisbaeeerE Offline
                                  Eisbaeeer
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #250

                                  @ElseKling Hi. Ähhm, links oben ist doch der "Strom zu Spannungskonverter" schon drin. Also ich sehe keinen Fehler, sollte so passen. Rechst oben sollte eben ein Step-Up Konverter von 5V auf 24V sein, da die Pegelsonde und der Konverter nur mit 24V richtig arbeiten.
                                  Gruß Eisbaeeeer

                                  Kein support per PM. Bitte im Forum Fragen stellen!

                                  E 2 Antworten Letzte Antwort
                                  0
                                  • E ElseKling

                                    Hallo zusammen,
                                    die Lösung mit der Pegelsonde und MQTT wäre für mich genau die Lösung. Da sich hier die verschiedenen Ansätze vermischen (D1 mini, NodeMCU, Arduino Nano..) würde ich gerne eine Anleitung erstellen, die am Ende den Nachbau für alle Interssierten einfach in einem Ablauf ermöglicht. Im zweiten Schritt dann mit der Erweiterung des Displays.
                                    Habe ich den Aufbau mit einem Node MCU so richtig verstanden oder muss der Strom-zu-Spannungs-Converter noch rein?
                                    plan.jpg

                                    AtifanA Offline
                                    AtifanA Offline
                                    Atifan
                                    schrieb am zuletzt editiert von
                                    #251

                                    Ja sollte so funktionieren.
                                    Ich hab statt nen INA219 Board genommen, aber das was du hast geht auch.
                                    2a8db343-a9e1-417f-98a3-9afa08001dd5-image.png

                                    5ced65ba-776b-45c7-b272-20be2a0f6af7-image.png

                                    1 Antwort Letzte Antwort
                                    0
                                    • EisbaeeerE Eisbaeeer

                                      @ElseKling Hi. Ähhm, links oben ist doch der "Strom zu Spannungskonverter" schon drin. Also ich sehe keinen Fehler, sollte so passen. Rechst oben sollte eben ein Step-Up Konverter von 5V auf 24V sein, da die Pegelsonde und der Konverter nur mit 24V richtig arbeiten.
                                      Gruß Eisbaeeeer

                                      E Offline
                                      E Offline
                                      ElseKling
                                      schrieb am zuletzt editiert von
                                      #252

                                      @Eisbaeeer Danke. Im ersten Bild von Opossum war ein ein anderes Bauteil verwendet, nach Deinem Hinweis hat er es geändert. Dann muss ich jetzt erst mal auf den Konverter warten.

                                      1 Antwort Letzte Antwort
                                      0
                                      • E ElseKling

                                        Hallo zusammen,
                                        die Lösung mit der Pegelsonde und MQTT wäre für mich genau die Lösung. Da sich hier die verschiedenen Ansätze vermischen (D1 mini, NodeMCU, Arduino Nano..) würde ich gerne eine Anleitung erstellen, die am Ende den Nachbau für alle Interssierten einfach in einem Ablauf ermöglicht. Im zweiten Schritt dann mit der Erweiterung des Displays.
                                        Habe ich den Aufbau mit einem Node MCU so richtig verstanden oder muss der Strom-zu-Spannungs-Converter noch rein?
                                        plan.jpg

                                        S Offline
                                        S Offline
                                        Superdad
                                        schrieb am zuletzt editiert von
                                        #253

                                        @ElseKling
                                        Könntest du eventuell noch schreiben, welche Teile du in dem Bild verwendet hast?
                                        Der ESP ist klar, aber wie heißen die anderen Teile einschließlich der Pegelsonde?
                                        Bzw. welche Pegelsonde ist denn die Richtige?

                                        Vielen Dank!

                                        CCU3

                                        iOBroker auf IntelNUC Proxmox

                                        1 Antwort Letzte Antwort
                                        0
                                        • AtifanA Offline
                                          AtifanA Offline
                                          Atifan
                                          schrieb am zuletzt editiert von Atifan
                                          #254

                                          @Superdad

                                          Du benötigst

                                          1. 3,3V Versorgungsspannung (durch Netzteil)
                                          2. ESP8266 (z.B. Wemos D1 Mini)
                                          3. MT3608 StepUp Board (für wandeln 3,3V auf 24V) https://www.amazon.de/AZDelivery-MT3608-Netzteil-Adapter-Arduino/dp/B079H3YD8V/ref=sr_1_3?__mk_de_DE=ÅMÅŽÕÑ&dchild=1&keywords=MT3608&qid=1602162188&sr=8-3
                                          4. Füllstandssensor 24V, 0-5m -> https://www.amazon.de/gp/product/B07SYLYZNP/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1

                                          dann entweder wenn du es so machst wie ich ein
                                          5. INA219 (https://www.amazon.de/CJMCU-219-Schnittstelle-Bi-directional-Current-Raspberry/dp/B071ZRP5PL/ref=sr_1_6?dchild=1&keywords=INA219&qid=1602161925&sr=8-6)

                                          oder
                                          5. BIlinli Strom zu Spannungsmodul 0/4-20mA zu 0-3,3V 5V 10V Spannungsgeber (https://www.amazon.de/gp/product/B07TWLG37N/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1).

                                          Auf dem ESP8266 installierst du dann Tasmota-sensors.bin (http://ota.tasmota.com/tasmota/release/tasmota-sensors.bin).

                                          Bei den Pegelsonden gibt es verschiedene, 3m, 4m, 5m. Ich hab ne 5m genommen.
                                          Je nachdem welche du hast musst du deine Formel anpassen wie du deinen Füllstand berechnest.
                                          Bzw. es kommt auch darauf an wie du berechnest.

                                          S 3 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          524

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe