jomjol / AI-on-the-edge-device

Easy to use device for connecting "old" measuring units (water, power, gas, ...) to the digital world
https://jomjol.github.io/AI-on-the-edge-device-docs/
5.68k stars 614 forks source link

Ausgabe des ermittelten Messwerts über freie UART weil keine WLAN-Verbindung möglich #512

Closed demmy03 closed 2 years ago

demmy03 commented 2 years ago

Hallo zusammen,

zunächst einmal finde ich das Projekt richtig super! Vielen Dank dafür an den/die Entwickler.

Ich habe folgendes Problem:

An meinem Aufstellungs-/Verwendungsort ist es leider nicht möglich eine WLAN-Verbindung vom ESP mit dem Hausnetz aufzubauen und die Daten/den Messwert über MQTT abzufragen.

Daher nun die Frage, wäre es evtl. möglich, den zuletzt erfolgreich ermittelten Messwert, zyklisch (z.B. alle 5s), zusätzlich über eine freie UART (idealerweise nicht die Programmierschnittstelle) auszugeben? Ich habe an meiner Gebäudeleittechnik beispielsweise noch eine serielle Schnittstelle frei und man könnte so, ohne großen Aufwand, auch ohne WLAN-Verbindung auf die Messwerte zugreifen.

Was natürlich für die Parametrierung noch von Vorteil wäre ist, wenn man den ESP in so einem Fall als Accesspoint verwenden könnte.

Vielen Dank und viele Grüße

jomjol commented 2 years ago

Vielen Dank für das Feedback. Leider sind nur noch zwei freie GPIOs verfügbar (GPIO12/13), davon wird einer für die Ansteuerung der externen LEDs benötigt. Daher gibt es nicht genügend freie GPIOs für eine externe Kommunikationsschnittstelle, außer den Programmier-GPIOs. Da aber auch kein JTAG Debugger anschließbar ist, benötige ich diese für das Debugging und will sie nicht für die Kommunikation verwenden. An dem Port kannst du natürlich auch lauschen und die Daten entsprechend filtern. Man könnte dort ein eindeutiges TAG verwenden, was die Messwerte kennzeichnet, dann könntest du den Rest ignorieren. Wäre aber ein bisschen Aufwand.

Da es leider die "die Entwickler", sondern nur "den einen Entwickler" gibt, sind meine Ressourcen etwas begrenzt. Im Moment bekomme ich zwischen 50 und 100 eMail am Tag, da gerade jemand wieder mein Projekt in einem Youtube-Channel vorgestellt hat.

Das freut mich natürlich, aber allein das Beantworten der Issues und Fragen braucht aktuell ziemlich Zeit.

Beste Grüße, jomjol

demmy03 commented 2 years ago

Hi, danke für deine schnelle Rückmeldung.

Wow, echt alle 38 Pins des ESP32 sind in Verwendung? Oder meinst du es sind nur noch die zwei Pins frei (GPIO12/13), die bei dem Cam-Board auf Pinheader geführt sind?

Wenn ich dich richtig verstanden habe, wäre deine Idee, auf der UART0, welche du als Debugging-Schnittstelle verwendest (und natürlich zum Programmieren), die Messwerte mit einen Tag/Identifier in deinen Diagnosedaten auszugeben? ​ Sowas wäre für mich natürlich auch in Ordnung. Im Prinzip würde es sogar ausreichen wenn der Messwert nur einmalig nach dem Triggern eines Bildes und der Auswertung des Ergebnisses auf die Schnittstelle geschrieben wird. Wenn du eine entsprechende Kennung für den Messwert vergeben hast könnte man dann den Datenstrom entsprechend parsen.

Ein anderer Vorschlag wäre noch von mir, da du ja physikalisch nur noch einen Pin zur Verfügung hast und wir ja auch nicht schreibend auf den ESP zugreifen wollen, sondern nur lesend, nur diesen einen Pin über eine Software-Uart als TxD zu verwenden. Da die Kommunikation in der UART immer Masse bezogen ist, benötigt man den RxD nicht. Also vorausgesetzt du würdest diesen einen Pin dafür opfern wollen. ;-)

Das du mit Anfragen bombardiert wirst kann ich mir gut vorstellen, es ist ja auch ein super Projekt mit viel Potential!! Ich sehe das jetzt auch nicht als Prio 1 auf deiner Liste. Außer du kannst das natürlich irgendwie mit geringem Aufwand minimalistischste einfließen lassen.

Ansonsten kann man dir irgendwie behilflich sein um dich etwas zu entlasten und dir Zeit zu verschaffen am eigentlichen Projekt zu Arbeiten?

Viele Grüße

jomjol commented 2 years ago

Das Thema ist nicht, dass alle PINs belegt sind, sondern dass auf dem ESP32-CAM nur noch die beiden freien GPIO12/13 zugänglich sind. Es hat halt nur zwei Steckerleisten á 8 Pins.

Ich übernehme die Idee in den langzeit Ideenspeichen und schließe ihn.

Grundsätzlich ist die Variante mit Tag/Identifier am einfachsten umsetzbar, da der GPIO13 ja auch von anderen über die MQTT-Schnittstelle für andere Ansteuerungen verwendet werden kann. Zudem eine TX Schnittstelle mit nur einem Kabel und ohne RX, dann doch zu mehr Verwirrung führen würde.

labmaster commented 2 years ago

Ich finde das Projekt auch genial und war extrem überrascht das sowas mit einem ESP32 möglich ist. Hut ab.

Da eine Wasserzähler ja häufig im Keller zu finden ist und man dort selten brauchbares WLAN hat, ist die Idee mit einem seriellen Ausgang wirklich sehr sinnvoll. Ich stehe vor dem selben Problem bezüglich des WLANs ausserdem bin ich allgemein ein Verfechter des Vermeidens von Funkverbindungen dort wo sie nicht mobil benötigt werden. Der Wasserzähler ist stationär und somit gehört wenn er, wenn möglich per Kabel angebunden.

Ich denke auch, daß ein serieller TX hierfür vollkommen ausreichendi st, eine Rückverbindung benötigt man nicht. "Fire and forget" In meinem Fall würde ich damit in ein Arduino Board mit KNX Bussankoppler gehen der mit das dann auf KNX umsetzt wo dann auch der Strom für den Arduino (20mA@5V) und das ESP32CAM Board (130mA@3.3V) herkommen soll. (ca. 20mA@28V von KNX)

Beste Grüße und Danke für so ein tolles Projekt, Walter

Waschtli commented 1 year ago

Hallo,

wie vor einer Weile schon mal geschrieben, bin ich von dem Projekt wirklich begeistert. Meine erste Installation hörte irgendwann einfach auf und ich habe es noch mal neu aufgesetzt und nun läuft es wieder :-). Was mir aber etwas fehlt ist die Möglichkeit, den Messwert kabelgebunden zu bekommen. Eigentlich wäre ein LAN perfekt, aber auch eine andere serielle Kommunikation des Messwertes wäre für mich in Ordnung. Dazu habe ich schon mal ander Seriellen Schnittstelle glauscht, aber da ist sehr viel Kommunikation, die über den Messwert hinaus geht. Ich hatte gedacht, das mit einem Arduino zu filtern, was ihn aber überfordert. Daher sehe ich aktuell drei Optionen:

  1. Eine Einstellung in der Konfiguration, die die Serielle Ausgabe auf den Messwert oder "error" beschränkt, Damit könnte man einfach einen Arduino als Protokoll-Konverter füttern, der den Messwert dann per LAN an einen MQTT-Server oder per RS485 an ein Mysensors-Gatway weiter gibt.
  2. Tunnelung der Seriellen Daten über LAN und die Dekodierung auf einem leistungsfähigerem SBC, z.B. Raspberry,
  3. Vielleicht gibt es einen SPI-Bus auf dem Board, der als Anschluß für eine externen LAN-Anschluß verwendbar wäre? Variante 1 wäre aus meiner Sicht am einfachsten durch ein kleines Stück Software zu realisieren, auch wenn ich dazu nicht in der Lage bin.

Viele Grüße und Danke für das tolle Projekt.

Waschtl

jomjol commented 1 year ago

Hi Waschtl,

ein Arduino dürfte da eigentlich nicht überfordert sein. Denn die Übertragungsrate ist bei 115200 baud und der Arduino müsste eigentlich nur auf bestimmte Schlagworte hören. Das würde ich weiterverfolgen.

Gruß, jomjol

Waschtli commented 1 year ago

Hallo jomjol,

danke für die prompte Antwort. Das werde ich mal weiter verfolgen. Ich habe da ein paar Ansätze mit Streams von Strings gesehen, die vielversprechend sind (https://arduinogetstarted.com/de/reference/arduino-stream). Dauert bei mir aber...

Viele Grüße

Waschtl

thoath2 commented 1 year ago

Hallo jomjol, ich will auch noch mal auf das WLAN-Thema eingehen. Ich habe das tolle Projekt am Wochenende ausprobiert. Nach etwas basteln (die Ziffern wurden nicht gleich erkannt) konnte ich dem Gerät dann exakte Werte entnehmen. Vielen Dank für Deine Energie, die Du in das Projekt gesteckt hast. Das Problem war allerdings, dass die WLAN-Verbindung nur zustande kam, wenn ich den WLAN-Router 3 Meter neben den ESP gestellt habe. Nur dann kam eine zuverlässige Verbindung zustande. Ich versuche es noch einmal mit einer externen Antenne. Aber eigentlich will ich - wie labmaster auch - den WLAN-Verkehr, dort wo es nicht nötig erscheint, minimieren und würde mich über eine kabelgebunde Möglichkeit des Auslesens freuen (LAN, USB, seriell). Gäbe es evtl. andere ESPs, oder Zusatzsteckeinheiten, die das könnten? Viele Grüße Thomas

crazy-jackrabbit commented 1 month ago

Hi, ich bin auch sehr daran interessiert den Messwert über eine kabelverbindung zu empfangen. Ich habe das System heute erfolgreich mit influxdb 2.x aufgesetzt. Gerne möchtenich aber die Werte via serieller Schnittstelle abgeben/auffangen und anschließend in mein KNX-System bringen. @Waschtli: wie konntest du der seriellen Schnittstelle lauschen? Ich habe festgestellt, dass meine esp32 Cam nur richtig funktioniert wenn diese 3,3v direkt bekommt und nicht über usb. Somit kann ich nicht zuverlässig über die Web-Schnittstelle (verbunden mit usb) arbeiten. konntest du den Tx-Pin einfach mit einem arduino (RX-Pin) verbinden und einen log ausgeben lassen?

Waschtli commented 1 month ago

Hallo Jackrabbit,

leider hat sich das Thema für mich erledigt, da wir einen neuen, elektronischen Wasserzähler eingebaut bekommen haben. Den kann ich nicht mit AI-on-the-edge auslesen. Mit der USB-Schnittstelle hatte ich kein Problem. Ich hatte die ESP32-CAM einfach auf dem Baseboard betrieben und die Serielle ausgelesen. Tut mir leid, wenn ich nicht weiter helfen kann.

Viele Grüße und viel Erfolg

Waschtli

Am 24. Juli 2024 13:41:42 MESZ schrieb crazy-jackrabbit @.***>:

Hi, ich bin auch sehr daran interessiert den Messwert über eine kabelverbindung zu empfangen. Ich habe das System heute erfolgreich mit influxdb 2.x aufgesetzt. Gerne möchtenich aber die Werte via serieller Schnittstelle abgeben/auffangen und anschließend in mein KNX-System bringen. @Waschtli: wie konntest du der seriellen Schnittstelle lauschen? Ich habe festgestellt, dass meine esp32 Cam nur richtig funktioniert wenn diese 3,3v direkt bekommt und nicht über usb. Somit kann ich nicht zuverlässig über die Web-Schnittstelle (verbunden mit usb) arbeiten. konntest du den Tx-Pin einfach mit einem arduino (RX-Pin) verbinden und einen log ausgeben lassen?

-- Reply to this email directly or view it on GitHub: https://github.com/jomjol/AI-on-the-edge-device/issues/512#issuecomment-2247692688 You are receiving this because you were mentioned.

Message ID: @.***>

SybexX commented 1 month ago

Ohne Wlan funktioniert es nicht, dazu müssten einige/viele Änderungen an der Firmware gemacht werden. https://github.com/jomjol/AI-on-the-edge-device/discussions/611 https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/#remote-setup-using-the-built-in-access-point Wenn man mit dem Wlan verbunden ist und das System erfolgreich gestartet ist, bekommt man an der serieller Schnittstelle einige brauchbare Daten. info