Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. Wasserzähler - Selfmade

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Wasserzähler - Selfmade

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

      @jomjol sagte in Wasserzähler - Selfmade:

      Update der latest (amd64) und raspi (armv7) Version auf V5.3.0 (aktuelle Rollings).

      Danke für Deine viele Arbeit und Mühe... und ich bin echt begeistert, was du hier auf die Beine stellst....
      Nach meinem letzten Pull für den :latest, habe ich bei der Versionsabfrage http://xxx.xxx.xxx.xxx:3000/version noch Version 5.0.0 als ergebnis.
      ist das richtig?

      sorry wenn ich doof frage...

      J sissiwup 2 Replies Last reply Reply Quote 0
      • J
        jomjol @Rababersaft last edited by

        @Rababersaft Nein, da hast du noch nicht die aktuelle Version. Die sollte Version 5.3.0 zeigen.
        Zumindest bei meiner rolling tut sie das auch. raspi-rolling habe ich nicht aktiv geprüft.
        Du must den docker container nochmal ziehen und neu starten.
        Gruß, jomjol

        1 Reply Last reply Reply Quote 0
        • sissiwup
          sissiwup @Rababersaft last edited by

          @Rababersaft sagte in Wasserzähler - Selfmade:

          @jomjol sagte in Wasserzähler - Selfmade:

          Update der latest (amd64) und raspi (armv7) Version auf V5.3.0 (aktuelle Rollings).

          Danke für Deine viele Arbeit und Mühe... und ich bin echt begeistert, was du hier auf die Beine stellst....
          Nach meinem letzten Pull für den :latest, habe ich bei der Versionsabfrage http://xxx.xxx.xxx.xxx:3000/version noch Version 5.0.0 als ergebnis.
          ist das richtig?

          sorry wenn ich doof frage...

          Hallo,

          bei meiner latest version kommt:

          Version 5.3.0
          
          docker image ls -a 
          docker container ls -a
          

          zeigt die vorhandenen Images bzw. container (hier kannst du auf Created schauen)

          sissiwup 1 Reply Last reply Reply Quote 1
          • sissiwup
            sissiwup @sissiwup last edited by

            @jomjol

            setPreValue?value="ungültiger Wert"

            => Server stellt das arbeiten ein!

            Kannst du das noch abfangen bitte?

            sissiwup 1 Reply Last reply Reply Quote 0
            • sissiwup
              sissiwup @sissiwup last edited by sissiwup

              @jomjol

              Ich mache setPrevalue?value=348.0424

              Last value set to: 00348.0423
              

              Dann:
              wasserzaehler.html?usePreValue

              348.0423 00348 0423 ErrorRateTooHigh (-2.0)ErrorNegativeRate 346.0423
              

              Wie kommt er auf die 346 ?

              Wenn ich das direkt Aufrufe:
              Bildschirmfoto 2020-01-15 um 01.52.55.png

              Knallochse J 2 Replies Last reply Reply Quote 0
              • pfried
                pfried last edited by pfried

                @sissiwup Der letzte Wert ist laut Config.ini der Wert der vom Wasserzähler gelesen wird.

                ErrorReturn=OldValue, ErrorMessage, Readout

                Wie man auf dem Bild sieht wechselt der Zähler gerade von 7 auf 8 (Ziffer 5). Da die 8 noch abgeschnitten ist, liest er eine 6, daher kommt der "falsche" Wert 346.0423

                1 Reply Last reply Reply Quote 0
                • Knallochse
                  Knallochse @sissiwup last edited by

                  @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.

                  sissiwup 1 Reply Last reply Reply Quote 0
                  • E
                    ecki945 last edited by ecki945

                    @jomjol
                    mal eine kleine Rückmeldung von der aktuellen Version 5.3: Bei mir schafft es der Container nicht 24 Stunden durchzulaufen. Das war mit der vorherigen Version nicht so.

                    Weitere Frage. Bei mir "meckert" der Docker Container beim Aufruf dass der Container nicht für Erweiterungen für Intel I3 oder I5 Prozessoren compiliert ist. (SSE, .... ) Vielleicht kann man das in einer der zukünftigen Versionen mal einbauen.

                    EDITH: Könnte auch am Parser Adapter liegen. Habe diesem mal auf Debug umgestellt und werde die Sache beobachten.

                    J sissiwup 2 Replies Last reply Reply Quote 0
                    • J
                      jomjol @ecki945 last edited by

                      @ecki945 sagte in Wasserzähler - Selfmade:

                      @jomjol
                      Weitere Frage. Bei mir "meckert" der Docker Container beim Aufruf dass der Container nicht für Erweiterungen für Intel I3 oder I5 Prozessoren compiliert ist. (SSE, .... ) Vielleicht kann man das in einer der zukünftigen Versionen mal einbauen.

                      Das mit der fehlenden Erweiterung für Intel I3 und I5 ist Absicht. Gemeint ist damit unter anderem die fehlende AVX2 Erweiterung. AVX2 ist z.B. auf Prozessoren, wie sie in vielen NAS-Systemen (z.B: DS718) nicht verfübar und der Container würde nicht mehr laufen. Daher habe ich extra eine Tensorflow/Kereas Version ohne AVX2 kompiliert, die auf allen Prozessoren ab "core2" läuft.

                      Da der Rechenaufwand nicht allzu aufwendig ist, merkt man es an der Performance nicht wirklich und so läuft es auch auf günstigeren Prozessoren.

                      1 Reply Last reply Reply Quote 0
                      • J
                        jomjol @sissiwup last edited by

                        @sissiwup du könntest dein Log mitlaufen lassen und mir die falsch erkannten Zahlen schicken. Dann baue ich sie in das Trainingsprogramm für das neuronale Netzwerk ein und der Fehler sollte für diese Ziffer beseitigt sein.

                        sissiwup 1 Reply Last reply Reply Quote 0
                        • sissiwup
                          sissiwup @jomjol last edited by

                          @jomjol sagte in Wasserzähler - Selfmade:

                          @sissiwup du könntest dein Log mitlaufen lassen und mir die falsch erkannten Zahlen schicken. Dann baue ich sie in das Trainingsprogramm für das neuronale Netzwerk ein und der Fehler sollte für diese Ziffer beseitigt sein.

                          Hallo,

                          das läuft schon mit, aber wenn du dir das Bild ansiehst, dann hat er unten die korrekten Werte angezeigt. Also 348.

                          Schreibt er unten die Werte nach Korrektur? Oder die Werte die er aus dem Bild ermittelt hat? Ich hatte vermutet das letztere.

                          J 1 Reply Last reply Reply Quote 0
                          • sissiwup
                            sissiwup @ecki945 last edited by

                            @ecki945 sagte in Wasserzähler - Selfmade:

                            @jomjol
                            mal eine kleine Rückmeldung von der aktuellen Version 5.3: Bei mir schafft es der Container nicht 24 Stunden durchzulaufen. Das war mit der vorherigen Version nicht so.

                            Weitere Frage. Bei mir "meckert" der Docker Container beim Aufruf dass der Container nicht für Erweiterungen für Intel I3 oder I5 Prozessoren compiliert ist. (SSE, .... ) Vielleicht kann man das in einer der zukünftigen Versionen mal einbauen.

                            EDITH: Könnte auch am Parser Adapter liegen. Habe diesem mal auf Debug umgestellt und werde die Sache beobachten.

                            Hallo, bei mir hat es an Nicht-Zahlen gelegen:

                            Habe das im Skript jetzt abgefangen:

                            createState('javascript.0.vWasserzaehler',"");
                             
                            schedule('*/10 * * * *', function () {
                            
                            if (isNaN(Number(getState('javascript.0.vWasserzaehler').val))) {
                                log("Set NaN!!!!","warn");
                            } else {
                                var url = "http://192.168.1.13:3000/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:3000/wasserzaehler.html?usePreValue";
                            
                            request(url, function(error, response, body) {
                                if (body){
                                    var count=String(body.match(/^[0-9.N]+/));
                                    if (isNaN(Number(count))) {
                                        log("Body OK/NaN:"+body+"->" + count,"warn");
                                    } else {
                                        log("Body OK:"+body+"->" + count,"info");
                                        setState("javascript.0.vWasserzaehler",count);
                                    }
                                }
                                else
                                {
                                    log("Body fehlerhaft:" +url+"->"+ body,"warn");
                                } 
                            }) 
                            }); 
                            
                            
                            1 Reply Last reply Reply Quote 0
                            • J
                              jomjol @sissiwup last edited by

                              @sissiwup sagte in Wasserzähler - Selfmade:

                              @jomjol sagte in Wasserzähler - Selfmade:

                              @sissiwup du könntest dein Log mitlaufen lassen und mir die falsch erkannten Zahlen schicken. Dann baue ich sie in das Trainingsprogramm für das neuronale Netzwerk ein und der Fehler sollte für diese Ziffer beseitigt sein.

                              Hallo,

                              das läuft schon mit, aber wenn du dir das Bild ansiehst, dann hat er unten die korrekten Werte angezeigt. Also 348.

                              Schreibt er unten die Werte nach Korrektur? Oder die Werte die er aus dem Bild ermittelt hat? Ich hatte vermutet das letztere.

                              Hallo sissiwup,
                              du hast natürlich recht. Er hat die 8 in dem Fall erkannt. Jetzt gibt es zwei Möglichkeiten:

                              1. Fehler in der Programmlogik: muss ich mir anschauen - habe aber frühestens am Wochenende Zeit dafür.
                              2. Grenzfall in der Erkennung: mal als 6 und mal als 8. Als du den DB-Eintrag machen wolltest, hat er die 6 erkannt und als du es manuell überprüft hast, war es die 8. Könnte das sein? Wenn ja, dann hilft nur weiteres Teachen der Bilderkennung.

                              Gib mir doch eine kurze RM, ob Fall 2 möglich ist oder ober beide Bilder aus genau demselben Bild kommen. Die Orginalbilder kann man auch mitloggen, dann wird halt der Speicherplatz irgendwann schnell voll.

                              Beste Grüß, jomjol

                              1 Reply Last reply Reply Quote 0
                              • sissiwup
                                sissiwup @Knallochse last edited by 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.

                                sissiwup 1 Reply Last reply Reply Quote 0
                                • sissiwup
                                  sissiwup @sissiwup last edited by

                                  @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 1 Reply Last reply Reply Quote 0
                                  • J
                                    jomjol @sissiwup last edited by

                                    @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.

                                    sissiwup 1 Reply Last reply Reply Quote 0
                                    • sissiwup
                                      sissiwup @jomjol last edited by

                                      @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.

                                      sissiwup 1 Reply Last reply Reply Quote 0
                                      • sissiwup
                                        sissiwup @sissiwup last edited by

                                        @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.

                                        1 Reply Last reply Reply Quote 1
                                        • vista
                                          vista last edited by 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 1 Reply Last reply Reply Quote 0
                                          • Mikewolf
                                            Mikewolf last edited by

                                            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 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            485
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            how-to wasser wasserzähler
                                            48
                                            1089
                                            317633
                                            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