Рассуждения по поводу statusChanged

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

Модератор: immortal

PAV
Сообщения: 968
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Рассуждения по поводу statusChanged

Сообщение PAV » Пт сен 26, 2014 10:21 am

Все, доперло. Тогда так.
Объект Дверь, Объект Калитка - у каждого свойство status с запуском statusChanged объекта Звонок, Объект Звонок.
Я так понимаю, что по умолчанию у всех статус ноль.
При срабатывании кнопки калитки или двери меняется статус калитки или двери с запуском звонок.statusChanged, который присваивает себе статус 1, воспроизводит звук и обнуляет статус у калитки, двери и себя (ну чтобы второе нажатие обработать)
Ткнули дверь - звонок, ткнули калитку - звонок.
Пойдет или я недопонял опять чего?
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Рассуждения по поводу statusChanged

Сообщение Bagir » Пт сен 26, 2014 10:33 am

Немного не так.
Суть даже не в объекте Звонок. Ситуация с дверями просто для примера.
Свойство status у объекта Дверь меняется путем запуск его метода statusChanged, с передачей свойства.
Свойство status у объекта Калитка меняется без запуска его метода statusChanged т.к. слинковано с датчиком Z-Wave.
Получается, что в случае с Калиткой, нам было бы удобно указать у класса этих объектов, что при изменении свойства status надо запустить метод statusChanged, но этого делать так просто нельзя, т.к. для объекта Дверь, мы уже сами запускаем statusChanged для передачи свойство status.

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

Если будут правила, то например такая ситуация, как замена датчика, который ранее отправлял данные например через ардуино или мегади на датчик z-wave или другой с линкованным свойством будет вообще без изменения кода.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
PAV
Сообщения: 968
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Рассуждения по поводу statusChanged

Сообщение PAV » Пт сен 26, 2014 11:00 am

Я честно не пойму ваших метаний. Унифицировать обработку приходящих данных смысла нет ибо сама передача данных разная, как вы сами говорите - где-то слинковано, где-то через get.
Вы ставьте условие задачи и говорите, что хотите получить, а то абстрактно тяжеловато рассуждать.
В предыдущем сообщении я вообще не понял как связаны статусы и status.changed Двери и Калитки, что нельзя вызвать status.changed калитки не затронув двери.
Если проблема пересечения и двойного сигнала, ну так выведите их за скобки, добавьте объект Звонок, как я описал и будет счастье - завтра поменяете кнопку калитки с я-wave на ардуину например и просто укажите ардуине отправлять данные Звонку, а сам код Звонка и не поменяется. Заменили кнопку двери с ардуины на z-wave, слинкуйте его со статусом и поставьте галочку вызывать Звонок, код Звонка опять не меняется.
Посмотрите, в общем, на вопрос с другой стороны ;)
PAV
Сообщения: 968
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Рассуждения по поводу statusChanged

Сообщение PAV » Пт сен 26, 2014 11:05 am

Ой, дошло до меня. А вы не путаете метод класса и метод объекта???
Но класс то один, и правила общие.
Класс один, но есть методы общие, а есть по каждому объекту - вот и настраивайте в общих методах всякие там timestamp и проч, а вот в методах КАЖДОГО объекта уже что каждый объект должен делать.
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Рассуждения по поводу statusChanged

Сообщение Bagir » Пт сен 26, 2014 11:07 am

Нет, ну что вы )) конечно же не путаю и знаю что и для чего.
Ну вообще я как раз так и сделал. Сейчас для z-wave у меня создан отдельный класс, объекты которого слинкованы с железом и после изменения свойств, отправляют их дальше в объекты классов keySensors или tempSensors способом запуска метода statusChanged.
Возможно и вправду не стоит ничего тут пересматривать. Время покажет.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить