Utilização de um sensor de temperatura DS18B20 e um sensor capacitivo de umidade do solo com cartão SD e RTC no ESP8266 NodeMCU

Estou tentando usar o sensor de temperatura DS18B20 e o sensor capacitivo de umidade do solo com cartão SD e RTC no ESP8266 NodeMCU. Antes eu estava usando o leitor de cartão SD com o RTC e um DHT 11, e gostaria de ajuda para alterar o código para poder usar o DS18B20 e um sensor capacitivo de umidade do solo ao mesmo tempo, salvando os dados coletados no cartão SD com a data e hora em que os dados foram coletados. Eu estava usando o seguinte código com DHT 11.

#include "FS.h"
#include "SD.h"
#include "SPI.h"
#include "RTClib.h"
#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 rtc;

void writeFile(fs::FS &fs, const char * path, const char * message){
    Serial.printf("Writing file: %s\n", path);

    File file = fs.open(path, FILE_WRITE);
    if(!file){
        Serial.println("Failed to open file for writing");
        return;
    }
    if(file.print(message)){
        Serial.println("File written");
    } else {
        Serial.println("Write failed");
    }
    file.close();
}

void appendFile(fs::FS &fs, const char * path, const char * message){
    Serial.printf("Appending to file: %s\n", path);

    File file = fs.open(path, FILE_APPEND);
    if(!file){
        Serial.println("Failed to open file for appending");
        return;
    }
    if(file.print(message)){
        Serial.println("Message appended");
    } else {
        Serial.println("Append failed");
    }
    file.close();
}

void setup(){
  Serial.begin(9600);
  dht.begin();
  
  if(!SD.begin()){
      Serial.println("Card Mount Failed");
      return;
      }

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
    }

  if (!rtc.isrunning()) {
    Serial.println("RTC lost power, lets set the time!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
  
  writeFile(SD, "/datalog_ESP32.txt", "Time, Humidity, Temperature \r\n");
}

void loop(){

  String dataString = "";

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  DateTime now = rtc.now();

  dataString += String(now.unixtime());
  dataString += ",";
  dataString += String(h);
  dataString += ",";
  dataString += String(t);
  dataString += "\r\n";

  Serial.println(dataString);
  appendFile(SD, "/datalog_ESP32.txt", dataString.c_str());
    
  delay(2000);
}

Com este código, os dados salvos não exibiram a data e a hora corretamente. Se alguém puder me ajudar a fazer o sensor de temperatura e a umidade do solo funcionarem ao mesmo tempo e salvar os dados no cartão SD com data e hora, eu agradeceria.