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

Оффлайн PowerTech

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

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

Оффлайн PowerTech

  • Tabasco
  • ****
  • Сообщений: 317
  • Лойсы: +32/-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
  • ****
  • Сообщений: 317
  • Лойсы: +32/-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
  • Лойсы: +156/-1
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #3 : 15 Январь 2018, 00:07:08 »
С почином! Приятно, что кому-то мои наработки пригодились. А чем контролер управлять будет? Бокс?

Оффлайн PowerTech

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

Оффлайн Ann

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