Meedoen


Knipsels in knipselbakken in vier eenvoudige stappen

In vier korte stappen staan de eerste meetgegevens van een internet-sensor in dingdata.nl. Twee van deze stappen kunt u als voorbereiding zien en vinden plaats op dingdata.nl. In de andere twee stappen programmeert u uw internet 'ding' met de van dingdata.nl verkregen schrijfgegevens.

Maak een verzamelaar account

Een account van dingdata.nl heet een verzamelaar en bestaat uit een gebruikersnaam, uw emailadres en een zelf te kiezen wachtwoord. Het wachtwoord beschermt al uw gegevens op dingdata.nl en het is daarom belangrijk dat dit wachtwoord aan bepaalde minimale eisen voldoet, waaronder dat u het wachtwoord niet 'hergebruikt' van andere diensten op het internet. U kunt hier een verzamelaar account maken; na het aanmaken van het account wordt u automatisch ingelogd en wordt u naar de Verzamelaar en knipselbakken pagina geleid.

Op de Verzamelaar en knipselbakken pagina vindt u de gegevens van uw verzamelaar account terug. Ook vindt u hier een overzicht van uw knipselbakken. Als u zojuist een account hebt aangemaakt dan is dit overzicht nog leeg. Maak nu in de volgende stap een knipselbak aan.

Configureer een nieuwe knipselbak

Klik op de link Maak een nieuwe knipselbak; de pagina Knipselbak aanmaken wordt nu getoond (de pagina verschijnt alleen als u bent ingelogd, zie stappen hierboven). Een knipselbak is bij dingdata.nl de plek waar alle sensorgegevens van een bepaald type op een bepaalde locatie worden opgeslagen. U kunt bijvoorbeeld een knipselbak maken voor temperatuurmetingen die u in een schuur uitvoert: het sensortype zou in dit geval 'Temperatuur' zijn en de omschrijving van de knipselbak 'De schuur'.

Vul de Omschrijving van de nieuwe knipselbak in en kies het Sensortype dat beschrijft welke informatie uw sensortoepassing oplevert, zoals 'Fijnstof PM2,5 (in µg/m³)'. Kies als Locatie de plaats waar de metingen worden uitgevoerd, zodat u in de toekomst meetgegevens met andere dingdata.nl gebruikers uit dezelfde plaats kunt vergelijken.

Iedere knipselbak heeft een nummer en een schrijfsleutel. Beide, zowel nummer als schrijfsleutel, zijn nodig om gegevens door een sensortoepassing naar een knipselbak te laten schrijven. Let erop dat de schrijfsleutel van iedere knipselbak anders is en dat anderen dus niet naar uw knipselbak kunnen schrijven. U kunt er echter voor kiezen om meerdere sensoren naar dezelfde knipselbak te laten schrijven door deze hetzelfde nummer en schrijfsleutel te laten gebruiken. Nadat u een knipselbak hebt aangemaakt komt u weer op de Verzamelaar en knipselbakken pagina waar de knipselbak nu zichtbaar is in het overzicht van uw knipselbakken.

Programmeer het 'ding'

Op de Verzamelaar en knipselbakken pagina vindt u de gegevens van uw verzamelaar account terug. Ook vindt u hier een overzicht van uw knipselbakken. In de kolom Schrijfsleutel in het overzicht van de knipselbakken vindt u per knipselbak een knop; druk hierop om een gebruiksvoorbeeld voor de knipselbak te bekijken. In dit gebruiksvoorbeeld wordt een url getoond, waarin alle benodigde gegevens (zoals het knipselbaknummer en de schrijfsleutel) al zijn ingevuld. Kopieer deze url om in uw sensortoepassing te gebruiken: alleen het woord waarde in het gebruiksvoorbeeld moet nog worden vervangen door de échte meetwaarde.

Dingdata.nl is vooral bedoeld voor het opslaan van gegevens van sensoren waar de eigenaar vrij toegang tot de software en instellingen heeft. Eigengemaakte sensortoepassingen of toepassingen gebaseerd op ESPhome of Tasmota zijn hiervoor uitermate geschikt. Ook apparaten en applicaties die de standaard beschikking hebben over een 'webhook' (een aanroep naar een op te geven url) kunnen worden ingesteld om gegevens naar dingdata.nl te versturen. Afhankelijk van de techniek van uw sensortoepassing zal het aanroepen van de url uit de vorige stap dus op een andere manier gebeuren. In de paragraaf Voorbeelden van het gebruik van dingdata.nl hieronder vindt u verschillende manieren uitgewerkt. Komt u er niet helemaal uit? Stuur ons dan een email met de beschrijving van uw sensortoepassing naar info@dingdata.nl zodat we met u mee kunnen denken.

Stuur knipsels naar dingdata.nl

Een meetwaarde wordt bij dingdata.nl een knipsel genoemd. Een knipsel bevat alleen een bericht (de meetwaarde) en een tijdstempel dat het moment van binnenkomst bij dingdata.nl markeert. U kunt oneindig veel knipsels in dingdata.nl opslaan, maar houdt u er rekening mee dat u niet meer dan ongeveer 10 knipsels per minuut naar dingdata.nl kunt sturen. Dit geldt over alle knipselbakken van uw verzamelaar account en dingdata.nl berekent het gemiddelde gebruik om te bepalen of u niet te snel knipsels na elkaar hebt gestuurd.

Datamodel

Dingdata.nl werkt met het concept knipselbakken, dat meetwaarden van een bepaald type en een bepaalde locatie bevat. Die meetwaarden worden knipsels genoemd en bestaan uit een 'boodschap' (de meetwaarde) en een 'tijdstempel' (het meetmoment). De knipselbakken zijn eigendom van een verzamelaar. Knipsels kunnen alleen met een speciale 'schrijfsleutel' naar een knipselbak worden geschreven (iedere knipselbak heeft een eigen schrijfsleutel) en de verzamelaar kan er meerdere knipselbakken op nahouden, voor verschillende sensortypes en verschillende locaties bijvoorbeeld.

Voorbeelden van het gebruik van dingdata.nl

Hieronder zijn voorbeelden opgenomen op knipsels naar dingdata.nl te schrijven. In alle gevallen is het nodig om van te voren een verzamelaar account en tenminste één knipselbak aan te maken. Het nummer van de aangemaakte knipselbak wordt in de voorbeelden weergegeven als nummer en de bij de knipselbak behorende schrijfsleutel wordt weergegeven als code. De weg te schrijven meting is aangegeven als meting.

Voorbeeldaanroep met curl

Het bewaren van een knipsel in een van te voren aangemaakte knipselbak gaat met curl als volgt:

curl --location --request POST 'http://dingdata.nl/knipsel?sleutel=code>&knipselbak=nummer>&bericht=meting>'

Voorbeeldprogramma voor Arduino

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>

const char* ssid = "";
const char* password = "";
const char* serverName = "http://dingdata.nl/knipsel";

unsigned long lastTime = 0;
unsigned long timerDelay = 5000;

void setup() {
  WiFi.begin(ssid, password);

void loop() {
  if ((millis() - lastTime) > timerDelay) {

    if(WiFi.status()== WL_CONNECTED){
      WiFiClient client;
      HTTPClient http;
      
      http.begin(client, serverName);
      http.addHeader("Content-Type", "application/x-www-form-urlencoded");
      String httpRequestData = "sleutel=code&knipselbak=nummer&bericht=meting";           
      int httpResponseCode = http.POST(httpRequestData);
      
      http.end();
    }
    lastTime = millis();
  }
}

Voorbeeldconfiguratie voor ESPhome

In ESPhome kan een sensor worden uitgebreid met een template waarmee http POST request kan worden uitgevoerd:

http_request:
  useragent: esphome/device
  timeout: 10s

sensor:
  - ...
      id: "een_sensor_id"
      ...
            
  - platform: template
    name: "Dingdata Request"
    internal: True
    lambda: |-
      return id(een_sensor_id).state;
    update_interval: 60s
    on_value:
      - http_request.post:
          url: !lambda |-
              char buf[256];
              sprintf(buf,  "http://dingdata.nl/knipsel?sleutel=code&knipselbak=nummer>&bericht=%0.1f", id(een_sensor_id).state);
              return ((std::string) buf).c_str();
  

Voorbeeldprogramma in UIFlow voor M5StickC, Atom of M5Stack