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

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

Модератор: immortal

ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

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

Сообщение ErmolenkoM » Пт ноя 14, 2014 7:08 pm

скрины внутренностей вебварсов и свойства StatusOutD3 (этого не видно в коннекте)
по первому варианту должно работать: слайдер меняет переменную, переменная зовет метод при смене значения.
и проверьте правильность вебварсов, такое впечатление что это они переключают обратно.
За это сообщение автора ErmolenkoM поблагодарил:
fiberline (Пн ноя 17, 2014 6:43 pm)
Рейтинг: 1.16%
aka msh555
Cubian на Cubietruck, Connect
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

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

Сообщение Vovix » Пт ноя 14, 2014 7:51 pm

sergejey писал(а):добавил возможность задавать значения
Изображение
первая строка это значение для off, вторая для on
если ничего не задавать, то будет как и раньше 0 и 1
но это не работает со значением NULL!
оставить первую строку пустой - не прокатывает!
указать именно NULL?
то тогда как?
Null или NULL или "" или "NULL"?

по идее мне не нужны разные значения, нужно только соответствие, что NULL и 0 по умолчанию идентичны!!!

(проверил почти все свои варианты с NULL - "они не катят"!)
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Сб ноя 15, 2014 3:10 pm

Честно говоря, не могу воспроизвести проблему. В переключатели задана такая логика, что он в положении OFF всегда, когда значение не равно тому, что прописано в ON. Т.е. не важно что там 0, NULL или 456, главное, чтобы не было тем, что прописано в ON (1 по-умолчанию). Параметр для OFF имеет значение только для того, что отправлять в переменную при ручном переключении в это положение, но не для состояния самого выключателя.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

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

Сообщение Vovix » Сб ноя 15, 2014 7:30 pm

sergejey писал(а):Честно говоря, не могу воспроизвести проблему. В переключатели задана такая логика, что он в положении OFF всегда, когда значение не равно тому, что прописано в ON. Т.е. не важно что там 0, NULL или 456, главное, чтобы не было тем, что прописано в ON (1 по-умолчанию). Параметр для OFF имеет значение только для того, что отправлять в переменную при ручном переключении в это положение, но не для состояния самого выключателя.
Сергей спасибо за ответ!

Поясню ситуацию:
Мои ключи на 1-wire имеют (используют для работы) 2 канала - А(PIO.A) и В(sensed.B)
при чем канал А(PIO.A) настроен как выход с ключа на схему управления, т.е. на него надо подать управляющий сигнал
а канал В(sensed.B) - это сенсор, он "чувствует" замкнут ли семистор (варистор ну или что там не помню), т.е. горит ли сейчас свет!

также на схеме ключа имеется триггер который позволяет управлять включением света с выключателя!

с целью выполнения всей логики задачи свет включается не подачей "1" на выход А, подачей
фронта 0 -> 1 (сначала 0 потом 1)!

И вот если в 1-wire привязать, просто:
коридор 2-й этаж.trigOnOff к А(PIO.A)
коридор 2-й этаж.status к В(sensed.B)

и в элементе меню указать
Связанный объект.Свойство: коридор 2-й этаж.status
Запускать Объект.Метод: коридор 2-й этаж.switch

для справки код switch:

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

$this->setProperty("trigOnOff",0);
$this->setProperty("trigOnOff",1);
то отрабатывает не корректно, т.е. свет то может включиться или выключиться, а вот "ползунок" выключателя в меню вернуться в прежнее состояние
не зависимо от состояния света...

Добавил позднее:
Перепроверил: если включать (или выкл) свет ползунком выключателя в меню - то все нормально, но если включать физическим выключателем, то
состояние ползунка при этом в открытом меню в программе НЕ МЕНЯЕТСЯ - автообновление установленно на 3 сек.!!!



пробовал решить путем присвоения в методе насильно коридор 2-й этаж.status=0 при значении "пустая строка", но это вызывает ошибки MJD - нотисы!!! (видны в окне cmd - start.bat)
хотя ситуацию несколько улучшает (значительно улучшает)

конечно тут накладывается еще и проблема поведения самой сети 1-wire на физическом уровне - не смотря на наличие строчки "online" на странице настройки этих самых модулей
в стабильном порядке, я средствами OWFS вижу не стабильность нахождения ключей в каждый момент времени (то все видны то 1 то несколько и так постоянно)
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пн ноя 17, 2014 11:58 am

ага, кажется наконец понял, что не так... пока в общую ветку кода выкладывать не буду, так что давайте на вашем примере попробуем исправить.
в файле /templates/commands/commands_search_pda.html нужно внести следующее изменение
вместо

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

  [#if TYPE=="sliderbox"#]
   if ($('#menu[#ID#]_v').val()!=data) {
    $('#menu[#ID#]_v').val(data);
    valueChangedFlag['item[#ID#]']=1;
    $('#menu[#ID#]_v').slider('refresh');
   }
  [#endif TYPE#]
 
поставить

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

  [#if TYPE=="sliderbox"#]
   if ($('#menu[#ID#]_v').val()!=data) {
    if (data=='[#ON_VALUE#]') {
     $('#menu[#ID#]_v').val(data);
    } else {
     $('#menu[#ID#]_v').val('[#OFF_VALUE#]');
    }
    valueChangedFlag['item[#ID#]']=1;
    $('#menu[#ID#]_v').slider('refresh');
   }
  [#endif TYPE#]
 

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
fiberline
Сообщения: 20
Зарегистрирован: Ср мар 26, 2014 9:44 pm
Благодарил (а): 26 раз
Поблагодарили: 0

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

Сообщение fiberline » Пн ноя 17, 2014 6:35 pm

msh555 писал(а):скрины внутренностей вебварсов и свойства StatusOutD3 (этого не видно в коннекте)
по первому варианту должно работать: слайдер меняет переменную, переменная зовет метод при смене значения.
и проверьте правильность вебварсов, такое впечатление что это они переключают обратно.
Вложения
скрин_свойства_OutD3.png
скрин_свойства_OutD3.png (70.23 КБ) 11912 просмотров
скрин_вебварс.png
скрин_вебварс.png (77.87 КБ) 11912 просмотров
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

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

Сообщение Vovix » Пн ноя 17, 2014 9:35 pm

sergejey писал(а):ага, кажется наконец понял, что не так... пока в общую ветку кода выкладывать не буду, так что давайте на вашем примере попробуем исправить.
в файле /templates/commands/commands_search_pda.html нужно внести следующее изменение
вместо

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

  [#if TYPE=="sliderbox"#]
   if ($('#menu[#ID#]_v').val()!=data) {
    $('#menu[#ID#]_v').val(data);
    valueChangedFlag['item[#ID#]']=1;
    $('#menu[#ID#]_v').slider('refresh');
   }
  [#endif TYPE#]
поставить

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

  [#if TYPE=="sliderbox"#]
   if ($('#menu[#ID#]_v').val()!=data) {
    if (data=='[#ON_VALUE#]') {
     $('#menu[#ID#]_v').val(data);
    } else {
     $('#menu[#ID#]_v').val('[#OFF_VALUE#]');
    }
    valueChangedFlag['item[#ID#]']=1;
    $('#menu[#ID#]_v').slider('refresh');
   }
  [#endif TYPE#]
Сергей, и снова огромное спасибо.... но...

внес изменения - эффект такой:

если было выключено, то при физическом включении выключателем на стене, ползунок в программе сразу отрабатывает!
но вот если включено, и выключаешь, то увы без ручного обновления страницы ползунок не двигается!!!
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пн ноя 17, 2014 10:46 pm

Vovix писал(а): Сергей, и снова огромное спасибо.... но...

внес изменения - эффект такой:

если было выключено, то при физическом включении выключателем на стене, ползунок в программе сразу отрабатывает!
но вот если включено, и выключаешь, то увы без ручного обновления страницы ползунок не двигается!!!
Чудеса, да и только ))
Ладно, попробуем посмотреть что происходит с данными. Ниже код будет выводить сообщения в браузер в виде алертов (должно два сообщения выдать при каждом физическом переключении), так что пожалуйста пришлите результаты.

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

  [#if TYPE=="sliderbox"#]
   if ($('#menu[#ID#]_v').val()!=data) {
    alert("Current value:["+$('#menu[#ID#]_v').val()+"]\nData:["+data+"]");
    if (data=='[#ON_VALUE#]') {
     $('#menu[#ID#]_v').val(data);
     alert("Changing to ON ([#ON_VALUE#])");
    } else {
     $('#menu[#ID#]_v').val('[#OFF_VALUE#]');
     alert("Changing to OFF ([#OFF_VALUE#])");
    }
    valueChangedFlag['item[#ID#]']=1;
    $('#menu[#ID#]_v').slider('refresh');
   }
  [#endif TYPE#] 

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

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

Сообщение Vovix » Пн ноя 17, 2014 11:51 pm

sergejey писал(а):
Чудеса, да и только ))
Ладно, попробуем посмотреть что происходит с данными. Ниже код будет выводить сообщения в браузер в виде алертов (должно два сообщения выдать при каждом физическом переключении), так что пожалуйста пришлите результаты.

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

  [#if TYPE=="sliderbox"#]
   if ($('#menu[#ID#]_v').val()!=data) {
    alert("Current value:["+$('#menu[#ID#]_v').val()+"]\nData:["+data+"]");
    if (data=='[#ON_VALUE#]') {
     $('#menu[#ID#]_v').val(data);
     alert("Changing to ON ([#ON_VALUE#])");
    } else {
     $('#menu[#ID#]_v').val('[#OFF_VALUE#]');
     alert("Changing to OFF ([#OFF_VALUE#])");
    }
    valueChangedFlag['item[#ID#]']=1;
    $('#menu[#ID#]_v').slider('refresh');
   }
  [#endif TYPE#]     

... Сергей, но у меня эти алерты не выводит... совсем! (в двух разных браузерах проверил)

у меня проговаривает, железно, Алиса в соответствии с методом (даже при физическом включении):

это метод statusChanged

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

$status = $this->getProperty('status');

$this->setProperty('updatedTimestamp',time());
$this->setProperty('alive',1);
$ot=$this->object_title;

// костыли
if ($status != 1) { 
$status1 = 0;
$this->setProperty('status1',$status1);
}
else { 
$status1 = 1;
$this->setProperty('status1',$status1);
}

// проверка заданно ли время жизни для ключа
$alive_timeout=(int)$this->getProperty('aliveTimeOut');
if (!$alive_timeout) {
 $alive_timeout=8*60*60; // если не было заданно, то берем 8 часов
}
    
    if ($status) {
    say("Свет. ".$ot." включен");
    $this->setProperty('statusText', "включено");
    }
    else     {
    say("Свет. ".$ot." выключен");
    $this->setProperty('statusText', "выключено");
    }
    
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);
и еще обнаружил, если с одного терминала открыть управление освещением и в нем включать и выключать, то на другом терминале при открытом меню управления в нем все бегает как надо!
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

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

Сообщение Vovix » Вт ноя 18, 2014 6:10 pm

Сергей, не бросайте меня!!!
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Ответить