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

Оффлайн PowerTech

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

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

Оффлайн PowerTech

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

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

Оффлайн PowerTech

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

Оффлайн Ann

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

Оффлайн PowerTech

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

Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #7 : 30 Июнь 2018, 23:55:02 »
Содержимое папки data - то что заливается в SPIFFS

Оффлайн eddy

  • Habanero
  • *****
  • Сообщений: 1378
  • Лайков: 2
  • 300 не надо хватит и одного
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #8 : 03 Август 2018, 11:26:31 »
Пробовал как то заливать ардуино мега сервер в NodeMcu ESP8266 v3 Lua это было очень .... запоминающийся опыт. Все строго по инструкции библиотека именно такая, путь именно такой иначе не работало.
Чтобы залить вашу прошивку надо использовать arduino IDE1.6.8, а по библиотекам какие либо требования есть?
 От заливки прошивки через arduino IDE остались тягостные воспоминания, а вот ESP_Easy_mega через FlashESP8266.exe залилась сама :D но там нет таймера. Отсюда еще один вопрос. А не попадались ли вам уже готовые батанские прошивочки дл плат ESP?
Опыт - самый лучший учитель. Берет правда дорого, но зато объясняет доходчиво.

Оффлайн PowerTech

Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #9 : 03 Август 2018, 19:04:10 »
Библиотеки качал с гитхаба, ничего не переделывал.
Если хотите скиньте в личку SSID+Password Вашей сети, скомпилирую у себя и отошлю готовый .bin который очень легко залить с помощью FlashESP8266.exe(поместив в его папку .bin)
Останется изменить в скрипте IP на тот что роутер присвоит ESP8266.
 ESP_Easy - включите Rules во вкладке Advanced, после ребута можно использовать код для таймера -
https://www.letscontrolit.com/wiki/index.php/Tutorial_Rules#Starting.2Fstopping_repeating_timers_with_events
Готовые прошивки встречал, не помню уже какие но не годились они мне, то было слишком много лишнего, либо наоборот.


« Последнее редактирование: 03 Август 2018, 19:11:01 от PowerTech »

Оффлайн Ouroboros

Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #10 : 04 Август 2018, 17:00:00 »
Пробовал как то заливать ардуино мега сервер в NodeMcu ESP8266 v3 Lua это было очень .... запоминающийся опыт. Все строго по инструкции библиотека именно такая, путь именно такой иначе не работало.
Чтобы залить вашу прошивку надо использовать arduino IDE1.6.8, а по библиотекам какие либо требования есть?
 От заливки прошивки через arduino IDE остались тягостные воспоминания, а вот ESP_Easy_mega через FlashESP8266.exe залилась сама :D но там нет таймера. Отсюда еще один вопрос. А не попадались ли вам уже готовые батанские прошивочки дл плат ESP?
Пропиариться чтоли. Есть моя наработка под nodemcu (либо под любую esp8266 с нужным количеством портов) https://github.com/avseredyuk/lhc
Но архитектура немного отличается от того что у PowerTech - на ноде не подниматся сервер, а хостится аппликуха на бесплатном Heroku (заливается в 2 клика). Ноды периодически шлют на хост данные с датчиков, а данные уже отображаются на http://hydrocollider.herokuapp.com
Фунционал - DHT22, DS18B20 и включение-выключение реле насоса для периодики.

Оффлайн eddy

  • Habanero
  • *****
  • Сообщений: 1378
  • Лайков: 2
  • 300 не надо хватит и одного
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #11 : 06 Август 2018, 17:41:14 »
Пипец как все не просто. Еле еле в ESP_Easy время выставил.

"включите Rules во вкладке Advanced, после ребута можно использовать код для таймера -"
Rules руками писать???
Подожду вашей прошивочки.
Гитхаб это я так понимаю это скорее сборник образцов кодов для программистов, чем копилка готовых прошивок.
sonoff прямо хорошее дело сделал. Начало положил так сказать. Ну по крайней мере меня заинтересовал  :D :D :D.
Опыт - самый лучший учитель. Берет правда дорого, но зато объясняет доходчиво.

Оффлайн PowerTech

Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #12 : 06 Август 2018, 17:53:48 »
Rules руками писать???
Да, пример ниже включает нагрузку на 12й ноге в 7-30 и выключает в 20-30.
On Clock#Time=All,7:30 do // every day
  gpio,12,1
 endon

On Clock#Time=All,20:30 do // every day.
  gpio,12,0
 endon
« Последнее редактирование: 06 Август 2018, 18:02:18 от PowerTech »

Оффлайн eddy

  • Habanero
  • *****
  • Сообщений: 1378
  • Лайков: 2
  • 300 не надо хватит и одного
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #13 : 06 Август 2018, 18:00:23 »
 :good:
Не так уж и сложно оказывается. Спасибо попробую в 20-30 имелось ввиду?
Усё таймер есть и не один, а 4 кажется. Мне честно говоря раньше только таймеры и нужны были
А что нужно сделать что бы из веб морды ESP_Easy включить выключить чего нибудь? Извиняюсь если вопрос дурацкий. Но с вашей помощью все в секунды решается. Читать умею но это ведь еще найти надо ....
« Последнее редактирование: 06 Август 2018, 18:32:09 от eddy »
Опыт - самый лучший учитель. Берет правда дорого, но зато объясняет доходчиво.

Оффлайн PowerTech

Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #14 : 06 Август 2018, 18:02:59 »
:good:
Не так уж и сложно оказывается. Спасибо попробую в 20-30 имелось ввиду?
Исправил, да 20-30
Но если пропадёт питание например в 7-40 то перец пробудет весь день без света, условие не сработает, тогда надо использовать >=, но не знаю как себя поведут эти операторы на этой прошивке.
Себе делал включение/выключение несколько раз для *чтоб наверняка*
Вкл
On Clock#Time=All,7:30
On Clock#Time=All,7:40
On Clock#Time=All,7:50
Выкл
On Clock#Time=All,20:30
On Clock#Time=All,20:40
On Clock#Time=All,20:50
« Последнее редактирование: 06 Август 2018, 18:06:03 от PowerTech »

Оффлайн eddy

  • Habanero
  • *****
  • Сообщений: 1378
  • Лайков: 2
  • 300 не надо хватит и одного
    • Просмотр профиля
Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #15 : 06 Август 2018, 18:27:43 »
">=" а я возьму да и попробую. Железка то в воздухе висит. Хоть 100 раз в день питание отрубать можно :friends: :friends:

http://kvvhost.ru/2018/05/17/%D0%B2%D1%8B%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D1%82%D0%B5%D0%BB%D1%8C-%D1%81%D0%B2%D0%B5%D1%82%D0%B0-%D0%BD%D0%B0-esp8266-%D1%81-%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%BE%D0%B9-espeasy/
читаю но хочется просто из веб морды устройства.
« Последнее редактирование: 06 Август 2018, 18:41:29 от eddy »
Опыт - самый лучший учитель. Берет правда дорого, но зато объясняет доходчиво.

Оффлайн Ouroboros

Re: Контроллер для гроубокса [ESP8266/HTML]]
« Ответ #16 : 08 Август 2018, 12:49:48 »
Пипец как все не просто. Еле еле в ESP_Easy время выставил.

"включите Rules во вкладке Advanced, после ребута можно использовать код для таймера -"
Rules руками писать???
Подожду вашей прошивочки.
Гитхаб это я так понимаю это скорее сборник образцов кодов для программистов, чем копилка готовых прошивок.
sonoff прямо хорошее дело сделал. Начало положил так сказать. Ну по крайней мере меня заинтересовал  :D :D :D.
Не совсем. По ссылке готовый проект для Arduino IDE который делает то что я описал :)