Простые устройства / Simple Devices

Новые релизы, обновления и т.п.

Модератор: immortal

Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Простые устройства / Simple Devices

Сообщение Divan » Вс окт 20, 2019 1:01 pm

Хочу понять ошибку. У меня имеется выключатель без обратной связи. Есть вопросы про статус. Я настроил выключатели с помощью методов turnOn и turnOff. Кросс-вызов метода не наблюдается. Настроил блокировку на запуск метода turnOn, метод turnOn запускается, только, если я дома, в ночное время тоже не запускается. Но мне не понятно одно, когда стоит блокировка метода и я запускаю метод turnOn, свет не включается, но в свойстве статус стоит значение 1, индикатор выключателя горит, а по факту свет не включен. Это моя ошибка или системы?

В меню управления я настроил выключатель так
СпойлерПоказать
Снимок1.JPG
Снимок1.JPG (51.72 КБ) 3633 просмотра
В методе turnOn я настроил блокировку на запуск метода - метод запустится, если я дома. В настройке "Вызывать родительский метод" я поставил галочку "перед выполнением кода". Если выбрать никогда, то метод не вызывает родительский метод, но тогда не будет работать запуск метода.
СпойлерПоказать
Снимок4.JPG
Снимок4.JPG (23.79 КБ) 3626 просмотров
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Простые устройства / Simple Devices

Сообщение nick7zmail » Вс окт 20, 2019 1:57 pm

1) Чисто в теории ноубодихоуммод - это режим "никого нет дома". Т.е. когда вы дома он по логике должен быть выключен (=0)...а вы при включенном метод запускаете. Это раз. Ну это так...к логике придирка...
2) По вашему случаю - метод то вы заблокировали, а изменение свойства то кто блокировать будет? Оно зависит от того - как вы вызываете смену статуса выключателя. Эту блокировку либо на том уровне надо ставить, либо здесь уже постфактум возвращать в 0 (то есть добавить к если блок иначе, и принудительно статус в 0 поставить. Но я бы блокировку уровнем выше произвёл бы, там где вызывается включение выключателя.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Простые устройства / Simple Devices

Сообщение Divan » Вс окт 20, 2019 2:28 pm

1) у меня Кто-то дома настроен иначе, я создал объект DivanHomeMode и имеются значения 0, 1 и 2. Где 0 - не дома, 1 - дома, 2 - сплю. Если меня нет дома, то методы и сценария не будут запускаться, если я сплю, то дневные сценария также не будут запускаться. В методе turnOn я указал что метод можно запускать, если я дома, когда значение имеет 1.

2) Я правильно понимаю, что в методе statusUpdated тоже нужно ставить блокировку? Например так, если меня нет дома и если при запуске метода turnOn у switch.status будет стоять значение 1, то поставить 0. Просто я думал, что этот способ не верный или это действительно не верный способ?

3) В родительском методе прописана своя логика require(DIR_MODULES.'devices/SControllers_turnOn.php'); или require(DIR_MODULES.'devices/SControllers_turnOff.php');. Какой нужно прописать код, чтобы запускался метод?
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 317 раз
Поблагодарили: 466 раз

Re: Простые устройства / Simple Devices

Сообщение Logrus » Вс окт 20, 2019 2:36 pm

Divan писал(а):
Вс окт 20, 2019 1:01 pm
Я настроил выключатели с помощью методов turnOn и turnOff. Кросс-вызов метода не наблюдается.
:D
Divan писал(а):
Вс окт 20, 2019 1:01 pm
Настроил блокировку на запуск метода turnOn, метод turnOn запускается, только, если я дома, в ночное время тоже не запускается. Но мне не понятно одно, когда стоит блокировка метода и я запускаю метод turnOn, свет не включается, но в свойстве статус стоит значение 1, индикатор выключателя горит, а по факту свет не включен. Это моя ошибка или системы?
1.PNG
1.PNG (30.56 КБ) 3601 просмотр
здесь можно ничего не дописывать, а просто выбрать вызывать родительский после
но это при такой реализации
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Простые устройства / Simple Devices

Сообщение Divan » Вс окт 20, 2019 2:48 pm

Я так делал, но в таком случае не запускается метод turnOn. Что происходит? Пришел домой, у объекта Кто-то дома DivanHomeMode выставляется значение 1 и запускается метод turnOn для выключателя. Если я выберу "Никогда", то свет не включится, а статус выставляется 1 и показывает что свет включился, если я выберу запускать родительский метод перед выполнением кода, то свет включится и статус будет 1. Видимо вся проблема в логике родительского метода. Может нужно удалить стандартный код require(DIR_MODULES.'devices/SControllers_turnOn.php'); и прописать свой код, только вот какой код прописать?
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Простые устройства / Simple Devices

Сообщение Divan » Вс окт 20, 2019 2:55 pm

А если я в родительском методе turnOn пропишу код $this->setProperty("status",1);, то после обновления MD этот код не сотрется?
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Простые устройства / Simple Devices

Сообщение nick7zmail » Вс окт 20, 2019 3:05 pm

Divan писал(а):
Вс окт 20, 2019 2:28 pm
3) В родительском методе прописана своя логика require(DIR_MODULES.'devices/SControllers_turnOn.php'); или require(DIR_MODULES.'devices/SControllers_turnOff.php');. Какой нужно прописать код, чтобы запускался метод?
В turnOn/TurnOff особо логики никакой нет. Они просто меняют свойства на 1/0 при вызове. Трогать require соответственно не надо...
В своё время в модуле бродлинка тоже в turnOn/turnOff рекомендовал вписывать код включения/выключения радиовыключателей. Пока это не доходило до подобных тонкостей. Потом выяснилось что таки привильнее вписывать в statusUpdated, и статья чуть поправилась https://kb.mjdm.ru/broadlink_rm_switch_sd/. Т.е. основное действие должно происходить в statusUpdated. Отключать родительские методы тоже не стоит. И всё равно в вашем случае не вижу полной картины...откуда вызывается смена статуса выключателя, каким кодом... Код блокировки показали, ок...но там ссылка почему то на darknessMode, а не на NobodyHome как вы говорили...в любом случае чтобы что то дельное посоветовать - нужна полная картина.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 317 раз
Поблагодарили: 466 раз

Re: Простые устройства / Simple Devices

Сообщение Logrus » Вс окт 20, 2019 3:25 pm

nick7zmail писал(а):
Вс окт 20, 2019 3:05 pm
Отключать родительские методы тоже не стоит.
у меня у большинства вызов родительского либо поменян, либо отключен
просто нужно понимать (а там они даже в разных потоках запускаются)

ну и структуру ПУ понять, то ТС в трех березах бродит и чето там мутит через тернии :lol:
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Простые устройства / Simple Devices

Сообщение Divan » Вс окт 20, 2019 3:52 pm

я отказался от такого способа https://kb.mjdm.ru/broadlink_rm_switch_sd/. Проще тогда в методе statusUpdated прописать правило, что если я не дома, то при статусе 1 текущего объекта, установить 0, а в методах turnOn/turnOff не отключать родительский вызов, тогда и методы будут отрабатывать и статус будет работать верно.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Простые устройства / Simple Devices

Сообщение nick7zmail » Вс окт 20, 2019 10:44 pm

Divan писал(а):
Вс окт 20, 2019 2:55 pm
А если я в родительском методе turnOn пропишу код $this->setProperty("status",1);, то после обновления MD этот код не сотрется?
не сотрется.
За это сообщение автора nick7zmail поблагодарил:
Divan (Пн окт 21, 2019 1:25 am)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить