Temp value jumping(not acurate) max6675 esp8266 blynk, Smoker control

helo guy, i need a little help,
inspired by dave, i want to make Smoker pit kontrol with esp8266, but with very little knowlegde, i not much to understain the coding, soo, its all just by CoPas from here and youtube, but, i m satisfied enough for the result.
first time i use this sketh and hardware, its all normal, but after month, i get a littel issue, temp value on blynk always jumping, and not acurate, especialy at sensor 1(pit control).
i think the board was damage, but, i buy a new one, and its still same, this issue come when i use 2max6675, but if just to conect one only, its normal, maybe can help me to find what wrong.

and one more, i have single relay module, if i use 5v, why it always triger when connect to wemos/nodemcu, but if u use 3v, its normal, but some time relay not click because less power, but if i use dual/ more relay board, its normal.

this is my skecth

> #define BLYNK_PRINT Serial
> 
> #include <ESP8266WiFi.h>
> #include <BlynkSimpleEsp8266.h>
> #include <max6675.h>
> #include <Wire.h>
> #include <Servo.h>
> 
> // You should get Auth Token in the Blynk App.
> // Go to the Project Settings (nut icon).
> char auth[] = "xxx";
> 
> // Your WiFi credentials.
> // Set password to "" for open networks.
> char ssid[] = "GKB";
> char pass[] = "122122122";
> 
> const int relayPin = D2;   // relay pin to D4 nodemcu
> 
> int hi = 30;
> int lo = 27;
> 
> 
> int ktcSO = 12;           // D6 nodemcu
> int ktcCS = 13;           // D7 nodemcu
> int ktcCLK = 14;          // D2 nodemcu
> int foodcs = 5;           // D1 nodemcu
> 
> BLYNK_CONNECTED() {
>     Blynk.syncAll();
> }            
> 
> MAX6675 ktc(ktcCLK, ktcCS, ktcSO);
> MAX6675 food(ktcCLK, foodcs, ktcSO);
> 
> 
> BlynkTimer timer;
> 
> // This function sends Arduino's up time every second to Virtual Pin (5).
> // In the app, Widget's reading frequency should be set to PUSH. This means
> // that you define how often to send data to Blynk App.
> void sendSensor()
> {
>   
>   float t = ktc.readCelsius();
>   float f = ktc.readFahrenheit();
>   float mt = food.readCelsius();
>   float mf = food.readFahrenheit();
>   
>   
>   
>   if (isnan(t)) {
>     Serial.println("Failed to read from sensor!");
>     return;
>   }
> 
>   // You can send any value at any time.
>   // Please don't send more that 10 values per second.
>   //Blynk.virtualWrite(V5, h);
>   Blynk.virtualWrite(V5, t);
>   Blynk.virtualWrite(V6, f);
>   Blynk.virtualWrite(V7, mt);
>   Blynk.virtualWrite(V8, mf);
> }
> 
> Servo servo;
> 
> BLYNK_WRITE(V3) {
> 
> servo.write(param.asInt());
> 
> }
> 
> void setup()
> {
>   // Debug console
>   Serial.begin(9600);
> 
>   Blynk.begin(auth, ssid, pass);
>   // You can also specify server:
>   //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
>   //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);
> servo.attach(15); // 15 means D8 pin of ESP8266
> 
>   Blynk.virtualWrite(30,hi);
> 
>   // Setup a function to be called every second
>   timer.setInterval(1000L, sendSensor);
> 
>   
>   
> }
> 
> void loop()
> {
>   Serial.print("C = "); 
>    Serial.print(ktc.readCelsius());
>    Serial.print("\mt F = ");
>    Serial.println(ktc.readFahrenheit());
> Serial.print(food.readCelsius());
>    Serial.print("\mt F = ");
>    Serial.println(food.readFahrenheit());
> 
>    
> if(ktc.readFahrenheit() > hi) {
>     digitalWrite(relayPin, HIGH);
>     Serial.println("turn OFF");
>   }
>   else if (ktc.readFahrenheit() < hi-6){       //  This make setting for slewing range Temp (differennt On to OFF)
>     digitalWrite(relayPin, LOW);
>     Serial.println("turn ON");
>   }    
>  
>   Blynk.run();
>   timer.run();
> }
> BLYNK_WRITE(V30) // V5 is the number of Virtual Pin  
> {
>   hi = param.asInt();
>   Blynk.virtualWrite (31, hi = param.asInt());      // Make value display for target temp
> }