NEWS
Wasserzähler - Selfmade
-
@pfried Danke dir für den Hinweiß. Scheint behoben zu sein. Ich warte mal bis zum nächsten Wechsel der Digitalzahl ob die Plausibilisierungsprüfung richtig greift.
-
@watcherkb Du hast völlig recht mit dem Fehler in der der ReadDigitalDigitClass.py.
Mich wundert nur, dass mein rolling lief
Die Docker Rolling Version ist upgedated, Code wird korrigiert, probiere es bei Gelegenheit bitte nochmal ...
-
Hallo, Ihr Wissenden hier. Ich muss mich leider als DAU outen und einmal die Frage loswerden: Wie komme ich in dem Dockercontainer (Docker ist Neuland für mich, läuft bei mir als Container unter Promox. Die ESP-Cam läuft, ist scharf gestellt und liefert ein brauchbares Bild.
Mit http://server-ip:3000/wasserzaehler.html?url=http://picture-server/image.jpg&full gibt es schon mal eine Ausgabe, natürlich nur wirres Zeug.) an die config.ini? Ich habe mit Putty versucht an die Datei zu kommen, zuletzt mit Filezilla gesucht und bin jetzt leider nahe dran, die Nerven zu verlieren. Ein Fingerzeig, wie man an die Datei kommt, würde mir schon helfen.
Dank im Voraus
Ralf -
@Radi Hallo Radi, erstmal Glückwunsch zu einem laufenden System.
Wenn du ca. 2 Seiten hoch scrollst findest du eine erste Antwort:
jomjol 27. Nov. 2019, 19:32
"@watcherkb" Du musst zwei Verzeichnisse anlegen, von dem du das eine auf das Docker interne Verzeichnis "config" und das andere auf das Verzeichnis "log" mountest.
Das sollte folgendermaßen funktionieren:docker run -p 3000:3000 --mount type=bind,source=/volume/configpath,target=/config --mount type=bind,source=/volume/logpath,target=/log
wobei der erste source-path auf dein Verzeichnis für die Config-Dateien und der zweite auf das log-Verzeichniss zeigt.
Theoretisch sollte beim ersten Start jeweils eine Default config angelegt werden. Alternativ kannst du das externe config-Verzeichnis auch mit den Files von GitHub befüllen.
Anschließend kannst du alles auf dem exteren Config-Verzeichnis beabeiten. Der Docker-Container verwendet dann diese Dateien.Melde dich, wenn du weiteren Input brauchst.
Gruß,
jomjol -
@jomjol Hallo Jomjol, erst einmal viele Dank und meinen Respekt für deine Arbeit an diesem Projekt.
Das mit dem Binding der Sourcen habe ich zwar gelesen, aber nicht als Lösung für mein Problem angesehen. Habe gerade verzweifelt versucht, die .ini im Container zu editieren, nachdem ich herausgefunden habe wie ich im Docker dahin komme.
Werde den von dir empfohlenen Weg ersteinmal weiterverfolgen, auch wenn die Pfadzuweisungen bei mir garantiert erst einmal wieder einen Schwung graue Haare erzeugen wird.
Du hast garantiert genug andere Sachen um die Ohren, als mir die Grundlagen von Docker zu erklären.
Wenn ich gar nicht mehr weiter komme, melde ich mich noch mal.Einen angenehmen Ersten Advent wünscht
Ralf -
@jomjol Hast Du schon einen Lösung für den RB3 gefunden? Ich bin am Ende meines Wissens (was nicht sehr schwer ist)
Liebe Grüße
Paul -
@pfried Hallo Paul,
Timing hätte besser nicht sein können
Ich konnte zwar noch immer keine Installation auf dem Raspberry hinbekommen ... ABER:Seit 1 Stunde gibt es ein Docker-Image, welches auf dem Docker meines Raspberry B3 ohne Probleme läuft!
Hier findest du den Download:
jomjol/wasserzaehler:raspi-rolling
Ich bin super gespannt, ob das auch bei dir läuft!
Beste Grüße,
jomjol -
@jomjol Super!!! Ich werde den Test asap angehen. Vielen Dank für all Deine Mühe!
-
zu Beginn erstmal ein Danke an Jomjol für die Arbeit.
Ich hab das Projekt heute gerade gefunden und wühle mich durch diesen riesigen Thread.
Da ich wie der eine oder andere direkt über ein paar Grundlagen gestolpert bin, hier ein paar Links zum Thema
ESP32 - Arduino IDE für Laien oder Anfänger.
Auf den beiden Seiten werden die Grundlagen, wie ich finde recht einfach erklärt und dargestellt.Ich hoffe dem einen oder anderen hilft es.
-
@Mikewolf Hallo Mike,
was hast du letztendlich gemach, um das Bild richtig hinzustellen? Bei mir sieht das ROI ähnlich wie bei dir aus (verzerrt und gespiegelt)
Habe keine Vorstellung, wo ich jetzt ansetzen soll. Kamera drehen oder gibt es noch Einstellmöglichkeiten in der config.ini?
Grüße
Ralf -
@Radi Hallo Radi, du musst die Referenzen und Config.ini wie folgt anpassen:
-
@jomjol Hallo,
die Alignment Procedure habe ich gelesen, aber nichts gefunden, wie ich das gespiegelte Bild wieder richtig herum bekomme. Der Parameter "initial_rotation_angle" dreht das Bild nur um den Mittelpunkt, oder? Der Snapshot der Kamera ist ja richtig herum, nur um einige Grad verdreht (siehe meinen Beitrag vom 30.11.) Habe ich etwas übersehen?Gruß
Ralf -
@Radi
Hiermit rotierst du das Bild
[alignment]
initial_rotation_angle=180Du musst dir aber für deinen Zähler die 3 markierten Bereiche aus deinem Zähler rauspicken und genauso konfigurieren. Jeder Zähler sieht anders aus. Deswegen musst du deine 3 Bereiche rauspicken, per Bildbearbeitung ausschneiden, speichern und die Position x,y in die ini eintragen. Damit erkennt das Programm deinen Zähler und diese Bereiche und rotiert das Bild entsprechend (solltest du irgendwann mal deine Camera verdreht haben musst du nichts mehr an der ini ändern). Also einmal Seite 2 durchgehen und bei dir anwenden.
-
@jomjol sagte in Wasserzähler - Selfmade:
@watcherkb Du hast völlig recht mit dem Fehler in der der ReadDigitalDigitClass.py.
Mich wundert nur, dass mein rolling lief
Die Docker Rolling Version ist upgedated, Code wird korrigiert, probiere es bei Gelegenheit bitte nochmal ...
hey, sorry komme aktuell nicht dazu deine Änderung zu testen. Werde es bei Gelegenheit machen und dir berichten.
-
@watcherkb Das habe ich soweit, glaube ich zumindest, verstanden. In meinem Post vom 30.11. habe ich ein Bild angehängt, das zeigt, wie das Kamerabild momentan aussieht. Habe gestern die Pfadzuweisung für die config.ini und das Logverzeichnis hinbekommen. Daraufhin mit dem initial_rotation_angle ein wenig geübt, aber kein vernünftiges Bild im ROI hinbekommen.
Ich verstehe nicht, wieso das Bild im ROI gespiegelt ist und wie ich es normal bekomme.
Ich glaube nicht das eine einfache Drehung reicht. Der User mikewolf hatte eine ähnliche Ausgangssituation , deshalb hatte ich die heutige Frage an ihn gestellt, bin natürlich für jede andere Unterstützung dankbar.Grüße
Ralf -
@watcherkb Tschuldigung, ist wohl heute doch nicht der Tag, wo das mit dem Lesen klappt. Dein letzter an mich gerichtete Satz war es wohl, der mir die richtige Richtung gibt . Hatte mich nur auf der ersten Seite festgebissen und die wichtigen Sachen übersehen oder besser noch gar nicht gelesen. Gelobe Besserung und werde das heute Abend mal ausprobieren.
Ralf -
Ich habe heute mal die Wasseruhr freigeräumt und mit Erschrecken festgestellt, dass meine eine völlig andere Uhr ist, als die, welche hier immer auf allen Bildern zu sehen ist.
funktioniert das Ganze auch mit einer solchen Wasseruhr? oder bin ich der einzige hier, der einen solchen Exoten im Keller hängen hat?
Gruss
Silvio -
@cybertron Edit: siehe Post von jomjol weiter unten.
-
@jomjol Kannst Du mir bitte nochmals auf die Sprünge helfen wie Du den Docker am Raspberry startest.
Liebe Grüße
Pauldocker run -p 3000:3000 --mount type=bind,source=/volume/configpath,target=/config --mount type=bind,source=/volume/logpath,target=/log
geht gar nicht wie oben beschrieben.
Habesudo docker run -p 3000:3000 jomjol/wasserzaehler:rasp-rolling -- mount ......etcetc
versucht, da sagt Docker, dass er den mount Befehl nicht kennt. -
Ich habe leider das Problem, dass die Fehlerprüfung gar nicht mehr greift.
Habe heute auch mehrfach den Docker Container recreatet (Synology DS918+ / rolling), was leider keinen Erfolg brachte.
Gemerkt hatte ich es, als heute die Wasseruhr von 299 auf 300 m³ gewechselt hat.
Da wurde NNN.0156 angezeigt. Es kahm aber kein Error.
Mit der Version von Mitte November hatte die Fehlerprüfung noch funktioniert.
Da mittlerweile die Erkennung wirklich gut funktioniert, ist mir leider nicht aufgefallen, seit wann genau die Fehlerprüfung nicht mehr geht.Aktuell sieht meine .ini so aus.
[Imagesource] TimeoutLoadImage=30 #IP durch die IP des ESP32 ersetzen! URLImageSource=http://192.168.178.71/capture_with_flashlight LogImageLocation=./log/source_image # Falls nur schlechte / fehlerhafte Bilder gelockt werden sollen, naechste Zeile Kommentar entfernen LogOnlyFalsePictures=True [ConsistencyCheck] Enabled=True AllowNegativeRates=False #Maximum Change of new to old value (+ or -) MaxRateValue=0.2 #Return in Case of Error: Value = OldValue or NewValue # ErrorMessage = Return Text with problem (seperated by Tabstopp) if nothing, then no error message # Readout = Real Readout without corrections (NewValue) ErrorReturn=OldValue, ErrorMessage, Readout #ErrorReturn=OldValue, ErrorMessage #ErrorReturn=NewValue, ErrorMessage [alignment] initial_rotation_angle=358 [alignment.ref0] image=./config/Ref_ZR_x99_y219.jpg pos_x=130 pos_y=166 [alignment.ref1] image=./config/Ref_m3_x512_y117.jpg pos_x=554 pos_y=150 [alignment.ref2] image=./config/Ref_x0_x301_y386.jpg pos_x=339 pos_y=416 [Digital_Digit] names=ziffer1, ziffer2, ziffer3, ziffer4, ziffer5 Modelfile=./config/neuralnets/Train_CNN_Digital-Readout_Version_4.1.0.h5 #LogImageLocation=./log/digital_digit #LogNames=zeiger3, zeiger4 [Analog_Counter] names=zeiger1, zeiger2, zeiger3, zeiger4 Modelfile=./config/neuralnets/CNN_Analog-Readout_Version-4.0.1.h5 #LogImageLocation=./log/analog_counter #LogNames=zeiger3, zeiger4 [Analog_Counter.zeiger1] pos_x=524 pos_y=258 dx=120 dy=120 [Analog_Counter.zeiger2] pos_x=456 pos_y=390 dx=120 dy=120 [Analog_Counter.zeiger3] pos_x=330 pos_y=446 dx=120 dy=120 [Analog_Counter.zeiger4] pos_x=167 pos_y=382 dx=120 dy=120 [Digital_Digit.ziffer1] pos_x=232 pos_y=126 dx=42 dy=75 [Digital_Digit.ziffer2] pos_x=292 pos_y=126 dx=42 dy=75 [Digital_Digit.ziffer3] pos_x=355 pos_y=126 dx=42 dy=75 [Digital_Digit.ziffer4] pos_x=417 pos_y=126 dx=42 dy=75 [Digital_Digit.ziffer5] pos_x=476 pos_y=126 dx=42 dy=75