1. 30MHz support
  2. Developer documentatie

Sensor data ophalen via de API

Data via de API ophalen kan op verschillende manieren. Het is mogelijk de huidige waarde van een sensor op te halen maar ook de historische waardes over een periode.

Om data van een sensor op te halen hebben we als eerste het id nodig van de sensor. Een manier om deze te verkrijgen is om naar het 30MHz platform te gaan (Sensors > klik op de sensor waarvan je het id wilt weten) en de url in de browser te bekijken:

api1.png

Een andere optie is om alle sensoren van een organisatie op te halen via een api verzoek (bekijk deze pagina voor een voorbeeld).

Om API verzoeken te doen, is een API key nodig. Deze kan aangevraagd worden in het 30MHz platform (Account settings > Developer).

Hier zijn een paar voorbeeld verzoeken om data op te halen van een temperatuur/luchtvochtigheid sensor met id “39555cf5-3081-400c-96cf-ff8d9cdea173”. We gebruiken deze API endpoint:

api2.png

We dienen een GET verzoek uit te voeren met het sensor id en een datum/tijds interval. In dit voorbeeld verzoeken we de gemiddelde temperatuur per dag van 1 tot 4 november 2017.

curl -XGET \
    -H "Content-type: application/json" \
    -H 'Authorization: Bearer <API key>' \
    "https://api.30mhz.com/api/stats/check/39555cf5-3081-400c-96cf-ff8d9cdea173/from/2017-11-01T00:00:00Z/until/2017-11-04T00:00:00Z?statisticType=averages&intervalSize=1d"

Als resultaat krijgen we dan:

{ 
  "1509494400000": 
    { "sht25.temp": 18.601995752298404, 
      "sht25.humidity": 59.27995778537517 
    }, 

    "1509580800000": 
      { "sht25.temp": 18.30961109134886, 
      "sht25.humidity": 58.49782640139262 
      }, 

    "1509667200000": 
      { "sht25.temp": 17.93818057510588, 
        "sht25.humidity": 58.11836816999647 
      }
}

We zien hier de gemiddelde temperatuur en luchtvochtigheid per dag. De key toont de dag + tijdstip van de waardes.

Het is ook mogelijk om de minimum of maximum waardes voor een periode op te halen. We gebruiken hiervoor statistictype=mins of statisticTypes=maxs.

We kunnen ook de interval grootte aanpassen en de data per uur verzoeken met intervalSize=1h of per minuut (1m), 5 minuten (5m), 5 dagen (5d) , maand (M), etc.

Om de huidige waarde van een sensor op te halen kunnen we deze API endpoint gebruiken:

api3.png

Een voorbeeld:

curl -XGET \
    -H "Content-type: application/json" \
    -H 'Authorization: Bearer <API key>' "https://api.30mhz.com/api/stats/check/56aac51f-5966-47da-8824-eaf36c8e4737"

We krijgen dan dit als resultaat:

{ "checkId": "56aac51f-5966-47da-8824-eaf36c8e4737", 
  "timestamp": "2017-11-21T13:10:45Z", 
  "lastRecordedStats": 
      { "sht25.temp": "16.79", 
        "sht25.humidity": "62.93" 
      }, 
  "json": null, 
  "code": null, 
  "message": null, 
  "matchCondition": null
}

De lastRecordedStats eigenschap bevat de huidige waardes.

Alle API endpoints om data van 1 of meerdere sensoren op te halen is te vinden in de Swagger documentatie.