void loop() { int prevSwitchState = switchState; /* Read the state of the tilt switch. */ switchState = digitalRead(SWITCH_PIN); /* If state has changed back to low a button press (or a full tilt if using * a tilt switch) has passed */ if (prevSwitchState == HIGH && switchState == LOW) { /* Create an Item. */ AttributeValue deviceValue; deviceValue.setS(HASH_KEY_VALUE); AttributeValue timeValue; /* Getting current time for Time attribute. */ timeValue.setN(dateTimeProvider.getDateTime()); MinimalKeyValuePair < MinimalString, AttributeValue > att1(HASH_KEY_NAME, deviceValue); MinimalKeyValuePair < MinimalString, AttributeValue > att2(RANGE_KEY_NAME, timeValue); MinimalKeyValuePair < MinimalString, AttributeValue > att3(ATTRIBUTE_KEY_NAME, ATTRIBUTE_KEY_VALUE); MinimalKeyValuePair<MinimalString, AttributeValue> itemArray[] = { att1, att2, att3}; /* Set values for putItemInput. */ putItemInput.setItem(MinimalMap < AttributeValue > (itemArray, 2)); putItemInput.setTableName(TABLE_NAME); /* perform putItem and check for errors. */ PutItemOutput putItemOutput = ddbClient.putItem(putItemInput, actionError); switch (actionError) { case NONE_ACTIONERROR: Serial.println("PutItem succeeded!"); break; case INVALID_REQUEST_ACTIONERROR: Serial.print("ERROR: "); Serial.println(putItemOutput.getErrorMessage().getCStr()); break; case MISSING_REQUIRED_ARGS_ACTIONERROR: Serial.println( "ERROR: Required arguments were not set for PutItemInput"); break; case RESPONSE_PARSING_ACTIONERROR: Serial.println("ERROR: Problem parsing http response of PutItem"); break; case CONNECTION_ACTIONERROR: Serial.println("ERROR: Connection problem"); break; } /* wait to not double-record */ delay(2000); } delay(150); }
void DynamoBDClient_Setup() { ddbClient.setAWSRegion(AWS_REGION); ddbClient.setAWSEndpoint(AWS_ENDPOINT); ddbClient.setAWSSecretKey(awsSecKey); ddbClient.setAWSKeyID(awsKeyID); ddbClient.setHttpClient(&httpClient); ddbClient.setDateTimeProvider(&dateTimeProvider); }
/* This function loops forever --------------------------------------------*/ void loop() { //This will run in a loop rssi = WiFi.RSSI(); /* Create an Item. */ AttributeValue deviceValue; deviceValue.setS(HASH_KEY_VALUE); AttributeValue timeValue; /* Getting current time for Time attribute. */ timeValue.setS(dateTimeProvider.getDateTime()); MinimalKeyValuePair < MinimalString, AttributeValue > att1(HASH_KEY_NAME, deviceValue); MinimalKeyValuePair < MinimalString, AttributeValue > att2(RANGE_KEY_NAME, timeValue); MinimalKeyValuePair<MinimalString, AttributeValue> itemArray[] = { att1, att2}; /* Set values for putItemInput. */ putItemInput.setItem(MinimalMap < AttributeValue > (itemArray, 2)); putItemInput.setTableName(TABLE_NAME); /* perform putItem and check for errors. */ PutItemOutput putItemOutput = ddbClient.putItem(putItemInput, actionError); switch (actionError) { case NONE_ACTIONERROR: Serial.println("PutItem succeeded!"); Serial.println(myIDStr); Serial.println(rssi); break; case INVALID_REQUEST_ACTIONERROR: Serial.print("ERROR: "); Serial.println(putItemOutput.getErrorMessage().getCStr()); break; case MISSING_REQUIRED_ARGS_ACTIONERROR: Serial.println( "ERROR: Required arguments were not set for PutItemInput"); break; case RESPONSE_PARSING_ACTIONERROR: Serial.println("ERROR: Problem parsing http response of PutItem"); break; case CONNECTION_ACTIONERROR: Serial.println("ERROR: Connection problem"); break; } /* wait to not double-record */ delay(5000); }
void putDynamoDb() { // Put device & datestamp record in DynamoDB table // Create an Item. AttributeValue deviceIdValue; deviceIdValue.setS(HASH_KEY_VALUE); AttributeValue timeValue; // Getting current time for Time attribute. timeValue.setN(dateTimeProvider.getDateTime()); AttributeValue deviceValue; deviceValue.setS(ATTRIBUTE_VALUE); MinimalKeyValuePair<MinimalString, AttributeValue> att1(HASH_KEY_NAME, deviceIdValue); MinimalKeyValuePair<MinimalString, AttributeValue> att2(RANGE_KEY_NAME, timeValue); MinimalKeyValuePair<MinimalString, AttributeValue> att3(ATTRIBUTE_NAME, deviceValue); MinimalKeyValuePair<MinimalString, AttributeValue> itemArray[] = { att1, att2, att3 }; // Set values for putItemInput. putItemInput.setItem(MinimalMap<AttributeValue>(itemArray, 3)); putItemInput.setTableName(TABLE_NAME); // perform putItem and check for errors. PutItemOutput putItemOutput = ddbClient.putItem(putItemInput, actionError); switch (actionError) { case NONE_ACTIONERROR: Serial.println("DynamoDB PutItem succeeded!"); break; case INVALID_REQUEST_ACTIONERROR: Serial.print("ERROR: "); Serial.println(putItemOutput.getErrorMessage().getCStr()); break; case MISSING_REQUIRED_ARGS_ACTIONERROR: Serial.println("ERROR: Required arguments were not set for PutItemInput"); break; case RESPONSE_PARSING_ACTIONERROR: Serial.println("ERROR: Problem parsing http response of PutItem"); break; case CONNECTION_ACTIONERROR: Serial.println("ERROR: Connection problem"); break; } }
void setup() { /* Begin serial communication. */ Serial.begin(9600); /* Initialize ddbClient. */ ddbClient.setAWSRegion(AWS_REGION); ddbClient.setAWSEndpoint(AWS_ENDPOINT); ddbClient.setAWSSecretKey(awsSecKey); ddbClient.setAWSKeyID(awsKeyID); ddbClient.setHttpClient(&httpClient); ddbClient.setDateTimeProvider(&dateTimeProvider); /* Open SWITCH_PIN to be read from. */ pinMode(SWITCH_PIN, INPUT); pinMode(led2, OUTPUT); }
/* This function is called once at start up ----------------------------------*/ void setup() { /* Begin serial communication. */ Serial.begin(9600); /* Initialize ddbClient. */ ddbClient.setAWSRegion(AWS_REGION); ddbClient.setAWSEndpoint(AWS_ENDPOINT); ddbClient.setAWSSecretKey(awsSecKey); ddbClient.setAWSKeyID(awsKeyID); ddbClient.setHttpClient(&httpClient); ddbClient.setDateTimeProvider(&dateTimeProvider); //My custom app here Spark.variable("rssi", &rssi, INT); }