Автор Тема: Контроллер для гроубокса [ESP8266/HTML]]  (Прочитано 484 раз)

Оффлайн PowerTech

  • Tabasco
  • ****
  • Сообщений: 333
  • Лойсы: +35/-0
  • Василий
    • Просмотр профиля
Контроллер на ESP8266[Wemos] управляется через веб браузер, веб морда HTML/JS/CSS лежат в виде файлов на компьютере. Сразу скажу что логика передачи данных с  ESP8266 на вебморду и обратно стопроцентная работа Андрея[Ann], он предложил очень удобное решение - не писать html код на контроллере а создать его на компьютере, это открывает море возможностей по дизайну и в разы проще писать код.
Функции планирую такие -
Контроль температуры, влажности, доливка раствора в бак, управление вентилятором(охлаждение/обдув растения), вкл/выкл лед освещения по времени[NTP], так же возможно замер TDS, освещённости.
На данный момент скетч вемоса это прошивка Андрея с продвинутого контроллера(+добавил кусок кода инкубатора) измененная для работы без ардуино, черновик содержит статичные данные для проверки работоспособности передачи данных с контроллера в веб браузер, реальные датчики не подключены. Код дорабатывается медленно, так как мало свободного времени и великая лень порой настигает  :D
Сборка работоспособна и на её основе можно собрать контроллер под себя, используя как шаблон.

« Последнее редактирование: 14 Январь 2018, 23:34:46 от PowerTech »

Оффлайн PowerTech

  • Tabasco
  • ****
  • Сообщений: 333
  • Лойсы: +35/-0
  • Василий
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #1 : 14 Январь 2018, 23:27:30 »
Отправка данных с вемоса происходит раз в секунду по запросу веб морды.
void handleData() {
  server.send(200, s_plane, data_string + ',' + ESP.getFreeHeap());
}

Необходимые для отправки данные собираются в строку
//////////////////////////[Строка с данными для отправки]/////////////////////////
void assemle_string(){
 data_string = "";
    data_string += (String)hum + ","; 
    data_string += (String)air_temp + ",";
    data_string += (String)root_temp + ",";   
//    data_string += (String)DHT_temperature + ","; 
//    data_string += (String)DHT_humidity + ",";
//    data_string += (String)baro_pressure + ",";
//    data_string += (String)DALLAS_temperature + ",";
//    data_string += (String)tds_ppm + ",";
//    data_string += (String)time_red_duration + ",";
//    data_string += (String)time_blue_duration + ",";
//    data_string += (String)red + ",";
//    data_string += (String)blue + ",";
//    data_string += (String)white + ",";
//    data_string += (String)manual + ",";
//    data_string += (String)pechka_rastvor_temp ;
}

Оффлайн PowerTech

  • Tabasco
  • ****
  • Сообщений: 333
  • Лойсы: +35/-0
  • Василий
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #2 : 14 Январь 2018, 23:34:09 »
В скрипте указана частота запроса данных с вемоса  1000мс = 1 секунда
var Wemos_IP = "http://192.168.1.130/set?";

window.onload = function(){
   var timer = setInterval(ajax_zapros, 1000);   //1000 - это частота запросов в мс
};

var ajax_zapros = function() {
     $.ajax({
       url: "http://192.168.1.130/data",
       success: refresh
   });
}

Java script декодирует данные и записывает их в массив, и меняет показания на определнном блоке HTML страницы.
var refresh = function (data){
    arr = data.split(',');                              //разбиваем строку на отдельные данные и заносим их в массив arr
  // alert( data );
    document.getElementById('hum').innerHTML = "RH " +arr[0]+" %";     //здесь берем значения из массива и меняем показания на определнном блоке
document.getElementById('air_temp').innerHTML = "Air " +arr[1]+" *C";     //здесь берем значения из массива и меняем показания на определнном блоке
document.getElementById('root_temp').innerHTML ="Root " + arr[2]+" *C";     //здесь берем значения из массива и меняем показания на определнном блоке
document.getElementById('rssi').innerHTML = "RSSI " +arr[3]+" db";     //здесь берем значения из массива и меняем показания на определнном блоке
Так блок установок выглядит в HTML коде.
<h2 class="first">Установленные значения<a href="#"></a></h2>
<div id="settings">
<button class="block_settings" id="air_temp">Air temp:</button>
<button class="block_settings" id="root_temp">Root temp:</button>
<button class="block_settings" id="hum">Humidity:</button>
<button class="block_settings" id="rssi">RSSI:</button>
</div>
« Последнее редактирование: 14 Январь 2018, 23:38:06 от PowerTech »

Онлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1772
  • Лойсы: +161/-1
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #3 : 15 Январь 2018, 00:07:08 »
С почином! Приятно, что кому-то мои наработки пригодились. А чем контролер управлять будет? Бокс?

Оффлайн PowerTech

  • Tabasco
  • ****
  • Сообщений: 333
  • Лойсы: +35/-0
  • Василий
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #4 : 15 Январь 2018, 00:09:43 »
С почином! Приятно, что кому-то мои наработки пригодились. А чем контролер управлять будет? Бокс?
Да, сейчас в теме наши коллекции фото выложу.

Онлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1772
  • Лойсы: +161/-1
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #5 : 15 Январь 2018, 00:15:13 »
А чем контролер управлять будет? Бокс?
Блин, в названии ж написано :lol:

Оффлайн PowerTech

  • Tabasco
  • ****
  • Сообщений: 333
  • Лойсы: +35/-0
  • Василий
    • Просмотр профиля
Update Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #6 : 30 Июнь 2018, 23:52:06 »
Обновление
Не прошло и года  :D как добрался до проекта и доделал основные функции.
Ещё раз спасибо за помощь с кодом Андрею (Ann).
Код ещё не приведён в легко читаемый/человеческий вид, серьёзных багов не обнаружено.
На данный момент реализовано:
 - Время берётся из интернета - NTP, есть и синхронизация времени с domoticz.
 - Работа освещения по таймерам
 - Работа вентилятора по таймеру
 - Работа вентилятора в качестве регулятора(уменьшение) влажности
 - Термостат воздуха гроубокса
 - Включение 1/2/3 раза в час на 1 минуту автодоливалки воды(ёмкостные китайские датчики). Их можно и не выключать, но не доверяю китайцам.
 - Обновление прошивки через веб интерфейс с паролем
 - Редактирование файлов SPIFFS через веб
 - Управлять можно как запуская веб морду локально так и загрузить все необходимые файлы в ESP8266(wemos) - [http://192.168.1.130/index.html], для прошивки в arduino IDE(1.6.8 core 2.3.0 ) выбрать 4M(1M SPIFFS)
 - Страница отладочной информации - heap и состояние входов/выходов, ещё очень сырая(взято с примеров)
 - Отправка показаний датчиков в domoticz
 - Ручное включение в обход контроллера - основной свет и автодоливалка воды

Питание идёт через перепрошитый Sonoff Pow R1 - наблюдаем за напряжением, током, мощностью, коэффицентом мощности,прошивка ESPEasy позволяет реализовать токовую защиту.

Железо:
 Wemos D1 mini 4M
 2xDS18B20
 1xDHT12
 5xMosfet Module
 3xPush Button Latching
 7xAviation Plug 4 pin
 DC-DC Step down 12-5V
 Корпус от китайского БП

Web Interface


File Browser


Firmware Update


Debug


Контроллер



« Последнее редактирование: 01 Июль 2018, 02:52:02 от PowerTech »

Оффлайн PowerTech

  • Tabasco
  • ****
  • Сообщений: 333
  • Лойсы: +35/-0
  • Василий
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #7 : 30 Июнь 2018, 23:55:02 »
Содержимое папки data - то что заливается в SPIFFS