УМНЫЙ ДОМ Модульная сеть хаос дома.

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
Умный сетевой хаос дом на nettips.ru

Проект на базе ESP с активным использованием библиотеки GyverHub
Принцип - объединить в общую сеть множество ESP со своими модулями (температура, движение, подсветка, реле, кнопка, гирлянда-матрица на основе ws2812 и т.д.) с возможностью обмена данными датчиков и отсылкой команд по IP без общего сервера.

При наступлении события (влажность превысила... зафиксировано движение... сработал планировщик) передается необходимая команда на подключенные непосредственно устройства-модули или по сети на соседние ESP).

1708171772345.png1708172295659.png1708171964132.png1708172047252.png1708171825165.png

Так же ESP раз в секунду отправляют запросы соседям (согласно списка) и получают ответы о состоянии их датчиков.
Эти ответы можно использовать в планировщике и генерировать свои команды, отправляя их опять в модули или соседям по IP.

Модули, принимающие решения
module_Alarm.ino Будильник, он же планировщик
module_SR501.ino Датчик движения, он же выключатель постоянного действия
module_IR.ino Прием сигнала с ИК пульта
module_DHT22.ino Датчик температуры и влажности
module_RX433.ino Приёмник 433

Модули, выполняющие решения
module_G220.ino Управление реле
module_PWM.ino Управления ШИМ сигналом
module_WS2812
module_WS2812_1D.ino Управление адресной светодиодной лентой
module_WS2812_2D.ino Управление адресной светодиодной матрицей
module_DFPlayer.ino Управление MP3 DFPlayer
module_TX433.ino Передатчик 433

Модули, изменяющие решения
module_Timer.ino Таймер
module_GyverLamp.ino Синхронизация Gyver ламп


В данном проекте можно собрать и умные розетки и лампы/гирлянды с матрицей ws2812, в которой будет и множество эффектов и будильник рассвет и синхронная работа, управлять вытяжкой в ванной и ночной подсветкой по пути следования и т.д.

Для управления со смартфона приложение в Google Play
https://play.google.com/store/search?q=gyverhub&c=apps
Инструкция по подключению к бесплатному MQTT серверу clusterfly.ru (у меня после подключения 3-х устройств перестало все работать. одно или 2 устройства работают. К Алисе можно подключить через Кузю)
Инструкция по подключению к MQTT серверу wqtt.ru (работа устойчивая, нет заморочек с префиксами, можно подключить к Алисе без посредников)

Алиса, включи матрицу. Алиса, включи на матрице канал 4. сделай матрицу зеленой.

Прошивка протестирована на ESP8266 и на ESP32
 
Изменено:

Burai

✩✩✩✩✩✩✩
12 Янв 2020
46
3
@Shaitan, Добра. Хороший проект. Понемногу осваиваю. Не программист от слова совсем. В модуле module_WS2812_2D эффект хаос подразумевает цикл или это, что то другое? Я не вижу, что бы эффеты менялись.
 

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
хаос вобрал в себя все нойс эффекты и зависит от цвета.
а меняю я его в модуле Timers добавив в "команду при активности" CLR +
но можно в фале module_WS2812_2D.ino добавить изменение цвета
C++:
    case 4: NoiseRoutine(); CLR++;            break; // Хаос
 
Изменено:
  • Лойс +1
Реакции: Burai

Burai

✩✩✩✩✩✩✩
12 Янв 2020
46
3
@Shaitan, Спасибо. Получилось по второму варианту, с таймером не разобрался. Всё равно однообразно. А можно как то таймером настроить переключение всех эффектов? Ещё смотрите если подключаю PWM или IR не собирается ошибка, если отключаю G220, тоже ошибка. Логи приложил.
 

Вложения

  • 1.6 KB Просмотры: 3
  • 4.2 KB Просмотры: 2
  • 1.8 KB Просмотры: 1

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
в модуле Timer создаете событие с названием, например "Цикл"
Время - 5 минут
команда при старте "EFF +" или "EFF RND,2,30" - смена эффекта при запуске циклически или случайно
команда при активности "CLR +" увеличение цвета на 1 циклически каждую секунду. После 255 будет 0.
команда на финише - название события "Цикл" для запукса события повторно
отправляете события в модули WS2812 и Тимер - 🌈,⏱
Запустить цикл можно там же или из модуля Alarm ⏰ по расписанию указав время и дни недели
после этого каждые 5 минут будет меняться эффект, а так как на многие эффекты влияет цвет, а он будет меняться раз в секунду....

для остановки для примера2 варианта
Вариант 1.
В будильнике создать 2 события
1) отключить событие цикл "TIM 1 OFF" отправить в ⏱
2) отключить матрицу "P_OFF" отправить в 🌈

Вариант 2 (красивый).
1) Создать в таймере еще одно событие с именем "ВыклЦикл" со временем 1 минут
команда при старте "TIM 1 OFF" - отключит таймер с номером 1
команда при активности "BRI -" - в течении минуты каждую секунду уменьшать яркость
команда на финише "P_OFF" - выключить матрицу
отправляете события в модули WS2812 и Тимер - 🌈,⏱
2) в будильнике по времени послать команду "ВыклЦикл" на Тимер - ⏱

надо добавить отключение таймера по имени "Цикл OFF"

по ошибкам
при подключении
#define RELE_PIN (1U) // Количество реле
раскоментируйте
uint8_t pin_220[RELE_PIN]={12U};

при подключении
#define IR_PIN (5U) // для Wemos Пин D1 для ESP-01 - 2 - GPIO2
раскоментируйте
#define MAX_IR (20U)

при подключении
#define PWM_PIN 2 // количество пинов
в фале
module_PWM.ino
укажите к каким пинам подключены
// Для ESP-01 Пин 0 - GPIO0, 2 - GPIO2 {0} , {0,2}
uint8_t pin_pwm[PWM_PIN]={0,2};

по get_PWM(); подправил
 
Изменено:
  • Лойс +1
Реакции: Burai

Burai

✩✩✩✩✩✩✩
12 Янв 2020
46
3
@Shaitan, Огромное спасибо за подробные ответы. Вроде всё получилось. Кроме красивого выключения, но это ладно. Красота.
 

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
Проект переделан под новую версию GyverHub и новое приложение в маркете.
Для ESP8266 необходимо обновить ядро до последней версии и все используемые библиотеки.
Добавился доступ по HTTP и остальные фичи новой версии.
в командах в качестве числовых аргументов можно использовать встроенные переменные и простые математические выражение (без скобок)
например:
Для кнопок ИК пульта для изменения яркости можно использовать
BRI BRI+BRI>50*5+1 для увеличения яркости
BRI BRI-BRI>50*5-1 для уменьшения яркости
Задать цвет от синего до красного в зависимости от температуры от 10 до 60
CLR 135+T*2
при температуре 60 цвет будет 255 - красный, а при температуре 80 - 295 - или 40 уже оранжевый.
 
  • Лойс +1
Реакции: Burai

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
Судя по ошибкам необходимо обновить GyverHub-main. (удалить старый и записать новый из архива network_smart_chaos_home_v2.zip)
там файлики от 25.02.24) Версии не совместимы.
можно взять библиотеку с https://github.com/GyverLibs/GyverHub
Например
в старой версии использовался GHflags, в новой GH::Flags.
 
  • Лойс +1
Реакции: Burai

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
@Shaitan,
Новую библиотеку похоже не видит или?
Список зависимостей (библиотек)
я их в архив не паковал, так как могут меняться версии.
Зависимости
Для работы GyverHub необходимы библиотеки:

в менеджере библиотек
1711997075642.png
 
  • Лойс +1
Реакции: Burai

Burai

✩✩✩✩✩✩✩
12 Янв 2020
46
3
@Shaitan, Добра. Если в таймере отправляю в модуль WS2812, в этот же контроллер, то он перезагружается.
1000013836.jpg
Так перезагружается.
1000013834.jpg
а так нет.
Да вот здесь D3, заменил на 2U
#define WS2812_PIN (2U)
С D3 не собиралось.
 
Изменено:

Burai

✩✩✩✩✩✩✩
12 Янв 2020
46
3
На старой версии всё работало.
Ещё если подключить модуль GyverLamp то двух лампах вот из этой https://community.alexgyver.ru/threads/wifi-lampa-budilnik-obsuzhdenie-proshivki-fieryledlamp.7530/ темы включает нулевой эффект. С старым ядром 2.7.4 не собралась, а с новым 3.1.2 одна гирлянда которая RGB, горит первый светодиод и эффекты не переключает. Но всё это было и раньше.
 
Изменено:

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
перезагружается.
в новой версии, когда добавлял формулы, не учел, что что может передаваться один знак, например "+" и расчет формулы рушится.
пока вместо CLR + напиши
CRL CRL+1
Ошибку исправлю позже
 
  • Лойс +1
Реакции: Burai

Burai

✩✩✩✩✩✩✩
12 Янв 2020
46
3
пока вместо CLR + напиши
CRL CRL+1
Ни фига не помогает. Вообще убрал и прибавление цвета"CLR +" , и яркость "BRI +" на влючение и на выключение"BRI -" . Всё равно при включение отправки на ip адреса, всё виснет. Пока остался на старой. Буду ждать исправления.
 

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
Проблема была при передаче в Модуль WS2812.
при передаче по любому направлению, модуль или IP передается строка как есть, например EFF RND,2,30
если по IP адресу расположена GyverLamp, она так и получит EFF RND,2,30, хотя она ждет что то типа EFF30 (без пробела)
в module_GyverLamp реализоват только механизи синхронизации (послать запрос GET на лампу источник, послать значение выбранных параметров на остальные лампы). Модуль писался перед Новым годом, когда у меня на окнах были гирляды с прошивкой GyverLamp и я хотел их синхронизировать. На следующий Новый я планирую делать гирлянды на основе Хаос Дома.
p.s. Ошибку с передачей в модуль одинокого плюса или минуса в параметрах подправил.
Можно ли скриншот сценария, при котором виснет?
 

Burai

✩✩✩✩✩✩✩
12 Янв 2020
46
3
1000013988.jpg1000013987.jpg1000013986.jpg1000013985.jpg
При любых вариантах. На ip такой же хаос. Что с нового года задержались гирлянды. Первоначально они были на esp32, потом попалась ваша (кристальная), сейчас Хаос и две лампы из вот этой темы
https://community.alexgyver.ru/threads/wifi-lampa-budilnik-obsuzhdenie-proshivki-fieryledlamp.7530/
Но они только включаються по времени.
 

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
Добавил возможность перевода формулы в значение (для совместимости с GyverLamp)
команда EFF RND,2,30 отсылает EFF RND,2,30
команда EFF %d@RND,2,30 высчитывает значение RND,2,30, (например получилось 15) и отсылает EFF 15
Проверил работу на своей лампе.
команды типа EFF + GyverLamp не понимает.
Можно допилить что бы понимала в parsing.ino
Для примера сделать вставку с проверкой на " +" и " -"
C++:
    else if (!strncmp_P(inputBuffer, PSTR("EFF"), 3))
    {
      EepromManager::SaveModesSettings(&currentMode, modes);
      memcpy(buff, &inputBuffer[3], strlen(inputBuffer));   // взять подстроку, состоящую последних символов строки inputBuffer, начиная с символа 4
     // начало вставки
      if (!strcmp(buff,PSTR(" +")) currentMode=constrain(currentMode+1,0,MODE_AMOUNT);else
      if (!strcmp(buff,PSTR(" -")) currentMode=constrain(currentMode-1,0,MODE_AMOUNT);else
      // конец вставки
      currentMode = (uint8_t)atoi(buff);
но надо тестировать. и так по BRI,SPD,SCA,VOL
и все равно на GyverLamp нету CLR
 
Изменено:
  • Лойс +1
Реакции: Burai

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
Таймер и эффекты подправил. нюансы новой версии fastled....
 
  • Лойс +1
Реакции: Burai

Burai

✩✩✩✩✩✩✩
12 Янв 2020
46
3
Ну вроде как всё работает. Кроме
. С старым ядром 2.7.4 не собралась, а с новым 3.1.2 одна гирлянда которая RGB, горит первый светодиод и эффекты не переключает. Но всё это было и раньше.
Оставил пока на старом Хаосе. Можно починить?
 

Shaitan

★★★✩✩✩✩
17 Фев 2020
182
165
одна гирлянда которая RGB, горит первый светодиод
я работал с 5V лентами (гирляндами) и матрицами и 12V лентами
на ядре 3.1.2 для 5V использую fastled последней версии, и все работает без проблем, а для 12V приходится использовать версию 3.4.0 и заклеивать черной изолентой первый блок из 3х светодиодов :(
наверно или откажусь от сочетания ws2811 - 12V и ESP8266, перейдя на ESP32.
Возможно у тебя такая гирлянда, с которой я не встречался.

Для управления GyverLamp по IP для случайного выбора эффекта вместо EFF RND,2,30 пропиши EFF %d@RND,2,30
тогда эффект будет случайный и одинаковый на обоих лампах
ну и изменение яркости
BRI %d@BRI-BRI>0
BRI %d@BRI+BRI<255
 
Изменено:
  • Лойс +1
Реакции: Burai