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. Hardware
  4. Wasserzähler - Selfmade

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.1k

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

Wasserzähler - Selfmade

Geplant Angeheftet Gesperrt Verschoben Hardware
wasser wasserzählerhow-to
1.1k Beiträge 48 Kommentatoren 375.4k Aufrufe 72 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.
  • KnallochseK Knallochse

    @sissiwup Ich hatte früher auch immer diese Aussetzer bei dem Übergang der "Digitalzahlen"

    Ich habe per Blockly dann die optische Erkennung rausgenommen, und lasse mir das ganze errechnen. Seit 4 Wochen keine Fehlwerte mehr.

    https://forum.iobroker.net/post/340650

    Die Weiterleitung der Werte an den Homematic CCU kann man rauslöschen, wenn nicht benötigt.
    Würde mich freuen, wenn das jemand auf ein professionelles Niveau bringen könnte.

    sissiwupS Offline
    sissiwupS Offline
    sissiwup
    schrieb am zuletzt editiert von sissiwup
    #585

    @Knallochse sagte in Wasserzähler - Selfmade:

    @sissiwup Ich hatte früher auch immer diese Aussetzer bei dem Übergang der "Digitalzahlen"

    Ich habe per Blockly dann die optische Erkennung rausgenommen, und lasse mir das ganze errechnen. Seit 4 Wochen keine Fehlwerte mehr.

    https://forum.iobroker.net/post/340650

    Die Weiterleitung der Werte an den Homematic CCU kann man rauslöschen, wenn nicht benötigt.
    Würde mich freuen, wenn das jemand auf ein professionelles Niveau bringen könnte.

    Hallo,

    ich habe das mal in das Skript eingebaut (etwas vereinfacht):
    Zu große Distanzen werden ja schon über den Server verhindert.

    Wenn der Server einen Error ausgibt, dann versucht er den Wert zu berechnen. Es wird der letzte Wert genommen, davon nur die Stellen vorm Komma. Wenn der neue Wert kleiner ist als der alte, dann muss ein "Nulldurchgang" gewesen sein. Dann wird der ganzzahlige Anteil um 1 erhöht und dann der Wert weggeschrieben ->

    Letzter Wert 348.9812

    Server antwortet mit:
    348.9812 348 9812 ErrorRateTooHigh (-2.0)ErrorNegativeRate 346.0423

    Dann wird der neue Wert: 348.0423, da dieser aber < 348.9812 wird 349.0432 der neue Wert.

    createState('javascript.0.vWasserzaehler',"");
    createState('javascript.0.vWasserzaehlerLog',"");
     
    schedule('*/10 * * * *', function () {
    
    if (isNaN(Number(getState('javascript.0.vWasserzaehler').val))) {
        log("Set NaN!!!!","warn");
    } else {
        var url = "http://192.168.1.13:3300/setPreValue?value="+getState('javascript.0.vWasserzaehler').val;
    
        request(url, function(error, response, body) {
            if (body){
                log("Set OK:"+ body,"info");
            }
            else
            {
                log("Set fehlerhaft:" +url+"->"+ body,"warn");
            }
        })
    }
    
    var url = "http://192.168.1.13:3300/wasserzaehler.html?usePreValue";
    
    request(url, function(error, response, body) {
        if (body){
            var count=String(body.match(/^[0-9.N]+/));
            var err=body.search("Error");
            var org=count;
            if (err>=0) {
                org= String(body.match(/[0-9.N]+$/));
                var oar = org.split(".");
                var last = String(getState('javascript.0.vWasserzaehler').val);
                var lar= last.split(".");
                var calc = lar[0]+"."+oar[1];
                if (Number(calc)<Number(last) && (Number("0."+oar[1])<0.1) && (Number("0."+lar[1])>0.9)){
                    	calc=(String(Number(lar[0])+1))+"."+oar[1];
                  }
                  log("Body Calc:"+calc,"info");
                  count=calc;
            }
            if (isNaN(Number(count))) {
                log("Body OK/NaN:"+body,"warn");
            } else {
                log("Body OK:"+body+"->" + count,"info");
                setState("javascript.0.vWasserzaehler",count);
            }
            setState("javascript.0.vWasserzaehlerLog",String(body));
        }
        else
        {
            log("Body fehlerhaft:" +url+"->"+ body,"warn");
        } 
    }) 
    }); 
    

    Wichtig ist, dass vWasserzaehler nach einer längeren Pause mit einen korrekten Wert gefüllt wird.

    MfG

    Sissi

    –-----------------------------------------

    1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


    sissiwupS 1 Antwort Letzte Antwort
    0
    • sissiwupS sissiwup

      @Knallochse sagte in Wasserzähler - Selfmade:

      @sissiwup Ich hatte früher auch immer diese Aussetzer bei dem Übergang der "Digitalzahlen"

      Ich habe per Blockly dann die optische Erkennung rausgenommen, und lasse mir das ganze errechnen. Seit 4 Wochen keine Fehlwerte mehr.

      https://forum.iobroker.net/post/340650

      Die Weiterleitung der Werte an den Homematic CCU kann man rauslöschen, wenn nicht benötigt.
      Würde mich freuen, wenn das jemand auf ein professionelles Niveau bringen könnte.

      Hallo,

      ich habe das mal in das Skript eingebaut (etwas vereinfacht):
      Zu große Distanzen werden ja schon über den Server verhindert.

      Wenn der Server einen Error ausgibt, dann versucht er den Wert zu berechnen. Es wird der letzte Wert genommen, davon nur die Stellen vorm Komma. Wenn der neue Wert kleiner ist als der alte, dann muss ein "Nulldurchgang" gewesen sein. Dann wird der ganzzahlige Anteil um 1 erhöht und dann der Wert weggeschrieben ->

      Letzter Wert 348.9812

      Server antwortet mit:
      348.9812 348 9812 ErrorRateTooHigh (-2.0)ErrorNegativeRate 346.0423

      Dann wird der neue Wert: 348.0423, da dieser aber < 348.9812 wird 349.0432 der neue Wert.

      createState('javascript.0.vWasserzaehler',"");
      createState('javascript.0.vWasserzaehlerLog',"");
       
      schedule('*/10 * * * *', function () {
      
      if (isNaN(Number(getState('javascript.0.vWasserzaehler').val))) {
          log("Set NaN!!!!","warn");
      } else {
          var url = "http://192.168.1.13:3300/setPreValue?value="+getState('javascript.0.vWasserzaehler').val;
      
          request(url, function(error, response, body) {
              if (body){
                  log("Set OK:"+ body,"info");
              }
              else
              {
                  log("Set fehlerhaft:" +url+"->"+ body,"warn");
              }
          })
      }
      
      var url = "http://192.168.1.13:3300/wasserzaehler.html?usePreValue";
      
      request(url, function(error, response, body) {
          if (body){
              var count=String(body.match(/^[0-9.N]+/));
              var err=body.search("Error");
              var org=count;
              if (err>=0) {
                  org= String(body.match(/[0-9.N]+$/));
                  var oar = org.split(".");
                  var last = String(getState('javascript.0.vWasserzaehler').val);
                  var lar= last.split(".");
                  var calc = lar[0]+"."+oar[1];
                  if (Number(calc)<Number(last) && (Number("0."+oar[1])<0.1) && (Number("0."+lar[1])>0.9)){
                      	calc=(String(Number(lar[0])+1))+"."+oar[1];
                    }
                    log("Body Calc:"+calc,"info");
                    count=calc;
              }
              if (isNaN(Number(count))) {
                  log("Body OK/NaN:"+body,"warn");
              } else {
                  log("Body OK:"+body+"->" + count,"info");
                  setState("javascript.0.vWasserzaehler",count);
              }
              setState("javascript.0.vWasserzaehlerLog",String(body));
          }
          else
          {
              log("Body fehlerhaft:" +url+"->"+ body,"warn");
          } 
      }) 
      }); 
      

      Wichtig ist, dass vWasserzaehler nach einer längeren Pause mit einen korrekten Wert gefüllt wird.

      sissiwupS Offline
      sissiwupS Offline
      sissiwup
      schrieb am zuletzt editiert von
      #586

      @jomjol

      Wenn der Server einen Error ausgibt, dann versucht er den Wert zu berechnen. Es wird der letzte Wert genommen, davon nur die Stellen vorm Komma. Wenn der neue Wert kleiner ist als der alte, dann muss ein "Nulldurchgang" gewesen sein. Dann wird der ganzzahlige Anteil um 1 erhöht und dann der Wert weggeschrieben ->

      Letzter Wert 348.9812

      Server antwortet mit:
      348.9812 348 9812 ErrorRateTooHigh (-2.0)ErrorNegativeRate 346.0423

      Dann wird der neue Wert: 348.0423, da dieser aber < 348.9812 wird 349.0432 der neue Wert.

      Vlt. sollte man das so auch beim usePrevalue einbauen?
      Das würde wunderbar mit der Zeitgrenze die du eingebaut hast harmonieren

      MfG

      Sissi

      –-----------------------------------------

      1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


      J 1 Antwort Letzte Antwort
      0
      • sissiwupS sissiwup

        @jomjol

        Wenn der Server einen Error ausgibt, dann versucht er den Wert zu berechnen. Es wird der letzte Wert genommen, davon nur die Stellen vorm Komma. Wenn der neue Wert kleiner ist als der alte, dann muss ein "Nulldurchgang" gewesen sein. Dann wird der ganzzahlige Anteil um 1 erhöht und dann der Wert weggeschrieben ->

        Letzter Wert 348.9812

        Server antwortet mit:
        348.9812 348 9812 ErrorRateTooHigh (-2.0)ErrorNegativeRate 346.0423

        Dann wird der neue Wert: 348.0423, da dieser aber < 348.9812 wird 349.0432 der neue Wert.

        Vlt. sollte man das so auch beim usePrevalue einbauen?
        Das würde wunderbar mit der Zeitgrenze die du eingebaut hast harmonieren

        J Offline
        J Offline
        jomjol
        schrieb am zuletzt editiert von
        #587

        @sissiwup Einen ähnlichen Algo verwende ich, wenn die Ziffernerkennung ein "N" zurück gibt und "usePreValue" eingeschaltet ist. Bei mir geben die Digitalen Ziffern immer einen korrekten Wert zurück - sind ja auch mit meinen Bilder trainert.
        Ich bitte gerne nochmal an, auch eure Bilder nach zu trainieren. Schickt mir einfach die Bilder von den falsch erkannten Ziffern, dann gibt es ein Update, wo das trainiert wurde.

        sissiwupS 1 Antwort Letzte Antwort
        0
        • J jomjol

          @sissiwup Einen ähnlichen Algo verwende ich, wenn die Ziffernerkennung ein "N" zurück gibt und "usePreValue" eingeschaltet ist. Bei mir geben die Digitalen Ziffern immer einen korrekten Wert zurück - sind ja auch mit meinen Bilder trainert.
          Ich bitte gerne nochmal an, auch eure Bilder nach zu trainieren. Schickt mir einfach die Bilder von den falsch erkannten Ziffern, dann gibt es ein Update, wo das trainiert wurde.

          sissiwupS Offline
          sissiwupS Offline
          sissiwup
          schrieb am zuletzt editiert von
          #588

          @jomjol sagte in Wasserzähler - Selfmade:

          @sissiwup Einen ähnlichen Algo verwende ich, wenn die Ziffernerkennung ein "N" zurück gibt und "usePreValue" eingeschaltet ist. Bei mir geben die Digitalen Ziffern immer einen korrekten Wert zurück - sind ja auch mit meinen Bilder trainert.
          Ich bitte gerne nochmal an, auch eure Bilder nach zu trainieren. Schickt mir einfach die Bilder von den falsch erkannten Ziffern, dann gibt es ein Update, wo das trainiert wurde.

          Hallo,

          er schreibt tüchtig mit... das dauert aber schon einige Tage, da selbst die letzte Stelle sich nicht so schnell wechselt.

          MfG

          Sissi

          –-----------------------------------------

          1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


          sissiwupS 1 Antwort Letzte Antwort
          0
          • sissiwupS sissiwup

            @jomjol sagte in Wasserzähler - Selfmade:

            @sissiwup Einen ähnlichen Algo verwende ich, wenn die Ziffernerkennung ein "N" zurück gibt und "usePreValue" eingeschaltet ist. Bei mir geben die Digitalen Ziffern immer einen korrekten Wert zurück - sind ja auch mit meinen Bilder trainert.
            Ich bitte gerne nochmal an, auch eure Bilder nach zu trainieren. Schickt mir einfach die Bilder von den falsch erkannten Ziffern, dann gibt es ein Update, wo das trainiert wurde.

            Hallo,

            er schreibt tüchtig mit... das dauert aber schon einige Tage, da selbst die letzte Stelle sich nicht so schnell wechselt.

            sissiwupS Offline
            sissiwupS Offline
            sissiwup
            schrieb am zuletzt editiert von
            #589

            @sissiwup
            Hallo,

            hier mal ein Modell, mit etwas anderen Parametern trainiert. Funktioniert bei mir besser. Entpacken, ins Config-Verzeichnis kopieren und dann in der ini den Namen des Models anpassen. Restart und ausprobieren:

            Train_CNN_Digital-Readout_Version_4.0.1.h5.zip

            Bei mir hat er 5 und 6 vorher nicht auseinander gehalten. Jetzt klappt das.

            MfG

            Sissi

            –-----------------------------------------

            1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


            1 Antwort Letzte Antwort
            1
            • vistaV Offline
              vistaV Offline
              vista
              schrieb am zuletzt editiert von vista
              #590

              Hallo gute zeit
              Vielen Dank für Ihre Bemühungen, ein großartiges und nützliches Projekt
              Ich habe dieses Projekt mit einem Raspberry ausgeführt, das Docker-Image auf dem Raspberry installiert und das Ergebnis ist wie folgt
              roi2.jpg
              Und das Ergebnis war
              NN632.4016

              Ich zog die Kamera zurück und es funktionierte
              roi.jpg
              Und das Ergebnis war
              N999N.8239

              Der zweite Test scheint besser zu funktionieren, da die Bilder näher an Ihren Referenzbildern liegen

              Ich muss selbst Referenzbilder machen,
              Wo füge ich meine Referenzbilder ein und bearbeite sie?
              Ich benutze Docker Image raspi V5.3.0

              Vielen Dank

              J 1 Antwort Letzte Antwort
              0
              • MikewolfM Offline
                MikewolfM Offline
                Mikewolf
                schrieb am zuletzt editiert von
                #591

                Hallo Frage mein ESP verschwindet nach ca 3 tagen aus dem netzwerk ??
                gibst ne lösung dafür??? bin leider auf Reha 200 km entfernt.......sch.....
                mfg
                mikewolf

                Homematic (ca450 Rf komponenten), FS20,Alexas,Sonoff,ESP,Arduino,Lightly,Milight,NEEO,Harmony,Synology,HP-Gen8

                RF-link,Dreamboxen,Raspi,Cubie,Odroid,Fritz,Xiaomi-Vaccum,

                W 1 Antwort Letzte Antwort
                0
                • MikewolfM Mikewolf

                  Hallo Frage mein ESP verschwindet nach ca 3 tagen aus dem netzwerk ??
                  gibst ne lösung dafür??? bin leider auf Reha 200 km entfernt.......sch.....
                  mfg
                  mikewolf

                  W Offline
                  W Offline
                  watcherkb
                  schrieb am zuletzt editiert von
                  #592

                  @Mikewolf ja schau mal irgendwo weiter oben, statt dem Parser-Adapter mit Javascript auswerten. Hat wohl geholfen. Persönlich konnte ich es noch nicht testen.

                  CC2538+CC2592 PA-Zigbee-Funkmodul

                  1 Antwort Letzte Antwort
                  0
                  • vistaV vista

                    Hallo gute zeit
                    Vielen Dank für Ihre Bemühungen, ein großartiges und nützliches Projekt
                    Ich habe dieses Projekt mit einem Raspberry ausgeführt, das Docker-Image auf dem Raspberry installiert und das Ergebnis ist wie folgt
                    roi2.jpg
                    Und das Ergebnis war
                    NN632.4016

                    Ich zog die Kamera zurück und es funktionierte
                    roi.jpg
                    Und das Ergebnis war
                    N999N.8239

                    Der zweite Test scheint besser zu funktionieren, da die Bilder näher an Ihren Referenzbildern liegen

                    Ich muss selbst Referenzbilder machen,
                    Wo füge ich meine Referenzbilder ein und bearbeite sie?
                    Ich benutze Docker Image raspi V5.3.0

                    Vielen Dank

                    J Offline
                    J Offline
                    jomjol
                    schrieb am zuletzt editiert von
                    #593

                    @vista Hallo Vista,
                    hast du bei deinem Docker das /config Verzeichnis bereits extern eingebunden (siehe https://github.com/jomjol/water-meter-system-complete#running-docker)?
                    Darin findest du die config.ini und die Referenzbilder. Hier ist einen Anleitung, wie man sie richtig einstellt: https://github.com/jomjol/water-meter-system-complete/blob/master/Config_Description.md

                    Ein Step-By-Step Anleitung für das Erstellen der Referenzbilder findest du hier: https://github.com/jomjol/water-meter-system-complete/blob/master/images/Alignment_procedure_draft.pdf

                    Ich programmiere gerade eine Web-Server-Applikation, um eine WYSIWYG Oberfläche für das Erstellen der Config.ini zu erstellen. Das wird aber noch dauern (eher Wochen statt Tage), daher erstmal bitte die Handanleitung probieren.

                    Gruß,
                    jomjol

                    vistaV 1 Antwort Letzte Antwort
                    0
                    • J jomjol

                      @vista Hallo Vista,
                      hast du bei deinem Docker das /config Verzeichnis bereits extern eingebunden (siehe https://github.com/jomjol/water-meter-system-complete#running-docker)?
                      Darin findest du die config.ini und die Referenzbilder. Hier ist einen Anleitung, wie man sie richtig einstellt: https://github.com/jomjol/water-meter-system-complete/blob/master/Config_Description.md

                      Ein Step-By-Step Anleitung für das Erstellen der Referenzbilder findest du hier: https://github.com/jomjol/water-meter-system-complete/blob/master/images/Alignment_procedure_draft.pdf

                      Ich programmiere gerade eine Web-Server-Applikation, um eine WYSIWYG Oberfläche für das Erstellen der Config.ini zu erstellen. Das wird aber noch dauern (eher Wochen statt Tage), daher erstmal bitte die Handanleitung probieren.

                      Gruß,
                      jomjol

                      vistaV Offline
                      vistaV Offline
                      vista
                      schrieb am zuletzt editiert von vista
                      #594

                      @jomjol Hallo, vielen Dank für deine Antwort.
                      Meine Frage betraf analoges und digitales Handheld-Bild.
                      Ich habe die Referenzbilder für meinen Wasserzähler geändert, aber die digitalen und analogen Handheld-Bilder unterscheiden sich von Ihrem Zähler. Daher müssen alle Bilder für künstliche Intelligenz reproduziert werden. Meine Frage ist, wo kann ich meine digitalen und analogen Handheld-Bilder für künstliche Intelligenz definieren?
                      Vielen Dank

                      J 1 Antwort Letzte Antwort
                      0
                      • vistaV vista

                        @jomjol Hallo, vielen Dank für deine Antwort.
                        Meine Frage betraf analoges und digitales Handheld-Bild.
                        Ich habe die Referenzbilder für meinen Wasserzähler geändert, aber die digitalen und analogen Handheld-Bilder unterscheiden sich von Ihrem Zähler. Daher müssen alle Bilder für künstliche Intelligenz reproduziert werden. Meine Frage ist, wo kann ich meine digitalen und analogen Handheld-Bilder für künstliche Intelligenz definieren?
                        Vielen Dank

                        J Offline
                        J Offline
                        jomjol
                        schrieb am zuletzt editiert von
                        #595

                        @vista Hallo vista,
                        okay - hoffe ich verstehe die Frage jetzt richtig. Die Bilderkennung funktioniert über ein neuronales Netz, was separat trainiert werden muss. Das trainierte Netz wird dann als h5-Datei im Unterverzeichnis /config/neuralnets jeweils für die Zeiger und die Zahlen gespeichert.
                        Das Training ist etwas komplizierter und hier beschrieben: https://github.com/jomjol/neural-network-analog-needle-readout
                        Du musst dir dazu:

                        1. eine Python-Umgebung mit Keras/Tensorflow installieren.
                        2. Beispielbilder von den Trainingsdaten erzeugen
                        3. Netz trainieren
                        4. Ergebnis als h5-Datei transferieren

                        Ich habe aktuell zwei unterschiedliche Arten von Ziffern und auch zwei Zeiger trainiert. Wenn du mir genügend Bilder erzeugst, dann kann ich auch deine Zeiger trainieren. Können wir gerne mal im Detail besprechen, am besten per direktem Chat.
                        Gruß, jomjol

                        vistaV 1 Antwort Letzte Antwort
                        0
                        • J jomjol

                          @vista Hallo vista,
                          okay - hoffe ich verstehe die Frage jetzt richtig. Die Bilderkennung funktioniert über ein neuronales Netz, was separat trainiert werden muss. Das trainierte Netz wird dann als h5-Datei im Unterverzeichnis /config/neuralnets jeweils für die Zeiger und die Zahlen gespeichert.
                          Das Training ist etwas komplizierter und hier beschrieben: https://github.com/jomjol/neural-network-analog-needle-readout
                          Du musst dir dazu:

                          1. eine Python-Umgebung mit Keras/Tensorflow installieren.
                          2. Beispielbilder von den Trainingsdaten erzeugen
                          3. Netz trainieren
                          4. Ergebnis als h5-Datei transferieren

                          Ich habe aktuell zwei unterschiedliche Arten von Ziffern und auch zwei Zeiger trainiert. Wenn du mir genügend Bilder erzeugst, dann kann ich auch deine Zeiger trainieren. Können wir gerne mal im Detail besprechen, am besten per direktem Chat.
                          Gruß, jomjol

                          vistaV Offline
                          vistaV Offline
                          vista
                          schrieb am zuletzt editiert von
                          #596

                          @jomjol Vielen Dank, ich rufe dich an ..

                          1 Antwort Letzte Antwort
                          0
                          • Luc3asL Offline
                            Luc3asL Offline
                            Luc3as
                            schrieb am zuletzt editiert von
                            #597

                            Hello gentleman, sorry for writing in english, I know only few words in german and it's from rammstein :D
                            I am trying to modify this amazing project to my needs, the main problem is that we have another design of water meters here. I already sketched up rough mount for the right diameter of water meter, I am gathering data ( images ) to retrain the model because we have different numbers on rolling pins.
                            The main question is, how could I modify the server in docker container so it would recognize data from 2 water meters, or possibly more, I am thinking about sensing the gas meter which use the same principle. I know I could run somehow 2 same containers but, I quite don't like this idea of "wasting resources".
                            thanks
                            IMG_20200203_202741.jpg
                            IMG-87f6f1e33c6cf572243a9dbb6735a418-V.jpg

                            J 1 Antwort Letzte Antwort
                            0
                            • Luc3asL Luc3as

                              Hello gentleman, sorry for writing in english, I know only few words in german and it's from rammstein :D
                              I am trying to modify this amazing project to my needs, the main problem is that we have another design of water meters here. I already sketched up rough mount for the right diameter of water meter, I am gathering data ( images ) to retrain the model because we have different numbers on rolling pins.
                              The main question is, how could I modify the server in docker container so it would recognize data from 2 water meters, or possibly more, I am thinking about sensing the gas meter which use the same principle. I know I could run somehow 2 same containers but, I quite don't like this idea of "wasting resources".
                              thanks
                              IMG_20200203_202741.jpg
                              IMG-87f6f1e33c6cf572243a9dbb6735a418-V.jpg

                              J Offline
                              J Offline
                              jomjol
                              schrieb am zuletzt editiert von
                              #598

                              @Luc3as Hi Lucas,
                              let me know, when you have enough images for training the CNN. I would be very interested to increase additional number types into the training, increasing its usability for different kind of counters.
                              Unfortunately it is not possible to easily implement two counters in only one running docker containers. The whole internal structure (config.ini, it's parsing, the internal data stucture) is intended for a single counter only. I strongly recommend to run two dockers, mapping to different ports.
                              Otherwise a full restructuring of the source code is necessary. There is no plan from my side to do this at the moment.
                              Best regards,
                              jomjol

                              1 Antwort Letzte Antwort
                              0
                              • I Offline
                                I Offline
                                intruder7
                                schrieb am zuletzt editiert von
                                #599

                                @jomjol
                                Hallo, ich habe mich die letzten Tage mal wieder intensiver mit der Thematik beschäftigt. Ich habe alles in einem Docker laufen auf einer Syn. Dabei habe ich das Problem, dass sich egelmäßig nach zwei bis drei Tagen der Server aufhängt und ich bei jeder Abfrage folgende Fehlermeldung bekomme.

                                ---------------------------------------
                                ----------------------------------------
                                Exception happened during processing of request from ('172.17.0.1', 50807)
                                Traceback (most recent call last):
                                  File "/usr/local/lib/python3.7/socketserver.py", line 316, in _handle_request_noblock
                                    self.process_request(request, client_address)
                                  File "/usr/local/lib/python3.7/socketserver.py", line 347, in process_request
                                    self.finish_request(request, client_address)
                                  File "/usr/local/lib/python3.7/socketserver.py", line 360, in finish_request
                                    self.RequestHandlerClass(request, client_address, self)
                                  File "/usr/local/lib/python3.7/socketserver.py", line 720, in __init__
                                    self.handle()
                                  File "/usr/local/lib/python3.7/http/server.py", line 426, in handle
                                    self.handle_one_request()
                                  File "/usr/local/lib/python3.7/http/server.py", line 414, in handle_one_request
                                    method()
                                  File "./wasseruhr.py", line 103, in do_GET
                                    result = wasserzaehler.getZaehlerstand(url, simple, usePrevalue, single)
                                  File "/lib/ZaehlerstandClass.py", line 142, in getZaehlerstand
                                    txt, logtime = self.LoadFileFromHTTP.LoadImageFromURL(url, './image_tmp/original.jpg')
                                  File "/lib/LoadFileFromHTTPClass.py", line 57, in LoadImageFromURL
                                    action_process.start()
                                  File "/usr/local/lib/python3.7/multiprocessing/process.py", line 112, in start
                                    self._popen = self._Popen(self)
                                  File "/usr/local/lib/python3.7/multiprocessing/context.py", line 223, in _Popen
                                    return _default_context.get_context().Process._Popen(process_obj)
                                  File "/usr/local/lib/python3.7/multiprocessing/context.py", line 277, in _Popen
                                    return Popen(process_obj)
                                  File "/usr/local/lib/python3.7/multiprocessing/popen_fork.py", line 20, in __init__
                                    self._launch(process_obj)
                                  File "/usr/local/lib/python3.7/multiprocessing/popen_fork.py", line 70, in _launch
                                    self.pid = os.fork()
                                OSError: [Errno 12] Cannot allocate memory
                                ----------------------------------------
                                

                                Habe schon mehrmals neu installiert. Laufen hab ich die letzte rolling version.
                                der Fehler ist immer der selbe der dann kommt. Nach einem Neustart des Dockercontainer funktioniert es wieder 2 bis 3 Tage.
                                Hast du oder jemand anderes hier vielleicht ne Ahnung woran das liegt?

                                LG

                                KnallochseK J 2 Antworten Letzte Antwort
                                0
                                • I intruder7

                                  @jomjol
                                  Hallo, ich habe mich die letzten Tage mal wieder intensiver mit der Thematik beschäftigt. Ich habe alles in einem Docker laufen auf einer Syn. Dabei habe ich das Problem, dass sich egelmäßig nach zwei bis drei Tagen der Server aufhängt und ich bei jeder Abfrage folgende Fehlermeldung bekomme.

                                  ---------------------------------------
                                  ----------------------------------------
                                  Exception happened during processing of request from ('172.17.0.1', 50807)
                                  Traceback (most recent call last):
                                    File "/usr/local/lib/python3.7/socketserver.py", line 316, in _handle_request_noblock
                                      self.process_request(request, client_address)
                                    File "/usr/local/lib/python3.7/socketserver.py", line 347, in process_request
                                      self.finish_request(request, client_address)
                                    File "/usr/local/lib/python3.7/socketserver.py", line 360, in finish_request
                                      self.RequestHandlerClass(request, client_address, self)
                                    File "/usr/local/lib/python3.7/socketserver.py", line 720, in __init__
                                      self.handle()
                                    File "/usr/local/lib/python3.7/http/server.py", line 426, in handle
                                      self.handle_one_request()
                                    File "/usr/local/lib/python3.7/http/server.py", line 414, in handle_one_request
                                      method()
                                    File "./wasseruhr.py", line 103, in do_GET
                                      result = wasserzaehler.getZaehlerstand(url, simple, usePrevalue, single)
                                    File "/lib/ZaehlerstandClass.py", line 142, in getZaehlerstand
                                      txt, logtime = self.LoadFileFromHTTP.LoadImageFromURL(url, './image_tmp/original.jpg')
                                    File "/lib/LoadFileFromHTTPClass.py", line 57, in LoadImageFromURL
                                      action_process.start()
                                    File "/usr/local/lib/python3.7/multiprocessing/process.py", line 112, in start
                                      self._popen = self._Popen(self)
                                    File "/usr/local/lib/python3.7/multiprocessing/context.py", line 223, in _Popen
                                      return _default_context.get_context().Process._Popen(process_obj)
                                    File "/usr/local/lib/python3.7/multiprocessing/context.py", line 277, in _Popen
                                      return Popen(process_obj)
                                    File "/usr/local/lib/python3.7/multiprocessing/popen_fork.py", line 20, in __init__
                                      self._launch(process_obj)
                                    File "/usr/local/lib/python3.7/multiprocessing/popen_fork.py", line 70, in _launch
                                      self.pid = os.fork()
                                  OSError: [Errno 12] Cannot allocate memory
                                  ----------------------------------------
                                  

                                  Habe schon mehrmals neu installiert. Laufen hab ich die letzte rolling version.
                                  der Fehler ist immer der selbe der dann kommt. Nach einem Neustart des Dockercontainer funktioniert es wieder 2 bis 3 Tage.
                                  Hast du oder jemand anderes hier vielleicht ne Ahnung woran das liegt?

                                  LG

                                  KnallochseK Offline
                                  KnallochseK Offline
                                  Knallochse
                                  schrieb am zuletzt editiert von
                                  #600

                                  @intruder7 Ich kann dir leider nicht bei der Beseitigung des Fehlers helfen, aber du kannst über den Aufgabenplaner der Synology einen Zeitgesteuerten Neustart deines Containers einstellen
                                  EA3E0F6C-99AF-4F8D-B373-C1B23886AB71.jpeg

                                  HM&HMIP über 100 Geräte + IoBroker auf DS918+ uvm.

                                  I 1 Antwort Letzte Antwort
                                  0
                                  • KnallochseK Knallochse

                                    @intruder7 Ich kann dir leider nicht bei der Beseitigung des Fehlers helfen, aber du kannst über den Aufgabenplaner der Synology einen Zeitgesteuerten Neustart deines Containers einstellen
                                    EA3E0F6C-99AF-4F8D-B373-C1B23886AB71.jpeg

                                    I Offline
                                    I Offline
                                    intruder7
                                    schrieb am zuletzt editiert von
                                    #601

                                    @Knallochse Das wäre eine Alternative. Hatte ich schon mal dran gedacht, aber im Bereich Docker nichts dazu gefunden und auch nicht weiter verfolgt. Werde ich mal umsetzen.

                                    Danke dir

                                    1 Antwort Letzte Antwort
                                    0
                                    • I intruder7

                                      @jomjol
                                      Hallo, ich habe mich die letzten Tage mal wieder intensiver mit der Thematik beschäftigt. Ich habe alles in einem Docker laufen auf einer Syn. Dabei habe ich das Problem, dass sich egelmäßig nach zwei bis drei Tagen der Server aufhängt und ich bei jeder Abfrage folgende Fehlermeldung bekomme.

                                      ---------------------------------------
                                      ----------------------------------------
                                      Exception happened during processing of request from ('172.17.0.1', 50807)
                                      Traceback (most recent call last):
                                        File "/usr/local/lib/python3.7/socketserver.py", line 316, in _handle_request_noblock
                                          self.process_request(request, client_address)
                                        File "/usr/local/lib/python3.7/socketserver.py", line 347, in process_request
                                          self.finish_request(request, client_address)
                                        File "/usr/local/lib/python3.7/socketserver.py", line 360, in finish_request
                                          self.RequestHandlerClass(request, client_address, self)
                                        File "/usr/local/lib/python3.7/socketserver.py", line 720, in __init__
                                          self.handle()
                                        File "/usr/local/lib/python3.7/http/server.py", line 426, in handle
                                          self.handle_one_request()
                                        File "/usr/local/lib/python3.7/http/server.py", line 414, in handle_one_request
                                          method()
                                        File "./wasseruhr.py", line 103, in do_GET
                                          result = wasserzaehler.getZaehlerstand(url, simple, usePrevalue, single)
                                        File "/lib/ZaehlerstandClass.py", line 142, in getZaehlerstand
                                          txt, logtime = self.LoadFileFromHTTP.LoadImageFromURL(url, './image_tmp/original.jpg')
                                        File "/lib/LoadFileFromHTTPClass.py", line 57, in LoadImageFromURL
                                          action_process.start()
                                        File "/usr/local/lib/python3.7/multiprocessing/process.py", line 112, in start
                                          self._popen = self._Popen(self)
                                        File "/usr/local/lib/python3.7/multiprocessing/context.py", line 223, in _Popen
                                          return _default_context.get_context().Process._Popen(process_obj)
                                        File "/usr/local/lib/python3.7/multiprocessing/context.py", line 277, in _Popen
                                          return Popen(process_obj)
                                        File "/usr/local/lib/python3.7/multiprocessing/popen_fork.py", line 20, in __init__
                                          self._launch(process_obj)
                                        File "/usr/local/lib/python3.7/multiprocessing/popen_fork.py", line 70, in _launch
                                          self.pid = os.fork()
                                      OSError: [Errno 12] Cannot allocate memory
                                      ----------------------------------------
                                      

                                      Habe schon mehrmals neu installiert. Laufen hab ich die letzte rolling version.
                                      der Fehler ist immer der selbe der dann kommt. Nach einem Neustart des Dockercontainer funktioniert es wieder 2 bis 3 Tage.
                                      Hast du oder jemand anderes hier vielleicht ne Ahnung woran das liegt?

                                      LG

                                      J Offline
                                      J Offline
                                      jomjol
                                      schrieb am zuletzt editiert von
                                      #602

                                      @intruder7 Ja, das Problem ist bekannt. In Tensorflow 2.0 gibt es ein Speicherleck. Mit jeder Bilderkennung wird etwas mehr Speicher geblockt und daher der Fehler. Es ist ein intrinsischer Fehler und soll erst mit einer Nachfolgenden Version beseitigt werden. Die kann ich aber aktuell noch nicht für die Synology kompilieren - bricht bei mir bisher immer ab.
                                      Ich versuche es aber bei Gelegenheit wieder.
                                      Beste Grüße,
                                      jomjol

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

                                        Hallo, bin sehr interessiert daran so einen Wasserzähler Sensor nachzubauen und hätte daher einige Fragen.

                                        1. Geht das mit meinem analogen Wasserzähler der Firma Elster (siehe Bild)
                                        2. ich habe zufällig ein ESP32CAM hier, bekomme die Kamera aber nicht gedreht bzw. fokussiert. Hat da jemand einen Tipp wie man das einfach hin bekommt oder evtl. einen Tipp für ein Kamera die ich mir bestellen könnte bei der es einfach geht. Ich habe keine originale OV2640 drauf sondern eine XRZ00D1
                                        3. Gibt es irgendwo eine detaillierte Anleitung wie man vorgehen muss bzw. wie man den Server einrichtet und konfiguriert? Ich würde gerne den Server auf einem Intel NUC laufen lassen.

                                        Schon mal Danke vorab.

                                        9cb944dc-13b8-43cf-b710-db9f418bc2af-image.png

                                        J 1 Antwort Letzte Antwort
                                        1
                                        • AtifanA Atifan

                                          Hallo, bin sehr interessiert daran so einen Wasserzähler Sensor nachzubauen und hätte daher einige Fragen.

                                          1. Geht das mit meinem analogen Wasserzähler der Firma Elster (siehe Bild)
                                          2. ich habe zufällig ein ESP32CAM hier, bekomme die Kamera aber nicht gedreht bzw. fokussiert. Hat da jemand einen Tipp wie man das einfach hin bekommt oder evtl. einen Tipp für ein Kamera die ich mir bestellen könnte bei der es einfach geht. Ich habe keine originale OV2640 drauf sondern eine XRZ00D1
                                          3. Gibt es irgendwo eine detaillierte Anleitung wie man vorgehen muss bzw. wie man den Server einrichtet und konfiguriert? Ich würde gerne den Server auf einem Intel NUC laufen lassen.

                                          Schon mal Danke vorab.

                                          9cb944dc-13b8-43cf-b710-db9f418bc2af-image.png

                                          J Offline
                                          J Offline
                                          jomjol
                                          schrieb am zuletzt editiert von
                                          #604

                                          @Atifan Hallo Atifan,
                                          zu 1) ja sollte gehen, nur das Kondenswasser ist ein Problem!
                                          zu 2) bei der OV2640 muss du die Versiegelung des Objektivs leicht lösen und dann kannst du sie drehen (siehe https://www.thingiverse.com/thing:3860911). XRZ00D1 kenne ich nicht
                                          zu 3) Idealerweise verwendet du einen Docker Container: https://github.com/jomjol/water-meter-system-complete

                                          Beste Grüße,
                                          jomjol

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          768

                                          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