Eenvoudig Arduino data loggen met onze IoT dataserver

Eenvoudig Arduino data loggen met onze IoT dataserver

Gepubliceerd op: 29-01-2019 21:03

Hé, jij houdt niet van advertenties maar wél van kwaliteitscontent? Dat mag, maar misschien wil je dan een donatie doen via PayPal of creditcard?

Of doe je aankopen via één van onze winkelpartner-links in de zijbalk.

Veel van de projecten op EngineerAtHome vallen in de categorie 'Internet of Things', ze zijn verbonden met een server voor datalogging toepassingen. Wat nu als je zelf niet beschikt over een server? Dan kun je gebruik maken van EngineerAtHome's gratis dataplatform!

Nieuwe sensor aanmaken op de IoT-server

Of je nu een connected weerstation gaat maken, CO2-niveau's wilt meten of graag je energieverbruik wilt loggen, met EngineerAtHome's gratis dataplatform kun je al je sensordata eenvoudig loggen, bekijken in onze webinterface en downloaden. Het aanmaken van een nieuwe sensor is heel eenvoudig: Ga naar data.engineerathome.com en druk op de knop 'Create a new sensor'.

Een nieuwe sensor aanmaken op data.engineerathome.com

Vul de velden van het formulier in, elke sensor kan maximaal 2 waardes tegelijk loggen, bijvoorbeeld temperatuur en luchtvochtigheid, of hoog-tarief en laag-tarief.

Een sensor kan maximaal 2 waardes tegelijk loggen naar de database

Vervolgens ontvang je een e-mail met je sensor-id en secret. Houdt je secret altijd voor jezelf, die gebruik je om te voorkomen dat anderen data naar jouw sensor sturen.

Na aanmelding ontvang je de sensorgegevens

Data loggen via een GET-request

Zodra de sensor is aangemaakt op de server kun je meteen beginnen met data loggen via een eenvoudig http get-request. Het mooie van get-requests is dat ze super universeel zijn en op allerlei verschillende low-end en high-end devices werken. Zowel op een Arduino Uno met Ethernetshield als op een ESP8266 / NodeMCU, Raspberry Pi, Linux server of Windows computer. De higher-end devices ondersteunen ook de veiligere https versie die zorgt voor een versleutelde verbinding.

In de basis ziet het get-request om data te loggen er zo uit:

http://data.engineerathome.com/api/api.php?id={sensor_id}&secret={secret}&value1={value1}&value2={value2}

Arduino sensordata loggen met HTTP Get

Met onderstaande Arduino voorbeeld-code maak je verbinding met onze IoT dataserver en log je de data naar jouw sensor.

char server[] = "data.engineerathome.com";

if (client.connect(server, 80)) {
  client.print("GET /api/api.php?id={sensor_id}&secret={secret}&value1=");
  client.print(sensorTemperatuur);
  client.print("&value2=");
  client.print(sensorLuchtvochtigheid);
  client.println(" HTTP/1.1");
  client.print("Host: ");
  client.println(server);
  client.println("Connection: close");
  client.println();
  delay(10);
  client.stop();
}

Let er op dat je deze code niet vaker dan eens per 5 minuten uitvoert, de server negeert overige requests maar op termijn kun je worden geblokkeerd als je misbruik maakt van de service.

Bekijk je data in onze webinterface

Staat je Arduino lekker data te pompen? Dan is het tijd om te kijken of alles ook aankomt bij onze server. Je kunt inloggen op de webinterface via https://data.engineerathome.com/view/{sensor_id}/{secret}. Hier kun je zowel een lijngrafiek van jouw sensor raadplegen als een tabel met alle logregels die je eenvoudig kunt kopiëren naar Excel voor verdere analyse.

Bekijk jouw persoonlijke sensordata in onze webinterface

Als je een publieke sensor hebt gemaakt kun je gasten toegang geven tot de webinterface via de link https://data.engineerathome.com/view/{sensor_id}/ dus zonder secret. Zo kunnen ze wel jouw grafieken bekijken maar geen gegevens wijzigen of toevoegen.

JSON data ophalen via HTTP Get

Wil je liever je eigen web-interface maken of de gelogde data in een app gebruiken? Dan kun je de sensordata opvragen via een eenvoudig get-request. Als je onderstaand request doet reageert de server met een JSON string met de laatste {number} logregels van jouw sensor (maximaal 1000).

https://data.engineerathome.com/api/api.php?id={sensor_id}&secret={secret}&view={number}

De respons ziet er ongeveer zo uit

{{"timestamp": "2019-01-13 17:36:41", "value1": 12.3, "value2": 100},
{"timestamp": "2019-01-11 17:14:15", "value1": 21.3, "value2": 95},
{"timestamp": "2019-01-11 17:11:45", "value1": 21.8, "value2": 98},
{"timestamp": "2019-01-11 17:10:53", "value1": 21.6, "value2": 91}}

Met behulp van JavaScript en Ajax kun je dan je eigen webinterface bouwen, data van verschillende sensoren combineren en verder verwerken, etc.

3 reacties op dit artikel »

Meer van dit soort artikelen lezen?