#include <Bridge.h>
#include <Temboo.h>
#include "TembooAccount.h" // Contiene la informacion de la cuenta de Temboo 	

// El numero de veces para activar una accion cuando se cumpla la condicion.
// Lo limitamos para que no utilices muchas llamadas de Temboo mientras experimentas.
int maxCalls = 1;

// Asignamos un valor inicial a nuestro contador de llamadas.
int calls = 0;

void setup() {
  Serial.begin(9600);

  //Para la depuración, espera hasta que se conecte la consola serie.
  delay(4000);
  Bridge.begin();

  // Inicializar pin
  pinMode(A0, INPUT);
  
  Serial.println("Setup complete.\n");
}

void loop() {
  int sensorValue = analogRead(A0);
  
  Serial.println("Sensor: " + String(sensorValue));
  
  if (sensorValue > 800) {
    if (calls < maxCalls) {
      Serial.println("\nTriggered! Calling /Library/Google/Spreadsheets/AppendRow...");
  
      runAppendRow(sensorValue);
      calls++;
    } else {
      Serial.println("\nTriggered! Skipping action to save Temboo calls during testing.");
      Serial.println("You can adjust or remove the calls/maxCalls if() statement to change this behavior.\n");
    }
  }
  delay(250);
}

void runAppendRow(int sensorValue) {
  TembooChoreo AppendRowChoreo;

  // Invoke the Temboo client
  AppendRowChoreo.begin();

  // Set Temboo account credentials
  AppendRowChoreo.setAccountName(TEMBOO_ACCOUNT);
  AppendRowChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME);
  AppendRowChoreo.setAppKey(TEMBOO_APP_KEY);

  // Set profile to use for execution
  AppendRowChoreo.setProfile("sensorLuzHojaCalculo");

  // Set Choreo inputs
  String RowDataValue = String(sensorValue);
  AppendRowChoreo.addInput("RowData", RowDataValue);

  // Identify the Choreo to run
  AppendRowChoreo.setChoreo("/Library/Google/Spreadsheets/AppendRow");

  // Run the Choreo
  unsigned int returnCode = AppendRowChoreo.run();

  // A return code of zero means everything worked
  if (returnCode == 0) {
    Serial.println("Done!\n");
  } else {
    // A non-zero return code means there was an error
    // Read and print the error message
    while (AppendRowChoreo.available()) {
      char c = AppendRowChoreo.read();
      Serial.print(c);
    }
    Serial.println();
  }
  
  AppendRowChoreo.close();
}