The network code should only be called when started==true && ended == true;
If I see it correctly now every loop it tries t send the data to Xively.
you can improve your code by defining separate function for separate steps.
void handleINcomingSerial()
{
//start of code to read from transmitter
while(Serial.available() > 0)
{
char aChar = Serial.read();
if(aChar == '<')
{
started = true;
index = 0;
inData[index] = '\0';
}
else if(aChar == '>')
{
ended = true;
}
else if(started)
{
inData[index] = aChar;
index++;
inData[index] = ',';
}
}
}
void printValues()
{
// Use the value
if(inData[0] == 'T')
{
inData[0] = ' ';
int temp = atoi(inData);
Serial.println(" ");
Serial.print("Temp:");
Serial.print(inData);
Serial.print("C");
Serial.println(" ");
}
else if(inData[0] == 'H')
{
inData[0] = ' ';
int hum = atoi(inData);
Serial.println(" ");
Serial.print("Humidity:");
Serial.print(inData);
Serial.print("%");
Serial.println(" ");
}
}
void sendoToXively()
{
datastreams[0].setFloat(temp);
datastreams[1].setFloat(hum);
Serial.print("Read sensor value temp ");
Serial.println(datastreams[0].getFloat());
Serial.print("Read sensor value hum ");
Serial.println(datastreams[1].getFloat());
Serial.println("Uploading it to Xively");
int ret = xivelyclient.put(feed, xivelyKey);
Serial.print("xivelyclient.put returned ");
Serial.println(ret);
Serial.println();
}
void loop()
{
handleIncomingSerial();
if(started && ended)
{
printValues();
sendoToXively();
started = false;
ended = false;
index = 0;
inData[index] = '\0';
}
delay(15000);
}