0
votes

I am using an Arduino Uno with the Desloo W5100 Ethernet shield. Whenever I try to make calls to Parse using Temboo, the device just hangs. Sometimes for minutes...sometimes indefinitely. Here is what I run:

void updateParseDoorState() {

  if (!ENABLE_DOOR_STATE_PUSHES) {
    Serial.println("Door state pushing disabled. Skipping.");
    return;
  }

  Serial.println("Pushing door state to database...");

  TembooChoreo UpdateObjectChoreo(client);

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

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

  // Set profile to use for execution
  UpdateObjectChoreo.setProfile("ParseAccount");

  // Set Choreo inputs
  String ObjectIDValue = "xxxxxxxxxx";
  UpdateObjectChoreo.addInput("ObjectID", ObjectIDValue);
  String ClassNameValue = "DoorState";
  UpdateObjectChoreo.addInput("ClassName", ClassNameValue);
  String ObjectContentsValue = (currentState == OPEN) ? "{\"isOpen\":true}" : "{\"isOpen\":false}";
  UpdateObjectChoreo.addInput("ObjectContents", ObjectContentsValue);

  // Identify the Choreo to run
  UpdateObjectChoreo.setChoreo("/Library/Parse/Objects/UpdateObject");

  // Run the Choreo; when results are available, print them to serial
  int returnStatus = UpdateObjectChoreo.run();
  if (returnStatus != 0){
    setEthernetIndicator(EthernetStatus::SERVICES_DISCONNECTED);
    Serial.print("Temboo error: "); Serial.println(returnStatus);
    // read the name of the next output item
    String returnResultName = UpdateObjectChoreo.readStringUntil('\x1F');
    returnResultName.trim(); // use “trim” to get rid of newlines
    Serial.print("Return result name: "); Serial.println(returnResultName);

    // read the value of the next output item
    String returnResultData = UpdateObjectChoreo.readStringUntil('\x1E');
    returnResultData.trim(); // use “trim” to get rid of newlines
    Serial.print("Return result data: "); Serial.println(returnResultData);
  }

  /*while(UpdateObjectChoreo.available()) {
    char c = UpdateObjectChoreo.read();
    Serial.print(c);
    }*/
  UpdateObjectChoreo.close();

  Serial.println("Pushed door state to database!");
  Serial.println("Waiting 30s to avoid overloading Temboo...");
  delay(30000);
}

I get this in the serial monitor:

Current state:6666ÿ &‰ SP  S   P U  WR     SR   R  PR   P 66Temboo error: 223

This indicates that there is some type of HTTP error, but I never get to print what the error is...because the serial monitor is stuck there forever. And eventually disconnects.

1

1 Answers

3
votes

I work at Temboo.

It sounds like you might be running out of memory on your board (a common occurrence on resource-constrained hardware like Arduino). You can find our tutorial on how to conserve memory usage while using Temboo here:

https://temboo.com/hardware/profiles

Feel free to get in touch with Temboo Support at any time if you have further questions - we're always available and happy to help.