Очень интересно, но ничего непонятно!

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 29 мар 2021, 20:11

Нужна помощь.
Как правильно и возможно ли сделать сценарий для автоматики отопления в соответствии температурам, на базе МегаД и МД?

Данные:
1.Температура на улице - Sensor_temp07
2.Температура в доме - Sensor_temphum01
3. температура подачи -Sensor_temp13
4. термостат Boiler1
5. гистерезис мне кажется здесь будет константа.

ТЗ:

При статусе термостата

свойство "Boiler1.status =1"

При изменении наружной температуры и температуры в доме,
отопление свойство "Boiler1.targetTemp" - изменять температуру подачи
т.е.

1. при температуре на улице от -25 до -15

"Boiler1.targetTemp" должен выставить температуру 60 °C

и в помещении ниже 23 °C то 65 °C, но если выше то 25 то 55°C

2. при температуре на улице -15 до -5

"Boiler1.targetTemp" должен выставить температуру 55 °C

и в помещении ниже 23°C то 60 °C, но выше то 25 то 47°C

3. при температуре на улице -5 до +5

"Boiler1.targetTemp" должен выставить температуру 47 °C

и в помещении ниже 23°C то 50 °C, но выше то 25 то 45°C


4.при температуре на улице +5 до +15

"Boiler1.targetTemp" должен выставить температуру 35 °C

и в помещении ниже 23°C то 40 °C, но выше то 25 то 30°C

ПРИМЕРНО как то так.
Вложения
Screenshot_2.jpg
Screenshot_2.jpg (25.37 КБ) 1144 просмотра

Ruslan
Сообщения: 2186
Зарегистрирован: 06 янв 2014, 20:44

Re: Очень интересно, но ничего непонятно!

Сообщение Ruslan » 29 мар 2021, 21:30

Судя по тому, что вы описали, логика должна выглядеть, примерно, так:

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

if (gg('Boiler1.status') == 1) {
$TempOutDoor = gg('Sensor_temp07.value');
$TempHouse = gg('Sensor_temphum01.value');

//при температуре на улице от -25 до -15
if ($TempOutDoor >= -25 && $TempOutDoor < -15) {
if ($TempHouse < 23) sg('Boiler1.targetTemp',65);
if ($TempHouse >= 23 && $TempHouse <= 25) sg('Boiler1.targetTemp',60);
if ($TempHouse > 25) sg('Boiler1.targetTemp',55);
}

//при температуре на улице -15 до -5
if ($TempOutDoor >= -15 && $TempOutDoor < -5) {
if ($TempHouse < 23) sg('Boiler1.targetTemp',60);
if ($TempHouse >= 23 && $TempHouse <= 25) sg('Boiler1.targetTemp',55);
if ($TempHouse > 25) sg('Boiler1.targetTemp',47);
}

//при температуре на улице -5 до +5
if ($TempOutDoor >= -5 && $TempOutDoor < 5) {
if ($TempHouse < 23) sg('Boiler1.targetTemp',50);
if ($TempHouse >= 23 && $TempHouse <= 25) sg('Boiler1.targetTemp',47);
if ($TempHouse > 25) sg('Boiler1.targetTemp',45);
}

//при температуре на улице +5 до +15
if ($TempOutDoor >= 5 && $TempOutDoor < 15) {
if ($TempHouse < 23) sg('Boiler1.targetTemp',40);
if ($TempHouse >= 23 && $TempHouse <= 25) sg('Boiler1.targetTemp',35);
if ($TempHouse > 25) sg('Boiler1.targetTemp',30);
}

}

nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 29 мар 2021, 22:18

Ruslan писал(а):
29 мар 2021, 21:30
Судя по тому, что вы описали, логика должна выглядеть, примерно, так:
СПС за код.
А самое интересное, я пропустил в какой метод вставить, "Sensor_temp07.valueUpdated" в уличный датчик ?

Ruslan
Сообщения: 2186
Зарегистрирован: 06 янв 2014, 20:44

Re: Очень интересно, но ничего непонятно!

Сообщение Ruslan » 29 мар 2021, 22:22

Наверное, да. Раз вы привязываетесь к уличной температуре.

nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 29 мар 2021, 22:32

Значит если я правильно "трактую", если в методе "Sensor_temp07.valueUpdated" прописываем "сценарий"(код) то по изменению температуры , и оно будут меняться с периодичностью равной -время выставленное в модуле "времени опроса"(180сек) и будет выполнятся сценарий сам каждые 180 сек.?
Ну что бы не писать в скрипт в "тайм мин".


...
Судя по наблюдениям за выполнением сценария похоже , что не менее 180сек. если было изменение температуры на уличном датчике .
Последний раз редактировалось nail 29 мар 2021, 22:44, всего редактировалось 1 раз.

Ruslan
Сообщения: 2186
Зарегистрирован: 06 янв 2014, 20:44

Re: Очень интересно, но ничего непонятно!

Сообщение Ruslan » 29 мар 2021, 22:43

Скорее, у вас ПУ, с которыми я не знаком (и не планирую). Могу предположить, что код будет отрабатываться, когда свойство "Sensor_temp07.value" будет меняться. А вот по какому механизму и с какой периодичностью будет меняться это свойство, сказать не могу.

nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 29 мар 2021, 22:45

Да ПУ.
Понаблюдаю , прокатаю - отпишусь.
Еще раз спс.

master1966
Сообщения: 123
Зарегистрирован: 23 янв 2021, 15:55

Re: Очень интересно, но ничего непонятно!

Сообщение master1966 » 30 мар 2021, 14:48

MonthConsumption.jpg
MonthConsumption.jpg (37.25 КБ) 1126 просмотров
Доброго дня.Ruslan наблюдал продолжительное время за нашим счетчиком.В основном все нормально но есть момент,когда записались два одинаковых значения в свойство МeterReading (виртуальный счетчик), Однако в свойство MonthConsumption (потребление за месяц) показания записались правильно. в чем может быть причина?
Вложения
Скриншот 30-03-2021 130327.jpg
Скриншот 30-03-2021 130327.jpg (44.25 КБ) 1126 просмотров
МeterReading.jpg
МeterReading.jpg (48.43 КБ) 1126 просмотров

Ruslan
Сообщения: 2186
Зарегистрирован: 06 янв 2014, 20:44

Re: Очень интересно, но ничего непонятно!

Сообщение Ruslan » 30 мар 2021, 15:43

Что-то где-то "хулиганит" или какая-то ситуация нами не учтена. Если за секунду действительно прошло 20 литров (10 и еще 10), то в свойстве МeterReading (виртуальный счетчик) это должно было отразиться (1030, потом 1040). Если реально прошло только 10 литров, тогда почему в свойство с историей записалось 10 и еще раз 10...
Попытаться прояснить ситуацию можно, если в включить лог в модуле и проанализировать, какие сообщения поступают от Меги в момент, когда возникает вышеописанный случай.

master1966
Сообщения: 123
Зарегистрирован: 23 янв 2021, 15:55

Re: Очень интересно, но ничего непонятно!

Сообщение master1966 » 30 мар 2021, 16:00

Это был тест на большой расход .В течении 2 секунд было три срабатывания входа.Таких ситуаций может и не быть в эксплуатации просто сам факт интересен. В одно свойство записались верные значения, а в другое нет там еще дубль присутствует. Будем наблюдать .

Ruslan
Сообщения: 2186
Зарегистрирован: 06 янв 2014, 20:44

Re: Очень интересно, но ничего непонятно!

Сообщение Ruslan » 30 мар 2021, 16:29

Да, надо понаблюдать. И для анализа этой ситуации, думаю, без лога (в сравнении с изменениями свойств) не обойтись.
А касательно того, что в свойство MonthConsumption (потребление за месяц) записалось верное значение, то это обнадеживающее обстоятельство, если значение свойства вычисляется путем обработки истории. А если свойство у вас вычисляется как разность ежемесячных показаний (исходные данные их свойства МeterReading (виртуальный счетчик)), [уже не помню, как именно у вас организовано] тоже неплохо. Однако вариант с обработкой истории технологичнее и гибче.

nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 30 мар 2021, 19:16

nail писал(а):
29 мар 2021, 20:11
Нужна помощь.
Как правильно и возможно ли сделать сценарий для автоматики отопления в соответствии температурам, на базе МегаД и МД?
Замечено что В МД в свойствах и на сцене !сценарий" срабатывает изменения свойства Boiler1.targetTemp относительно теп. улица .
Вложения
Screenshot_4.jpg
Screenshot_4.jpg (24.8 КБ) 1096 просмотров

nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 30 мар 2021, 19:17

А вот в самой МегеД нет , на понижение сработал , а на повышение "Val 35.00" не сработал так и остался.
Вложения
Screenshot_3.jpg
Screenshot_3.jpg (16.45 КБ) 1096 просмотров

Ruslan
Сообщения: 2186
Зарегистрирован: 06 янв 2014, 20:44

Re: Очень интересно, но ничего непонятно!

Сообщение Ruslan » 30 мар 2021, 19:28

Подскажите, в результате выполнения какого метода (название) происходит выполнение команды на изменение значения "Val" в контроллере. И каким образом вызывается этот метод.
Ну и сам код метода покажите.

nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 30 мар 2021, 19:33

В методе Boiler1.targetTempDown * и Boiler1.targetTempUp *
Вложения
Screenshot_12.jpg
Screenshot_12.jpg (15.65 КБ) 1092 просмотра
Screenshot_9.jpg
Screenshot_9.jpg (71.97 КБ) 1092 просмотра

nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 30 мар 2021, 19:34

и
Вложения
Screenshot_13.jpg
Screenshot_13.jpg (60.74 КБ) 1092 просмотра

nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 30 мар 2021, 19:38

Да и в коде "Sensor_temp07.valueUpdated" в уличный датчик , сделал изменение. мне показалось логичнее

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

if (gg('Boiler1.status') == 1) {
поменял на

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

if (gg('Boiler1.termostatActiveted') == 1) {

nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 30 мар 2021, 19:46

Заметил что Статус WebSocket- буквально час-два назад работали щас такая картина, если связь между ГЕТ -запросами из сценария с МегаД?
Вложения
Screenshot_14.jpg
Screenshot_14.jpg (29.97 КБ) 1086 просмотров

nail
Сообщения: 292
Зарегистрирован: 07 окт 2018, 18:03

Re: Очень интересно, но ничего непонятно!

Сообщение nail » 30 мар 2021, 20:04

и метод свич
Вложения
Screenshot_15.jpg
Screenshot_15.jpg (77.26 КБ) 1075 просмотров

Ruslan
Сообщения: 2186
Зарегистрирован: 06 янв 2014, 20:44

Re: Очень интересно, но ничего непонятно!

Сообщение Ruslan » 30 мар 2021, 20:12

Насчет вебсокетов не подскажу, т.к. не занимался этой темой и не обновлялся до версии, где показывается статус вебсокетов.
А что касается изменения целевой температуры в контроллере, то надо дополнить код метода управления целевой температурой соответствующей командой.
Я бы строчку

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

if ($TempHouse >= 23 && $TempHouse <= 25) sg('Boiler1.targetTemp',60);
заменил на

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

if ($TempHouse >= 23 && $TempHouse <= 25) {
sg('Boiler1.targetTemp',60);
file_get_contents("http://192.168.0.4/sec/?pt=30&misc=60");}
По аналогии надо сделать и в оставшихся блоках.

Ответить