NEWS
Wasserzähler - Version 2 - all-in-device
-
@watcherkb sagte in Wasserzähler - Version 2 - all-in-device:
hat schon jemand versucht mit der Camera "ums Eck" zu schauen, z.B. mit einem Spiegel? Würde gerne den Gaszähler auswerten, aber nach vorne hin habe ich überhaupt kein Platz. Würde mich über Erfahrungen freuen.
Hi watchkerb,
der Parameter zum Spiegeln des Kamerabildes lautet:[Alignment] InitalMirror = true
Details siehe wiki: https://github.com/jomjol/AI-on-the-edge-device/wiki/Configuration-Parameter-Details
Gruß,
jomjol -
@stan23 sagte in Wasserzähler - Version 2 - all-in-device:
Eine Sache ist mir noch aufgefallen:
mein ESP macht immer wieder spontane Reboots und verliert dabei scheinbar diepreValue
, denn nach einem solchen Reboot werden die Digitalzahlen statt569
als509
,559
oder599
erkannt, und dieser Rücksprung oder große Sprung nicht abgefangen.Wie kann ich hier unterstützen?
Soll ich einen Raspi + FTDI dranhängen und die seriellen Ausgaben protokollieren?
Wenn es einen Coredump/Stacktrace gibt, hilft das zur Analyse weiter?Version: master - v3.1.0 - 2020-10-26
Das ist leider ein dauerhaftes Problem, welche teilweise auf die verwendeten Bildverarbeitungsbibliotheken zurück verfolgen kann.
Leider habe ich es nicht geschafft, einen Debugger an das ESP32-CAM Modul anzubinden, da aufgrund Kamera und SD-Card auch die Standart-Debugging Port belegt sind.Wenn sich dort jeman auskennt, wäre das sehr hilfreich!
@stan23: eine Zwischenlösung, um bei Auftretten des Fehlers nicht in die von dir benannten Probleme zu laufen ist, den Parameter
PreValueAgeStartup
auf einen sehr großen Wert zu setzen. Denn der steuert, wieviele Minuten der PreValue gut ist.
Ein kurzer Wert führt in folgender Situationen zu dem benannten Problem: Da gerade ein ungültiger Wert "N" gelesen wird, wird der PreValue nicht aktualisiert. Wenn kein Wasser gebraucht wird (z.B. Nacht) kann dies auch mehrere Stunden andauern. Nun startet der ESP32 irgendwann zufällig neu und viola - er verwendet den PreValue nicht und kann die Zahlen auch nicht korrigieren. Empfehlung: Parameter auf mehrere Stunden einstellen. -
Hilfe gesucht: Problem beim Druck des Kameradeckels 3d_AI-on-the-edge_Cover.stl.
Hallo,
Ich habe mich zum ersten Mal an einem 3D-Druck versucht ( Cura 4.7 , Conrad Monoprice Mini V2, Velleman PLA)Meine ersten Versuche habe ich mit dem Kameragehäuse gemacht.
Ich habe das Gehäuse (3b) und den Einsatz(3c) problemlos gedruckt bekommen.
Der Drucker scheitert aber immer am Deckel, weil die Software den Deckel auf 4 Beinchen stellt und die großen Zwischenräume nicht überbrückt werden konnten.
Gibt es eine Möglichkeit , den Deckel um 180° zu drehen und dann zu sclicen?Gruß Hike
-
Hi @hike,
drehen in CURA ist kein Problem. Einfach das Objekt auswählen und auf der linken Seite das Tool zum Drehen wählen:
Gruß,
jomjol -
Hallo @jomjol,
zu allererst mal alle Daumen hoch für Dein Superprojekt hier. Ich habe schon ein ganze Zeit mitgelesen und habe es dann diese Woche geschafft den ESP zu flashen und heute habe ich mir provisorisch ne Pappschachtel über den Wasserzähler gestülpt und den ESP im Gehäuse oben drauf geklebt. Nach ein wenig Justierung und drehen am Fokus klappt das sehr gut, Weltklasse! Nächste Woche werde ich mir mal Deine Adapterringe für die Wasseruhr drucken.
Ich habe versucht den MQTT Diesnt im Sonoff Adapter zu nutzen, das hat leider nicht geklappt da dieser scheinbar eine ganz bestimmt Art der Nachrichten erwartet. Mit dem MQTT Server Adapter hat es dann geklappt.
Hat jemand der anderen Nutzer es durch Einstellungen in der Config.ini geschafft das gute Stück in den Sonoff Adapter zu bekommen? Dadurch könnte ich mir den zusätzlichen Adapter sparen.
Fazit: SPITZENPROJEKT!
PS. als nächstes ist der Gaszähler am dran.
Schönes Wochenende noch, Gruß Michael
EDIT: kann ich irgendwie die Uhrzeit des ESP einstellen?
-
@jomjol Danke für den Tip, jetzt druckt er auch den Deckel.
Thema Gaszähler / Wasserzähler:
Die Rebootzs haben bei mir zwei unterscheidbare und reproduzierbare Ursachen.
- Wenn ein Flow läuft, führt ein Aufruf der Startseite bei mir zum Reboot.
- Nach etwa 43 Flows erfolgt ein Reboot.
zu 1: Ich habe die Ausgaben im Seriellen Monitor vom vielen Reboots im ESP-Exception-Decoder analysiert.
Es werden immer wieder andere Stellen im Code von FtLite angezeigt.
Für mich sieht das so aus, als wären die verwendten Routinen in den Bibliotheken nicht reentrant.
Ich habe deshalb die sysInfo weiter ausgebaut um mehr über den Status der Flows zu erfahren.
Wartet man bis der aktuelle Flow abgeschlossen ist, bleibt das System stabil. Die Startseite ruft zum Aufbau mehrfach den Webserver über verschiedene url's auf. Das scheint das RTOS-Beriebssystem zu überfordern, wenn gleichzeitig noch sehr rechen- und zeitintensive Prozesse zur Bildanalyse laufen.zu 2: Der zweite Fehler sieht danach aus, dass Speicher ( möglicherweise in den Bibliotheken ) nicht richtig freigegeben wird und die Heaps damit immer kleiner werden bis es kracht. Ich hatte ein ähnliches Problem bei der Verwendung von fmt2jpg aus img_converters.h. Leider ist das Interface zu fmt2jpg schlecht kommentiert, man muss in den Code reinsehen um zu erkennen, das die Routine selber für die Auagabe Speicher alloziert die man anschließened selber freigeben muss.
Ich arbeite weiter daran.
Gruß Hike
-
Hallo @MichMein,
die Uhrzeit stellt sich immer bei einem Hard-Reboot ein. Sollte eigentlich auch bei einem Softreboot passieren - tut aber noch nicht :-).
Gruß,
jomjol -
@jomjol hi, der ESP ist meiner Zeit 1 Stunde voraus, das hätte ich gerne geändert.
Danke
-
Hi @hike,
an deinen Debugging Fähigkeiten wäre ich interessiert - vielleicht können wir uns dazu mal austauschen - Der Reboot ist die "letzte" große Baustelle, an der ich scheitere und die mit einigen Work-Arounds halbwegs erträglich halte. Ist aber immer nur eine Krücke.
Bin gespannt, was du rausfindest.
Gruß,
jomjol -
@MichMein Habe mir gerade den Quellcode angeschaut und den ersten Fehler gefunden. Bei einem Soft-Reboot wird der Time-Server nicht gesetzt und dann kann er natürlich auch die Zeit nicht synchronisieren. Bin gerade aber nicht zuhause und kann es daher nicht testen. Ich probiere es nächste Woche und melde mich. Wenn es daran liegt, könnte ich
- entweder Menüpunkt zur Synchroniserung oder
- einmal alle 24h einen Sync
oder beides implementieren. Danke für den Hinweis.
Gruß,
jomjol -
@jomjol hi, ist letztendlich nichts schlimmes, mach Dir also keinen Stress. Im ioBroker DP wird die Zeit der ankommenden Daten über MQTT richtig geschrieben, mir war es in den Log nur aufgefallen.
Wenn Du mal ganz viel Zeit und Lust hast wäre es ne tolle Sache wenn Du das MQTT Zeugs für den Sonoff-Adpater im ioBroker konform gestalten könntest.
... Bin gerade aber nicht zuhause und kann es daher nicht testen ...
Noch darfst Du weg, ab Montag ist das erstmal wieder vorbei
-
Hallo
Ich habe die Rolling Version vom 25.9.2020 als Ausgangspunkt genommen und diverse Änderungen im Code vorgenommen. Leider habe ich nur sehr,sehr rudimentäre Erfahrungen mit collaborativen Arbeiten mit GIT.
In den neueren Code habe ich noch nicht reingesehen.Da ich den Wasserzähler leider nicht stabil bekommen habe, habe ich mich an meinem Gaszähler versucht.
Da werden doch häufiger Ziffern richtig erkannt.Um die Beleuchtung regulieren zu können, habe ich ledc_timer verwendet. da muss man wegen der Verwendung einiger Timer durch die Kamera aufpassen. Ich verwende LEDC_Timer_2 und LED_Channel_7.
Die SD-Card habe ich auf slot_config.width = 1 eingestellt, damit wird GPIO04 frei.Alle Versuche, den zweiten I2C-Bus zu nutzen ( z.B. für ein OLED-Display) sind gescheitert
Ich habe viele Logging- Funktionen auf ESP_LOGI(TAG," "); umgestellt
Die Logfilegröße habe ich beschränkt und lege die alten Log_files in einem separaten Verzeichnis ab.Du verwendest stb_xx.h files . Gibt es dazu eine API-Dokumentation?
Wo werden Funktionen verwendet, die in Referenzparametern Ergebnisse zurückliefern,
Bekommen die beim Aufruf einen Ergebnisspeicherblock mitgeliefert oder allozieren die selber Speicher.
Du verwendest an verschiedenen Stelllen user_ctx->scratch, da steht meistens nur ein Namesstring drin, ich habe aber irgendwo auch einmal ein Malloc gesehen, finde das aber nicht mehrGruß Hike
-
Hallo @hike,
die Diskussion zu den Programmierdetails könnte etwas ausführlicher werden und nur wenige im ioBroker Forum werden die Details verfolgen wollen. Daher schlage ich vor, diese in einem Issue in GitHub zu führen:
https://github.com/jomjol/AI-on-the-edge-device/issues/39
Meine Antwort zu deinen Fragen findest du dort. Ich hoffe, das passt für dich!
Gruß,
jomjol -
@jomjol said in Wasserzähler - Version 2 - all-in-device:
@stan23: eine Zwischenlösung, um bei Auftreten des Fehlers nicht in die von dir benannten Probleme zu laufen ist, den Parameter
PreValueAgeStartup
auf einen sehr großen Wert zu setzen. Denn der steuert, wie viele Minuten der PreValue gut ist.Danke, das probiere ist momentan.
In der Zwischenzeit habe ich mich um meinen Gaszähler gekümmert. Leider habe ich bei der ersten Gehäuseversion nicht berücksichtigt dass die erste Nachkommastelle hinter dem dicken roten Rahmen versteckt ist, 3 und 8 sind nicht zu unterscheiden.
Also werde ich das Teil nochmal anpassen und neu drucken müssen.
-
@pfried Danke für den Tip, werde mir das mal ansehen.
Ich suche etwas das mir im Urlaub einen Wasserverbrauch z.B > 10l außerhalb gewünschter Zeiten mitteilt.
Beispiel: Um 18 Uhr wird für 30 min der Garten gegossen. Wenn nun zwischen 18:30 an diesem Tag bis 18:00 am nächsten Tag ein Wasserverbrauch größer 10l erfolgt sollte ich eine Meldung über Telegram bekommen. Ev. soll auch gleich ein Relais geschaltet werden welcher das Wasserventil schließt. Das ganze wird mit einer Taste Urlaub ein/aus aktiviert. -
@pfried @jomol
Hallo
ich mal wieder. Bin leider ein paar Wochen ausgefallen und konnte nichts machen. Bissel was geht jetzt aber wieder. Ich habe mal das MQTT gestestet. Mein Broker in iobroker funktioniert, das habe ich gecheckt. Aber der Wasserzaehler scheint nichts zu übertragen obwohl die Daten in der ini richtig sind. Im log finde ich gar nichts mit mqtt. Was könnte ich da noch falsch machen?
ich habe die master - v3.1.0 - 2020-10-26 drauf
Gruß
Werner -
@WernerS Hallo Werner, zeig mal Deine Config.ini. LG Paul
-
@pfried
Hallo Paul;[MQTT]
Uri = mqtt://xxx.xxx.xxx.xxx:1883
Topic = iobroker/wasserzaehler
ClientID = wasserzaehler
user = xxxxx
password = xxxxxmit einem Testclient kann ich per MQTT auf iobroker Werte schicken
MQTT-Explorer-0.4.0-beta1.exeGruß
Werner -
@stan23 Hallo, hast du dafür eine Makro oder Fisheye Kamera verbaut?
Ich hab für die Wasseruhr 8,5 cm Abstand gebraucht. Beim Gaszähler würde das etwas heavy aussehen;-)
LG
Horst -
@WernerS
hi, ich habe das Ding gestern auch mal installiert und getestet. Mir scheint zwar heute Nacht die SD Karte abgeraucht zu sein, zumindestens konnte ich nichts mehr wirklich speichern und er hat auch nicht mehr wirklich gearbeitet.
Aber nun zum MQTT, bei funktioniert es im Moment tadellos. Was ich allerdings gerade beim neu einrichten festgestellt habe ist das er per MQTT nicht gesendet hat weil der letzte bekannte Stand von gestern zu dem erkannten Stand mehr als 0.1 abgewichen ist (dieses Value ist in der config.ini definiert). Nach Änderung hat auch das senden per MQTT wieder funktioniert.
Steht Dein Log-Level unter Debug auf True? Dann kannst Du im Log sehen was passiert.