ESP32 uitlezen en opslaan

Ik vraag me af wanneer ik een ESP32 heb geprogrammeerd met een webserver en hiermee een sensor uitlees, kan ik die zelfde gegevens ook niet automatisch opslaan op mijn PC.
Ik heb hier geen kaas van gegeten en ben gaan zoeken op het net maar kom niets tegen wat ik snap of wat het antwoord is. Misschien kan het helemaal niet maar dan weet ik ook.

Wat ik heb is een ESP32 geprogrammeerd om een DHT11 uit te lezen via de ingebouwde webserver.
In mijn browser zie ik dus mooi de temperatuur en de luchtvochtigheid.

Wat ik zoek is een manier om de waarde die ik uitlees zolang mijn computer aanstaat op te slaan. bv elk uur.
Het is op een wifi netwerk wat afgesloten is van de buitenwereld dus automatisch mailen of opslaan in de cloud is niet mogelijk zelf een server draaien en bijhouden kan en wil ik niet. Toepassen van een SD kaart is niet mogelijk ivm onbereikbaarheid.

Nog mooier zou zijn om twee ESP32's uit te lezen.

Weet er iemand of dit "eenvoudig" te doen is en in welke richting ik zou moeten zoeken.

Alvast bedankt voor het lezen en meedenken.

Dan zul je een programmatje moeten maken voor de PC, dat elke x minuten de sensorwaarde(n) van de ESP(s) opvraagt en opslaat

Sine

Moderator

Op 27 juni 2023 20:51:58 schreef harryaan:
zelf een server draaien en bijhouden kan en wil ik niet.
Weet er iemand of dit "eenvoudig" te doen is en in welke richting ik zou moeten zoeken.

Je tilt wat te zwaar aan het woord 'server' denk ik. Want volgens mij is dat precies wat je zoekt. Een centrale doos die data van 1 of meerdere sensors verzamelt en presenteert.

Arco

Special Member

Aangezien de browser de serverdata al op kan halen en tonen, moet dat met een speciaal pc programmaatje makkelijk kunnen...
(zo te horen is die serverpagina dynamisch en wordt periodiek ververst?)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Met wat 'dos batch' of powershell is dat goed te doen. Er zijn vast duizenden voorbeelden te vinden.
"Fetch http into csv file in windows" en via de task scheduler zet je dat op elke 5 minuten.

In linux kan ik het uit mijn hoofd:

Als je wsl2 ubuntu linux in je windows installeert dan kan je nog meer voorbeelden vinden.

Je doet dan zoiets als:

date >> temp.log
curl http://ipadrr/temp | grep -o '.* Celsius' >> temp.log

En dat zet je op elke 5 minuten in de crontab.

Edit: je maakt het jezelf makkelijker als je de ESP geen 'human friendly website' laat teruggeven, maar een kale regel:
2023-12-23 08:00:00;19,8;80

Je kan vast 48 van die regeltjes in het ESP geheugen houden. Dan kan je later in excel de dubbele tijden eruit filteren en mis je ook de uren niet als de pc eens uitvalt.

[Bericht gewijzigd door K7Jz op 27 juni 2023 21:48:14 (25%)

Je kunt tien duizend van die regeltjes op je ESP onthouden, er zit 4MB flash op die dingen.
Hoef je maar eens per week je computer aan te zetten, en de CSV van die week te downloaden.

Maar een en ander is vooral afhankelijk van wat TS zijn programmeervaardigheden en comfort-zones zijn.
Dus TS, waar wil je aan de slag?

(als je wel internet had zou ik voorstellen de ESP elke meting naar een Amazon-Lambda functie te laten sturen, die in een DB te stoppen, en dan met een andere lambda er een grafiekje van maken dat je via Twilio als WhatsAppje krijgt.
Kost allemaal niets als je minder dan 1000 requests per maand doet ;)

Maargoed, waar is je comfortzone?

[Bericht gewijzigd door blurp op 27 juni 2023 22:11:05 (35%)

buckfast_beekeeper

Golden Member

Waarom geen 3de ESP met SD kaartje?

Van Lambiek wordt goede geuze gemaakt.

Op 27 juni 2023 21:20:29 schreef Sine:
[...]

Je tilt wat te zwaar aan het woord 'server' denk ik. Want volgens mij is dat precies wat je zoekt. Een centrale doos die data van 1 of meerdere sensors verzamelt en presenteert.

Dat heeft hij toch al in de vorm van EEN ESP32 die verzamelt al de gegevens en presenteert die op een webpagina.

Wat ik zoek is een manier om de waarde die ik uitlees zolang mijn computer aanstaat op te slaan. bv elk uur.

Dat moet aan de PC kant gebeuren. Een of ander programma moet dan de website uitlezen en dan de gegevens opslaan.

Hieronder een link naar hoe je een website via Excel kan uitlezen.

https://blog.computercreatief.nl/gegevens-importeren-van-een-webpagina…

Via homewizard een programma om je huis te automatiseren moet het volgens mij ook kunnen die maakt er dan ook grafieken van. Maar allen van horen zeggen en het kan een een andere domotica programma zijn dat weet ik even niet meer.

https://xtremer.nl/index.php/homewizard/how-to-homewizard-uitlezen-en-…

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.
bprosman

Golden Member

Of "Home assistant" met een MQQT broker er op maar TS gaf aan zelf geen losse "server" te willen draaien alhoewel dat natuurlijk ook een Raspberry PI kan zijn.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Zelf zou ik toch iets nemen wat als 'server' fungeert. Geen zorgen, je huis hoeft geen google datacenter te worden. Iets simpels als een raspberry pi of zelfs een ESP32 kan al voldoende zijn.

Wat oplossingen die ik me kan bedenken:

Home assistant
Als je bijvoorbeeld een raspberry pi hebt kan je daar home assistant op draaien. Op de ESP kan je dan ESP Home draaien. Je hebt geluk want de DTH11 is al ondersteund. https://esphome.io/components/sensor/dht.html?highlight=dht11

+ Makkelijk op te zetten voor een iets wat technisch persoon.
+ Geen programmeerwerk.
+ Web interface
+ Remote updaten van de ESP
+ Veel beschikbaar in de community
- RPI is technisch gezien een server

Extra ESP32 met SD-kaart
Je zou een andere ESP32 kunnen neerzetten welke wel een SD-kaart heeft. Je kan bijvoorbeeld met ESP-NOW of via wifi / ethernet de data kunnen doorsturen. De extra ESP verzameld de data en schrijft het naar een SD-kaartje. Deze kan ook een web interface hebben die de data op het kaartje weergeeft.

+ Technisch gezien is dit nog steeds een server, al verwacht ik dat je het anders ziet. :)
- Zelf alle software maken

Bufferen en ophalen
De huidige sensor zou de data kunnen bufferen in de interne flash. Als je een ESP32 pakt met 16 Mb dan kan je daar best veel flash aan toekennen. Met de PC zou je dan eens in de zoveel tijd de data kunnen opvragen uit de ESP.

+ Geen server
- Grote kans op het missen van data bijvoorbeeld wanneer je vergeet op te halen en de buffer overflowed
- Zelf alle software maken

PE2BAS
buckfast_beekeeper

Golden Member

Vraag is ook wat heeft TS al aan hardware? Een PC/laptop 24/24 laten aan staan om gegevens op te slaan is niet de meest ecologische oplossing.

Is er een NAS aanwezig, dan kan deze heel vaak als server worden ingericht. Zowel MQTT (Mosquito), webserver met PHP, MaraiDB (database), ... kan er op gezet worden. Het is dan geen grote moeite om een ESP om de x tijd een PHP pagina te laten openen om gegevens in de database te laten steken. Met een andere PHP pagina haal je er alles uit wat je wil zien.

@hardbass: remote updaten van de ESP kan eenvoudig zelf geïmplementeerd worden. Ik heb geen andere ESP meer. BIN bestand aanmaken en via web interface update. Gaat trouwens sneller dan via USB. Dit is trouwens de meest handige oplossing als de ESP ergens werd ingebouwd. Met wat HTML, CSS en javascript kennis is een webinterface ook geen groot probleem. Op W3SCHOOLS staat er voor alles wel een voorbeeld.

Van Lambiek wordt goede geuze gemaakt.

Klopt, ik werk zeer veel met de ESP32 op het werk. Die doen we ook remote updaten en laten loggen naar een server hier op de zaak. Maar met een homeassistant / esphome oplossing hoef je zelf helemaal niets meer te bouwen. Het is een kwestie van aanzetten en configureren. Het zit er allemaal al in, dat is voor de hobby wel erg makkelijk natuurlijk.

Ik zou zelf geen php dingetje bouwen maar iets bestaands gebruiken. Maar iedereen heeft natuurlijk zijn voorkeuren afhankelijk van kennis en ervaringen.

@TS: deze zin snap ik niet helemaal: "Toepassen van een SD kaart is niet mogelijk ivm onbereikbaarheid."

Betekent dit dat de ESP fysiek onbereikbaar is, of dat je niet telkens een SD-kaart wil wisselen omdat hij lastig bereikbaar is?
Als dat 2e het geval is zou je wel een SD kunnen plaatsen en die volschrijven. Dan zet je gewoon een Ftp-servertje op de ESP.

Ik ga ervan uit dat je met Arduino werkt?
https://www.hackster.io/xreef/ftp-server-on-esp8266-and-esp32-b03bd8

Voor IDF:
https://github.com/nopnop2002/esp-idf-ftpServer

PE2BAS
marcob

Golden Member

Ik ben ook afgestapt van zelf de hele firmware schrijven voor een ESP. Als basis gebruik ik altijd ESPHome, waarin je een waslijst aan componenten gewoon selecteert. De specials maak je via scripts, lambda calls of een los stukje code wat je bijvoegt (include).

People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years

Hartelijk dank voor alle reacties, ik ga de opties nalopen wat ik aan kan.
Ik ben absoluut geen programmeur kan wel leuk "knippen en plakken" :) dus moet wel voor mij behapbaar blijven.

Er staan voor mij hele goeie ideeën bij nu even zien wat voor mij werkt.

Je zou ook een SD op de ESP32 kunnen aansluiten en daar de waardes, zeg iedere 5 minuten opslaan. Een 32GB kaartje kan dan heel veel kwijt. Je houdt dan alles netjes in de ESP en hebt geen extra server oid nodig.

Ja... en toen ?
Arco

Special Member

Ik heb diverse zaken met mogelijkheid tot lokale SD opslag.
Is leuk, maar bij frequent gebruik erg lastig (steeds kaartje eruit, erin...)

Is wel handig als opslag, maar dan moet je die data wel remote op kunnen halen via de PC waarop je het wilt tonen.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Idd, vandaar mijn FTP voorstel :)

PE2BAS

Files downloaden van de ESP32 kan zowel met ftp als via de webbrowser. Ik heb een toepassing waarbij gps logfiles op de SD kaart worden opgeslagen, en daarna via een webserver, of via ftp kunnen gedownload worden :
https://github.com/RP6conrad/ESP-GPS-Logger/blob/master/README.md
Ook een configuratie file met settings is aan te passen via de webserver.
De webpage ziet er dan zo uit :

Arco

Special Member

Ik heb FTP gebruikt met FileZilla (om de waterstanden in Nederland op te halen van een RWS server)
Haalde de data alleen op als de timestamp van de file was gewijzigd sinds laatste toegang...

Werd gebruikt om de waterstanden via een voiceresponse systeem op te kunnen vragen door schippers...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 28 juni 2023 15:07:22 schreef Arco:
Ik heb diverse zaken met mogelijkheid tot lokale SD opslag.
Is leuk, maar bij frequent gebruik erg lastig (steeds kaartje eruit, erin...)

Is wel handig als opslag, maar dan moet je die data wel remote op kunnen halen via de PC waarop je het wilt tonen.

Dat kun je prima in een webpagina/api regelen...

Ja... en toen ?