Skip to content

Latest commit

 

History

History
112 lines (105 loc) · 3.63 KB

aws-recorder.md

File metadata and controls

112 lines (105 loc) · 3.63 KB

Query

GET /sensor/{devId}

See https://aws.amazon.com/de/blogs/compute/using-amazon-api-gateway-as-a-proxy-for-dynamodb/

Integration request:

Settings Value
Integration Type AWS Service
AWS Region eu-central-1
AWS Service DynamoDB
HTTP method POST
Action Query
Execution role <IAM role with AmazonDynamoDBReadOnlyAccess, AmazonAPIGatewayPushToCloudWatchLogs>

Mapping template application/json:

{
    "TableName": "SensorData",
    "KeyConditionExpression": "dev_id=:dev AND #ts>=:ts",
    "ExpressionAttributeNames": {
        "#ts": "timestamp"
    },
    "ExpressionAttributeValues": {
      ":dev": {
        "S": "$input.params('devid')"
      },
      ":ts": {
        "S": "$input.params('from')"
      }
    },
    "ProjectionExpression": "#ts,payload_fields.sensor,metadata"
}

Integration response 200 - Mapping template application/json:

#set($inputRoot = $input.path('$'))
#set($inputRoot = $input.path('$'))
{
    "count": $inputRoot.Count,
    "readings": [
        #foreach($elem in $inputRoot.Items) {
            "timestamp": "$elem.timestamp.S",
            "sensor": {
                "version": "$elem.payload_fields.M.sensor.M.version.N",
                "battery": "$elem.payload_fields.M.sensor.M.battery.N",
                "weight": "$elem.payload_fields.M.sensor.M.weight.N",
                "temperature": {
                    "roof": "$elem.payload_fields.M.sensor.M.temperature.M.roof.N",
                    "upper": "$elem.payload_fields.M.sensor.M.temperature.M.upper.N",
                    "middle": "$elem.payload_fields.M.sensor.M.temperature.M.middle.N",
                    "lower": "$elem.payload_fields.M.sensor.M.temperature.M.lower.N",
                    "drop": "$elem.payload_fields.M.sensor.M.temperature.M.drop.N",
                    "outer": "$elem.payload_fields.M.sensor.M.temperature.M.outer.N"
                },
                "humidity": {
                    "roof": "$elem.payload_fields.M.sensor.M.humidity.M.roof.N"
                }
            },
            "data_rate": "$elem.metadata.M.data_rate.S",
            "gtw_id": "$elem.metadata.M.gateways.L[0].M.gtw_id.S",
            "rssi": "$elem.metadata.M.gateways.L[0].M.rssi.N",
            "snr": "$elem.metadata.M.gateways.L[0].M.snr.N",
            "frequency": "$elem.metadata.M.frequency.N",
            "gateways": [
                #foreach($gw in $elem.metadata.M.gateways.L) {
                  "gtw_id": "$gw.M.gtw_id.S",
                  "channel": "$gw.M.channel.N",
                  "rssi": "$gw.M.rssi.N",
                  "snr": "$gw.M.snr.N",
                  "latitude": "$gw.M.latitude.N",
                  "longitude": "$gw.M.longitude.N",
                  "altitude": "$gw.M.altitude.N"
                }#if($foreach.hasNext),#end
            #end
            ]
        }#if($foreach.hasNext),#end
	#end
    ]
}

Example https://xxxxxxx.execute-api.eu-central-1.amazonaws.com/v0/sensor/cube-cell-1:

{
    "count": 23,
    "readings": [
         {
            "timestamp": "2020-01-29T00:38:53.695888554Z",
            "data_rate": "SF7BW125",
            "sensor": {
                "version": "0",
                "weight": "2.96",
                "temperature": {
                    "lower": "6.87",
                    "middle": "",
                    "upper": "",
                    "outer": "7.1"
                },
                "humidity": {
                    "outer": "84.6"
                },
                "battery": "4.06"
            }
        },
        {...}	
    ]
}