Green House WiFi
Arduino Uno
#include <Arduino.h> // библиотека для работы с WiFi
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
const int oneWireBus = A1;
OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);
const int oneWireBus2 = A2;
OneWire oneWire2(oneWireBus2);
DallasTemperature sensors2(&oneWire2);
int water = A0;
float temp = 0.0; // текущее значение температуры
float temp2 = 0.0; // текущее значение температуры
SoftwareSerial ESPSerial(2, 3); // TX | RX
const int r1 = 8;
bool workR1 = false;
const int timeWork = 240;
int counterR1 = 0;
void responseTmpFn()
{
sensors.requestTemperatures(); // считывание значение температуры
sensors2.requestTemperatures(); // считывание значение температуры
temp = sensors.getTempCByIndex(0); // температура в градусах Цельсия
temp2 = sensors2.getTempCByIndex(0); // температура в градусах Цельсия
String str = String(temp);
str += "_";
str += String(temp2);
ESPSerial.print(str);
}
void timeWorkFn()
{
counterR1++;
if (counterR1 > timeWork)
{
counterR1 = 0;
workR1 = false;
digitalWrite(r1, HIGH);
ESPSerial.print("r1off_true");
}
}
void setup()
{
Serial.begin(9600); // Объявляем работу com порта со скоростью 9600
ESPSerial.begin(57600);
pinMode(r1, OUTPUT);
digitalWrite(r1, HIGH);
}
void loop()
{
if (ESPSerial.available() > 0)
{
String data = "";
data = ESPSerial.readString();
Serial.println(data);
if (data == "r1on")
{
workR1 = true;
digitalWrite(r1, LOW);
ESPSerial.print("r1on_true");
}
if (data == "r1off")
{
workR1 = false;
digitalWrite(r1, HIGH);
ESPSerial.print("r1off_true");
}
if (data == "temp")
{
responseTmpFn();
}
if (data == "water")
{
ESPSerial.print(analogRead(water));
}
}
if (workR1)
{
timeWorkFn();
}
delay(1000);
}
ESP
#include <Arduino.h>
#include <FastBot.h>
#include <SoftwareSerial.h>
#define WIFI_SSID "5G-UFI"
#define WIFI_PASS "16011601"
#define BOT_TOKEN "8151982156:AAG9eWCq7p6Us_o0m1ZSev2t6RkyqVMDHz8"
String isAdmin = "5367701794";
FastBot bot(BOT_TOKEN);
SoftwareSerial ESPSerial(2, 0);
void connectWiFi()
{
delay(2000);
Serial.println();
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
if (millis() > 15000)
ESP.restart();
}
Serial.println("Connected");
}
// обработчик сообщений
void newMsg(FB_msg &msg)
{
if (msg.text == "/r1on")
{
ESPSerial.print("r1on");
}
if (msg.text == "/r1off")
{
ESPSerial.print("r1off");
}
if (msg.text == "/temp")
{
ESPSerial.print("temp");
}
if (msg.text == "/water")
{
ESPSerial.print("water");
}
}
void setup()
{
Serial.begin(9600);
connectWiFi();
bot.attach(newMsg);
bot.sendMessage("Включение WiFi теплицы", isAdmin);
ESPSerial.begin(57600);
}
void loop()
{
bot.tick();
if (ESPSerial.available() > 0)
{
String data = "";
data = ESPSerial.readString();
if (data == "r1on_true")
{
bot.sendMessage("Полив теплицы включен", isAdmin);
}
else if (data == "r1off_true")
{
bot.sendMessage("Полив теплицы вЫключен", isAdmin);
}
else
{
bot.sendMessage(data, isAdmin);
}
}
delay(1000);
}