Страница 5 из 7

Re: есть особенность 1-wire ключей (status)

Добавлено: Ср дек 24, 2014 10:16 pm
denis
Странно как-то работает, если менять свойство через админку, выключатели обновляются, если щелкать одним из них, то второй не обновляется(

Re: есть особенность 1-wire ключей (status)

Добавлено: Чт дек 25, 2014 9:56 pm
sergejey
denis писал(а):Странно как-то работает, если менять свойство через админку, выключатели обновляются, если щелкать одним из них, то второй не обновляется(
Сейчас сделано так, что после обновления связанной переменной её новое значение не передаётся в модуль, вызвавший это обновление. Если говорить проще, то при изменении свойства через один пункт меню, другой пункт меню не изменится до перезагрузки страницы. Хотя, я думаю, это ограничение можно будет исправить. Помечу себе.

Re: есть особенность 1-wire ключей (status)

Добавлено: Пт дек 26, 2014 11:41 am
zelevova
Сергей, еще вдогонку о выключателях с одним свойством.
Если создать в Меню управления элемент и в нем указать "использовать элемент" на существующую кнопку (или ползунок или радио бутон и т.д.). То при использовании этого элемента подтверждение в виде "-ОК" появляется у исходного элемента а не у того который переключаешь и данные не обновляются ни в объектах, ни в интерфейсе.

Re: есть особенность 1-wire ключей (status)

Добавлено: Пт дек 26, 2014 2:39 pm
Victor_S
Я тоже долго не мог понять всяческих фокусов MD и DS2408...:) Так же наблюдал все описанные выше непонятки...
Пока наконец не поудалял все и не начал исследовать поведение данного модуля в различных состояниях(канал вкл/выкл кнопкой и вкл/выкл программно плюс разные их комбинации), и составил себе табличку состояний sensed и pio для каждого случая. При этом собрал себе тестовый стенд и подключил к каждому каналу DS2408 по лампочке. Оказалось, что включению/выключению лампочки соответствует не один бит sensed на канал, а их комбинация(множество комбинаций, и если считывать только один бит - будут те самые непонятки...:)). Вообще для DS2408(и 2406 я полагаю тоже) класс реле не подходит, нужно создавать свой, с другими свойствами и методами. Сейчас, разобравшись, у меня нормально работает модуль от радиосетей 2 лампы на 2 выключателя(2408, дополнительные каналы пока не использую).
Без дополнительных каналов(которые собственно к лампочкам и не относятся в данном модуле) для определения статуса канала(лампочка вкл-1 или выкл-0) нужно анализировать комбинацию следующих свойств: pio.4, pio.5, sensed.2, sensed.3, sensed.4, sensed.5 и сохранять в свойствах ch1_status и ch2_status, которыми в дальнейшем и оперировать для определения статуса объекта, а изменять статус - соответствующим свойством pio.
Я в свойствах устройства 1ware привязал все эти свойства к своему объекту и там же каждый раз вызываю метод опроса состояния, который анализируя все выше указанные pio и sensed присваивает соответствующие статусы моим ch*_status.

Re: есть особенность 1-wire ключей (status)

Добавлено: Пт дек 26, 2014 2:50 pm
Victor_S
Забыл добавить одно пожелание к Сергею...
Касается оно интерфейса в настройках привязки действия при клике на элементе сцены.
Если выбрать действие - реакция на Объект.Свойство - то появляется следующая картинка(словами т.к. MJ у меня на другой машине без инета):
label: Запускать Объект.Метод ->дальше справа большое поле ввода.
Во второй строке - под label пусто, а под полем ввода еще одно такое же поле ввода.
Я потратил очень много времени пока не догадался, что нужно вводить Объект в верхнее поле, а Метод - в нижнее...:( т.к. на экране это выглядит так что нужно вводить в верхнее поле сразу значение Объект.Метод, а второе поле еще для одного метода...:)
Думаю стоит поставить по одному label перед каждым полем ввода:
Объект - > поле
Метод - > поле.

Re: есть особенность 1-wire ключей (status)

Добавлено: Пт дек 26, 2014 8:12 pm
sergejey
Victor_S писал(а):Забыл добавить одно пожелание к Сергею...
Касается оно интерфейса в настройках привязки действия при клике на элементе сцены.
Если выбрать действие - реакция на Объект.Свойство - то появляется следующая картинка(словами т.к. MJ у меня на другой машине без инета):
label: Запускать Объект.Метод ->дальше справа большое поле ввода.
Во второй строке - под label пусто, а под полем ввода еще одно такое же поле ввода.
Я потратил очень много времени пока не догадался, что нужно вводить Объект в верхнее поле, а Метод - в нижнее...:( т.к. на экране это выглядит так что нужно вводить в верхнее поле сразу значение Объект.Метод, а второе поле еще для одного метода...:)
Думаю стоит поставить по одному label перед каждым полем ввода:
Объект - > поле
Метод - > поле.
Сейчас, на сколько я помню, выбор связанных объектов, свойств и методов идёт через выбор из списка, так что ошибиться будет сложно.

Re: есть особенность 1-wire ключей (status)

Добавлено: Вт янв 13, 2015 9:19 am
Victor_S
sergejey писал(а): Сейчас, на сколько я помню, выбор связанных объектов, свойств и методов идёт через выбор из списка, так что ошибиться будет сложно.
Сейчас это где? :)
Ставил систему с сайта за несколько дней до своего поста... Комп с MD пока без выхода в инет, поэтому сам не обновляется. Хорошо бы все же какие-то апдейты для таких случаев выкладывать.

Появился вопрос по управлению многоканальными 1-wire ключами:
Как можно одним вызовом setProperty передать несколько параметров в устройство? Или может как-то по другому, например, включить/выключить несколько каналов сразу, а не по очереди?
Тот же вопрос по функции getProperty(). Каким образом за один вызов можно прочитать и присвоить переменным несколько параметров?
У меня статус 2-х канального ключа определяестя постоянно вот таким кодом:
$p4=$this->getProperty("pio4");
$p5=$this->getProperty("pio5");
$s2=$this->getProperty("sens2");
$s3=$this->getProperty("sens3");
$s4=$this->getProperty("sens4");
$s5=$this->getProperty("sens5");
if(((!$p4 or $p4==0) and (!$p5 or $p5==0) and (!$s2 or $s2==0) and (!$s3 or $s3==0) and $s4==1 and $s5==1)
or ($p4==1 and (!$p5 or $p5==0) and (!$s2 or $s2==0) and (!$s3 or $s3==0) and (!$s4 or $s4==0) and $s5==1)
or ((!$p4 or $p4==0) and $p5==1 and (!$s2 or $s2==0) and (!$s3 or $s3==0) and $s4==1 and (!$s5 or $s5==0))
or ($p4==1 and $p5==1 and (!$s2 or $s2==0) and (!$s3 or $s3==0) and (!$s4 or $s4==0) and (!$s5 or $s5==0))
)
{
$this->setProperty("ch1_status", 0);
$this->setProperty("ch2_status", 0);
}
if(
((!$p4 or $p4==0) and (!$p5 or $p5==0) and $s2==1 and $s3==1 and $s4==1 and $s5==1)
or ($p4==1 and $p5==1 and $s2==1 and $s3==1 and (!$s4 or $s4==0) and (!$s5 or $s5==0))
)
{
$this->setProperty("ch1_status", 1);
$this->setProperty("ch2_status", 1);
}
if(
($p4==1 and (!$p5 or $p5==0) and (!$s2 or $s2==0) and $s3==1 and (!$s4 or $s4==0) and $s5==1)
or ((!$p4 or $p4==0) and (!$p5 or $p5==0) and (!$s2 or $s2==0) and $s3==1 and $s4==1 and $s5==1)
)
{
$this->setProperty("ch1_status", 0);
$this->setProperty("ch2_status", 1);
}
if(
((!$p4 or $p4==0) and $p5==1 and $s2==1 and (!$s3 or $s3==0) and $s4==1 and (!$s5 or $s5==0))
or ((!$p4 or $p4==0) and (!$p5 or $p5==0) and $s2==1 and (!$s3 or $s3==0) and $s4==1 and $s5==1)
)
{
$this->setProperty("ch1_status", 1);
$this->setProperty("ch2_status", 0);
}

Как его оптимизировать?

Re: есть особенность 1-wire ключей (status)

Добавлено: Вт янв 13, 2015 10:46 am
sergejey
Victor_S писал(а):
sergejey писал(а): Сейчас, на сколько я помню, выбор связанных объектов, свойств и методов идёт через выбор из списка, так что ошибиться будет сложно.
Сейчас это где? :)
Ставил систему с сайта за несколько дней до своего поста... Комп с MD пока без выхода в инет, поэтому сам не обновляется. Хорошо бы все же какие-то апдейты для таких случаев выкладывать.
Система обновляется практически ежедневно и последняя установленная версия устаревает уже на следующий день -- где-то в мелочах, где-то в чём-то серьёзном. Аноный обновлений можно смотреть на форуме, а можно на главной странице сайта -- там выкладываются комментарии обновления исходников через GitHub. Да и самостоятельно система не обновляется -- такой функции не заложено.
Victor_S писал(а): Появился вопрос по управлению многоканальными 1-wire ключами:
Как можно одним вызовом setProperty передать несколько параметров в устройство? Или может как-то по другому, например, включить/выключить несколько каналов сразу, а не по очереди?
Тот же вопрос по функции getProperty(). Каким образом за один вызов можно прочитать и присвоить переменным несколько параметров?
У меня статус 2-х канального ключа определяестя постоянно вот таким кодом:
Как его оптимизировать?
Если кратко, то такой возможности нет. Честно говоря, такой необходимости не возникало никогда. А в чём экономия вызова getProperty несколько раз или один? Чем проще функция, тем нагляднее код, даже если это в ущерб его размеру. Указанный код наверное можно как-то оптимизировать, но в первую очередь на уровне логики, т.к. мне не очень понятны все эти условия.

Re: есть особенность 1-wire ключей (status)

Добавлено: Вт янв 13, 2015 2:19 pm
Vovix
Victor_S писал(а):
sergejey писал(а): Сейчас, на сколько я помню, выбор связанных объектов, свойств и методов идёт через выбор из списка, так что ошибиться будет сложно.
Сейчас это где? :)
Ставил систему с сайта за несколько дней до своего поста... Комп с MD пока без выхода в инет, поэтому сам не обновляется. Хорошо бы все же какие-то апдейты для таких случаев выкладывать.

Появился вопрос по управлению многоканальными 1-wire ключами:
Как можно одним вызовом setProperty передать несколько параметров в устройство? Или может как-то по другому, например, включить/выключить несколько каналов сразу, а не по очереди?
Тот же вопрос по функции getProperty(). Каким образом за один вызов можно прочитать и присвоить переменным несколько параметров?
У меня статус 2-х канального ключа определяестя постоянно вот таким кодом:
$p4=$this->getProperty("pio4");
$p5=$this->getProperty("pio5");
$s2=$this->getProperty("sens2");
$s3=$this->getProperty("sens3");
$s4=$this->getProperty("sens4");
$s5=$this->getProperty("sens5");
if(((!$p4 or $p4==0) and (!$p5 or $p5==0) and (!$s2 or $s2==0) and (!$s3 or $s3==0) and $s4==1 and $s5==1)
or ($p4==1 and (!$p5 or $p5==0) and (!$s2 or $s2==0) and (!$s3 or $s3==0) and (!$s4 or $s4==0) and $s5==1)
or ((!$p4 or $p4==0) and $p5==1 and (!$s2 or $s2==0) and (!$s3 or $s3==0) and $s4==1 and (!$s5 or $s5==0))
or ($p4==1 and $p5==1 and (!$s2 or $s2==0) and (!$s3 or $s3==0) and (!$s4 or $s4==0) and (!$s5 or $s5==0))
)
{
$this->setProperty("ch1_status", 0);
$this->setProperty("ch2_status", 0);
}
if(
((!$p4 or $p4==0) and (!$p5 or $p5==0) and $s2==1 and $s3==1 and $s4==1 and $s5==1)
or ($p4==1 and $p5==1 and $s2==1 and $s3==1 and (!$s4 or $s4==0) and (!$s5 or $s5==0))
)
{
$this->setProperty("ch1_status", 1);
$this->setProperty("ch2_status", 1);
}
if(
($p4==1 and (!$p5 or $p5==0) and (!$s2 or $s2==0) and $s3==1 and (!$s4 or $s4==0) and $s5==1)
or ((!$p4 or $p4==0) and (!$p5 or $p5==0) and (!$s2 or $s2==0) and $s3==1 and $s4==1 and $s5==1)
)
{
$this->setProperty("ch1_status", 0);
$this->setProperty("ch2_status", 1);
}
if(
((!$p4 or $p4==0) and $p5==1 and $s2==1 and (!$s3 or $s3==0) and $s4==1 and (!$s5 or $s5==0))
or ((!$p4 or $p4==0) and (!$p5 or $p5==0) and $s2==1 and (!$s3 or $s3==0) and $s4==1 and $s5==1)
)
{
$this->setProperty("ch1_status", 1);
$this->setProperty("ch2_status", 0);
}

Как его оптимизировать?

Чего-то не лишнего ли Вы наворотили? :-)

У меня тоже 1-wire
Ключи от http://radioseti.ru/index.php?route=pro ... uct_id=138
там и двухканальные есть!

на сколько я смог разобраться там всё просто:

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

2) состояние определяется через запрос соответствующего канала sensed
при чем, если, например, pio.1 управляет состоянием, то "слушать" состояние нужно у sensed.2
(это применимо для двухканального элемента 1-wire - который используется для управления одной лампой)

но есть особенности, как я и писал ранее:

именно "0" с приклеплённых каналов ключа НЕ СЧИТЫВАЕТСЯ, вместо "0" значение "пустая строка" (или NULL возможно)
поэтому как в Вашем примере сравнение с "0" видимо не корректно!

хотя, если у Вас другие модули (другой производитель), то может у Вас и по другому.... но тогда довольно странно и не логично!

Re: есть особенность 1-wire ключей (status)

Добавлено: Вт янв 13, 2015 4:55 pm
Victor_S
Да, логика там что называется "в лоб"...:) В предновогодней суете все делалось...:) Когда сел за 4-х канальные переключатели - понял, что это тупиковый подход.
Однако не все там так просто.
Дело в том что каждый канал может переключаться как программно(по pio), так и аппаратно(состояние pio при этом не меняется). Поэтому нужно отслеживать по 2 sensed на канал и корректировать pio при аппаратном переключении. Сейчас все переделал.
То что нельзя за раз прочитать/записать несколько параметров - это печально, здорово замедляет выполнение кода в целом(это можно наблюдать в реальном времени, например включение/выключение всех 4-х каналов идет последовательно с секундной задержкой).
И еще я не очень понял "объектный подход" в MD...
Свойства класса объекты наследуют(появляются свойства ИМЯ_ОБЪЕКТА.СВОЙСТВО) и их можно расширять и удалять, а методы только от класса, т.е. ИМЯ_КЛАССА.МЕТОД. Кстати именно с этим и были связаны ошибки работы переключателей в управлении.