Eine einfache API (Anwendungsprogrammierschnittstelle) zum Senden von Messungen von TheThingsNetwork mit einem Post-Request an eine URL und später die Messungen mit einer Get-Request abgerufen.
Messungen vom Sensor können einer der folgenden Typen sein ( type S):
PH, CONDUCTIVITY, TURBIDITY, TEMPERATURE, TEMPERATURE_INSIDE, HUMIDITY, BATTERY, LID, DISSOLVED_OXYGEN
Wenn Sie Unterstützung für eine andere Art von Messung hinzufügen müssen, kontaktieren Sie mich bitte (Leik Lima-Eriksen).
Um Daten von TTN zur Speicherung an die API zu senden, wird ein Post-Rekord gemacht
http://vannovervakning.com:5000/api/v1/measurements/<GRUPPENR>
Dort wurde <GRUPPENR> durch die Anzahl Ihrer Gruppe ersetzt.
Dies bedeutet, dass Sie bei Integrations eine Integration der Typ HTTP Integration mit URL hinzufügen sollten, wie oben gezeigt, um diese Einrichtung korrekt zu erhalten.
Daten, die von TTN gesendet wurden (was in Payload Formats zurückgegeben wird) müssen wie unten gezeigt im Format sein.
{
data : [
{
type : "TEMPERATURE" ,
value : 21.3
} ,
{
type : "CONDUCTIVITY" ,
value : 120
}
.
.
.
]
}Ein Beispiel für eine sehr einfache Nutzlastfunktion:
function Decoder ( bytes , port ) {
//Definerer de ulike elementene i bufferen
var temp = ( ( bytes [ 0 ] << 8 ) + bytes [ 1 ] ) ;
var turb = bytes [ 2 ] ;
//Returerer verdiene.
return {
data : [
{
type : "TEMPERATURE" ,
value : temp ,
} ,
{
type : "TURBIDITY" ,
value : turb
}
]
} ;
} Beachten Sie auch, dass die Zahlenwerte, die Sie an die API senden, auch die Art und Weise sind, wie sie für das spätere Abrufen gespeichert werden. Wenn Sie eine analoge Temperaturablesung von ZB 502 erhalten, müssen Sie sie vor dem Senden an die API in eine tatsächliche Temperatur umwandeln.
TIPP : Alle Antworten API bieten dem Benutzer JSON -Format (JavaScript -Objektnotation). Die von Ihnen verwendete Programmiersprache hat höchstwahrscheinlich Unterstützung dafür. Google EG <PROGRAMMERINGSSPRÅK> json parse für weitere Informationen MTP Ihre ausgewählte <PROGRAMMERINGSSPRÅK> .
Um die neuesten Sensorwerte abzurufen, wird eine solche Get-Request an die API gesendet.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>
Wobei <GRUPPENR> wie üblich durch die Anzahl Ihrer Gruppe ersetzt wird (wird nicht weiter wiederholt).
Die Antwort ist die letzte Messung für jeden der Sensoren für den angegebenen Sensor. Beispiel einer solchen Antwort:
{
"nodeId": 1,
"data": {
"HUMIDITY": [
{
"value": 10,
"timeCreated": "2019-02-06T09:41:55.432Z"
}
],
"BATTERY": [
{
"value": 30,
"timeCreated": "2019-02-06T09:41:55.431Z"
}
]
}
}
Um Messungen innerhalb eines Zeitintervalls abzurufen, wird die URL im folgenden Format verwendet.
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>/<FROM_TIMESTAMP_MS>/<TO_TIMESTAMP_MS>
Der <FROM_TIMESTAMP_MS> und <TO_TIMESTAMP_MS> ist in Millisekunden ein stündlicher Tamp.
Tipp : Dies entspricht dem Format, das Sie vom JavaScript -Funktionsdatum erhalten.Now Date.now()
Die Antwort hat das gleiche Format wie für die neuesten Messwerte, aber jetzt enthalten die Arrays für jedes type S mehr Messwerte. Beispiel einer solchen Antwort:
{
"nodeId" : 1 ,
"data" : {
"PH" : [
{
"value" : 7.8 ,
"timeCreated" : "2019-03-01T11:55:03.390Z" ,
"position" : { }
} ,
{
"value" : 7.8 ,
"timeCreated" : "2019-03-01T11:55:03.372Z" ,
"position" : { }
}
] ,
"BATTERY" : [
{
"value" : 20 ,
"timeCreated" : "2019-02-22T09:14:20.806Z" ,
"position" : { }
} ,
{
"value" : 15 ,
"timeCreated" : "2019-02-21T22:45:33.735Z" ,
"position" : { }
} ,
]
}
} Wenn Sie Daten aus einer bestimmten Zeit abrufen möchten, kann <TO_TIMESTAMP_MS> gelockert werden. Somit hat eine solche Anfrage das Format wie unten gezeigt:
https://vannovervakning.com/api/v1/measurements/<GRUPPENR>/<FROM_TIMESTAMP_MS>
Es kann erwähnenswert sein (wenn man die Optimierung ihrer Website berücksichtigt), dass die Reihenfolge der Sensor -Lesart in absteigender Reihenfolge nach stündlicher Tamp sortiert wird. Das heißt, die neuesten Lesungen stehen ganz oben auf dem Array.
Die API unterstützt auch die Filtration basierend auf Messarten. Grundsätzlich erhalten Sie alle Arten von Messarten, die <GRUPPENR> erfüllen, und jeder Zeitlimit, wenn es eingegeben wird. Aber wenn Sie nur einige spezifische Messungen wünschen, die Sie hinzufügen können ?types=<TYPE>,<TYPE>,... am Ende der URL. Ein Beispiel für eine solche Abfrage mit Gruppe Nr., Zeitbeschränkung und Abgrenzung types ist das folgende:
https://vannovervakning.com/api/v1/measurements/1/1551434764874?types=PH,CONDUCTIVITY
oder mit <TO_TIMESTAMP_MS> :
https://vannovervakning.com/api/v1/measurements/1/1551434764874/1551442024867?types=CONDUCTIVITY
So viele Sensortypen können für <TYPE> als wünschenswert eingefügt werden.
Eine letzte praktische Funktion der API ist die Fähigkeit, die von Ihnen extrahierenden Messungen zu aggregieren. Wenn eine Abfrage mit ?aggregate=<AGGREGATE> Zeitlimit durchgeführt wird, können Sie <AGGREGATE> hinzufügen, kann einer der folgenden Werte sein:
HIGHEST, LOWEST, AVERAGE
Beispiele für solche Anfragen:
https://vannovervakning.com/api/v1/measurements/1/1551434764874?types=PH,CONDUCTIVITY&aggregate=HIGHEST
https://vannovervakning.com/api/v1/measurements/1/1551434764874/1551442024867?aggregate=LOWEST
https://vannovervakning.com/api/v1/measurements/1/1551434764874?aggregate=AVERAGE
Beispiel für die Antwort, die solche Anfragen ergeben:
Für AVERAGE :
{
"nodeId" : 1 ,
"data" : {
"TURBIDITY" : [
{
"value" : 348.7556962025316
}
] ,
"TEMPERATURE" : [
{
"value" : 23.533417721518983
}
] ,
"PH" : [
{
"value" : 7.778101265822785
}
] ,
"CONDUCTIVITY" : [
{
"value" : 0
}
]
}
} Für HIGEST und LOWEST :
{
"nodeId" : 1 ,
"data" : {
"TURBIDITY" : [
{
"value" : 1425 ,
"timeCreated" : "2019-03-01T11:54:38.129Z" ,
"position" : null
}
] ,
"TEMPERATURE" : [
{
"value" : 30.9 ,
"timeCreated" : "2019-03-01T11:50:29.988Z" ,
"position" : null
}
] ,
"PH" : [
{
"value" : 9.4 ,
"timeCreated" : "2019-03-01T11:13:04.545Z" ,
"position" : null
}
] ,
"CONDUCTIVITY" : [
{
"value" : 0 ,
"timeCreated" : "2019-03-01T10:32:48.394Z" ,
"position" : null
}
]
}
}