Ввод значений переменных со сцены

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Rotmistr
Сообщения: 2
Зарегистрирован: Пт ноя 15, 2019 1:46 am
Благодарил (а): 2 раза
Поблагодарили: 0

Ввод значений переменных со сцены

Сообщение Rotmistr » Пт ноя 15, 2019 2:04 am

Привет, коллеги!
Вот только недавно занялся строительством УД клиенту, пока что подключил шлюзик Сяоми (без пайки не обошлось) и соноффовские релюхи в ассортименте. Мажордомо, конечно суперсистема, копать и копать ещё.
Сделал на блоках простенькую автоматизацию - если температура на кухне падает, допустим, до 21 градуса - включается нагреватель, если повышается до 25 - выключается. Работает. Данные берутся с сяомишного датчика, управляет нагревателем релюха Сонофф.
Но параметры температуры я прописал в самом блоке. Соответственно управлять со сцены не получается.

А теперь представляем задачу. Клиент едет на дачу, по дороге включает дом на прогрев. В доме тёплые полы с термостатами. Мы в обход термостатов управляем клапанами, дабы по максимуму прогреть полы.
Клиент может захотеть выставить приемлемую температуру в разных комнатах - в гостиной, допустим, +24 а в спальне +19.
Обратная связь пойдёт с тех же самых сяомивских датчиков.
Так вот, вопрос - как мне со сцены добраться до переменной в блоках?
Попробовал сделать текстовое поле - текущая температура туда выводится, а объявленная в блоках переменная - нет.
Да, я там сделал включение -2 градуса, а выключение +2 от заданной, гистерезис такой колхозный, да.

Вопрос, наверное, лоховской, но, блин... С ХТМЛ, ЦСС и ПХП не общался сто лет, уже почти ничего не помню, плюс ещё по мажордомо знаний маловато...

Заранее благодарен за тычок носом в правильное место.
ZyaK
Сообщения: 417
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 71 раз

Re: Ввод значений переменных со сцены

Сообщение ZyaK » Пт ноя 15, 2019 10:40 am

У меня сделано управление обогревателем в прихожей примерно так:
в ежеминутном таймере стоит такой код

Код: Выделить всё

//УПРАВЛЕНИЕ ОБОГРЕВАТЕЛЕМ В ПРИХОЖЕЙ
$objects=array('Hall');
$T=gg('Hall.Temperature');
$Temp=gg('Hall.Temp') ;
if ($T < $Temp){
callMethod("Lamp2_2.turnOn");
}
if ($T >= ($Temp+1)){
callMethod("Lamp2_2.turnOff");
}
в меню управления выведен выключатель и ползунок установки температуры
1.PNG
1.PNG (15.53 КБ) 2994 просмотра
привязан ползунок к переменной
2.PNG
2.PNG (24.59 КБ) 2994 просмотра
вот собственно и всё.
Получаем температуру с датчика(усреднение происходит на стороне микроконтроллера, опрашивающего датчик)
сравниваем с заданной. если больше или равно то выключаем, если меньше на 1 градус, то включаем.
1 градус это так называемый гистерезис.
пробовал 2 градуса, 2 градуса очень сильно чувствуется. а вот 1 градус самое то.

пока через умный дом сделано по будильнику и будним дням автоматическое включение розетки на улице, в которую воткнут котел в машине и обогреватель в прихожей.
финансовые трудности не позволяют запустить отопление на водяном тёплом полу, но котел и прошивка на ЕСПи с датчиками температуры и управлением мощностью котла и работой циркуляционного насоса уже готова, отлажена и испытана на железе.
потому временно управляю обогревателем так. в спальне стоит конвектор, но к умному дому не стал подключать, им управляет китайский регулятор температуры с термодатчиком.
За это сообщение автора ZyaK поблагодарил:
Rotmistr (Вт ноя 19, 2019 10:41 am)
Рейтинг: 1.16%
PI2 + MQTT + 5 ESP8266 + Atmega16
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Ввод значений переменных со сцены

Сообщение Chainik » Пт ноя 15, 2019 10:49 am

Добавлю только, что любой элемент меню можно продублировать на сцене, используя тип элемента "Menu control".
Если все делается только ради сцены, тогда базовый (но "лишний") элемент в меню просто может выполнять сугубо "техническую", служебную роль. Такие элементы меню можно выносить в отдельный раздел, чтобы не мешались.
За это сообщение автора Chainik поблагодарил:
Rotmistr (Пт ноя 15, 2019 12:56 pm)
Рейтинг: 1.16%
Rotmistr
Сообщения: 2
Зарегистрирован: Пт ноя 15, 2019 1:46 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Ввод значений переменных со сцены

Сообщение Rotmistr » Пт ноя 15, 2019 12:56 pm

Хммм... Слайдер на сцене, наверное, даже удобнее будет. Надо попробовать.
На водяном тёплом полу гистерезис самим клапаном очень нехилый обеспечивается, так что с настройками надо будет помудрить.
А ежеминутный таймер где обитает? Пока что не натыкался на него.

Спасибо!
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Ввод значений переменных со сцены

Сообщение Chainik » Пт ноя 15, 2019 2:51 pm

Rotmistr писал(а):
Пт ноя 15, 2019 12:56 pm
...
А ежеминутный таймер где обитает? Пока что не натыкался на него.

Спасибо!
Ежеминутный таймер "обитает" в «onNewMinute» (Панель управления --> ОБЪЕКТЫ --> Объекты --> [класс] Timer --> ClockChime --> onNewMinute). Свой код туда можно вписывать в любом месте, но желательно ниже строки «$m=date('i',time());».
ZyaK
Сообщения: 417
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 71 раз

Re: Ввод значений переменных со сцены

Сообщение ZyaK » Вт ноя 19, 2019 11:57 am

мне пока удобней так, прямо из меню регулировать температуру. Позже когда запущу систему водяного отопления буду сворачивать настройки в подпункты и перенесу на вкладку "настройки" собственно там и так уже почти всё готово, дело за трубами и коллекторами.
единственное, что настроек и показаний многовато
Вложения
3.PNG
3.PNG (144.36 КБ) 2855 просмотров
2.PNG
2.PNG (206.57 КБ) 2855 просмотров
1.PNG
1.PNG (206.17 КБ) 2855 просмотров
PI2 + MQTT + 5 ESP8266 + Atmega16
Ответить