DSmartHome-api Lambda handler
From dtype.org
import boto3
import json
import time
print('Loading function')
dynamodb = boto3.resource('dynamodb')
location = '829Seabury'
def respond(err, res=None):
return {
'statusCode': '400' if err else '200',
'body': err.message if err else json.dumps(res),
'headers': {
'Content-Type': 'application/json',
},
}
def lambda_handler(event, context):
table = dynamodb.Table('dsmarthome')
currenttime = int(time.time())
# see if state has changed
response = table.get_item(
Key={
'location': location,
'device': event['device']
}
)
item = response['Item']
if (item['latest'] != event['value']):
# state has changed, write previous state
table.update_item(
Key={
'location': location,
'device': event['device']
},
UpdateExpression="set previous = :previous, changetime = :changetime",
ExpressionAttributeValues={
':previous': item['latest'],
':changetime': currenttime
},
ReturnValues="UPDATED_NEW"
)
table.update_item(
Key={
'location': location,
'device': event['device']
},
UpdateExpression="set latest = :latest, latesttime = :latesttime",
ExpressionAttributeValues={
':latest': event['value'],
':latesttime': currenttime
},
ReturnValues="UPDATED_NEW"
)