Теперь и электрика под контролем

Добавил датчик на электрическую сеть в доме.

На входящую фазу в доме одел трансформатор тока, который выдает напряжение в зависимости от проходящего тока.

Напряжение с трансформатора подал на esp8622 на аналоговый вход. Померил клещами реальное потребление и привел в соответствие показания в программах введя коэффициенты.

Пришлось ставить делитель напряжения, т.к. трансформатор выдает больше чем максимум микроконтроллера. Делитель получился 1:4.

Дальше как и прежде передача в базу данных и строим графики на данных из базы. В контроллере собирается информация о потреблении тока за минуту и отсылается в базу данных. А уже в файле приемнике данных php установлена формула расчета потребление мощности и так же записывается в базу данных.

программа ( скетч в контроллере)

#include <ESP8266WiFi.h>;
#define ELECTRICITY_SENSOR A0 //
float elek; //
float sensor_max;
const char* ssid = “****”; // Укажите здесь в кавычках название вашей точки доступа
const char* password = “******”; // Укажите здесь в кавычках пароль вашей точки доступа
const char* host = “portalrabot.ru”; // Адрес сервера на который будем отправлять данные
int i = 0;
const int httpPort = 80;
//WiFiClient client;
void setup()
{
Serial.begin(115200);
// Подключаемся к точке доступа WiFi
Serial.println();
Serial.println();
Serial.print(“Connecting to “);
Serial.println(ssid);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.println(“WiFi connected”);
Serial.println(“IP address: “);
Serial.println(WiFi.localIP());
pinMode(ELECTRICITY_SENSOR, INPUT);

}
void loop()
{
sensor_max = analogRead(ELECTRICITY_SENSOR);
Serial.print(“sensor_max = “);
Serial.println(sensor_max);

i = i + 1;
elek = elek + sensor_max; // собираем данные за минуту
Serial.println(elek);
if(i==60){
elek = elek/60; // среднее значение данных о токе за минуту
i = 0;
conn:
Serial.print(“Connecting to “);
Serial.println(host);

// Создаем TCP соединение при помощи класса WiFiClient
//WiFiClient client;
delay(100);
WiFiClient client;
//delay(1000);
if (!client.connect(host, httpPort)) {
Serial.println(“connection failed”);
Serial.println(WiFi.localIP());
goto conn;
}

//создаем запрос для отправки в базу данных
String msg =”GET /*****.php?cod=******&elek=” + String(elek) +
” HTTP/1.1\r\n” +
“Host: ” + host +
“\r\n” + “User-Agent: arduino-ethernet” +
“Connection: close\r\n\r\n”;
client.print(msg); // отправляем в базу данные
Serial.print(msg);
delay(100);

// Получаем все строки ответа сервера и отправляем их в последовательный порт
while (client.available()) {
String line = client.readStringUntil(‘\r’);
Serial.print(line);
}

Serial.println();
Serial.println(“closing connection”);

elek = 0;
}
delay (1000);
}

 

Views All Time
Views All Time
198
Views Today
Views Today
1
0

Автор публикации

не в сети 2 дня

koordinator

0
Комментарии: 2Публикации: 230Регистрация: 02-12-2017

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Авторизация
*
*
Генерация пароля