Los valores de una cadena no se pueden separar

Hola buenas tardes.
Tengo un sensor Sentek que detecta la humedad y la temperatura, la detecta por niveles, así que, imprime 3 valores de humedad y 3 valores de temperatura, pero los imprime en una cadena que solo se separa con un signo de +. Así que use el comando: strtok. Y después con un conjunto de while's le asigne una variable a cada uno de los valores que estaban entre los signos de mas(+). Lo hice eso en los valores de temperatura y funciono, pero cuando quise hacerlo para lo de humedad no me dejo. Para comprobarlo al final de que imprimiera lo obtenido del sensor imprimí las variables que le había asignado a los niveles de temperatura y si aparecían, pero hice lo mismo con lo de la humedad y nada. Ayuda¡¡

falla.PNG

#include <SDISerial.h>

#include "Arduino.h"


/*
I used a few devices with no problem using a MEGA 2560 as well as an UNO.
Sketch was built with Arduino 1.0.4, however I also tested it under 1.0.0
Place the SDISerial folder in    "<ARDUINO_ROOT>/libraries"
with the 5TE 
the WHITE wire is power. 
   - I hooked it up to the arduino 5v output pin, however you could also connect it to a pin and drive power only when you wanted it
the RED wire is the DATA_LINE.
   - you must hook it up to a pin that can process interrupts (see link below)
   
the remaining wire must be connected to ground
*/

//in order to recieve data you must choose a pin that supports interupts
#define DATALINE_PIN 2
#define INVERTED 1
#define BAUDRATE 1200

//see:   http://arduino.cc/en/Reference/attachInterrupt
//for pins that support interupts (2 or 3 typically)
char* templ1;//temperatura nivel1
char* templ2;//temperatura nivel2
char* templ3;//temperatura nivel3

char* huml1;//humedad nivel1
char* huml2;//humedad nivel2
char* huml3;//humedad nivel3

char* value_temperature;
char* value_moisture;

SDISerial connection(DATALINE_PIN, INVERTED);

char output_buffer[125];

void setup(){
  connection.begin(); // start our SDI connection 
  Serial.begin(BAUDRATE); // start our uart
  Serial.println("OK INITIALIZED"); // startup string echo'd to our uart
  delay(3000); // startup delay to allow sensor to powerup and output its DDI serial string
  char* sensor_address = connection.sdi_query("?!", 1000);
  sprintf(output_buffer,"Sensor address: %s",sensor_address?sensor_address:"No Response");
  Serial.println(output_buffer);

  char* sensor_info = connection.sdi_query("1I!", 1000);
  sprintf(output_buffer,"Sensor info: %s",sensor_info ?sensor_info :"No Response");
  Serial.println(output_buffer);
}

void loop(){
   char* start_measurements_m = connection.sdi_query("1M!", 2000);
  sprintf(output_buffer,"start measurements Moisture: %s",start_measurements_m ? start_measurements_m :"No Response");
  //Serial.println(output_buffer);
  delay(2000);

  char* moisture = connection.sdi_query("1D1!", 2000);
  sprintf(output_buffer,"Sensor Data Soil Moisture: %s",moisture ? moisture :"No Response");
  Serial.println(output_buffer);

  char* start_measurements_t = connection.sdi_query("1M4!", 2000);
  sprintf(output_buffer,"Start Data Soil Temperature: %s",start_measurements_t ? start_measurements_t :"No Response");
  //Serial.println(output_buffer);
  delay(2000);

  char* temperature = connection.sdi_query("1D0!", 2000);
  sprintf(output_buffer,"Sensor Data Soil Temperature: %s",temperature ? temperature :"No Response");
  Serial.println(output_buffer);
  
  //AT+SAPBR=3,1,"Contype","GPRS";
  //AT+SAPBR=3,1,"APN","internet.itelcel.com";

 char* command = strtok(temperature, "+");
 int counter=1;
while (command != 0)
{
   
    // Find the next command in input string
    command = strtok(0, "+");
    if(counter==1){
      templ1=command;   
      }
    else if(counter==2){
      templ2=command;
    }
    else if(counter==3){
      templ3=command;
    }
    ++counter;
}

 char* command2 = strtok(moisture, "+");
 int counter1=1;
while (command2 != 0)
{
   
    // Find the next command in input string
    command2 = strtok(0, "+");
    Serial.println(command2);
    if(counter1==1){
      huml1=command2;   
      }
    else if(counter1==2){
      huml2=command2;
    }
    else if(counter1==3){
      huml3=command2;
    }
    ++counter1;
    Serial.println(command2);
}

Serial.println("temperatura");
Serial.println(templ1);
Serial.println(templ2);
Serial.println(templ3);

Serial.println("humedad");
Serial.println(huml1);
Serial.println(huml2);
Serial.println(huml3);


}

Gracias de antemano

falla.PNG

Mira lo que hice.. descarté toda la interfaz SDI que sabemos funciona.
Y me quedo con lo que muestran las dos lecturas o algo parecido

char* templ1;//temperatura nivel1
char* templ2;//temperatura nivel2
char* templ3;//temperatura nivel3

char* huml1;//humedad nivel1
char* huml2;//humedad nivel2
char* huml3;//humedad nivel3

char* value_temperature;
char* value_moisture;

char output_buffer[125];

void setup(){
  
  Serial.begin(115200); // start our uart
  char* moisture = "1+0.094927+0.097854+0.0985424\0";
  char* temperature = "1+23.4769+23.27770+23.75924\0";
 

  char* command = strtok(temperature, "+");
  int counter=1;
  while (command != 0)  {
      // Find the next command in input string
      command = strtok(0, "+");
      if (counter == 1) {
        templ1 = command;   
      }
      else if(counter==2){
        templ2=command;
      }
      else if(counter==3){
        templ3=command;
      }
      ++counter;
  }

  char* command2 = strtok(moisture, "+");
  int counter1=1;
  while (command2 != 0)   {
      // Find the next command in input string
      command2 = strtok(0, "+");
      Serial.println(command2);
      if(counter1==1){
        huml1=command2;   
        }
      else if(counter1==2){
        huml2=command2;
      }
      else if(counter1==3){
        huml3=command2;
      }
      ++counter1;
      Serial.println(command2);
  }
  Serial.println("temperatura");
  Serial.println(templ1);
  Serial.println(templ2);
  Serial.println(templ3);

  Serial.println("humedad");
  Serial.println(huml1);
  Serial.println(huml2);
  Serial.println(huml3);
  
}

void loop(){
  


}

y la respuesta funciona bien

temperatura
23.4769
23.27770
23.75924
humedad
0.094927
0.097854
0.0985424

Prueba en tu caso

Revisa con y sin \0 al final del char*