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

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

Модератор: immortal

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

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

Сообщение Divan »

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

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

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

Сообщение nick7zmail »

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

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

Сообщение Divan »

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

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

Сообщение Logrus »

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 КБ) 4042 просмотра
здесь можно ничего не дописывать, а просто выбрать вызывать родительский после
но это при такой реализации
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm

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

Сообщение Divan »

Я так делал, но в таком случае не запускается метод 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

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

Сообщение Divan »

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

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

Сообщение nick7zmail »

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

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

Сообщение Logrus »

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

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

Сообщение Divan »

я отказался от такого способа 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
Откуда: Екатеринбург

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

Сообщение nick7zmail »

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