Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Erik
Сообщения: 326
Зарегистрирован: 08 ноя 2017, 08:55

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Erik » 25 ноя 2017, 11:00

Andrey_B писал(а):
Erik писал(а):
Andrey_B писал(а):Не будет работать. И даже не потому, что в Program пока не поддерживаются паузы.
Оно же раз в 5 сек срабатывает.
Да, согласен. Упустил, что в текущей экспериментальной реализации логика работы с температурными датчиками не такая, как в режиме "термостата".
Изначально я планировал, что она будет такая же, как там, но вот теперь в этом уже не уверен.
Но паузы все равно в Program в данный момент не поддерживаются.
И периодичность 5 секунд по-моему слишком мало для управления 3-х ходовым. У меня скрипт на сервере крутит 3-х ходовые с периодичностью в 5 минут.
Кроме того, в связи с довольно резкими колебаниями теплоносителя в системе отопления, значения гистерезиса моего котла штатные +6/-2 градуса, я оцениваю не моментальное значение температуры, а усредненное за 5 минут. Иначе контроллер/сервер без конца бы крутил кран туда-сюда без реальной на то необходимости.
В этом есть и плюсы - кран точно не закиснет.

Для того, чтобы не крутить лишнего, нужно следить за динамикой, а не только за текущими значениями (подчиненным правилом,например).
Например, если температура в контуре недостаточная, и кран приоткрылся, нужно в следующий раз смотреть увеличилась ли температура, а не на ее текущее значение. Если увеличилась - можно больше не крутить (или если увеличилась на заданное дельта т градусов, то можно не крутить).
По моему это реально делать силами меги, ресурсов у нее хватает (но для этого нужно многое переделать).
Собственно я понимаю, что очень жалко переделывать, но подумайте, в этом может быть больше перспектив.

Если все правила отвязать от входов, а ресурсы выделить под переменные, то плюсов появится очень много.
- возможно будет на один датчик вешать разные скрипты по разным порогам.
- простой логикой (сложения-вычитания) можно будет делать пропорциональное управление циркуляционным насосом (регулировать скорость/мощность в зависимости от количества включенных петель и их расчетным/настроенным расходам. Через переменную. Которую скрипт включающий/выключающий петлю увеличит/уменьшит пропорционально расходу этой петли в общем потоке ТП, а на эту переменную повесить шим-управление насосом). Без этого при закрытии петли насос распределяет (продавливает) ее поток по остальным петлям. И система перестает себя вести ожидаемо.
- или если при открытии всех петель ТП температура в помещении упала, увеличить порог регулирования трехходового (переменную, которая задает порог). И наоборот, если случается закрытие всех петель - убавить уровень трехходового (уменьшить значение переменной). При реализации этой логики погодозависимость будет нужна только на сравнение заданной температуры ТП (порогом трехходового) с уличной. Если урегулировали до уровня уличной (со смещением или без) - нужно выключить ТП.
- подчиненные правила (из нпримера выше про контроль изменения температуры). Основное правило проверяет отклонение от заданного, подчиненное - отклонение от прошлого замера. Если отклонения от прошлого не было - регулируем. Если было - смотрим в какую сторону. Для одного трехходового крана нужны две пары правил - одна для ситуации, когда текущее больше заданного, вторая - когда меньше заданного. Вторичные в одном случае проверяет, что отклонение от прошлого больше нуля, во втором - что меньше).

Все можно реализовывать без участия сервера, нужны непривязанные правила и область памяти для переменных.
Подумайте. Это интереснее линейной логики вход-выход.

Erik
Сообщения: 326
Зарегистрирован: 08 ноя 2017, 08:55

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Erik » 25 ноя 2017, 11:08

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

В применении сервера есть большая избыточность, и необходимость с этой избыточностью разбираться, что отталкивает огромное количество клиентов, не готовых заниматься созданием УД своими руками.

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

x13dev
Сообщения: 368
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение x13dev » 25 ноя 2017, 13:02

Erik писал(а): По моему это реально делать силами меги, ресурсов у нее хватает (но для этого нужно многое переделать).
А Вы уверены?
У нас есть возможность на устройствах на STM32Fxxx выполнять скрипты прямо в устройствах. Например ПИД-регулятор:

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

class PID{
  constructor(kd, kp, ki, isum){
    this.SP=new Int16();
    this.KD=new Int16(kd);  // >>6
    this.KP=new Int16(kp);  // >>8
    this.KI=new Int16(ki);  //  1/x
    this.ISum = isum<<14;  // >>14
	this.DPrev = new Int32();    
  }
  Tick(PV){
    let U=this.ISum, e=this.SP-PV;
    if(this.KI==0){
      this.ISum=0;
    } else if(e<300 || U<268435456) {  // 16384<<14
      U+=(e<<14)/this.KI;
      if(U>402653184){  // (8192*3)<<14
        U=268435456;
      } else if(U<134217728){ // 8192<<14
        U=134217728;
      }
      this.ISum=U;
    }
    this.DPrev=(this.DPrev*63)/64+PV;
    U=( ( ((this.ISum>>6) + (this.KP*e))>>2 ) + (((this.DPrev-(PV<<6))*this.KD)) )>>6;
    if(U>65535){
      U=65535;
    } else if(U<0){
      U=0;
    }
    return U;
  }  
}

var to=getSeconds()+1;
var pid=new PID(30, 3500, 700, 16385);
var Av0; // Tout - TMP37
var Pp4;  // Ventil
var U;

let time;
if((time=getSeconds())>=to){
  to=time+20;
  U=pid.Tick(Av0);
  Pp4=U;
}
Used ROM: 288 bytes, RAM: 24 bytes

Скрипт для BME280 занимает больше одного килобайта программной памяти.

Erik
Сообщения: 326
Зарегистрирован: 08 ноя 2017, 08:55

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Erik » 25 ноя 2017, 13:19

x13dev писал(а):
Erik писал(а): По моему это реально делать силами меги, ресурсов у нее хватает (но для этого нужно многое переделать).
А Вы уверены?
Да, уверен.

Если сейчас система поддерживает 20 с лишним входов, к которым привязаны соответственно 20 с лишним пороговых значений и такое же количество локальных или сетевых команд, то оформление такого же количества команд без железной привязки ко входам, и выделение части ресурсов под глобальные переменные - вопрос перераспределения ресурсов, а не их наличия.

Vadim
Сообщения: 111
Зарегистрирован: 04 мар 2017, 17:38

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Vadim » 26 ноя 2017, 03:06

Андрей,
А почему при таких настройках:
P_mode.jpg
P_mode.jpg (12.53 КБ) 2193 просмотра
Контроллер ведет себя, как P\R mode (отрабатывает, как нажатие ,так и размыкание кнопки)?
fw: 4.18b6

hawkeye
Сообщения: 95
Зарегистрирован: 06 окт 2016, 22:16

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение hawkeye » 26 ноя 2017, 09:06

Флажок (чекбокс) справа от поля Mode указывает, что при наличии сервера, устройство отправляет на сервер сообщения всегда в режиме P&R, а при его отсутствии Action выполняется только в том режиме, который установлен в Mode. Данная опция не доступна для Click Mode.

Vadim
Сообщения: 111
Зарегистрирован: 04 мар 2017, 17:38

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Vadim » 26 ноя 2017, 12:35

hawkeye писал(а):Флажок (чекбокс) справа от поля Mode указывает, что при наличии сервера, устройство отправляет на сервер сообщения всегда в режиме P&R, а при его отсутствии Action выполняется только в том режиме, который установлен в Mode. Данная опция не доступна для Click Mode.
Это я читал.
Но как это объясняет, что контроллер сам исполняет команды P\R, даже когда сервер выключен физически (прописан, но выключен).
Если контроллер отключить от сети, то он начинает работать корректно (отрабатывате только P).

Andrey_B
Администратор
Сообщения: 4126
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 26 ноя 2017, 12:44

Vadim, проверю.

Vadim
Сообщения: 111
Зарегистрирован: 04 мар 2017, 17:38

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Vadim » 26 ноя 2017, 16:07

1.
Andrey_B писал(а): - Добавлена поддержка режима IN для расширителя MCP23008
В поле INT указываем номер порта, к которому подключена линия INT расширителя. Это может быть ЛЮБОЙ порт.
Указанный порт конфигурируем как IN (режим P).
Порт MegaD-14-IN для прерывания в каком режиме д.б (верхнее положение джампера или нижнее)?

2. Я где-то накосячил с подключением?
Порты 2,3,4 в нижнем положении.
MCP23017_2.jpg
MCP23017_2.jpg (81.68 КБ) 2155 просмотров
3. Update.
С подключением похоже не накосячил.
Плата оказалась или очень нежной, или очень китайской (ну или руки у меня разучились паять...).
Плата от diymore.cc
https://www.aliexpress.com/item/Bidirec ... 0.0.VtwgCb
Похоже, что дорожки очень плохо изолированы друг от друга, припаять ножки мне оказалось не под силу. Что-то где-то коротило, хоть все было чисто, без соплей и под лупой косяков видно не было. В утиль ушло 2 платы.
В итоге выпаял микросхему (~ 10x5 мм) с платы и припаял провода напрямую.
Завелось, но... заметил пару нюансов:

- Контроллер увидел MCP23017, но в меню с расширенными портами не хотел отрисовывать 16 портов (отображал MCP23008 и 8 портов).
После перезагрузки контроллера все стало нормально.

- Если из меню контроллера периодически обновлять информацию по порту с расширителем, то можно заметить, что периодически отрабатывает порт A7 (1 раз на 10-15 запросов).
На стенде у меня был только замкнут на +3.3V порт A0.
Не исключено, что виновата микросхема.
MCP23017_5.jpg
MCP23017_5.jpg (107 КБ) 2113 просмотров
Последний раз редактировалось Vadim 27 ноя 2017, 01:59, всего редактировалось 4 раза.

Alex_Jet
Сообщения: 913
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Alex_Jet » 26 ноя 2017, 17:07

Andrey_B писал(а): https://ab-log.ru/files/File/megad-2561 ... a9-hex.zip

Добавлено восстановление настроек таймера после передачи ИК-команд.
Из ver 4.19 beta9 убрали Program? Последние исправления были в ver 4.19 beta8?

Еще вопрос по округлению десятых и сотых значений с DS18B20. Они округляются по такому правилу?

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

 d = cel_frac_bits*6 + 5;
  if(cel_frac_bits > 12) d += 3;
  return(d/10);

filippovsky
Сообщения: 66
Зарегистрирован: 30 авг 2015, 21:44

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение filippovsky » 26 ноя 2017, 19:11

Alex_Jet, я час назад перепрошился с v4.14b8 сразу до v4.19b9.
Program появился.
Т.е .в v4.19b9 он явно есть.
Параметр -ee при перепрошивке не забыли?

Alex_Jet
Сообщения: 913
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Alex_Jet » 26 ноя 2017, 19:55

filippovsky писал(а):Alex_Jet, я час назад перепрошился с v4.14b8 сразу до v4.19b9.
Program появился.
Т.е .в v4.19b9 он явно есть.
Параметр -ee при перепрошивке не забыли?
А у меня куда-то исчез...и eeprom как думаю, тут не причем, хотя ее чистил - вот последняя команда:

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

php megad-cfg-2561.php --ip 192.168.12.21 -p sec -w --ee -b --write-conf megad-2561-12-21_2017_10_24.cfg
Ааа, черт! Прошилась b6!!! Андрей свой репозитарий не обновил, вероятно. Ладно, скачаю сейчас и перепрошью.

Итак, имеем следующие программы. После ребута value для условий 5-9 обнуляются:
Program_Errors.png
Program_Errors.png (7.67 КБ) 2125 просмотров
Program_after_Reboot.png
Program_after_Reboot.png (7.26 КБ) 2125 просмотров
Далее "по программе":
1. Условие 0 выполняется только при Mode порта в режиме R или P&R, что и следовало доказать.
2. Условия 7 и 8 работают только при Mode порта в режиме P&R, что и следовало доказать.
3. Условия 5 и 6 не работают вообще...
4. Почему условие if P29<30 -> 28=1 (модифицированное 3) не срабатывает сразу после сохранения. Ладно состояние кнопок не обновляется, но данные с DS18B20 обновляются раз в 5 секунд!
5. Самое плохое. Иногда после настройки условия, при нажатии ссылки Back соединение вешается...останавливаешь, нажимаешь снова и выходишь из настройки.
6. Еще хуже. Иногда в Program невозможно зайти. Нажимаешь ссылку и соединение висит.

Попутно (в P17 прописал Disp = 30) обратил внимание:
IMG_20171126_234806_crop_287x266.jpg
IMG_20171126_234806_crop_287x266.jpg (53.07 КБ) 2123 просмотра

filippovsky
Сообщения: 66
Зарегистрирован: 30 авг 2015, 21:44

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение filippovsky » 27 ноя 2017, 22:30

Andrey_B, можно попросить Вас немножко подробнее рассказать про работу групп?
Если я правильно понимаю, то в режиме SW LINK - может быть включен только один порт из группы.
В Режиме SW - при включении группы (g1:1) будут включены все порты, входящие в группу, так?

Правильно ли я понимаю, что для SW LINK надо всегда сначала будет выключить все порты, входящие в группу, и только потом включать конкретный порт (именно через порт, не через группу) ?
Например, порты 7 и 8 настроены как SW LINK и объединены в группу 1, включен порт 7.

При получении команды 8:1 - будет ли автоматически отключен порт 7? Или команда 8:1 просто будет проигнорирована?

Что произойдет с портами SW LINK при получении групповой команды, например, g1:2 ? Для группы из двух портов - логично предположить, что порты будут переключены. А если портов три и более? Какой из них включится? А при получении команды g1:1 ?

Вопросы, безусловно, из серии "кривых рук", но в жизни ведь всякое бывает, вдруг где-то при настройке дрогнет рука...
Команда управления группой (типа g1:1) будет проигнорирована для групп SW LINK или поведение будет непредсказуемое?
Хотелось бы четко представлять себе поведение Меги при получении ею групповых команд.
Спасибо.

Alex_Jet
Сообщения: 913
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Alex_Jet » 28 ноя 2017, 08:16

filippovsky писал(а):Правильно ли я понимаю, что для SW LINK надо всегда сначала будет выключить все порты, входящие в группу, и только потом включать конкретный порт (именно через порт, не через группу) ?
Например, порты 7 и 8 настроены как SW LINK и объединены в группу 1, включен порт 7.

При получении команды 8:1 - будет ли автоматически отключен порт 7? Или команда 8:1 просто будет проигнорирована?
Кстати, действительно. До сих пор не протестировал SW LINK... если на связанные 7,8,9 порты подавать команды 7=1,8=1,9=1 то вначале будут отключаться включенные порты, а потом включаться те которые есть в команде - это было бы удобнее! Правда SW LINK тогда правильнее назвать SW SELECT.

Prokol
Сообщения: 188
Зарегистрирован: 25 янв 2015, 21:43

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Prokol » 28 ноя 2017, 13:43

Андрей, с управлением по IR все-же какая-то проблема. Загрузил на Arduino вот такой простенький скетч

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

#include "IRremote.h"
IRrecv irrecv(6); // Указываем пин, к которому подключен приемник
decode_results results;
 
void setup()
{
  Serial.begin(9600); // Выставляем скорость COM порта
  irrecv.enableIRIn(); // Запускаем прием
}
 
void loop() {
  if (irrecv.decode(&results)) // Если данные пришли 
  {
    Serial.println(results.value, HEX); // Отправляем полученную данную в консоль
    irrecv.resume(); // Принимаем следующую команду
  }
}
Со всех пультов, которые имею в наличии с каждой кнопки постоянно имею одни и те-же команды. Через MegaD один и тот-же код получаю через 3-4 команды. Все остальное сыпет какой-то мусор. Соответственно взяв из библиотеки LIRC код пульта имеющегося агрегата и подставив эти данные в MegaD, агрегат вообще никак не реагирует. Можете сами проверить?

orlov
Сообщения: 5
Зарегистрирован: 27 ноя 2017, 22:12

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение orlov » 28 ноя 2017, 21:51

Приветствую!
Поясните откуда берется этот баг:
https://i.snag.gy/MzAIha.jpg

d.v.ermakov
Сообщения: 943
Зарегистрирован: 29 май 2015, 21:23
Откуда: Екатеринбург, Нижний Тагил

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение d.v.ermakov » 28 ноя 2017, 22:39

Это не баг, это фича.

Andrey_B
Администратор
Сообщения: 4126
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 30 ноя 2017, 18:39

Vadim писал(а):Андрей,
А почему при таких настройках:
Контроллер ведет себя, как P\R mode (отрабатывает, как нажатие ,так и размыкание кнопки)?
fw: 4.18b6
Так заложено в логике работы контроллера.
В данном случае скорее имеет смысл говорить не о доступности сервера, а о доступности сети Ethernet.
Дело в том, что на момент срабатывания входа контроллер знает, доступен сетевой интерфейс или нет, но ничего не знает о доступности сервера.
Хотя я согласен. Возможно тут есть какое-то логическое противоречие.

Vadim
Сообщения: 111
Зарегистрирован: 04 мар 2017, 17:38

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Vadim » 30 ноя 2017, 22:43

Andrey_B писал(а):
Vadim писал(а):Андрей,
А почему при таких настройках:
Контроллер ведет себя, как P\R mode (отрабатывает, как нажатие ,так и размыкание кнопки)?
fw: 4.18b6
Так заложено в логике работы контроллера.
В данном случае скорее имеет смысл говорить не о доступности сервера, а о доступности сети Ethernet.
Дело в том, что на момент срабатывания входа контроллер знает, доступен сетевой интерфейс или нет, но ничего не знает о доступности сервера.
Хотя я согласен. Возможно тут есть какое-то логическое противоречие.
Жалко... :(
Я хотел настроить работу с сервером в режиме:
- Однократное нажатие кнопки: включение света с управлением по датчику движения (выключаем если нет движения 15 мин. есть движение, продляем еще на 15 мин) \ выключение света
- Долгое нажатие: включение света без управления датчиком движения (если не хотим, чтоб свет выключался автоматически, например лежим читаем).
При этом хотелось, чтоб основная функция вкл\выкл работала без сервера (если он умрет).
При этом немного раздражает задержка вкл\выкл, если работаем с сервером. (Предполагал, что включать\выключать с кнопки будет контроллер, а в режиме управления с датчика движения - выключать будет сервер)
Соответственно и пришел к режиму: ACT x:2 c галкой и P c галкой + серверная логика.
Но при длительном нажатии и отпускании клавиши, контроллер включает свет, потом выключает, потом начинает отрабатывать сервер.

PS. Но я все равно не совсем понял реализованную логику.
Ок, есть сеть\сервер, зачем R отрабатывать контроллеру? ;-) Контроллер же просто должен "P" отработать и сервер оповестить о событиях выполнения ACT и моментах "P" и "R".

Evgeny_nd
Сообщения: 132
Зарегистрирован: 07 ноя 2015, 06:59
Откуда: г. Красноярск

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Evgeny_nd » 01 дек 2017, 07:59

Andrey_B писал(а):
Vadim писал(а):Андрей,
А почему при таких настройках:
Контроллер ведет себя, как P\R mode (отрабатывает, как нажатие ,так и размыкание кнопки)?
fw: 4.18b6
Так заложено в логике работы контроллера.
В данном случае скорее имеет смысл говорить не о доступности сервера, а о доступности сети Ethernet.
Дело в том, что на момент срабатывания входа контроллер знает, доступен сетевой интерфейс или нет, но ничего не знает о доступности сервера.
Хотя я согласен. Возможно тут есть какое-то логическое противоречие.
Андрей, теряется вся прелесть и смысл этой функции/чекбокса. Я тоже все время недоумевал почему так работает, но т.к. сильно это не доставало, то не разбирался детально. Доступность сетевого интерфейса совсем не говорит о доступности сервера. И при неответе сервера с конкретным IP и портом, МЕГА должна жить своей жизнью.

Ответить