ESP 8266 Daten senden an Pi DB

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo an alle,

    mein ESP 8266 soll die Daten per Wlan an den Pi senden. Dieser verfügt über ein PostgreSql Datenbank. Die übermittelten Werte sollen in die Datenbank gespeichert werden,

    hierzu sammelt ein MCP3008 kräftig Daten.

    Leider bekomme ich die TCP Verbindung nicht hin! Ich erhalte stets "connection failed"

    IP des Host ist richtig. Laut einer Doku soll der Port 5555 genutzt werden. Ist der beim pi zu?

  • Moin tutter,

    schau dir in der Arduino Ide die Beispiele für den ESP8266 an. Ins besondere PostHTTPClient.ino.

    Das ist einfacher als hier alles zu schreiben.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Beitrag von Hofei (21. Oktober 2021 um 23:34)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • client.print(String("GET htp://192.68.178.29/postgre-php?")+

    Bist Du sicher, dass hier nicht http:// stehen sollte? Mit einem t habe ich das noch nie gesehen...

    Wobei, wenn Du tatsächlich nur "connection failed" erhältst, kommst Du gar nicht so weit.

    Leider kenne ich diese "PostgreSql" Datenbank nicht - aber die lauscht tatsächlich auf Port 5555 nach den TCP Daten? Keine hilfreiche (Fehler)meldung auf Seite des PI?

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

    2 Mal editiert, zuletzt von VeryPrivat (22. Oktober 2021 um 10:12) aus folgendem Grund: Tippfehler ; statt : bei HTTP (nach Hinweis durch WaldiBVB)

  • Beitrag von WaldiBVB (22. Oktober 2021 um 09:58)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Beitrag von WaldiBVB (22. Oktober 2021 um 10:00)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • GET htp://192.68.178.29/postgre-php?

    Außer dem t fehlt da wohl auch noch eine 1 für eine vollständige 168

    Meine Pis

    Pi B Rev 2 24/7 - DHCP-Server im Heimnetz
    Pi 2B Rev 1.1 Home-Infocenter (Domoticz) - Kamera auf Garten
    Pi 2B Rev 1.1 Testgerät mit USV, Musikplayer, Kodi,
    Pi 3B Rev 1.2 Videos aus Netzwerk (an Rückseite des TV moniert)
    Pi 3B+ Rev 1.3 mit 3.5-TouchDisplay, Peppy-Web-Radio
    Pi 4B - 4GB Rev 1.1 Testgerät - Argon-ONE-Gehäuse

    Pi Zero Testgerät

    Pi Zero W Rev 1.1 Motion-Eye auf Garten

  • Ok ich habe das Skript heute doch noch mal mir angeschaut. Ich konnte dank eurer Hilfe noch diverse Fehler ausbauen.

    Nun erhalte ich aber ">>> Client Timeout !".

    Der SQL Befehl funktioniert den konnte ich testen. Was kann ich nun noch testen? An was kann es liegen?

  • Schön, dass Du einen Schritt weiter bist. Aufgrund Deiner Erfahrung hier im Forum (143 Beiträge) sollte es eigentlich selbstverständlich sein, dass wir nur raten können, solange wir nicht wissen, was Du genau machst. Es wäre also sehr hilfreich, wenn Du die Änderungen oder den aktuellen Code von dem Du "sprichst" postest...
    Da sich vermutlich die Meisten nicht so intensiv wie Du mit dem Thema beschäftigt haben, wäre es auch hilfreich, wenn Du uns die Quelle auf Basis deren Du Deinen Code gemacht hast nennen könntest.

    Wie testest Du den SQL Befehl? Welchen "Testbefehl" hast Du verwendet?

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • VeryPrivat da hast du natürlich recht!

    Wie ich das testen soll habe ich mich am Anfang auch gefragt. Deswegen habe ich erst einmal das getestet was ich testen kann. Deswegen habe ich einen php Aufruf mit $_GET gemacht zb: http://192.168.178.29/postgre.php?temperatur=34&humidity=45 Danach habe ich geschaut ob dies in der Datenbank ankam.

    Ja das tat es. Somit war es möglich Daten in Datenbank zu schreiben.

    Nun musste es ja an dem Skript vom ESP liegen.

    Hier überlegte ich mir die ganze Zeit warum der ESP an den Port 5555 oder 5432 senden soll. 5555 ist ein Port den der Pi nicht kennt! und 5432 (Postgre) würde nur etwas bringen wenn ich direkt in die DB "ballern" könnte. Da ich das aber nicht kann und den Umweg über HTTP machen muss, muss es doch ein HTTP-Port sein?!.

    Da ich in solchen Themen nicht so tief in Thema bin, half nur "Weiterbildung" und sie da es muss Port 80 sein.

    Noch mal vielen Dank an die vielen guten Ideen und Hinweise!

    Ein Frage hätte ich noch. Ich würde gern 60 Sekunden lang die Werte sammeln (vielleicht in einem Array?) und im Anschluss nur die Min, Max und Durchschnittswert hochladen. Also jede Minute, pro gemessenen Wert, jeweils Min, Max und average.

    Gibt es eine Möglichkeit dafür? Ist das zu viel für den kleinen ESP?


    Somit ergibt sich:

    PHP:

    ESP:

    Einmal editiert, zuletzt von tutter (24. Oktober 2021 um 21:23)

  • __blackjack__ : Ja das ist ein erster Schritt, in die richtige Richtung. Sicher kann ich das noch auf $_Post umstellen. Im nächsten Schritt würde ich gern etwas mit API´s machen. Aber es läuft erstmal und das war das erste Ziel. Außerdem kann ich beruhigt sein, da es in einem separaten Netz läuft das nur für so ein Spielkram gemacht ist.

    Aber danke für den Hinweis!

  • Ich würde gern 60 Sekunden lang die Werte sammeln (vielleicht in einem Array?) und im Anschluss nur die Min, Max und Durchschnittswert hochladen. Also jede Minute, pro gemessenen Wert, jeweils Min, Max und average

    Das ist eigentlich relativ einfach. Dazu brauchst Du kein Array.:

    • Für den Mittelwert addiere einfach alle Werte und dividiere nachdem du die gewünschte Anzahl erreicht hast durch die Anzahl. Achte beim Addieren darauf, dass die Summiervariable nicht überläuft.
    • Max: Initialisiere eine Variable MAX mit 0. Ist der aktuelle Wert höher als der in der MAX Variable, dann schreibe diesen Wert in die MAX Variable. Nach der gewünschten Anzahl von Werten steht der Wert drinnen, der das Maximum war.
    • Min: Analog zu MAX halt nur mit einem größeren Wert als das mögliche Maximum initialisieren und den jeweils kleineren Wert in die Variable übernehmen.

    Gibt es eine Möglichkeit dafür? Ist das zu viel für den kleinen ESP?

    Wenn Du Dich ausgiebig damit beschäftigst, wirst Du Dich noch wundern, was man mit einem ESP alles machen kann.

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Hier überlegte ich mir die ganze Zeit warum der ESP an den Port 5555 oder 5432 senden soll. 5555 ist ein Port den der Pi nicht kennt! und 5432 (Postgre) würde nur etwas bringen wenn ich direkt in die DB "ballern" könnte. Da ich das aber nicht kann und den Umweg über HTTP machen muss, muss es doch ein HTTP-Port sein?!.

    Wenn du das so machst muß es natürlich der http-Port (80) sein. Ich nutze nur noch den ESP als Sensor. Inzwischen spare ich mir das Scripten und nutze ESPeasy. Solltest du dir mal anschauen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!