soi senser วัดค่าความชึ้นแล้ว ถ้าค่าตำกว่าที่ตั้งไว้ slider ให้ esp8266 ที่เป็น relay ทำงาน ที่ขา 4
หมายเหตุ bridge สามารถส่งค่าไป control relay ผ่าน blynk bridge ได้ แต่ถ้าใช้เงื่อนไข บน silder ไม่สามารถทำงานได้
#include <BlynkSimpleEsp8266.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
char auth1[] ="xxxxx"; //token soi to main
char remote[] ="xx"; //relay
char ssid[] = "zz"; //ชื่อ wifi
char pass[] = "zzzz"; //รหัส wifi
char server[] = "zzzzz";
WidgetBridge bridge1(0);
const int analogInPin = A0;
int sensorValue = 0;
int outputValue = 0;
int soi_auto = 0;
//ส่งค่าขึ้น soi ขั้น blynk
void moisture(){
int value = analogRead(A0);
value = map(value, 1023, 0, 0, 100);
Blynk.virtualWrite(V0, value);
Serial.print(value);
}
// silder เป็น V5
BLYNK_WRITE(V5)
{
soi_auto = param.asInt();
}
void setup() {
Serial.begin (9600);
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
sensorValue = analogRead(analogInPin);
Serial.print("sensorValue = ");
Serial.println(sensorValue);
outputValue = map(sensorValue, 0, 1023, 100, 0);
Serial.print("Soil Moisture = ");
Serial.print(outputValue);
Serial.print(" %");
// กำหนดเงืิอนไข
if (outputValue > soi_auto){
bridge1.digitalWrite(4, LOW);
}
else {
bridge1.digitalWrite(4, HIGH);
}
}
// test กดปุ่มส่งค่าไปยัง esp relay
BLYNK_WRITE(V6) {
int a = param.asInt();
if (a == 0) {
bridge1.digitalWrite(4, LOW);
} else {
bridge1.digitalWrite(4, HIGH);
}
}
void loop() {
Blynk.run();
moisture();
}