Подключаем датчик открытия въездных ворот

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

sergejey
Благодарил (а): 0
Поблагодарили: 0

Подключаем датчик открытия въездных ворот

Сообщение sergejey » Чт сен 27, 2012 9:16 am

pdmitry2
Сообщения: 90
Зарегистрирован: Ср фев 06, 2013 1:12 pm
Откуда: Россия, Москва
Благодарил (а): 35 раз
Поблагодарили: 6 раз

Re: Подключаем датчик открытия въездных ворот

Сообщение pdmitry2 » Пт май 10, 2013 6:33 pm

Помогите пожалуйста настроить датчик открытия входной двери. пытаюсь сделать на базе датчика наличия напряжения на основе ключа 2406.
Что хочу - что бы при открытии двери, выводилось сообщение "Входная дверь открыта", а при закрытии соответственно "Входная дверь закрыта".
Что сделано:
Изображение
Изображение
Изображение
Изображение
Изображение
Тут вроде всё хорошо, а вот с кодом statusChanged проблемы. Пробовал прописать код по аналогии с http://smartliving.ru/Main/ScMonitorContact и по аналогии с http://smartliving.ru/Main/ModuleOnewire, но ничего не выходит. Время обновления обновляется, также меняется status, а вот в statusText ничего не появляется, ну и конечно и истории событий тишина.
Варианты того, что пробовал:

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

if ($params['VALUE']) {
 $this->setProperty("status","0");
 //say('Входная дверь закрыта');
Явно что то делаю не так, а что не могу понять.
$this->setProperty('statusText','Включено');
} else {
 $this->setProperty("status","1"); 
 //say('Входная дверь открыта');
$this->setProperty('statusText','Выключено');
}

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

if ((int)$params['status']==0) {
 say("Внимание! Открывается въезд в  гараж.",5);
} else {
 say("Гараж закрыт.",5);
}

if ($params['status']) {
 $this->setProperty('statusText','закрыто');
} else {
 $this->setProperty('statusText','открыто');
}

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

if ($params['VALUE']) {
 sg("status","0");
 say('Входная дверь открыта', 1);
$this->setProperty('statusText','открыто');
} else {
 sg("status","1"); 
 say('Входная дверь открыта', 1);
$this->setProperty('statusText','закрыто');
}
P.S. Не знаю, пригодится ли эта информация, для решения моей проблемы, но выключатель на базе DS2413 у меня работает отлично, использую такой код, в методе statusChanged:

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

if ($params['VALUE']) {
 $this->setProperty("status","1");
 say('Освещение включено');
$this->setProperty('statusText','Включено');
} else {
 $this->setProperty("status","0"); 
 say('Освещение выключено');
$this->setProperty('statusText','Выключено');
}
pdmitry2
Сообщения: 90
Зарегистрирован: Ср фев 06, 2013 1:12 pm
Откуда: Россия, Москва
Благодарил (а): 35 раз
Поблагодарили: 6 раз

Re: Подключаем датчик открытия въездных ворот

Сообщение pdmitry2 » Пн май 20, 2013 3:01 pm

Сергей, помогите пожалуйста решить этот вопрос)
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Подключаем датчик открытия въездных ворот

Сообщение sergejey » Пн май 20, 2013 3:42 pm

попробуем...

код для модуля 1-wire (установку updatedTime можно убрать):

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

if (isset($params['sensed.B'])) {
 callMethod('Door.statusChanged',array('VALUE'=>$params['sensed.B']['VALUE']));
}
код метода Door.statusChanged:

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

$this->setProperty('updatedTime',time());
if ($params['VALUE']) {
 say('Входная дверь закрыта');
 $this->setProperty('statusText','Открыто');
} else {
 say('Входная дверь открыта');
 $this->setProperty('statusText','Закрыто');
}
привязку к свойству можно оставить как есть, раз она работает

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
pdmitry2
Сообщения: 90
Зарегистрирован: Ср фев 06, 2013 1:12 pm
Откуда: Россия, Москва
Благодарил (а): 35 раз
Поблагодарили: 6 раз

Re: Подключаем датчик открытия въездных ворот

Сообщение pdmitry2 » Вт май 21, 2013 1:53 am

Ура!) Спасибо огромное Сергей! Так всё работает!
pdmitry2
Сообщения: 90
Зарегистрирован: Ср фев 06, 2013 1:12 pm
Откуда: Россия, Москва
Благодарил (а): 35 раз
Поблагодарили: 6 раз

Re: Подключаем датчик открытия въездных ворот

Сообщение pdmitry2 » Ср май 22, 2013 1:36 pm

Похоже рано кричать "Ура") Как то не корректно работает. При любом значении выдаёт одно и то же.
Изображение

и statusText не меняется

Изображение

Изображение

Но радует, что хоть как то работает и прогресс на лицо ;)
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Подключаем датчик открытия въездных ворот

Сообщение sergejey » Ср май 22, 2013 2:52 pm

а попробуй в этом коде

if (isset($params['sensed.B'])) {
callMethod('Door.statusChanged',array('VALUE'=>$params['sensed.B']['VALUE']));
}

изменить на

if (isset($params['sensed.B'])) {
say("all params: ".serialize($params));
say("sensed.B: ".$params['sensed.B']);
callMethod('Door.statusChanged',array('VALUE'=>$params['sensed.B']['VALUE']));
}

и напиши что в чат будет выдавать при открытии/закрытии.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
pdmitry2
Сообщения: 90
Зарегистрирован: Ср фев 06, 2013 1:12 pm
Откуда: Россия, Москва
Благодарил (а): 35 раз
Поблагодарили: 6 раз

Re: Подключаем датчик открытия въездных ворот

Сообщение pdmitry2 » Ср май 22, 2013 3:08 pm

При открытии
16:05 : Входная дверь закрыта
16:05 : sensed.B: Array
16:05 : all params: a:3:{s:6:"memory";a:2:{s:9:"OLD_VALUE";s:0:"";s:5:"VALUE";s:0:"";}s:8:"sensed.B";a:2:{s:9:"OLD_VALUE";s:1:"1";s:5:"VALUE";s:1:"1";

При закрытии
16:06 : Входная дверь закрыта
16:06 : sensed.B: Array
16:06 : all params: a:1:{s:8:"sensed.B";a:2:{s:9:"OLD_VALUE";s:0:"";s:5:"VALUE";b:1;}}

Открыто
16:09 : Входная дверь закрыта
16:09 : sensed.B: Array
16:09 : all params: a:3:{s:6:"memory";a:2:{s:9:"OLD_VALUE";s:0:"";s:5:"VALUE";s:0:"";}s:8:"sensed.B";a:2:{s:9:"OLD_VALUE";s:1:"1";s:5:"VALUE";s:1:"1";

И опять закрыто
6:12 : Входная дверь закрыта
16:12 : sensed.B: Array
16:12 : all params: a:1:{s:8:"sensed.B";a:2:{s:9:"OLD_VALUE";s:0:"";s:5:"VALUE";b:1;}}
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Подключаем датчик открытия въездных ворот

Сообщение sergejey » Ср май 22, 2013 3:55 pm

класс! нашёлся баг :)
я обновил исходники, в частности файл modules\onewire\onewire.class.php
там была ошибка и похоже отправлялось не то значение (всегда 1 даже если в 1-wire устанавливалось в 0)

теперь можно обновиться из исходников, либо взять только указанный файл здесь: https://github.com/sergejey/majordomo/b ... .class.php

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
pdmitry2
Сообщения: 90
Зарегистрирован: Ср фев 06, 2013 1:12 pm
Откуда: Россия, Москва
Благодарил (а): 35 раз
Поблагодарили: 6 раз

Re: Подключаем датчик открытия въездных ворот

Сообщение pdmitry2 » Чт май 23, 2013 1:08 pm

Отлично! Вот теперь, работает как надо! Спасибо Сергей!
Ответить