Relay ทำงานผิดพลาดแก้ยังไงครับ

หลักการทำงานของโปรแกรมคือ
ถ้าอุณภูมิจากอากาศที่วัดได้ มีค่ามากกว่าค่าที่ตั้งไว้ จะสั่งให้ Relay ทำงาน แต่ถ้าอุณภูมิที่วัดได้ น้อยกว่าค่าที่ตั้งไว้ จะสั่งให้ Relay หยุดทำงาน

ปัญหาคือ
เวลาเปิดใช้งานอุปกรณ์ Relay มันจะทำงานเลย ทั้งที่ค่าที่วัดได้ มีค่าน้อยกว่าค่าที่ตั้งไว้ ดังรูปด้านล่าง คือ
ค่าที่วัดได้ = 28.0C
ค่าที่ตั้งไว้ = 30.0C

ตามรูปที่วงไว้


//#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp8266.h>
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
#include "DHT.h"
DHT dht;

#define D0 16
#define D2 4
#define ledPin D0
#define ConfigWiFi_Pin D2
#define ESP_AP_NAME "ESP8266 V2 Config AP"

BlynkTimer timer;
char auth[] = "JH_Lx-jy-bFQ-aV-eT3TEH2BGdjCRANW";
char ssid[] = "";
char pass[] = "";
const int analogInPin = A0;
int sensorValue = 0;
int inputValue = 0;
long set_temperature;
long temps;

void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode(ConfigWiFi_Pin, INPUT_PULLUP);
  Serial.begin(115200);
  digitalWrite(ledPin, LOW);
  WiFiManager wifiManager;
  if (digitalRead(ConfigWiFi_Pin) == LOW)
  {
    wifiManager.resetSettings();//goto ip 192.168.4.1 to config
  }
  wifiManager.autoConnect(ESP_AP_NAME);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(250);
    Serial.print(".");
  }
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  digitalWrite(ledPin, HIGH);
  pinMode(D1, OUTPUT);
  Blynk.begin(auth, ssid, pass, "oasiskit.com", 8080);

  Serial.println("Temperature (C)\t Humidity (%)");
  dht.setup(2); // data pin 2
}

BLYNK_WRITE(V9)
{
  set_temperature = param.asLong();
}
BLYNK_WRITE(V6)
{
  temps = param.asLong();
}
BLYNK_WRITE(V1)
{
  if ((param.asInt()) && (inputValue <= temps))
  {
    digitalWrite(D1, HIGH); Blynk.virtualWrite(V0, 255); Blynk.notify("led ACTIVADO");
  }
  else
  {
    digitalWrite(D1, LOW);  Blynk.virtualWrite(V0, 0);
  }
}
BLYNK_WRITE(V2)
{
  if ((param.asInt()) && (inputValue <= temps))
  {
    digitalWrite(D1, HIGH); Blynk.virtualWrite(V0, 255); Blynk.notify("led ACTIVADO");
  }
  else
  {
    digitalWrite(D1, LOW);  Blynk.virtualWrite(V0, 0);
  }
}
BLYNK_WRITE(V3)
{
  if ((param.asInt()) && (inputValue <= temps))
  {
    digitalWrite(D1, HIGH); Blynk.virtualWrite(V0, 255); Blynk.notify("led ACTIVADO");
  }
  else
  {
    digitalWrite(D1, LOW);  Blynk.virtualWrite(V0, 0);
  }
}
BLYNK_WRITE(V4)
{
  if ((param.asInt()) && (inputValue <= temps))
  {
    digitalWrite(D1, HIGH); Blynk.virtualWrite(V0, 255); Blynk.notify("led ACTIVADO");
  }
  else
  {
    digitalWrite(D1, LOW);  Blynk.virtualWrite(V0, 0);
  }
}

void loop()
{
  sensorValue = analogRead(analogInPin);
  inputValue = map(sensorValue, 0, 1023, 100, 0);
  delay(dht.getMinimumSamplingPeriod());
  float humidity = dht.getHumidity();
  float temperature = dht.getTemperature();
  Blynk.virtualWrite(V5, inputValue);

  if (temperature <= set_temperature)
  {
    digitalWrite(D1, LOW);  Blynk.virtualWrite(V0, 0);
  }
  else
  {
    digitalWrite(D1, HIGH); Blynk.virtualWrite(V0, 255); Blynk.notify("led ACTIVADO");
  }
  Blynk.virtualWrite(V7, temperature);
  Blynk.virtualWrite(V8, humidity);

  Serial.print(temperature);
  Serial.print("C \t\t");
  Serial.print(humidity);
  Serial.println("%");

  delay(500);
  Blynk.run();
  timer.run();
}

มันก็ไม่ยากครับ ใช้

Serial.print( String("temperature <= set_temperature = ") + temperature + String(" <= ") + set_temperature);

ดูเลยว่าจริงป่าว

ทำไมค่าที่ตั้งไว้มันเริ่มต้นที่ 0 ล่ะครับ ต้องทำการปรับค่ามันถึงดึงค่าที่ตั้งไว้จริงๆออกมา แก้ไงได้ครับ

การรับค่าใช้คำสั่งนี้ครับ

set_temperature = param.asInt();

แบบนี้ไม่น่าจะใช้นะ

set_temperature = param.asLong();

ไม่หายครับ เริ่มที่ 0 เหมือนเดิมเลยครับ

ขอดูหน้าแอพปัจจุบันหน่อย

อ่อผมรู้ละ เรายังไม่ได้กำหนดการ ซิงข้อมูลปัจจุบันบนแอพมาที่โค้ตเราครับ เพราะค่าเริ่มต้นทุกครั้งเราคือ set_temperature = 0 มันก็จะดึงค่านี้มาใช้ แต่ถ้าเราให้มันเชื่อมแอพแล้วซิงค์ค่า V9 มา ค่า set_temperature มันก็จะไม่ใช่ 0 ละ ลองใช้คำสั่งนี้เพิ่มเข้าไปครับ

BLYNK_CONNECTED() {

    Blynk.syncAll();

}

ได้แล้วครับ ขอบคุณมากครับผม :star_struck: