Помогите с термостатом ;(

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

something
Сообщения: 28
Зарегистрирован: Вт ноя 10, 2020 7:00 pm
Благодарил (а): 4 раза
Поблагодарили: 8 раз

Помогите с термостатом ;(

Сообщение something » Чт ноя 11, 2021 8:54 pm

Все обыскал, ответа не нашел.
Есть у меня актуаторы на батареях, их нормальное состояние открытое, я их специально брал с расчетом на то, что если все сдохнет и электричества не будет, то дом не промерзнет, котел газовый работает от своего ИБП, может неделю без сети работать. Контроллеры управления отоплением собрал сам на ESP8266. Они кидают в MQTT температуру и есть управляемое реле. Если делаю инверсию на реле, то все нормально. Выставляю в свойствах термостата Normal Close. И актуатор открыт, иконка светится, рисуется график, что батарея включена. Все ок. Но проблема в том, что если я перевожу систему в Disable(например летом, котел выключаю в том числе), то оно дает 0 на актуаторы, что переводит их в закрытое состояние и они постоянно потребляют электричество. А если я делаю в свойствах Thermostat, что он Normal Open, естественно отключаю инверсию на контроллере. То все работает нормально, но иконка светится как будто отопление включено, когда оно выключено и наоборот. Зато при disabled с актуатором отключается электричество и они не греются.
В общем вопрос, как поменять для конкретного объекта типа Thermostat свойства Enable и Disable? Чтобы и график и иконка работали ровно наоборот. Когда в статусе 0, то отопление включено, когда 1 выключено.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Помогите с термостатом ;(

Сообщение Chainik » Чт ноя 11, 2021 9:02 pm

Подозреваю, что у вас ПУ. Если это так, предлагаю ими не пользоваться, а использовать свои классы, объекты, свойства, методы. Тогда можно организовать абсолютно любую логику под любую ситуацию.
something
Сообщения: 28
Зарегистрирован: Вт ноя 10, 2020 7:00 pm
Благодарил (а): 4 раза
Поблагодарили: 8 раз

Re: Помогите с термостатом ;(

Сообщение something » Чт ноя 11, 2021 9:10 pm

Chainik писал(а):
Чт ноя 11, 2021 9:02 pm
Подозреваю, что у вас ПУ. Если это так, предлагаю ими не пользоваться, а использовать свои классы, объекты, свойства, методы. Тогда можно организовать абсолютно любую логику под любую ситуацию.
Да я больше программирую контроллеры и прочие подобные устройства. Мне тогда уж проще реализовать эту логику прямо на ESP :) Такая мысль у меня уже была, чтобы использовать mjdm только как интерфейс, но не осилил разобраться как сделать пассивный термостат, чтобы он скажем через MQTT отправлял в контроллер целевую температуру, но при этом показывал статистику по температуре и по статусу реле. Если так можно, то я бы лучше так и сделал.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Помогите с термостатом ;(

Сообщение Chainik » Чт ноя 11, 2021 9:26 pm

Может быть я не совсем понимаю сложность задачи, но кажется, что ничего особо сложного с реализацией не предвидится. С отправкой целевой температуры, наверное, так. Вы же знаете команду, которой отправляется значение температуры контроллеру? Будет объект.свойство с целевой температурой. Ее (температуру) надо менять, значит будут методы, условно, TempUp, TempDown.

Касательно статистики. Если в MDM в какое-нибудь объект.свойство с историей уже собираются данные от контроллера, можете обрабатывать их как угодно. Вот пример: https://mjdm.ru/forum/viewtopic.php?f=4&t=7444&start=50

Это что касается отправки, получения и обработки данных. А вопрос интерфейса -- это отдельная песня, как это все красиво и удобно отображать.
something
Сообщения: 28
Зарегистрирован: Вт ноя 10, 2020 7:00 pm
Благодарил (а): 4 раза
Поблагодарили: 8 раз

Re: Помогите с термостатом ;(

Сообщение something » Чт ноя 11, 2021 10:52 pm

Chainik писал(а):
Чт ноя 11, 2021 9:26 pm
Может быть я не совсем понимаю сложность задачи, но кажется, что ничего особо сложного с реализацией не предвидится. С отправкой целевой температуры, наверное, так. Вы же знаете команду, которой отправляется значение температуры контроллеру? Будет объект.свойство с целевой температурой. Ее (температуру) надо менять, значит будут методы, условно, TempUp, TempDown.
Я хочу, чтобы выглядело оно как уже имеющийся объект термостат, но без логики. Чтобы оно отправляло на контроллер целевую температуру, показывало статус устройства и вело статистику. Ну вот как тут. Сейчас функционал по включению и выключению батареи делает mjdm, хочу делать это на контроллере.
Screenshot_20211111_224840.jpg
Screenshot_20211111_224840.jpg (55.7 КБ) 1516 просмотров
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Помогите с термостатом ;(

Сообщение Chainik » Пт ноя 12, 2021 9:08 am

Не знаю, как там выглядит объект "Термостат", ибо ПУ не пользуюсь. Однако на первый взгляд ничего сложного по представленной картинке не предвидится в плане реализации. Какой командой у вас отправляется целевая температура к контроллеру? В каком объект.свойстве хранятся данные о фактической температуре?
something
Сообщения: 28
Зарегистрирован: Вт ноя 10, 2020 7:00 pm
Благодарил (а): 4 раза
Поблагодарили: 8 раз

Re: Помогите с термостатом ;(

Сообщение something » Пт ноя 12, 2021 9:31 am

Chainik писал(а):
Пт ноя 12, 2021 9:08 am
Не знаю, как там выглядит объект "Термостат", ибо ПУ не пользуюсь. Однако на первый взгляд ничего сложного по представленной картинке не предвидится в плане реализации. Какой командой у вас отправляется целевая температура к контроллеру? В каком объект.свойстве хранятся данные о фактической температуре?
Контроллер работает через MQTT. Для температуры там есть два свойства, показания датчика(только чтение) и состояние реле(чтение и запись). Ничего хитрого. Могу к датчику добавить метод записи, чтобы туда можно было писать целевую температуру. У меня так котел сделан, у него есть текущая температура и целевая, есть статус горелки(0/1), управление горелкой я не стал выносить в mjdm, стремно как-то :) Его контроллер работает автономно. В mjdm, через объект MQTT я вижу от котла:
1. целевая температура теплоносителя
2. фактическая температура теплоносителя
3. статус горелки на текущий момент
mjdm хранит историю по этим данным. Но объединить это все в один объект я не осилил. По итогу нашел готовый объект, которому можно делать +/- и он отправляет данные в целевую температуру, а вот чтобы все в комплексе, не смог. Не хватило моих мозгов, видимо. Сейчас в интерфейсе он выглядит так
Screenshot_20211112_092826.png
Screenshot_20211112_092826.png (8.14 КБ) 1452 просмотра
А так его видно в настройках объекта MQTT
Screenshot_20211112_092933.png
Screenshot_20211112_092933.png (27.61 КБ) 1452 просмотра
А вот как сделать "красиво", не знаю :)
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Помогите с термостатом ;(

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

Понятно. Не знаю, насколько красиво получится, но попытаться можно. Попытка, не пытка )).
Какой командой у вас отправляются данные к контроллеру для установки целевой температуры?

Создадим отдельный класс. Там будет объект, скажем, Boiler. У него будет свойства с целевой температурой, с фактической температурой, с текущим статусом горелки. Будут методы TempUp и TempDown для изменения целевой температуры. Это как минимум. А потом может и еще что-нибудь понадобится...
something
Сообщения: 28
Зарегистрирован: Вт ноя 10, 2020 7:00 pm
Благодарил (а): 4 раза
Поблагодарили: 8 раз

Re: Помогите с термостатом ;(

Сообщение something » Пт ноя 12, 2021 11:01 am

Chainik писал(а):
Пт ноя 12, 2021 10:15 am
Понятно. Не знаю, насколько красиво получится, но попытаться можно. Попытка, не пытка )).
Какой командой у вас отправляются данные к контроллеру для установки целевой температуры?
Ну как то так.
mqttSensor_temp04.value = 50;
оно там дальше само через MQTT отработает.

а тут текущая температура теплоносителя
mqttSensor_temp02.value
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Помогите с термостатом ;(

Сообщение Chainik » Пт ноя 12, 2021 11:29 am

Ну с фактической температурой понятно.
А вот с отправкой целевой не совсем. Какая команда должна быть написана в методе, чтобы контроллеру отправилась целевая температура?
Например, чтобы отправить целевую температуру моему контроллеру, строчка кода должна быть такой:

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

file_get_contents("http://192.168.0.14/sec/?pt=32&misc=50.5");
где 50.5 устанавливаемая целевая температура.
Но у меня все работает по http.

Или в вашем случае достаточно установить свойству mqttSensor_temp04.value значение и MQTT-брокер сам "забросит" это значение на контроллер?
Ответить