   lastReconnectAttempt = 0;
   millisnow = 0;
 
-  time_ackpayload.timestamp = data_ackpayload.timestamp = data_ackpayload.data1 = data_ackpayload.data2 = 0;
+  time_ackpayload.rx_timestamp = time_ackpayload.tx_timestamp = time_ackpayload.rx_millisnow = time_ackpayload.tx_millisnow = 0;
+  time_rxpayload.rx_timestamp = time_rxpayload.rx_millisnow = 0;
 
   getResetInfo = "hello from ESP8266 s02 ";
   getResetInfo += ESP.getResetInfo().substring(0, 30);

  radio.enableAckPayload();
  radio.enableDynamicPayloads();
  /*
  radio.enableDynamicAck();
  radio.enableAckPayload();
  radio.enableDynamicPayloads();
  */
  //radio.maskIRQ(1, 1, 0);
  //radio.openWritingPipe(pipes[1]);

      //  radio.openReadingPipe(1, pipes[0]); -->  5 : door, 65 : roll, 2 : DS18B20
      //  radio.openReadingPipe(2, pipes[2]); --> 15 : ads1115
      //  radio.openReadingPipe(2, pipes[3]); --> 25 : lcd

      byte pipeNo;
      if (radio.available(&pipeNo)) {
        // from attiny 85 data size is 11
        // sensor_data data size = 12
        uint8_t len = radio.getDynamicPayloadSize();
        // avr 8bit, esp 32bit. esp use 4 byte step.
        /*
          if ( (len + 1 ) != sizeof(sensor_data) && len != sizeof(time_rxpayload)) {
          radio.read(0, 0);
          return;
          }
        */

        if (len == sizeof(time_rxpayload)) {
          radio.read(&time_rxpayload, sizeof(time_rxpayload));
          time_ackpayload.rx_timestamp = time_rxpayload.rx_timestamp;
          time_ackpayload.tx_timestamp = numberOfSecondsSinceEpochUTC(year(), month(), day(), hour(), minute(), second());
          time_ackpayload.rx_millisnow = time_rxpayload.rx_millisnow;
          time_ackpayload.tx_millisnow = millisecond();

          radio.writeAckPayload(pipeNo, &time_ackpayload, sizeof(time_ackpayload));
        } else if ((len + 1 ) == sizeof(sensor_data)) {
          radio.read(&sensor_data, sizeof(sensor_data));
          if ( (pipeNo == 1 || pipeNo == 3 ) && sensor_data.devid != 15 ) {

            String radiopayload = "{\"_salt\":";
            radiopayload += sensor_data._salt;
            radiopayload += ",\"volt\":";
            radiopayload += sensor_data.volt;
            radiopayload += ",\"data1\":";

            if ( sensor_data.data1 == 0 ) {
              radiopayload += 0;
            } else {
              radiopayload += ((float)sensor_data.data1 / 10);
            }

            radiopayload += ",\"data2\":";

            if ( sensor_data.data2 == 0 ) {
              radiopayload += 0;
            } else {
              radiopayload += ((float)sensor_data.data2 / 10);
            }

            radiopayload += ",\"devid\":";
            radiopayload += sensor_data.devid;
            radiopayload += "}";

            if ( (sensor_data.devid > 0) && (sensor_data.devid < 255) ) {
              String newRadiotopic = radiotopic;
              newRadiotopic += "/";
              newRadiotopic += sensor_data.devid;
              unsigned int newRadiotopic_length = newRadiotopic.length();
              char newRadiotopictosend[newRadiotopic_length] ;
              newRadiotopic.toCharArray(newRadiotopictosend, newRadiotopic_length + 1);
              sendmqttMsg(newRadiotopictosend, radiopayload);
            } else {
              sendmqttMsg(radiofault, radiopayload);
            }
          } else if ( pipeNo == 2 && sensor_data.devid == 15 ) {
            if ( sensor_data.data1 < 0 ) {
              sensor_data.data1 = 0;
            }

            if (timeStatus() != timeNotSet) {
              timestamp = numberOfSecondsSinceEpochUTC(year(), month(), day(), hour(), minute(), second());
              millisnow = millisecond();
            }

            String udppayload = "current,test=current,measureno=";
            udppayload += sensor_data._salt;
            udppayload += " devid=";
            udppayload += sensor_data.devid;
            udppayload += "i,volt=";
            udppayload += sensor_data.volt;
            udppayload += "i,ampere=";
            uint32_t ampere_temp;
            ampere_temp = sensor_data.data1 * ampereunit[sensor_data.data2];
            udppayload += ampere_temp;
            udppayload += " ";
            udppayload += timestamp;
            char buf[3];
            sprintf(buf, "%03d", millisnow);
            udppayload += buf;
            udppayload += "000000";
            sendUdpmsg(udppayload);
          }
        } else {
          radio.read(0, 0);
        }
      }

