Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. EZOGateway; Watermonitoring

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    EZOGateway; Watermonitoring

    This topic has been deleted. Only users with topic management privileges can see it.
    • Z
      ZeroQool @ZeroQool last edited by

      Hiermit wird der Datenpunkt erzeugt.

      var url = "http://192.168.178.141/api/fetch";
      var idTemp = "javascript.0.EzoGateway.Temperatur";
      var idPH = "javascript.0.EzoGateway.pH_Wert";
      var idRedox = "javascript.0.EzoGateway.Redox_Potential";
       
      // Erzeugen der Objekte in ioBroker
      createState(idTemp, 0, {
          name: 'Temperatur',
          desc: 'Temperatur',
          type: 'number',
          role: 'value',
          unit: '°C'
      });
      createState(idPH, 0, {
          name: 'pH_Wert',
          desc: 'pH Wert',
          type: 'number',
          role: 'value',
          unit: ''
      });
      createState(idRedox, 0, {
          name: 'Redox_Potential',
          desc: 'Redox potential',
          type: 'number',
          role: 'value',
          unit: 'mV'
      });
      
      // schedule('* * * * *', function() { //every minute
      schedule("*/2 * * * * *", function() { // every 2s
          request(url, function(error, response, result) {
               if (result) {
                  let obj = JSON.parse(result);
                  setState(idTemp, obj['1'].Value, true);
                  setState(idPH, obj['2'].Value, true);
                  setState(idRedox, obj['3'].Value, true);
               } else {
                  var errorMessage = "(" + error + ") ERROR bei Abfrage von: " + url;
                  log(errorMessage, "warn");
              }
          });
      });```
      1 Reply Last reply Reply Quote 1
      • cvidal
        cvidal Forum Testing last edited by

        Hallo zusammen, spanendes Thema.

        Ich habe mich da mal etwas eingelesen und hätte ein Paar Fragen.

        Welche Sensoren benutzt ihr?
        Die für Verbraucher- (41€Redox) (32€ PH)oder
        Laborqualität (94€ Redox) (61€ PH)?
        Preislich ist das ja ein schon ein Unterschied.

        Jetzt fehlt mir noch die Dosierpumpen welche auch nochmal mit 200€ aufschlagen würden.

        Rechne ich das mal zusammen ist das Leider nicht ganz günstig, für den Preis bekommt man ja fast schon Fertig montierte Anlagen. Naja ioBroker würde dann leider wegfallen. Oder habt ihr noch andere Vorteile für die Config?

        Whitebox T3 für Raspberry Pi 81€
        EZO pH Circuit 32€
        PH Sonde Laborqualität 61€
        EZO Redox Circut 32€
        Redox Sonde 94€
        Raspi + Netzteil 35€
        Verteilerkasten, Kalibrierlösungen etc. 100€

        Sind dann so ca. 435€ ohne dosieranlagen.

        Gruß Christian

        100prznt J 2 Replies Last reply Reply Quote 0
        • 100prznt
          100prznt @cvidal last edited by

          @cvidal Ich nutze Sonden JUMO (BlackLine) liegen preislich eher im von dir letzteren genannten Bereich. Mit "günstigen" Sonden habe ich keine guten Erfahrungen gemacht, hab hier über die Jahre ein ganzes Arsenal angesammelt.

          Dosierpumpen hab ich von AliExpress, in der 24 V Version ist man hier im kleinen zweistelligen Eurobereich dabei.

          Unterm Strich ist das Ganze natürlich nicht günstig und stellt preislich auch keine Alternative zu einfachen Dosieranlagen dar. Mein Hauptansinnen bei der Entwicklung war die Flexibilität und Möglichkeit der vollständigen Integration in eine übergeordnete Umgebung (z.B. ioBroker).

          Beste Grüße
          Elias

          1 Reply Last reply Reply Quote 1
          • J
            JohnnyBahama @cvidal last edited by JohnnyBahama

            @cvidal Richtig, es ist nicht günstig. Der Vorteil der sich mir bietet ist die Steuerung der Salzanlage (Chlorinator) mit Gegenkrontolle, ob die Pumpe wirklich läuft bevor er sich einschaltet und natürlich die Satistik. Feste Zeiten wollte ich nicht, da das Risiko zu hoch ist in meiner Region das es ein paar Tage nicht so gutes Wetter gibt und der Pool dann über-chlort wird. Ph kontrolliere ich zwar auch, aber letztes Jahr hat sich gezeigt, dass ich nur einmal nachjustieren musste, daher spare ich mir automatische dosierung hier, mach ich dann per Pushover Message von Hand.

            Bei den Sensoren habe ich die ATLAS Industrial grade im Angebot für 90€ geholt, da die 4 Jahre halten soll und seltener kalibriert werden müssen (Werde ich dieses Jahr sehen).
            Am Ende ist es der gleiche Preis, ob ich jedes Jahr eine neue hole oder die Industrie grade. Ich wollte halt so wenig arbeit wie möglich mit dem Pool haben.

            Auch bei fertigen Anlagen kann man wenig Geld ausgeben Ph803w und Dosierpumpen oder halt mehrere tausende für ein und dieselbe Funktion.

            Da der Ph803w neu ist, wäre es interessant, ob man den in den Broker eingebunden bekommt, denn dann wäre das die günstigste Variante und würde selbst die RaspLösung unterbieten.

            By the way, du hast das Temp circuit board vergessen, was für die Kalibrierung benötigt wird, um den Korrekturwert einfließen zu lassen.

            Edit: Sehe unten den Kommentar zum anderem thread, wo es anscheinend geht. Jetzt musst du für dich entscheiden, womit du leben kannst.

            100prznt 1 Reply Last reply Reply Quote 1
            • 100prznt
              100prznt @JohnnyBahama last edited by

              @johnnybahama Guck mal hier, Adapter für den PH803w ist gerade in Arbeit: https://forum.iobroker.net/topic/42553/ph-messung Mir gefällt das Teil aber nicht, der verbaute Messverstärker ist leider nicht besonders hochwertig, was sich in der Nichtwiederholbarkeit, Genauigkeit, Stabilität und vor allem im thermischen Drift zeigt.

              Ach ja das EZO GW geht auch mit nem 2 Euro DS18B20 als Temperaturreferenz 😛

              Beste Grüße
              Elias

              J 1 Reply Last reply Reply Quote 0
              • J
                JohnnyBahama @100prznt last edited by JohnnyBahama

                @100prznt Hätte mich auch gewundert, wenn da noch keiner gefragt hat. Es ist wie bei allem, Geld ist der Faktor, wo man seine Preis/Leistungs Grenze zieht. Vor allem seit letztem Jahr, wenn man den Quick up pool bei Aldi für 100€ geschossen hat, will man nicht soviel Geld darein stecken und gibt sich mit der "günstigen" Lösung zufrieden.
                Mein Board wird diese Saison zum ersten Mal eingesetzt. Bin gespannt, letzten Winter haben wir beide das ja zum laufen gebracht. Warte auf meine Rohre, um es zusammen zu stecken.

                Aber den circuit brauche ich doch trotzdem oder?
                Hatte das auch bei Atlas gesehen, dass die den DS18 für viel Geld auch anbieten.

                100prznt 1 Reply Last reply Reply Quote 0
                • 100prznt
                  100prznt @JohnnyBahama last edited by

                  @johnnybahama sagte in EZOGateway; Watermonitoring:

                  Aber den circuit brauche ich doch trotzdem oder?
                  Hatte das auch bei Atlas gesehen, dass die den DS18 für viel Geld auch anbieten.

                  Man braucht eine 1-Wire/I2C bridge. gibt es fertig auf einen kleinen Breakout-Board, welches man mit 4 Pins direkt an die GPIO Header oder den zusätzlichen Stecker auf dem Tentacle anschließen kann. Kostenpunkt 2 Euro. Auf meiner alten EzoGW Platine ist der diese Bridge fest verbaut.

                  DS18B20 werden mittlerweile von den Chinesen im großen still "kopiert", bekommt man daher auch in Deutschland für ein zwei Taler. Gibt leider auch "schlechte Fälschungen", der Großteil ist von den Toleranzen her aber brauchbar für die Anwendung zur Temperaturkompensation.

                  Beste Grüße
                  Elias

                  1 Reply Last reply Reply Quote 0
                  • J
                    JohnnyBahama @ZeroQool last edited by JohnnyBahama

                    @zeroqool besser spät als nie. Momentan warte ich noch auf die letzten Rohrteile. Irgendwie hat sich jetzt jeder einen Pool zugelegt und Corona hat auch geholfen, das kein Material verfügbar ist.
                    Ziel ist es den Salzanlage zu steuern und dadurch die Filteranlage nicht unnötig laufen zu lassen, wenn schlecht Wetter ist.

                    1 Reply Last reply Reply Quote 0
                    • J
                      JohnnyBahama last edited by

                      Weiß jemand, ob ich ein Relais board zwischen hängen kann und im Hintergrund mit steueren kann? Bin mir nicht sicher wie ich das Board eingebunden bekomme ohne das Watermonitoring zu überschreiben.

                      100prznt 1 Reply Last reply Reply Quote 0
                      • 100prznt
                        100prznt @JohnnyBahama last edited by

                        @johnnybahama Wie oder durch was soll das/die Relais denn angesteuert werden. Einfach per Befehl über die REST API Schnittstelle?

                        J 1 Reply Last reply Reply Quote 0
                        • J
                          JohnnyBahama @100prznt last edited by JohnnyBahama

                          @100prznt Ansteuerung vom Master IOBROKER im Hause, an den externen EZO am Pool. Welche Schnittstelle ist mir eigentlich egal, solange ich die Relais mit Datenpunkte im IOBROKER ansprechen kann.

                          100prznt 1 Reply Last reply Reply Quote 0
                          • 100prznt
                            100prznt @JohnnyBahama last edited by

                            @johnnybahama Gibt hier verschiedene Möglichkeiten.
                            Das einfachste wäre eine Relaiskarte mit Ethernet oder WiFi Anbindung, ist dann völlig los gelöst vom Ezo-Gw.
                            Eine Relaiskarte mit parallelen Anschluss (Ein GPIO je Relais) oder I2C Schnittstelle könnte man über minimale Anpassungen an der EZO-Gw Software implementieren, Zugriff auf die Relais erfolgt dann über die schon vorhandene REST API. Eine USB Relaiskarte könnte man sicherlich auch ansprechen, je nach Verfügbarkeit von Treibern kann das aber etwas kompliziert werden.

                            1 Reply Last reply Reply Quote 0
                            • J
                              JohnnyBahama last edited by

                              @100prznt Die Idee mit den GPIO gefällt mir natürlich am besten, der ESP oder WEMO bedeutet ein weiteres WLAN Gerät+Netzteil. Ethernet ist an der Stelle nicht vorhanden und einen Extender würde ich gerne vermeiden. Kompliziert lassen wir direkt weg.
                              Da du EZO programmiert hast, bin ich auf dich angewiesen. https://www.robotshop.com/de/de/4-kanal-relais-hat-raspberry-pi-3b-3b-2b.html an die Karte habe ich gedacht.

                              100prznt 1 Reply Last reply Reply Quote 0
                              • 100prznt
                                100prznt @JohnnyBahama last edited by

                                @johnnybahama Wenn du auf ein HAT mit paralleler Ansteuerung setzt, z.B. https://www.robotshop.com/de/de/3-kanal-raspberry-relaisplatine.html könnte ich die Software entsprechend anpassen. Die Integration der von dir vorgeschlagenen HAT mit I2C Schnittstelle geht nicht ohne Hardwaretest.

                                J 1 Reply Last reply Reply Quote 0
                                • J
                                  JohnnyBahama @100prznt last edited by

                                  @100prznt 3 Relais würden es ziemlich limitieren. Ich habe die Salzanlage, Solarbasorberventil, LED und in Zukunft 2 für die Impfpumpen. Ginge es auch mit der hier: https://de.aliexpress.com/i/32997012084.html

                                  100prznt 2 Replies Last reply Reply Quote 0
                                  • 100prznt
                                    100prznt @JohnnyBahama last edited by

                                    @johnnybahama Den fotos nach werden bei der HAT die Relais auch direkt per GPIO angesteuert, geht also genau so. (Y)

                                    1 Reply Last reply Reply Quote 0
                                    • 100prznt
                                      100prznt @JohnnyBahama last edited by 100prznt

                                      @johnnybahama Habe die Software soweit vorbereitet, liegt vorerst in einem eigenen Branch, falls du schon testen willst.

                                      Im IoDispatcher wird ein readonly Array definiert, welches die GPIO Nummern der "Ausgänge" definiert.

                                              //GPIO pins in sequence for channel 1 to n.
                                              //Pin 2 and 3 are reserved for I2C communication with the EZO circuit modules.
                                              private readonly int[] OUT_PINS = { 5, 6, 13, 19, 26, 12 };
                                      

                                      https://github.com/100prznt/EzoGateway/blob/915775ffe9e7f52b15d0b02a984684e20d16cf16/source/EzoGateway/IoDispatcher.cs#L41

                                      Nach einem Systemstart werden die entsprechend definierten GPIOs initialisiert und können über die REST API bedient werden.
                                      Dazu gibt es im HttpServer eine neue Verzweigung:

                                                      else if (request.Uri.Segments.Length >= 3 && request.Uri.Segments[2].Trim('/').Equals("OUTPUT", StringComparison.OrdinalIgnoreCase))
                                                      {
                                                          if (request.Uri.Segments.Length == 3 && request.Method == HttpMethod.Get)
                                                          {
                                                              var channelDict = new Dictionary<string, IoData>();
                                                              for (int i = 0; i < m_Controller.Io.OutputChannelCount; i++)
                                                                  channelDict.Add((i + 1).ToString(), new IoData(m_Controller.Io.GetOutput(i + 1)));
                                      
                                                              return HttpResource.CreateJsonResource(channelDict);
                                                          }
                                                          else if (request.Uri.Segments.Length == 4)
                                                          {
                                                              if (Int32.TryParse(request.Uri.Segments[3].Trim('/'), out int channel))
                                                              {
                                                                  if (channel >= 1 && channel <= m_Controller.Io.OutputChannelCount)
                                                                  {
                                                                      if (request.Method == HttpMethod.Get)
                                                                      {
                                                                          var state = new Dictionary<string, string>
                                                                          {
                                                                              { "state", m_Controller.Io.GetOutput(channel).ToString() }
                                                                          };
                                                                          return HttpResource.CreateJsonResource(state);
                                                                      }
                                                                      else if (request.Method == HttpMethod.Put)
                                                                      {
                                                                          var ioData = JsonConvert.DeserializeObject<IoData>(request.Content);
                                                                          m_Controller.Io.SetOutput(channel, ioData.State);
                                      
                                                                          return HttpResource.CreateJsonResource(new RestStatus(OperationStatus.Success, "Output state send to GPIO controller"));
                                                                      }
                                                                  }
                                                                  else
                                                                      return HttpResource.JsonLocked423("Invalide channel number.");
                                                              }
                                                          }
                                                      }
                                      

                                      https://github.com/100prznt/EzoGateway/blob/915775ffe9e7f52b15d0b02a984684e20d16cf16/source/EzoGateway/Server/HttpServer.cs#L626

                                      Der Call zum setzen eines Ausgangs sieht wie folgt aus:
                                      URL: http://<IP EZO Gateway>/api/output/<Kanalnummer>
                                      Methode: PUT
                                      Body:

                                      {
                                          State: <true oder false>
                                      }
                                      

                                      Abfrage erfolgt analog per GET, ohne Kanalnummer kommt ein Array mit allen Kanälen zurück.

                                      Hab das jetzt erstmal nur schnell runter geschrieben, ein Test an Hardware steht noch aus.

                                      Beste Grüße
                                      Elias

                                      J 2 Replies Last reply Reply Quote 0
                                      • J
                                        JohnnyBahama @100prznt last edited by

                                        @100prznt Danke, muss mir dann erstmal die Hardware organisieren.

                                        1 Reply Last reply Reply Quote 0
                                        • J
                                          JohnnyBahama @100prznt last edited by JohnnyBahama

                                          @100prznt Relais Board is angekommen. Ich brauche hier deine Unterstützung, da ich von Programmieren keine Ahnung habe. Wie oder wohin muss ich den Code kopieren?

                                          100prznt 1 Reply Last reply Reply Quote 0
                                          • 100prznt
                                            100prznt @JohnnyBahama last edited by

                                            @johnnybahama Welches Board hast du jetzt genau? Gibt es da konkrete Doku, insbesondere die GPIO Zuordnung müsste ich wissen.

                                            Beste Grüße
                                            Elias

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            680
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            ezo gateway pool monitoring
                                            7
                                            47
                                            4214
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo