Все, доперло. Тогда так.
Объект Дверь, Объект Калитка - у каждого свойство status с запуском statusChanged объекта Звонок, Объект Звонок.
Я так понимаю, что по умолчанию у всех статус ноль.
При срабатывании кнопки калитки или двери меняется статус калитки или двери с запуском звонок.statusChanged, который присваивает себе статус 1, воспроизводит звук и обнуляет статус у калитки, двери и себя (ну чтобы второе нажатие обработать)
Ткнули дверь - звонок, ткнули калитку - звонок.
Пойдет или я недопонял опять чего?
Рассуждения по поводу statusChanged
Модератор: immortal
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Рассуждения по поводу statusChanged
Немного не так.
Суть даже не в объекте Звонок. Ситуация с дверями просто для примера.
Свойство status у объекта Дверь меняется путем запуск его метода statusChanged, с передачей свойства.
Свойство status у объекта Калитка меняется без запуска его метода statusChanged т.к. слинковано с датчиком Z-Wave.
Получается, что в случае с Калиткой, нам было бы удобно указать у класса этих объектов, что при изменении свойства status надо запустить метод statusChanged, но этого делать так просто нельзя, т.к. для объекта Дверь, мы уже сами запускаем statusChanged для передачи свойство status.
Решить эту конкретную задачу совсем не сложно, такого вопроса у меня нет. Просто я вижу, что нет общих правил. Вот об этом и хотелось поговорить.
Если будут правила, то например такая ситуация, как замена датчика, который ранее отправлял данные например через ардуино или мегади на датчик z-wave или другой с линкованным свойством будет вообще без изменения кода.
Суть даже не в объекте Звонок. Ситуация с дверями просто для примера.
Свойство status у объекта Дверь меняется путем запуск его метода statusChanged, с передачей свойства.
Свойство status у объекта Калитка меняется без запуска его метода statusChanged т.к. слинковано с датчиком Z-Wave.
Получается, что в случае с Калиткой, нам было бы удобно указать у класса этих объектов, что при изменении свойства status надо запустить метод statusChanged, но этого делать так просто нельзя, т.к. для объекта Дверь, мы уже сами запускаем statusChanged для передачи свойство status.
Решить эту конкретную задачу совсем не сложно, такого вопроса у меня нет. Просто я вижу, что нет общих правил. Вот об этом и хотелось поговорить.
Если будут правила, то например такая ситуация, как замена датчика, который ранее отправлял данные например через ардуино или мегади на датчик z-wave или другой с линкованным свойством будет вообще без изменения кода.
-
- Сообщения: 968
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 71 раз
- Поблагодарили: 95 раз
Re: Рассуждения по поводу statusChanged
Я честно не пойму ваших метаний. Унифицировать обработку приходящих данных смысла нет ибо сама передача данных разная, как вы сами говорите - где-то слинковано, где-то через get.
Вы ставьте условие задачи и говорите, что хотите получить, а то абстрактно тяжеловато рассуждать.
В предыдущем сообщении я вообще не понял как связаны статусы и status.changed Двери и Калитки, что нельзя вызвать status.changed калитки не затронув двери.
Если проблема пересечения и двойного сигнала, ну так выведите их за скобки, добавьте объект Звонок, как я описал и будет счастье - завтра поменяете кнопку калитки с я-wave на ардуину например и просто укажите ардуине отправлять данные Звонку, а сам код Звонка и не поменяется. Заменили кнопку двери с ардуины на z-wave, слинкуйте его со статусом и поставьте галочку вызывать Звонок, код Звонка опять не меняется.
Посмотрите, в общем, на вопрос с другой стороны
Вы ставьте условие задачи и говорите, что хотите получить, а то абстрактно тяжеловато рассуждать.
В предыдущем сообщении я вообще не понял как связаны статусы и status.changed Двери и Калитки, что нельзя вызвать status.changed калитки не затронув двери.
Если проблема пересечения и двойного сигнала, ну так выведите их за скобки, добавьте объект Звонок, как я описал и будет счастье - завтра поменяете кнопку калитки с я-wave на ардуину например и просто укажите ардуине отправлять данные Звонку, а сам код Звонка и не поменяется. Заменили кнопку двери с ардуины на z-wave, слинкуйте его со статусом и поставьте галочку вызывать Звонок, код Звонка опять не меняется.
Посмотрите, в общем, на вопрос с другой стороны

-
- Сообщения: 968
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 71 раз
- Поблагодарили: 95 раз
Re: Рассуждения по поводу statusChanged
Ой, дошло до меня. А вы не путаете метод класса и метод объекта???
Класс один, но есть методы общие, а есть по каждому объекту - вот и настраивайте в общих методах всякие там timestamp и проч, а вот в методах КАЖДОГО объекта уже что каждый объект должен делать.Но класс то один, и правила общие.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Рассуждения по поводу statusChanged
Нет, ну что вы )) конечно же не путаю и знаю что и для чего.
Ну вообще я как раз так и сделал. Сейчас для z-wave у меня создан отдельный класс, объекты которого слинкованы с железом и после изменения свойств, отправляют их дальше в объекты классов keySensors или tempSensors способом запуска метода statusChanged.
Возможно и вправду не стоит ничего тут пересматривать. Время покажет.
Ну вообще я как раз так и сделал. Сейчас для z-wave у меня создан отдельный класс, объекты которого слинкованы с железом и после изменения свойств, отправляют их дальше в объекты классов keySensors или tempSensors способом запуска метода statusChanged.
Возможно и вправду не стоит ничего тут пересматривать. Время покажет.