NEWS
Wasserzähler - Version 2 - all-in-device
Wasserzähler - Version 2 - all-in-device
-
Hallo zusammen,
durch einen Hinweis in der "Volkszähler"-mailing list bin ich vor ein paar Wochen auf dieses Projekt aufmerksam geworden und war sofort "angefixt" -- Respekt, vor allem natürlich an @jomjol!
Seit gestern läuft die Kamera (mit dem aktuellen branch master - v7.0.1 - 2020-05-13 build 2021-05-13 08:18) und ich bin am fine tuning. Da manche meiner Ziffern nicht erkannt werden, wollte ich Bilder sammeln und habe daher alle Logging-Optionen eingeschaltet. Seltsamerweise war danach jedes Bild dunkel oder grünstichig -- als ob das Blitzlicht nicht eingeschaltet worden wäre. Kann es sein, dass zeitgleich mit dem Blitz (GPIO4) auf die SD-Karte (HS2_DATA1) geschrieben wird und sich diese beiden Vorgänge gegenseitig stören?
Ich hab' dann[Debug] ;Logfile = truegesetzt, und die Störung ist seitdem weg.
Ein anderes Phänomen: Plötzlich steht das Bild auf dem Kopf bzw. der
InitialRotate = 180erscheint ignoriert:

Beim nächsten Zyklus passt's wieder. Hat da jemand 'ne Idee zu?Zwei Tipps noch:
- Gegen Reflexionen habe ich Textil-Tape aus meiner Sporttasche verwendet, siehe Foto. Beim nächsten Zähler würde ganz einfach vor der Montage und Ausrichtung des ESP32-CAM alles außer der ROIs damit abkleben.
- Um die Optik des OV2640-Moduls an den kurzen Bildabstand anzupassen, muss man ja den Kleber mit Skalpell oder kleinem Teppichmesser wegkratzen. Dann ist der Widerstand im Gewinde aber immer noch relativ groß, so dass Werkzeug gebraucht wird, um ihn zu überwinden. Da hab' ich zuerst mit einer Zange die Kamera fast zerquetscht. Beim 2. Modell habe ich mir ein Klemmwerkzeug aus einem Holzstückchen gebastelt: Ins Holz ein Loch gebohrt, 0,5 mm kleiner als die Kameralinse (bei mir 7mm), Holz gespalten -- fertig!
Vielleicht hilft das ja dem einen oder anderen Neuling.
Viele Grüße, Rupert
@rupert-s Der Tip mit dem Grünstich könnte tatsächlich vom Speichern kommen, dem gehe ich mal nach.
Bezüglich dem um 180° gedrehten Bild: wenn du zu einem ungünstigen Zeitpunkt die Webseite abfragst, wird noch das Rohbild angezeigt, da die Berechnung der Drehung noch nicht abgeschlossen ist. Ca. 10-20 Sekunden später sollte das gedrehte Bild erscheinen. -
@rupert-s Der Tip mit dem Grünstich könnte tatsächlich vom Speichern kommen, dem gehe ich mal nach.
Bezüglich dem um 180° gedrehten Bild: wenn du zu einem ungünstigen Zeitpunkt die Webseite abfragst, wird noch das Rohbild angezeigt, da die Berechnung der Drehung noch nicht abgeschlossen ist. Ca. 10-20 Sekunden später sollte das gedrehte Bild erscheinen.@jomjol said in Wasserzähler - Version 2 - all-in-device:
@rupert-s Der Tip mit dem Grünstich könnte tatsächlich vom Speichern kommen, dem gehe ich mal nach.
Vielleicht hilft Dir das ja Flashlight (GPIO 4):
The ESP32-CAM has a very bright built-in LED that can work as a flash when taking
photos. That LED is internally connected to GPIO 4.That GPIO is also connected to the microSD card slot, so you may have troubles when trying to use both at the same time – the flashlight will light up when using the microSD card.
Note: one of our readers shared that if you initialize the microSD card as follows, you won’t have this problem because the microSD card won’t use that data line.*
SD_MMC.begin("/sdcard", true)*we found that this works and that the LED will not make that flash effect. However, the LED remains on with low brightness – we’re not sure if we are missing something.
-
@jomjol Hallo Paul,
sehr spannend. Habe jetzt mal auf meinem Testdevice alles neu geflasht (inkl. erase flash) und die SD-Karte neu formatiert. Außer der wlan.ini ist alles neu. Ging bei mir auf Anhieb. Daher wäre ich tatsächlich bei Gelegenheit an dem Mitschnitt der seriellen Schnittstelle interessiert. Vielleicht kann ich dort noch etwas lernen.
Beste Grüße,
jomjol -
@jomjol
Hallo jomjol,
ist das Thema mit den fehlenden GPIO Schalter nur in der 7.1 oder gibt es das dann gar nicht mehr?
LG
Horst@jomjol
Ich habe all meine ESP´s den Internetzugang gespertt. Jetz fiel mir am Timestamp auf, dass er die Zeit nicht mehr aktualisieren kann.
Wie wäre es wenn man in der Config.ini die NTP IP-Adresse des NTP-Servers einstellen kann und somit kann man die Fritzbox als NTP Server nutzen ohne dem ESP externen Zugang zu geben.
Kann ein bisschen paranoid sein aber seit dem Mirai Botnet bin ich ein bisschen Vorsichtiger mit den IOT.Einfach mal im Expertenmodus nach unten scollen Ohmann......
Asche auf mein HauptGruß
DerDani -
@jomjol
Hallo jomjol,
ist das Thema mit den fehlenden GPIO Schalter nur in der 7.1 oder gibt es das dann gar nicht mehr?
LG
Horst@hasont sagte in Wasserzähler - Version 2 - all-in-device:
it den fehlende
Hi Hasnot,
Fehler in meinen Debugging Einstellung. Kommt in der nächsten Version wieder rein. Habe es schon compiliert und sobald ich es etwas getestet habe, lade ich eine neue Rolling hoch.
Danke für den Hinweis,
jomjol -
@hasont sagte in Wasserzähler - Version 2 - all-in-device:
it den fehlende
Hi Hasnot,
Fehler in meinen Debugging Einstellung. Kommt in der nächsten Version wieder rein. Habe es schon compiliert und sobald ich es etwas getestet habe, lade ich eine neue Rolling hoch.
Danke für den Hinweis,
jomjol@jomjol
Sag mal wäre es vielleicht (ohne großen Aufwand für dich
) möglich einen 2. Error Topic mit nur false/true Werten zu implementieren?
Der Wert bleibt solange false solange der tatsächliche (richtige) Wert ausgegeben wird und ändert nur true falls eine Korrektur (evtl Fehler) vorgenommen wurde oder andersrum...Hintergrund ist:
Ich würde gerne eine Sicherung in mein Script einbauen und nur schalten wenn es der tatsächlich richtige Wert ist und sicher kein korrigierter Wert. Mit dem jetzigen Error als leerer Wert bzw. Textwert kann man es nicht wirklich ansprechen. Also zumindest wüsste ich nicht wie.
-
@jomjol
Sag mal wäre es vielleicht (ohne großen Aufwand für dich
) möglich einen 2. Error Topic mit nur false/true Werten zu implementieren?
Der Wert bleibt solange false solange der tatsächliche (richtige) Wert ausgegeben wird und ändert nur true falls eine Korrektur (evtl Fehler) vorgenommen wurde oder andersrum...Hintergrund ist:
Ich würde gerne eine Sicherung in mein Script einbauen und nur schalten wenn es der tatsächlich richtige Wert ist und sicher kein korrigierter Wert. Mit dem jetzigen Error als leerer Wert bzw. Textwert kann man es nicht wirklich ansprechen. Also zumindest wüsste ich nicht wie.
@xsev Technisch möglich, aber ehrlich gesagt, gibt es so viele Anfragen für Sonderfälle und spezielle Werte, die man über den MQTT ausgeben könnte, dass ich dort keine speziellen Lösungen implementieren möchte. Das wäre eine never Ending Story.
Du könntest einen Fork machen und den MQTT-Adapter an deine Bedürfnisse anpassen. Die Kommunikation ist recht gut abgekapselt: https://github.com/jomjol/AI-on-the-edge-device/tree/master/code/components/jomjol_mqtt
Beste Grüße,
jomjol -
@xsev Technisch möglich, aber ehrlich gesagt, gibt es so viele Anfragen für Sonderfälle und spezielle Werte, die man über den MQTT ausgeben könnte, dass ich dort keine speziellen Lösungen implementieren möchte. Das wäre eine never Ending Story.
Du könntest einen Fork machen und den MQTT-Adapter an deine Bedürfnisse anpassen. Die Kommunikation ist recht gut abgekapselt: https://github.com/jomjol/AI-on-the-edge-device/tree/master/code/components/jomjol_mqtt
Beste Grüße,
jomjol@jomjol Ja kein Thema vestehe ich natürlich.
Evtl. ein letzter Gedanke dazu noch, der jetzige error Wert den es schon gibt, kein leerer Wert wenn alles in Ordnung ist sondern ein true bzw. false?
Wie gesagt ein leerer Wert lässt sich allgemein ungut ansprechen in scripten. -
@jomjol Ja kein Thema vestehe ich natürlich.
Evtl. ein letzter Gedanke dazu noch, der jetzige error Wert den es schon gibt, kein leerer Wert wenn alles in Ordnung ist sondern ein true bzw. false?
Wie gesagt ein leerer Wert lässt sich allgemein ungut ansprechen in scripten. -
Hallo,
jetzt habe ich mir ein ein Fischauge besorgt, könnte mir jemand sagen wo das Problem liegen könnte??Irgendwie hat es Probleme mit der zwei

-
-
-
@rupert-s Der Tip mit dem Grünstich könnte tatsächlich vom Speichern kommen, dem gehe ich mal nach.
Bezüglich dem um 180° gedrehten Bild: wenn du zu einem ungünstigen Zeitpunkt die Webseite abfragst, wird noch das Rohbild angezeigt, da die Berechnung der Drehung noch nicht abgeschlossen ist. Ca. 10-20 Sekunden später sollte das gedrehte Bild erscheinen.Hallo jomjol,
@jomjol said in Wasserzähler - Version 2 - all-in-device:
@rupert-s Der Tip mit dem Grünstich könnte tatsächlich vom Speichern kommen, dem gehe ich mal nach.
Bezüglich dem um 180° gedrehten Bild: wenn du zu einem ungünstigen Zeitpunkt die Webseite abfragst, wird noch das Rohbild angezeigt, da die Berechnung der Drehung noch nicht abgeschlossen ist. Ca. 10-20 Sekunden später sollte das gedrehte Bild erscheinen.Das falsch oder nicht gedrehte Bild geht aber manchmal auch in die Analyse und ergibt dann NNNNN.N
Gerade habe ich wieder ein "seltsames" Bild aufgeschnappt:

- Es ist unterbelichtet.
- Das kleine Bildchen des analogen Zeiger ist kein Ausschnitt des großen: unten klein 4,3, im großen Bild etwa 5,8.
Ich bin kein Webprogrammierer und durchschaue Deinen Code bei weitem nicht. Aber kann es sein, dass da mehrere Webservices oder Prozesse um die Wette laufen (siehe Ende von main.cpp) und -- gerade wenn ich "zuschaue" -- sich gelegentlich in die Quere kommen? Beim Zugriff auf die SD-Karte vs. Blitzlicht, bei der Ausgabe des richtigen Bildes usw? Ließe sich das vielleicht mit Locking-Verfahren beheben?
-
Hallo jomjol,
@jomjol said in Wasserzähler - Version 2 - all-in-device:
@rupert-s Der Tip mit dem Grünstich könnte tatsächlich vom Speichern kommen, dem gehe ich mal nach.
Bezüglich dem um 180° gedrehten Bild: wenn du zu einem ungünstigen Zeitpunkt die Webseite abfragst, wird noch das Rohbild angezeigt, da die Berechnung der Drehung noch nicht abgeschlossen ist. Ca. 10-20 Sekunden später sollte das gedrehte Bild erscheinen.Das falsch oder nicht gedrehte Bild geht aber manchmal auch in die Analyse und ergibt dann NNNNN.N
Gerade habe ich wieder ein "seltsames" Bild aufgeschnappt:

- Es ist unterbelichtet.
- Das kleine Bildchen des analogen Zeiger ist kein Ausschnitt des großen: unten klein 4,3, im großen Bild etwa 5,8.
Ich bin kein Webprogrammierer und durchschaue Deinen Code bei weitem nicht. Aber kann es sein, dass da mehrere Webservices oder Prozesse um die Wette laufen (siehe Ende von main.cpp) und -- gerade wenn ich "zuschaue" -- sich gelegentlich in die Quere kommen? Beim Zugriff auf die SD-Karte vs. Blitzlicht, bei der Ausgabe des richtigen Bildes usw? Ließe sich das vielleicht mit Locking-Verfahren beheben?
@rupert-s sagte in Wasserzähler - Version 2 - all-in-device:
Hallo jomjol,
@jomjol said in Wasserzähler - Version 2 - all-in-device:
@rupert-s Der Tip mit dem Grünstich könnte tatsächlich vom Speichern kommen, dem gehe ich mal nach.
Bezüglich dem um 180° gedrehten Bild: wenn du zu einem ungünstigen Zeitpunkt die Webseite abfragst, wird noch das Rohbild angezeigt, da die Berechnung der Drehung noch nicht abgeschlossen ist. Ca. 10-20 Sekunden später sollte das gedrehte Bild erscheinen.Das falsch oder nicht gedrehte Bild geht aber manchmal auch in die Analyse und ergibt dann NNNNN.N
Gerade habe ich wieder ein "seltsames" Bild aufgeschnappt:

- Es ist unterbelichtet.
- Das kleine Bildchen des analogen Zeiger ist kein Ausschnitt des großen: unten klein 4,3, im großen Bild etwa 5,8.
Ich bin kein Webprogrammierer und durchschaue Deinen Code bei weitem nicht. Aber kann es sein, dass da mehrere Webservices oder Prozesse um die Wette laufen (siehe Ende von main.cpp) und -- gerade wenn ich "zuschaue" -- sich gelegentlich in die Quere kommen? Beim Zugriff auf die SD-Karte vs. Blitzlicht, bei der Ausgabe des richtigen Bildes usw? Ließe sich das vielleicht mit Locking-Verfahren beheben?
Eigentlich dürfte das nicht der Fall sein, da immer ein linearer Flow von der Bildaufnahme bis zur Versenden läuft. Da Problem könnte eher ein Thema der Kamera sein. Wenn diese gar kein Bild liefert, dann verwendet er je nach Status das Bild aus dem Speicher und dreht es einfach weiter. Das könnte dann so ein Effekt sein. Hast du eine andere OV2640, die du mal austauschen kannst? Dort gibt es riesige Qualitätsunterschiede und sie sind neben der SD-Karte oft die Ursache für komisches Verhalten.
-
@rupert-s ich würde sie in einem issue auf GitHub machen, oder hier im Thread gezippt hochladen. @jomjol möchte sie glaub ich gerne sortiert und NUR 2-3 von jeder Zahl.
@michmein sagte in Wasserzähler - Version 2 - all-in-device:
@rupert-s ich würde sie in einem issue auf GitHub machen, oder hier im Thread gezippt hochladen. @jomjol möchte sie glaub ich gerne sortiert und NUR 2-3 von jeder Zahl.
TOP - genauso brauche ich die Ziffern

-
@michmein sagte in Wasserzähler - Version 2 - all-in-device:
@rupert-s ich würde sie in einem issue auf GitHub machen, oder hier im Thread gezippt hochladen. @jomjol möchte sie glaub ich gerne sortiert und NUR 2-3 von jeder Zahl.
TOP - genauso brauche ich die Ziffern

-
@jomjol wäre es denn grundsätzlich möglich den Webzugriff zu blockieren wenn ein „Flow“ läuft, ohne den ESP dann dabei zu „stören“?
