NEWS
Wasserzähler - Version 2 - all-in-device
-
@pfried @hike sagte in Wasserzähler - Version 2 - all-in-device:
@hike Hallo hike,
ich hatte dasselbe Problem wie Du, manche Referenzpunkte Bilder schwarz, manche leer, beim Drücken des contrast enhencement ein Absturz des ESP32 und auch beim Referenzbild/Standbild selber brauchte ich mehrere Anläufe um ein Bild zu bekommen. Ich kann auch den Effekt mit dem Standbild bestätigen, war bei mir auch mehrere Male verdreht.Beim Erzeugen der Alignmentmarken braucht es eine halbwegs gute Internetverbindung und etwas Geduld. Um die Verarbeitung auf dem Server nachher hinzubekommen, macht die Erzeugung der ESP32 selbst, d.h. wenn du ein Bild ausschneidest, gibt es per html einen Befehl an den ESP32 und der macht dann die Bilderverarbeitung und auch die Kontrasterhöhung lokal und liefert das Ergebnis per html zurück.
Das ist anders, also beim erzeugen des Refernzbildes. Da findet die Bildberechnung im Browser über Canvas statt. Bei den Referenzbildern scheitert das an dem Kontrast. Ich habe noch keine leichtgewichtige einfache HTML-Funktion gefunden, um es im Browser zu berechnen.Auch die schlechte Performance, wenn es verschiedenen Zwischenrouter gibt könnte mit der html-Struktur zusammen hängen. Damit ich mit einem einfachen Server auskomme habe ich eine ineinanderstrukturierte struktur per iframe gebaut.
Und als dritte Info: wenn ihr die Konfiguratin zufällig gerade macht, während gerade der automatische Bildverarbeitungsflow läuft, dann ist der ESP32 für einige Minuten ziemlich ausgelastet. Auch wenn das Programm per FreeRTOS für Multithread ausgelegt ist, sind natürlich die Ressourcen für den Web-Server in dem Zeitfenster deutlich eingeschränkt. So als Größenordnung: nur die Berechnung des Bildalignment dauert fast 1 Minuten.
Da ist noch überall Potential - noch genug für mich zu tun :-).
Danke für euer detaiiertes Feedback.
-
@jomjol
Vielen Dank für die Erläuterungen.Machmal bleibt der Fileserver bei der Übertragung auch hängen, besonders wenn man z.B. die Unterverzeichnisse log/analog, die viele Dateien beinhalten, betrachtet.
Da bleibt der Server manchmal in einer Schleife hängen und ist nicht mehr erreichbar. Dann hilft nur noch Power out Power on.Machmal bleibt er auch im ClassFlowAnalog hängen.
Ansonsten habe ich jetzt schon eine ganze Reihe brauchbarer Ergebnisse. Digital sind alle Stellen ok, , ebenfalls drei analoge Stellen.
Super, obwohl mein Bild ziemlich unscharf ist.Leider wird die zweite Analog-Anzeige , nicht erkannt.
Das liegt offensichtlich daran , das meine Wasseruhr dort einen anderen Zeiger hat.Deshalb bekomme ich auch Meldungen wie
620.7591 Negative Rate - Returned old value - read value: 620.7571Beste Grüße
Hike -
@hike Du solltest versuchen, dein Bild scharf zu bekommen. Dazu musst du aber das Lacksiegel an der Linse wegkratzen und dann kannst du mit etwas Kraft und einer Zange die Linse drehen und scharf stellen. Hat bei mir bei beiden ESP32CAM funktioniert - aber keine Garantie auf Erfolg - kann auch kaput gehen.
Für deinen Zeiger2 können wir mal probieren, den auch zu teachen, der sieht aber schon sehr merkwürdig aus.
-
@WernerS Hi Werner, konnte dein Problem partiell reproduzieren. Bei mir lies sich heute hartnäckig der Flash-Erase nicht mit dem ESP-Tool durchführen. Nachdem ich den Flash über ein py-Tool von PlatformIO gelöscht habe, konnte ich aber die drei Teile mit dem Tool selbst flashen und es lief auch ohne Probleme.
-
dann lieget es anscheinend am Flashtool. Ich schau mal ob ich ein älteres finde.
Das py-Tool von PlatformIO kenne ich nicht. Ist das kompliziert zu installieren und durch zuführen? -
@jomjol
Ich habe das schon früher mal versucht, brauchte danach eine neue.
Deshalb bin ich auch sehr angetan , dass die KI die anderen Ziffern erkennt.Das ist eine Wasseruhr von meinen Stadtwerken. Die scheint nicht so selten zu sein.
Ich habe mal irgendwo ein ESP8266 Projekt gesehen, da wurde das Spiegelsignal auf dieser Anzeige ausgewertetIm Protokoll sehe ich immer wieder , aber unregelmäßig, Neustarts
2020-09-12_20-10-12: task_autodoFlow - next round
2020-09-12_20-10-12: FlowControll.doFlow - ClassFlowMakeImage
2020-09-12_20-10-17: FlowControll.doFlow - ClassFlowAlignment
2020-09-12_20-10-18: Image Load failed:/sdcard/img_tmp/raw.jpg FreeHeapSize before: 3218988 after: 3218896
2020-09-12_18-10-58: Startsequence 02
2020-09-12_18-10-59: Startsequence 03 -
@hike Die Neustarts sind bekannt - da kommt es beim Auslesen des ersten Bilder von der Kamera zu einem Speicherfehler. In der neusten Version Rolling Version fange ich diesen Fehler ab und nehme das Bild bei diesem Fehler nochmal auf. Das reduziert die Fehler deutlich, aber nicht vollständig.
-
@jomjol
Hi jomjol ich habe ne ältere Version gefunden die 3.6.5 aber mit der geht es auch nicht.
Wie machen das die anderen hier, die müssten das Problem doch auch haben. -
Hallo zusammen,
ich habe gerade die aktuelle Rolling in eine Version 2.0.0 gemerged und die Bilder für die Doku mit dem neuen Layout upgedated.
Ab jetzt kommen die Updates und Responses etwas langsamer, da mein Urlaub vorbei ist .
Beste Grüße,
jomjol -
moin
so jetzt hab ich mich hier auch angemeldetänderungs ideen fuer die doku auch via pull request? statt dem windows tool kann man naemlich auch gut das esptool.py nehmen
pull requests gegen rolling oder master?
morgen guck ich mit die mqtt geschichte mal an. derzeit sammel ich mit polling. geht echt schon gut.
in wie weit hast du vor auch strom oder gas zaehler zu unterstuetzen? wuerde das gern auf alle zaehler machen
vg dominique
-
@d0m1n1qu3 sagte in Wasserzähler - Version 2 - all-in-device:
moin
so jetzt hab ich mich hier auch angemeldetänderungs ideen fuer die doku auch via pull request? statt dem windows tool kann man naemlich auch gut das esptool.py nehmen
pull requests gegen rolling oder master?
morgen guck ich mit die mqtt geschichte mal an. derzeit sammel ich mit polling. geht echt schon gut.
in wie weit hast du vor auch strom oder gas zaehler zu unterstuetzen? wuerde das gern auf alle zaehler machen
vg dominique
Super Idee, wenn du eine Doku für esptool.py schreiben kannst. Das ESP-IDF-Tool macht gerade bei mir auch Probleme (Erase geht nicht mehr).
Pull request gegen Rolling oder bei größeren Änderungen kann ich auch einen abgetrennten Zweig anlegen.
Strom- und Gaszähler gehen auch jetzt schon, du musst nur die analogen Zeiger aus der config.ini schmeißen. Das einzige was noch fehlt, ist die Implementierung einer Kommaverschieben. Das Komma sitzt momentan hart zwischen digital und analog.Gruß,
jomjol -
@jomjol Hallo jomjol, also ich habe gestern eine Nachtschicht eingelegt und alles mögliche probiert. Verschiedene Adpater, Baudrate usw. Es geht einfach nicht. Ich verstehe das nicht, das Problem müssen doch mehr haben. Hast du noch eine Idee?
-
@WernerS sagte in Wasserzähler - Version 2 - all-in-device:
@jomjol Hallo jomjol, also ich habe gestern eine Nachtschicht eingelegt und alles mögliche probiert. Verschiedene Adpater, Baudrate usw. Es geht einfach nicht. Ich verstehe das nicht, das Problem müssen doch mehr haben. Hast du noch eine Idee?
Hallo Werner,
wenn du eine Python-Installation hast, kannst du auch das esptool.py verwenden. Ich habe es gerade probiert - ging problemlos in Pyhton 3.8 (in Ananconda-Umgebung in Win 10, müsste aber auch mit 3.6 oder 3.7 gehen) mit folgenden Befehlen:Installation des Tools:
pip install esptool
Erase Flash und dann flashen der neuen Firmwarepip install esptoolpip install esptool
esptool erase_flash esptool write_flash 0x01000 bootloader.bin 0x08000 partitions.bin 0x10000 firmware.bin
Vielleicht musst du noch über einen Parameter den COM-Port angeben, war bei mir jetzt nicht notwendig. Bei mir hat der ESP32CAM dann ohne Probleme gebootet.
Hoffe damit kommst du weiter!
Gruß,
jomjol -
Hallo jomjol ,
ich habe das Problem mit dem zweitem komischen Analogzeiger noch mal genauer untersucht. Ein Vergleich der Bilder ergibt, dass meine Wasseruhr an dieser Stelle defekt sein muss, da sich die Stellung des Zeigers nie ändert.
Das führt in Vergleich zu Fehlern wie diesem:
620.2576 Negative Rate - Returned old value - read value: 620.2553
da sich die 5 nicht ändert.
Der vollständige Wert von Analog 1 (2.2) bildet übrigens den richtigen Wert gut ab.
Jetzt habe ich aber das auch von anderen beschriebene Problem mit der digitalen 1 , die als 0 erkannt wird.Beste Grüße
Hike -
@d0m1n1qu3 sagte in Wasserzähler - Version 2 - all-in-device:
moin
so jetzt hab ich mich hier auch angemeldetänderungs ideen fuer die doku auch via pull request? statt dem windows tool kann man naemlich auch gut das esptool.py nehmen
pull requests gegen rolling oder master?
morgen guck ich mit die mqtt geschichte mal an. derzeit sammel ich mit polling. geht echt schon gut.
in wie weit hast du vor auch strom oder gas zaehler zu unterstuetzen? wuerde das gern auf alle zaehler machen
vg dominique
Bemerkung zur MQTT-Erweiterung: Ich würde empfehlen, es analog zu den anderen Funktionen (MakeImage, Alignment, ... Prostprocessing) abgleitetet von der Basisklasse
ClassFlow
zu implementieren. Wenn du dann die neue Child-Klasse noch in der VerwaltungsklasseClassFlowControll
in der FunktionCreateClassFlow
mit aufnimmst, ist sie automatisch in die Konfiguration über Config.ini einbinden und auch beim automatischen Flow würde sie mit durchlaufen und du kannst je nach Ergebnis der vorherigen Auswertung ein Event triggern. -
Hallo zusammen,
es gibt jetzt eine neue Option, um das Kommo zu verschieben. Standartmäßig ist es ja zwischen Digital und Analog. Über den Parameter
DigitalShift = n
in[PostProcessing]
kann man das Komma sowohl nach vorne, wie auch nach hinten schieben:
Beispiel:DecimalShift = 2
--> Result: 123.456 --> 12345.6DecimalShift = -1
--> Result: 123.456 --> 12.3456
Das Verschieben findet direkt beim Zusammenführen von Digitalzahlen und Zeigerzahlen statt, alle nachfolgenden Funktionen funktionieren also auf dem verschobenen Wert (sollte auch für reine Digitalziffern klappen - aber nicht getestet).
Funktion findet ihr in der neusten Rolling.
Gruß,
jomjol -
Hallo jomjol, es ist zum verrückt werden. Der ESP kann doch nicht kaputt sein? Mit dem Testprogramm in der Arduino IDE zu schreiben funktioniert. Ich habe es eben nochmal versucht. Ich habe WLAN Verbindung und die Kamera geht auch
Ich habe noch ein Linuxsystem auf dem habe ich es mit dem esptool versucht
beim löschen bekomme ich folgendestest@test-All-Series:~/Dokumente$ esptool erase_flash
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting.....
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 24:62:ab:ff:c6:ac
Enabling default SPI flash mode...
Erasing flash (this may take a while)...A fatal error occurred: ESP32 ROM does not support function erase_flash.
und beim schreiben das
test@test-All-Series:~/Dokumente$ esptool write_flash 0x01000 bootloader.bin 0x08000 partitions.bin 0x10000 firmware.bin
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 24:62:ab:ff:c6:ac
Enabling default SPI flash mode...
Configuring flash size...
Auto-detected Flash size: 4MB
Erasing flash...
Took 0.35s to erase flash block
Wrote 26624 bytes at 0x00001000 in 2.9 seconds (73.4 kbit/s)...
Hash of data verified.
Erasing flash...
Took 0.06s to erase flash block
Writing at 0x00008000... (33 %)
A fatal error occurred: Failed to write to target Flash after seq 0 (result was 01073762)Ist da vielleicht noch wo ein Security Bit gesetzt?
Gruß
Werner -
@WernerS sagte in Wasserzähler - Version 2 - all-in-device:
ESP32 RO
Hi Werner,
ich habe nirgends ein Security Bit bewußt gesetzt. Ich verwende drei Flash-Methoden: OTA, Espressif-Tool (oder jetzt ESPTool) oder direkt aus der Entwicklungsumgebung PlatformIO. Letzteres dürfte aber meines Wissens auch auf esptool.py zurückgreift. Ich habe zwei ESP32CAM Module hier und beide funktionieren mit beiden Methoden.
Scheint, dass dein ESP32 defekt ist oder eine ungewöhnliche Konfiguration hat. -
-
@jomjol Super konntest du das implementieren! Ich bin ja einer der Profiteure davon
Hab das gerade mal installiert, konnte aber nur kurz testen:
Mir ist bis jetzt das aufgefallen:
- Die prevalue.ini wird richtig gestetzt
- Beim "Corrected Value" wird die Kommaverschiebung noch nicht richtig ausgewertet --> read value: 11011.314
- Im "Corrected Value"und "Checked Value" wird der letzte Analogwert abgeschnitten
Meine Einstellung: DecimalShift = -1