Waarde in database opslaan (localhost) d.m.v. ethernetshield

Arduino shields
Berichten: 118
Geregistreerd: 28 Jul 2013, 13:30

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor ercmrj » 16 Jan 2017, 20:17

Kun je de data alleen maar terug sturen naar de nodemcu, of kun je die ook naar een website sturen of opslaan op de harde schijf.

Want dat stukje snap ik nog niet goed. Ik was steeds in de veronderstelling dat de data op mijn webbrowser kwam maar nu zie ik dat ie alleen maar te zien is in de Seriële monitor van de arduino.

Advertisement

Gebruikers-avatar
Berichten: 4836
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor nicoverduin » 16 Jan 2017, 20:44

Wat je nu hebt is slechts de bevestiging dat je data vanaf de Arduino terecht komt op een server. Via de echo vertel ik de aanvrager dat de data is aangekomen. Meer is het niet. Het echte werk moet nog beginnen"
a) Voor de opslag heb je een Database engine nodig. De meeste hosting providers bieden gratis MySQL aan als database server. Daarop moet je dus een database maken met SQL scripts. Te beginnen met het aanloggen.
b) Stel je krijgt het allemaal voor elkaar... Dan ben je er nog niet.... Want dan heb je het in de database. En dan? Je moet dus een browser server applicatie maken die de database leest en toon op jouw app of browser. Maar ook zul je aan toegangsbeveiling moeten denken.
Voor alles is een oplossing maar daar heb je wel de nodige kennis voor nodig.
Ook zijn er diverse open source server applicaties die een heleboel voor jouw kunnen doen. Ik ben er wel eens mee bezig geweest omdat ik niet afhankelijk wilde zijn van de "gratis" servers die met een key jouw data wel willen opslaan. Niets is gratis en op het moment dat je lekker draait krijg je de rekening omdat je limieten overschrijdt. Terwijl je voor 35 euro per jaar je eigen hosting server hebt met legio mogelijkheden. Voor IoT is er nog wel eea te verbeteren.
En als je nog te weinig PHP kennis bezit als ook architectuur kun je dit zien alsof je voor het eerst begint met de Arduino... En moet je alles weer vanaf het begin leren.
De enige overeenkomst die je hebt is dat C redelijk overeenkomt met PHP (En java ... en javascript en nog wat taaltjes).
Dus veel googelen zou ik zeggen en vooral uitproberen en leren.
Er zijn mensen die met de Raspberry nog wel eens eea doen maar dan moet je rekening houden dat jouw Host IP dynamisch is en wel eens veranderd waardoor je daar weer een alternatief voor moet zoeken. En je moet poorten openzetten in de router om van buitenaf op jouw interne netwerk te komen (en hoe regel je de beveiliging).
Dus mocht je denken "ik ben er al bijna...", dan moet ik je teleurstellen.

En gezien jouw veronderstelling zou ik wat energie steken in hoe server applicaties werken. Maar je hebt e partijen in jouw vraagstuk:
a) er sensor opnemer die data verzend
b) de data ontvanger (op het internet) die de data opslaat (en eventueel valideert)
c) de browser die wat wil weten
d) de server applicatie (die de data "verdedeld") die de bewerkte data via browser verzoeken teruggeeft aan de browser.

En als je er conceptueel over nadenkt, geldt dit eigenlijk voor alle systemen. Of je nu een kleine arduino toepassing zou bouwen op de Arduino of dat je een landelijk sensoren net opzet met Lora, 433Mhz, 866Mhz, 2.4GHz, ethernet en allerlei andere communicatie kanalen. In the long run doen ze allemaal hetzelfde.
Dus snap je de een..... snap je ze allemaal.....
Wederom een reden om gewoon eens een pak papier te kopen bij de Action voor een paar euro en ga maar eens schetsen wat er allemaal bij nodig is.

Maar een browser stuurt verzoeken uit op het internet... Via een DNS of direct komt jouw verzoek bij de juiste server..... Die maakt een reply van (bijv. een HTML pagina) en stuurt deze terug naar de browser. Meer niet...

Zat leeswerk lijkt mij...
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 118
Geregistreerd: 28 Jul 2013, 13:30

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor ercmrj » 16 Jan 2017, 20:51

Haha, dat dacht ik inderdaad dat ik er bijna was, maar toch bedankt Nico.

We zien wel hoever we nog komen

Berichten: 118
Geregistreerd: 28 Jul 2013, 13:30

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor ercmrj » 18 Jan 2017, 22:07

Als ik in de map www van mijn nas de rechten wijzig en de gebruiker http ook toestemming geef om te schrijven en ik plak dit stukje script onder aan mijn add.php script dan komt de data in een tekstfile te staan in de map www.

Code: Alles selecteren
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = $data;
fwrite($myfile, $txt);
fclose($myfile);
?>


Is dit nu heel gevaarlijk wat ik doe om de map www die rechten te geven?

Gebruikers-avatar
Berichten: 4836
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor nicoverduin » 18 Jan 2017, 22:24

Je moet nooit een client dat soort rechten geven. Alleen het systeem. Het script draait binnen het systeem. Meer niet
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 4836
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor nicoverduin » 19 Jan 2017, 11:11

Net even de laatste versie van de ESP32 Arduino binnengehaald. Het POST voorbeeld werkt ook op de ESP32.
Alleen je krijgt iets meer output op de Serial:
cpp code
ets Jun  8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0008,len:8
load:0x3fff0010,len:1760
load:0x40078000,len:6664
load:0x40080000,len:252
entry 0x40080034
tcpip_task_hdlxxx : 3ffcb89c, prio:18,stack:2048
I (1906) wifi: frc2_timer_task_hdl:3ffce124, prio:22, stack:2048
I (1919) wifi: Init lldesc rx mblock:25
I (1919) wifi: Init lldesc rx ampdu len mblock:7
I (1919) wifi: Init lldesc rx ampdu entry mblock:4
I (1921) wifi: pp_task_hdl : 3ffdaf40, prio:23, stack:8192


Connecting to verelec_1
I (1937) wifi: rx_ba=1 tx_ba=1

I (1937) wifi: mode : softAP (24:0a:c4:04:2a:65)
I (1938) wifi: rx_ba=1 tx_ba=1

I (1938) wifi: mode : sta (24:0a:c4:04:2a:64)
dhcp server start:(ip: 192.168.4.1, mask: 255.255.255.0, gw: 192.168.4.1)
.I (2815) wifi: n:6 0, o:1 0, ap:255 255, sta:6 0, prof:1
..I (3472) wifi: state: init -> auth (b0)
I (3474) wifi: state: auth -> assoc (0)
I (3478) wifi: state: assoc -> run (10)
I (3515) wifi: connected with verelec_1, channel 6
............
WiFi connected
IP address:
192.168.178.22
connecting to collectdata.verelec.com
Requesting URL: POST /add.php HTTP/1.1
Host: collectdata.verelec.com
User-Agent: Arduino/1.0
Connection: close
Content-Type: application/x-www-form-urlencoded;
Content-Length: 11

data_sent=1

1
closing connection
connecting to collectdata.verelec.com
Requesting URL: POST /add.php HTTP/1.1
Host: collectdata.verelec.com
User-Agent: Arduino/1.0
Connection: close
Content-Type: application/x-www-form-urlencoded;
Content-Length: 11

data_sent=2

Aan het einde zie je wel mijn eigen data. Maar daarvoor best veel info. Eerst maar eens uitzoeken wat alles is. Wel duidelijk een RTOS tussen applicatie en WiFi
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 118
Geregistreerd: 28 Jul 2013, 13:30

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor ercmrj » 20 Jan 2017, 18:20

Als ik de data naar een locale server stuur ipv de nas en dan in dezelfde directory de data op laat slaan in een file en ook een scripje maak dat zodra de betreffende file gewijzigd wordt hij meteen een copy van de file naar mijn nas (dir www) copieert, dan neem ik aan dat dat wel veilig is niet?

Gebruikers-avatar
Berichten: 4836
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor nicoverduin » 20 Jan 2017, 18:29

Het gaat erom dat je de webserver goed opzet. Dus alleen scripts via het systeem laten werken. Doe je dat niet dan zou iemand als hij van buiten jouw netwerk kan komen een script op jouw nas zetten dat meer kan doen dan wat jij wilt.
Maar ik snap jou niet. Als jij jouw NAS wilt beveiligen van buiten het netwerk om kom je niet weg met een eenvoudig scriptje... Wel eens van PHP insertion gehoord? En dat is nog de gemakkelijkste. Maar waarom ga je niet gewoon naar een mysql database. En ja dat moet je ook weer leren....
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 118
Geregistreerd: 28 Jul 2013, 13:30

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor ercmrj » 20 Jan 2017, 18:33

En ja dat moet je ook weer leren....


Ik wil dat best wel leren maar dan kan ik de eerste paar maanden nog niets doen met mijn arduino vandaar dat ik ff een simpele oplossing zocht

Gebruikers-avatar
Berichten: 4836
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor nicoverduin » 20 Jan 2017, 18:45

Waarom ga je dan niet eerst alles local oplossen. Zolang je de poorten niet open gooit op de router kan niemand erbij/
En je weet hoe ik denk over het aanleren van slechte gewoontes......
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

VorigeVolgende

Terug naar Shields

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast