NEWS
Wasserzähler - Version 2 - all-in-device
-
@fuso
Das hört sich tatsächlich nach Spannungsversorgung an.
Platine die bei dir nicht funktioniert hat, scheint keinen Spannungswandler zu haben, d.h. die Versorgung hätte über den 5V Pin von der ESP32-CAM Modul laufen müssen. Hast du aber vermutlich auch so gehab.
Ein 220µF Elko direkt an der Platine hätte eventuell schon geholfen. Beim starten der WLAN-Verbindung, gibt es kurze Stromspitzen, die zu "Brownout" führen. Diese hättest du auch über seriellen Log erkennen können, allerdings nicht mit deinem USB2Serial Modul, da es eigene Spannungsversorgung für den ESP bereitstellt. Oder du hättest dein USB2Serial Modul nur mit 3 Leitungen GND+RX+TX verbinden müssen.@jomjol
Hast du schon mal "reser reason" Funktion getestet. Eventuell könnte man den Reset-Grund nach dem Reboot in die Log-Datei schreiben. Link -
@fuso Wenn man die ESP32-CAM-MB Versionen kauft ist das genau das was du nun hast, da ist das Board für die Stromversorgung und das Flashen gleich dabei. Hatte ich von Anfang so gekauft - nicht weil ich so schlau bin sondern weil ich gesehen hatte das das andere auch so machen und ich faul bin. Ich habe dann die ESP32-CAM-MB Version genommen wo gleich eine externe Antenne dabei ist, funktioniert bei mir einen Ticken besser.
-
Verständnisfrage: mit dem HTTP request "http://<meineIP>/setPreValue.html" erhalte ich doch den letzten Wert der vom System "berechnet" wurde.
Bei mir zeigt er seit dem Update auf Version 8.0.x. immer nur 0 oder 1 aber keine aktuellen Werte mehr. -
@dokorfish sagte in Wasserzähler - Version 2 - all-in-device:
eigt er seit dem Update auf Version 8.0.x. immer nur 0 oder 1 aber keine aktuellen Wer
Eigentlich zeigt er dir dort den zuletzt korrekt berechneten Wert. Dort scheint sich aber irgendwo ein Bug eingeschlichen zu haben. Muss ich suchen, komme aber erst im Laufe der Woche dazu.
-
Gibt es eigentlich irgendwo eine Dokumentation der config.ini Parameter?
Ich spiele zum Beispiel gerade mit Contrast = und Saturation = rum (wobei Saturation keine Wirkung zeigt). Und ich habe gelernt das Contrast -5 nicht mag (dann startet der ESP32 gar nicht mehr).Ich verzweifle gerade an meinem Digitalen Wasserzähler - das LCD-Display ist extrem schlecht, ich habe schon umgebaut auf 2 LED Lampenstreifen die das Display voll ausleuchten und das Bild / der Kontrast ist immer noch Dreck. Da hatte ich gehofft das mit den Bildparametern noch verbessern zu können
Dem Bild sieht man nicht an das es eigentlich total hell und gleichmäßig ausgeleuchtet ist (für das menschliche Auge).
Die LED des ESP32 habe ich abgeklebt (der helle Punkt an der 2. Null). Wenn ich den Mitleuchten lassen ist es aber im Prinzip genauso hell, nur das der Punkt dann etwas mehr strahlt. Da wird also was runter geregelt bzw. ein Helligkeitsabgleich oder so.Ich habe es auch schon mit gerade Ausrichtung der Zahlen versucht, da die schräg sind versuche ich es gerade so einmal.
Wobei im Bildbearbeitungsprogramm schaffe ich es auch nicht da mehr rauszuholen -
@bananajoe sagte in Wasserzähler - Version 2 - all-in-device:
Gibt es eigentlich irgendwo eine Dokumentation der config.ini Parameter?
Ich spiele zum Beispiel gerade mit Contrast = und Saturation = rum (wobei Saturation keine Wirkung zeigt). Und ich habe gelernt das Contrast -5 nicht mag (dann startet der ESP32 gar nicht mehr).Ich verzweifle gerade an meinem Digitalen Wasserzähler - das LCD-Display ist extrem schlecht, ich habe schon umgebaut auf 2 LED Lampenstreifen die das Display voll ausleuchten und das Bild / der Kontrast ist immer noch Dreck. Da hatte ich gehofft das mit den Bildparametern noch verbessern zu können
Dem Bild sieht man nicht an das es eigentlich total hell und gleichmäßig ausgeleuchtet ist (für das menschliche Auge).
Die LED des ESP32 habe ich abgeklebt (der helle Punkt an der 2. Null). Wenn ich den Mitleuchten lassen ist es aber im Prinzip genauso hell, nur das der Punkt dann etwas mehr strahlt. Da wird also was runter geregelt bzw. ein Helligkeitsabgleich oder so.Ich habe es auch schon mit gerade Ausrichtung der Zahlen versucht, da die schräg sind versuche ich es gerade so einmal.
Wobei im Bildbearbeitungsprogramm schaffe ich es auch nicht da mehr rauszuholen@BananaJoe Ja es gibt eine genaue Beschreibung im Wiki: https://github.com/jomjol/AI-on-the-edge-device/wiki/Configuration-Parameter-Details
Dort findest du auch den Parameter Range (Contrast -2..2) und die Info, das Saturation und Contrast nicht implementiert sind
-
@jomjol jetzt wo ich weis wo es steht weis ich auch welchen Link ich hätte klicken müssen - danke.
-
So, wie auf Github versprochen, hier nun weitere Forschung.
Ich wollte nur mal kurz eine Meinung einholen.
Es gibt bei mir kaum ein Ergebnis beim einlesen.
Die Reflektionen auf meinem Wasserzähler sind Hölle.
Ich hänge mal ein akutelles Foto an, von diesem wird selten ein Änderung erkannt.
Nun meine Frage: Sind das zu starke Reflektionen auf den Zahlen?
Ich habe schon extra den Analogen Drehzeiger weggelassen, da dort keine Ziffern erkennbar waren.Ich hatte schon versucht mit schwarzen Textilstreifen etwas den Blitz der ESP32 LED zu zähmen, aber weißes Milimeterpapier scheint besser zu funktionieren.
-
Sieht nicht so schlecht aus bei der Erkennung, aber ich bekomme einfach keinen Wert geliefert.
Verwende seit gestern 8.0.5 durch OTA, vorher frisch geflasht mit 8.0.4 falls das was ausmachen sollte.Pre-Value habe ich eben wieder auf 635.165 korrigiert. Damit sollte es eigentlich klappen.
-
@developnoob sagte in Wasserzähler - Version 2 - all-in-device:
Sieht nicht so schlecht aus bei der Erkennung, aber ich bekomme einfach keinen Wert geliefert.
Verwende seit gestern 8.0.5 durch OTA, vorher frisch geflasht mit 8.0.4 falls das was ausmachen sollte.Pre-Value habe ich eben wieder auf 635.165 korrigiert. Damit sollte es eigentlich klappen.
Da deine Ziffern unten an der Kante hängen, werden sie als Not-A-Number erkannt. Eines der Kriterium für korrekt erkannte Ziffern ist, dass sie nicht den unteren oder oberen Rand berühren. Ich fürchte, da ist dein Zähler nur mit erheblichem Aufwand (eigens dafür trainiertes Netz) auslesbar.
-
@jomjol
Also meinst du das auch ein umpositionieren oder etwas näher mit der Kamera ran nicht
wirklich helfen wird?Aktuell habe ich von deiner Vorlage den 5cm Ring plus einen 1cm Ring in Verwendung.
Bei dem 2cm und 5cm Ring waren die Zahlen schwer zu erkennen.Werde vielleicht einfach mal den 5cm Ring nehmen, schlechter als jetzt kann es ja nicht mehr werden .
Gruß developnoob.
-
@developnoob Leider nein, bei deinem Zähler sind die Zahlen nicht vollständig im Bild. Wenn das nicht von der Kamera kommt, sondern so auch darauf aussieht, dann sieht es eher schlecht aus
-
@jomjol
Also mit 5cm Abstand und etwas gedrehter Kamera scheint der Algo ab und an Werte zu erkennen, soweit so gut!Es hat aber den anschein, dass die Drehung nicht immer funktioniert.
Zumindest in der letzten Stunde haben die Bilder selten das "Alignment" hinbekommen.
Habe schon die Bilder für das erkennen mehrfach "ausgetauscht", andere markante Punkte genommen und auch mal den Erkennungsmodus auf "HighAccurity" gesetzt.Was mir aufgefallen ist:
Wenn ich die Alignment Marker ändere scheinen diese0 zumindest auf den angezeigten Bildern bei mir, erst nach einem Reboot eingezeichnet zu werden.Ich sammle mal ein paar Bilder und werde die dann heute Abend hochladen, vielleicht mache ich auch was Grundlegendes falsch. Ist ja nicht auszuschließen
-
@developnoob
Also wenn ich den Marker verändere bekomme ich folgendes in den Logfiles:2021-08-04T17:04:41: download_get_handler 2021-08-04T17:04:45: File is locked: /sdcard/img_tmp/ref_zw.jpg - wait for 1 2021-08-04T17:04:46: File is locked: /sdcard/img_tmp/ref_zw_org.jpg - wait for 1 2021-08-04T17:04:48: download_get_handler
Dann erscheinen die geänderten Marker auch nicht in den neuen Recognition Bilder.
Aber nach einem Neustart sind in den Recognition die geänderten Marker wirksam.Nebenbei, nun geht die Erkennung auch bei fast jedem Versuch.
Hier hat es mal nicht so gut geklappt. Aber da ich in den MQTT Nachrichten nachvollziehen kann das die Zahlen in etwas so hoch gehen wie ich es durch den Verbrauch erwartet hätte geht es nun.Soweit so gut. Obwohl die Zahlen immer noch am unteren Rand sind, tauchen Sie ja auch mal im richtigen Spot zur Erkennung auf.
-
@jomjol Hallo. Heute haben sie meinen Wasserzähler gewechselt und deshalb habe ich gleich aufgerüstet. Nach dem Upgrade wird mqtt jedoch nicht mehr gesendet, aber in den Einstellungen scheint alles richtig eingestellt zu sein. Kannst du bitte etwas aus dem Log lesen, was passiert ist? Danke.
2021-08-17T19:57:11: =============================================================================================
2021-08-17T19:57:11: =================================== Main Started ============================================
2021-08-17T19:57:11: =============================================================================================
2021-08-17T19:57:15: Time zone set to CET-1CEST
2021-08-17T19:57:15: task_autodoFlow - next round - Round #1
2021-08-17T19:57:15: FlowControll.doFlow - ClassFlowMakeImage
2021-08-17T19:57:25: FlowControll.doFlow - ClassFlowAlignment
2021-08-17T19:57:46: FlowControll.doFlow - ClassFlowDigit
2021-08-17T19:58:09: download_get_handler
2021-08-17T19:58:10: download_get_handler
2021-08-17T19:58:13: FlowControll.doFlow - ClassFlowAnalog
2021-08-17T19:58:28: FlowControll.doFlow - ClassFlowPostProcessing
2021-08-17T19:58:28: FlowControll.doFlow - ClassFlowMQTT
2021-08-17T19:58:28: task_autodoFlow - round done
2021-08-17T19:58:28: CPU Temperature: 53.3
2021-08-17T20:01:51: download_get_handler
2021-08-17T20:01:53: download_get_handler
2021-08-17T20:02:06: task_autodoFlow - next round - Round #2
2021-08-17T20:02:06: FlowControll.doFlow - ClassFlowMakeImage
2021-08-17T20:02:17: FlowControll.doFlow - ClassFlowAlignment
2021-08-17T20:02:36: FlowControll.doFlow - ClassFlowDigit
2021-08-17T20:03:02: FlowControll.doFlow - ClassFlowAnalog
2021-08-17T20:03:17: FlowControll.doFlow - ClassFlowPostProcessing
2021-08-17T20:03:17: FlowControll.doFlow - ClassFlowMQTT
2021-08-17T20:03:17: task_autodoFlow - round done
2021-08-17T20:03:17: CPU Temperature: 53.3
2021-08-17T20:04:28: download_get_handler
2021-08-17T20:06:57: task_autodoFlow - next round - Round #3
2021-08-17T20:06:57: FlowControll.doFlow - ClassFlowMakeImage
2021-08-17T20:07:07: FlowControll.doFlow - ClassFlowAlignment
2021-08-17T20:07:26: FlowControll.doFlow - ClassFlowDigit
2021-08-17T20:07:52: FlowControll.doFlow - ClassFlowAnalog
2021-08-17T20:08:07: FlowControll.doFlow - ClassFlowPostProcessing
2021-08-17T20:08:07: FlowControll.doFlow - ClassFlowMQTT
2021-08-17T20:08:07: task_autodoFlow - round done
2021-08-17T20:08:07: CPU Temperature: 53.3
2021-08-17T20:10:45: download_get_handler
2021-08-17T20:10:47: download_get_handler -
Vor dem Upgrade sah das Protokoll so aus.
2021-08-17T13:44:53: task_autodoFlow - next round - Round #2590
2021-08-17T13:44:53: FlowControll.doFlow - ClassFlowMakeImage
2021-08-17T13:45:06: FlowControll.doFlow - ClassFlowAlignment
2021-08-17T13:45:26: FlowControll.doFlow - ClassFlowDigit
2021-08-17T13:45:36: FlowControll.doFlow - ClassFlowAnalog
2021-08-17T13:45:41: FlowControll.doFlow - ClassFlowPostProcessing
2021-08-17T13:45:41: FlowControll.doFlow - ClassFlowMQTT
2021-08-17T13:45:41: sent publish successful in MQTTPublish, msg_id=15845, watermeter/readout/connection, connected
2021-08-17T13:45:41: sent publish successful in MQTTPublish, msg_id=8925, watermeter/readout/uptime, 753485
2021-08-17T13:45:41: sent publish successful in MQTTPublish, msg_id=53499, watermeter/readout/freeMem, 2991192
2021-08-17T13:45:41: sent publish successful in MQTTPublish, msg_id=34620, watermeter/readout/value, 715.3917
2021-08-17T13:45:41: sent publish successful in MQTTPublish, msg_id=4158, watermeter/readout/error, no error
2021-08-17T13:45:41: sent publish successful in MQTTPublish, msg_id=665, watermeter/readout/rate, 0.000164
2021-08-17T13:45:41: sent publish successful in MQTTPublish, msg_id=24780, watermeter/readout/timestamp, 2021-08-17T13:45:02
2021-08-17T13:45:41: sent publish successful in MQTTPublish, msg_id=50126, watermeter/readout/json, {"value":715.3917,"error":"no error","rate":0.000164,"timestamp":"2021-08-17T13:45:02"}
2021-08-17T13:45:41: task_autodoFlow - round done -
@jezinka Update von welcher Version hast du den gemacht? Schau mal in dein MQTT broker. Es gab mal eine Änderung in der Datenstruktur. Vielleicht heißen deine Einträge jetzt einfach anders.
-
@jomjol 8.0.5 oder 7.1.2 aber letztes mal musste ich nur mqtt ändern. Es ist weniger als ein Monat her.
-
Ansonsten dachte ich, dass mqtt auch bei einer anderen Datenstruktur senden und im Protokoll sehen sollte, aber das Protokoll auf mqtt ist leer.
das ist die mqtt-Einstellung
[MQTT]
Uri = mqtt: //10.10.20.11: 1883
; Hauptthema =
ClientID = Wasser
user = mqttuser
Passwort = mqttpassword -
@jezinka
Hauptthema
ist ungewöhnlich. Meine MQTT sieht wie folgt aus:[MQTT] Uri = mqtt://aaa.bbb.ccc.ddd:1883 MainTopic = wasserzaehler ClientID = wasser ;user = USERNAME ;password = PASSWORD