23กย65
วันนี้มาปรับปรุง เครื่องทำน้ำอุ่นสำหรับทารก
ซึ่งได้ใช้งานจริงมา เกือบ3เดือนแล้ว
1.เพิ่ม ปุ่มใน blynk สำหรับ กำหนด แมนวล หรือ ออโต้
2.ลูกลอยตัวบน มันค้าง ทำให้ระดับน้ำมันแจ้งเต็มตลอด แก้โดยขยับลงมา ก็ได้แล้ว แค่มีโอกาสติดอีกได้
3.ค้นเจอ สายไฟจากลูกลอย ไปเข้า D7 แต่ในโค้ดเขียน D2 เลยย้ายสายเป็น D2
4.ทดสอบใหม่ ก็โอเคครับ
โค้ดครับ
//ขาที่ใช้แล้วได้แก่ D0(led_low_temp-แจ้งอุณหภูมิต่ำกว่าหรือเท่ากับ36),D1(pump),D2(upper_water_level_pin_D2),D3(water_temp_pin),
//D4(heater_D4),D5(inputpullup ใช้ไม่ได้),D6(min_water_level_pin),D7();
//D8(led_mid_temp-แจ้งอุณหภูมิต่ำกว่าหรือเท่ากับ37-38);D9(led_high_temp-แจ้งอุณหภูมิสูงกว่าหรือเท่ากับ39)
//=================
//VIRTUAL PIN BLYNK
//V0 =>HEATERBLYNK_V0(V0),V1 => อุณหภูมิปัจจุบัน, V2=>ssid , V3=>MINWATERLEVELBLYNK(V3), v4=>UPPERWATERLEVELBLYNK(V4)
//v5=>SYSTEMBLYNK(V5), V6=> อุณหภูมิที่กำหนด TempSet_V6, V7=>HeaterButtonBlynk , V8=>PumpLedBlynk,
//V9=>PumpButtonBlynk,V10(button auto_heater_V10)
//=================
//Blynk
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp8266.h>
char auth[] = "xxx";
BlynkTimer timer;
//Heating
#include <DallasTemperature.h>
const int water_temp_pin = D3;
OneWire oneWire(water_temp_pin);
DallasTemperature sensors(&oneWire);
int water_temp;//ควรมีอุณหภูมิ 38 'C
int TempSet_V6 = 38;
int heater_D4 = D4;
int heater_D4_state =1;//active low
int pump = D1;
int led_low_temp = D0;
int led_mid_temp = D8;
int led_high_temp = D9;
//bool flag_rt;
int upper_water_level;
int min_water_level;
int waterfull;
int waterout;
int upper_water_level_pin_D2 = D2;
int upper_water_level_pin_D2_value=0;
int min_water_level_pin = D6;
int val = 0;
int auto_heater_V10=0;
unsigned long heater_D4_ms_start; //time from millis()
unsigned long heater_D4_ms_Last; //last time the LED changed state
boolean heater_State; //current LED state
WidgetLED HEATERBLYNK_V0(V0);// โยงกับ heater(output)
WidgetLED SYSTEMBLYNK(V5);// โยงกับ PUMP(output,D1) เปิดปั๊มน้ำ
WidgetLED PumpLedBlynk(V8);//
WidgetLED UPPERWATERLEVELBLYNK(V4);// โยงกับ pump(output) ก้อกน้ำให้เปิด
WidgetLED MINWATERLEVELBLYNK(V3);// โยงกับ valve(output) ก้อกน้ำให้เปิด
//Wifi
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char *ssid = "xxx";
const char *password = "xxx";
int a=0;
WiFiUDP ntpUDP;
// กำหนดค่า offset time เนื่องจากเวลาของเซิฟเวอร์นี้เป็นเวลา UTC เราต้องทำให้เป็นเวลาของประเทศไทย
// เวลาของประเทศไทย = UTC+7 ชั่วโมง ต้องกำหนด offset time = 7 ชั่วโมง
//Time
typedef unsigned long currentDate;
typedef unsigned long formattedTime;
unsigned long myTime;
#include <NTPClient.h>
#include <time.h>
int timezone = 7 * 3600; //ตั้งค่า TimeZone ตามเวลาประเทศไทย
int dst = 0; //กำหนดค่า Date Swing Time
NTPClient timeClient(ntpUDP, "pool.ntp.org");
//Week Days
String weekDays[7]={"อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์"};
//Month names
String months[12]={"มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"};
const long offsetTime = 25200; // หน่วยเป็นวินาที จะได้ 7*60*60 = 25200
// กำหนด object ของ WiFiUDP ชื่อว่า ntpUDP
BLYNK_WRITE(V6)
{
int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
// You can also use:
// String i = param.asStr();
// double d = param.asDouble();
Serial.print("V1 Slider value is: ");
Serial.println(pinValue);
TempSet_V6 = pinValue;
}
void setup() {
Serial.begin(9600);
WiFi.mode(WIFI_STA); //เชื่อมต่อ Wifi
WiFi.begin(ssid, password);
delay(500);
Serial.println("\nConnecting to WiFi");
while ((WiFi.status() != WL_CONNECTED)&&(a<10)) {
Serial.print("*");
a=a+1;
delay(500);
}
Blynk.virtualWrite(V2, ssid);
Blynk.begin(auth, ssid, password, "oasiskit.com", 8080);
//
// Initialize a NTPClient to get time
timeClient.begin();
// Set offset time in seconds to adjust for your timezone, for example:
// GMT +1 = 3600
// GMT +7 = 25200
// GMT -1 = -3600
// GMT 0 = 0
timeClient.setTimeOffset(25200);
//
//Dallas
sensors.begin();
pinMode(upper_water_level_pin_D2, INPUT_PULLUP);
pinMode(min_water_level_pin, INPUT_PULLUP);
pinMode(heater_D4, OUTPUT);
digitalWrite(heater_D4, HIGH);//low active
pinMode(led_low_temp, OUTPUT);
digitalWrite(led_low_temp, 0);//high active
pinMode(led_mid_temp, OUTPUT);
digitalWrite(led_mid_temp, 0);//high active
pinMode(led_high_temp, OUTPUT);
digitalWrite(led_high_temp, 0);//high active
pinMode(pump, OUTPUT);
digitalWrite(pump, 1);//low active
Blynk.syncVirtual(V10);//
timer.setInterval(1000L, ReadTemp);
timer.setInterval(1000L, timecheck);
timer.setInterval(1500L, watercheck);
timer.setInterval(1000L,heatwater);
//-4.ดึงเวลาจากเน็ตมาใช้เปิดปิดไฟ
configTime(timezone, dst, "pool.ntp.org", "time.nist.gov"); //ดึงเวลาจาก Server
Serial.println("\nLoading time");
while (!time(nullptr)) {
Serial.print("*");
delay(100);
}
Serial.println("");
Blynk.virtualWrite(V9, 0);
Blynk.virtualWrite(V7, 0);
HEATERBLYNK_V0.off();
// Blynk.syncAll();
}
void loop(void) {
Blynk.run();
timer.run();
}
void ReadTemp()
{
sensors.requestTemperatures();
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
// float tempC = sensors.getTempCByIndex(0);
water_temp = sensors.getTempCByIndex(0);// ภาษาไลบรารี่
if(water_temp != DEVICE_DISCONNECTED_C)
{
Serial.println("สำเร็จ");
Serial.print("อุณหภูมิน้ำ : ");
Serial.println(water_temp);
Blynk.virtualWrite(V1, water_temp);
// D0(led_low_temp-แจ้งอุณหภูมิต่ำกว่าหรือเท่ากับ36)
// D8(led_mid_temp-แจ้งอุณหภูมิต่ำกว่าหรือเท่ากับ37-38)
// D9(led_high_temp-แจ้งอุณหภูมิสูงกว่าหรือเท่ากับ39)
}
if (water_temp <= 36)
{
digitalWrite(led_low_temp, 1);//high active
digitalWrite(led_mid_temp, 0);//high active
digitalWrite(led_high_temp, 0);//high active
}
if ((water_temp >= 37)&&(water_temp <= 38))
{
digitalWrite(led_low_temp, 0);//high active
digitalWrite(led_mid_temp, 1);//high active
digitalWrite(led_high_temp, 0);//high active
}
if (water_temp >= 39)
{
digitalWrite(led_low_temp, 0);//high active
digitalWrite(led_mid_temp, 0);//high active
digitalWrite(led_high_temp, 1);//high active
}
else
{
Serial.println(" ไม่สามารถอ่านอุณหภูมิได้");
}
Serial.print("TempSet_V6= ");
Serial.println(TempSet_V6);
}
///////////////////////////////////////////////////////////////////////
void watercheck()
{
//D3(water_temp_pin),D5(water_level_pin),D6(min_water_level_pin)
Serial.println(water_temp);
upper_water_level_pin_D2_value = digitalRead(upper_water_level_pin_D2);
Serial.print("upper_water_level_pin_D2_value=");
Serial.println(upper_water_level_pin_D2_value);
min_water_level = digitalRead(min_water_level_pin);
if(upper_water_level_pin_D2_value == 1) // 1 คือ น้ำระดับสูงสุด
{
Blynk.setProperty(V4,"color","#2EFE2E");// สีเขียว V4คือระดับน้ำบน
UPPERWATERLEVELBLYNK.on();
Serial.print("upper_water_level_pin_D2_value=");
Serial.println(upper_water_level_pin_D2_value);
Serial.println("น้ำระดับสูงสุด");
Serial.println(" ===========");
waterfull=1;
Blynk.virtualWrite(V5, " ");
}
else
{
Blynk.setProperty(V4,"color","#FF4000");// สีแดง V4คือระดับน้ำบน
UPPERWATERLEVELBLYNK.on();
Serial.print("upper_water_level_pin_D2_value=");
Serial.println(upper_water_level_pin_D2_value);
Serial.println("น้ำระดับไม่สูงสุด");
Serial.println(" ===========");
waterfull=0;
}
//1
///3
if(min_water_level == 1)// 1 คือ น้ำยังไม่หมดเกลี้ยง
{
Blynk.setProperty(V3,"color","#2EFE2E");// สีเขียว V3คือระดับน้ำล่าง
MINWATERLEVELBLYNK.on();
Serial.print("min_water_level=");
Serial.println(min_water_level);
Serial.println("น้ำยังไม่หมด");
Serial.println(" ===========");
waterout=0;
Blynk.virtualWrite(V5, " ");
}
else
{
Blynk.setProperty(V3,"color","#FF4000");// สีแดง V3คือระดับน้ำล่าง
MINWATERLEVELBLYNK.on();
Serial.print("min_water_level=");
Serial.println(min_water_level);
Serial.println("น้ำหมดแล้ว");
Serial.println(" ===========");
waterout=1;
}
///3
Serial.print("Temperature=");
Serial.print(water_temp);
Serial.println("'C");
Serial.print("waterfull= ");
Serial.println(waterfull);
Serial.print("waterout= ");
Serial.println(waterout);
}
///////////////////////////////////////////////////
void timecheck()
{
timeClient.update();
time_t epochTime = timeClient.getEpochTime();
String formattedTime = timeClient.getFormattedTime();
Serial.print("Formatted Time: ");
Serial.println(formattedTime);
int currentHour = timeClient.getHours();
Serial.print("Hour: ");
Serial.println(currentHour);
int currentMinute = timeClient.getMinutes();
Serial.print("Minutes: ");
Serial.println(currentMinute);
int currentSecond = timeClient.getSeconds();
Serial.print("Seconds: ");
Serial.println(currentSecond);
String weekDay = weekDays[timeClient.getDay()];
Serial.print("Week Day: ");
Serial.println(weekDay);
//Get a time structure
struct tm *ptm = gmtime ((time_t *)&epochTime);
int monthDay = ptm->tm_mday;
Serial.print("Month day: ");
Serial.println(monthDay);
int currentMonth = ptm->tm_mon+1;
Serial.print("Month: ");
Serial.println(currentMonth);
String currentMonthName = months[currentMonth-1];
Serial.print("Month name: ");
Serial.println(currentMonthName);
int currentYear = ptm->tm_year+1900;
Serial.print("Year: ");
Serial.println(currentYear);
//Print complete date:
String currentDate = String(weekDay) + "-" +String(monthDay) + "-" + String(currentMonth) + "-" + String(currentYear) ;
Serial.print("Current date: ");
Serial.println(currentDate);
// Send time to the App
Blynk.virtualWrite(V11, formattedTime);
Blynk.virtualWrite(V12, currentDate);
}
/////////////////////////////////////////////
void heatwater()
{//void heatwater()
if (auto_heater_V10==1)//auto==0
{//if (auto_heater_V10==1)//auto==0
if((waterfull == 1)&&(waterout == 0)&&(water_temp<TempSet_V6))
{//if((waterfull == 1)&&(waterout == 0)&&(water_temp<TempSet_V6))
if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
{//if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
{//if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
//เปิดต่อ
digitalWrite(heater_D4,LOW);//low active
HEATERBLYNK_V0.on();
Serial.println("เปิดฮีตเตอร์");
Blynk.virtualWrite(V7, 1);
}//if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
else//if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
{//else if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
//ให้ปิด และกำหนด ms_last=millis()
HEATERBLYNK_V0.off();
digitalWrite(heater_D4, HIGH);//active low
Serial.println("ปิดฮีทเตอร์");
Blynk.virtualWrite(V7, 0);
Blynk.virtualWrite(V7,"offBackColor");//งงมากๆๆ
heater_D4_ms_Last=millis();
heater_D4_state=1;
}//else if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
}//if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
else//if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
{//else if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
if ((millis()-heater_D4_ms_Last)<10000)//
{//if ((millis()-heater_D4_ms_Last)<10000)//
//ให้ปิดต่อ
HEATERBLYNK_V0.off();
digitalWrite(heater_D4, HIGH);//active low
Serial.println("ปิดฮีทเตอร์");
Blynk.virtualWrite(V7, 0);
Blynk.virtualWrite(V7,"offBackColor");//งงมากๆๆ
}//if ((millis()-heater_D4_ms_Last)<10000)//
else//if ((millis()-heater_D4_ms_Last)<10000)//
{//else if ((millis()-heater_D4_ms_Last)<10000)//ปิดครบแล้วให้เปิด
heater_D4_ms_start = millis();
digitalWrite(heater_D4,LOW);//low active
HEATERBLYNK_V0.on();
Serial.println("เปิดฮีตเตอร์");
Blynk.virtualWrite(V7, 1);
heater_D4_ms_start=millis();
heater_D4_state=0;
}//else if ((millis()-heater_D4_ms_Last)<10000)//
Blynk.virtualWrite(V5, " ");
}//else if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
}//if((waterfull == 1)&&(waterout == 0)&&(water_temp<TempSet_V6))
else//if((waterfull == 1)&&(waterout == 0)&&(water_temp<TempSet_V6))
{//else if((waterfull == 1)&&(waterout == 0)&&(water_temp<TempSet_V6))
HEATERBLYNK_V0.off();
digitalWrite(heater_D4, HIGH);//active low
Serial.println("ปิดฮีทเตอร์");
Blynk.virtualWrite(V7, 0);
Blynk.virtualWrite(V7,"offBackColor");//งงมากๆๆ
// heater_D4_ms_Last=millis();
heater_D4_state=1;
}//else if((waterfull == 1)&&(waterout == 0)&&(water_temp<TempSet_V6))
}//if (auto_heater_V10==1)//auto==0
else//if (auto_heater_V10==1)//auto==0
{//else if (auto_heater_V10==1)//auto==0
//ให้เปลี่ยนเป็นระบบออโต้
Blynk.virtualWrite(V5, "ให้เปลี่ยนเป็นระบบออโต้ ");
}//else if (auto_heater_V10==1)//auto==0
}//void heatwater()
/////////////////////////////////////////////
/////////////////////////////////////////////
void heatwater_V7()
{//void heatwater()
if (auto_heater_V10==0)//auto==0
{//if (auto_heater_V10==0)//auto==0
if((waterfull == 1)&&(waterout == 0)&& (water_temp<=38))
{//if((waterfull == 1)&&(waterout == 0)&& (water_temp<=38))
if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
{//if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
{//if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
//เปิดต่อ
digitalWrite(heater_D4,LOW);//low active
HEATERBLYNK_V0.on();
Serial.println("เปิดฮีตเตอร์");
Blynk.virtualWrite(V7, 1);
}//if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
else//if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
{//else if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
//ให้ปิด และกำหนด ms_last=millis()
HEATERBLYNK_V0.off();
digitalWrite(heater_D4, HIGH);//active low
Serial.println("ปิดฮีทเตอร์");
// Blynk.virtualWrite(V7, 0);
Blynk.virtualWrite(V7,"offBackColor");//งงมากๆๆ
heater_D4_ms_Last=millis();
heater_D4_state=1;
}//else if ((millis()-heater_D4_ms_start)<120000)//เช็คว่าเปิด ถึง120000 ms แล้วยัง,ถ้ายังให้เปิดต่อ
}//if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
else//if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
{//else if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
if ((millis()-heater_D4_ms_Last)<4000)//
{//if ((millis()-heater_D4_ms_Last)<10000)//
// Blynk.virtualWrite(V7,"offBackColor");//งงมากๆๆ
//ให้ปิดต่อ
HEATERBLYNK_V0.off();
digitalWrite(heater_D4, HIGH);//active low
Serial.println("ปิดฮีทเตอร์");
Blynk.virtualWrite(V7, 0);
Blynk.virtualWrite(V7,"offBackColor");//งงมากๆๆ
}//if ((millis()-heater_D4_ms_Last)<10000)//
else//if ((millis()-heater_D4_ms_Last)<10000)//
{//else if ((millis()-heater_D4_ms_Last)<10000)//ปิดครบแล้วให้เปิด
heater_D4_ms_start = millis();
digitalWrite(heater_D4,LOW);//low active
HEATERBLYNK_V0.on();
Serial.println("เปิดฮีตเตอร์");
Blynk.virtualWrite(V7, 1);
heater_D4_ms_start=millis();
heater_D4_state=0;
}//else if ((millis()-heater_D4_ms_Last)<10000)//
Blynk.virtualWrite(V5, " เปิดฮีตเตอร์ ");
}//else if(heater_D4_state==0)//ถ้าอยู่ในstate=0 กำลังทำงาน
}//if((waterfull == 1)&&(waterout == 0)&&(water_temp<TempSet_V6))
else//if((waterfull == 1)&&(waterout == 0)&&(water_temp<TempSet_V6))
{//else if((waterfull == 1)&&(waterout == 0)&&(water_temp<TempSet_V6))
Blynk.virtualWrite(V7,"offBackColor");//งงมากๆๆ
Blynk.virtualWrite(V5, "น้ำมีน้อย ปิดฮีตเตอร์");
Blynk.virtualWrite(V7, 0);
HEATERBLYNK_V0.off();
}//else if((waterfull == 1)&&(waterout == 0)&&(water_temp<TempSet_V6))
}//if (auto_heater_V10==0)//auto==0
else//if (auto_heater_V10==0)//auto==0
{//else if (auto_heater_V10==0)//auto==0
Blynk.virtualWrite(V7,"offBackColor");//งงมากๆๆ
Blynk.virtualWrite(V5, "ให้เปลี่ยนเป็นmanualก่อน");
Blynk.virtualWrite(V7, 0);
HEATERBLYNK_V0.off();
Serial.println(" ปิดฮีตเตอร์");
}//else if (auto_heater_V10==0)//auto==0
}//void heatwater()
/////////////////////////////////////////////
BLYNK_WRITE(V7) //ควบคุมฮีตเตอร์
{//BLYNK_WRITE(V7) //ควบคุมฮีตเตอร์
Blynk.virtualWrite(V5, " ");
if (param.asInt()==1)
{
heatwater_V7();
}
else
{
Blynk.virtualWrite(V7,"offBackColor");//งงมากๆๆ
Blynk.virtualWrite(V5, "ปิดฮีตเตอร์ ");
Blynk.virtualWrite(V7, 0);
HEATERBLYNK_V0.off();
Serial.println(" ปิดฮีตเตอร์");
}
}//BLYNK_WRITE(V7) //ควบคุมฮีตเตอร์
////////////////////////////////////////////////
BLYNK_WRITE(V9) //ควบคุมปั๊มน้ำ
{
if (param.asInt()==1)
{
digitalWrite(pump,waterout);//low active
if( waterout==0)
{
Blynk.virtualWrite(V5, " ");
PumpLedBlynk.on();
delay (10000);
digitalWrite(pump,HIGH);//low active
PumpLedBlynk.off();
}
else
{
Blynk.virtualWrite(V5, "น้ำเกลี้ยงถังแล้ว");
Blynk.virtualWrite(V9, 0);
delay (2000);
}
}
else
{
digitalWrite(pump,HIGH);//low active
PumpLedBlynk.off();
}
}
/////////////////////////////////////////////////
BLYNK_WRITE(V10) //ควบคุมปั๊มน้ำ ออโต้/แมนวล
{//BLYNK_WRITE(V10) //ควบคุมปั๊มน้ำ ออโต้/แมนวล
if (param.asInt()==1)//1=ทำงาน
{//if (param.asInt()==1)//1=ทำงาน
auto_heater_V10=1;
if(heater_D4_state==0)//กำลังทำงาน
{
Blynk.virtualWrite(V7,0);//งงมากๆๆ
HEATERBLYNK_V0.off();
digitalWrite(heater_D4, HIGH);//active low
Serial.println("ปิดฮีทเตอร์");
heater_D4_state=1;
}
}//if (param.asInt()==1)//1=ทำงาน
else//if (param.asInt()==1)//1=ทำงาน
{//else if (param.asInt()==1)//1=ทำงาน
auto_heater_V10=0;
}//else if (param.asInt()==1)//1=ทำงาน
}//BLYNK_WRITE(V10) //ควบคุมปั๊มน้ำ ออโต้/แมนวล
///////////////////////////////////