общая ошибка в методах объектов связанных с 1-wire ?

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

Модератор: immortal

Ответить
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

общая ошибка в методах объектов связанных с 1-wire ?

Сообщение Vovix » Чт ноя 27, 2014 11:46 pm

Есть такая мысль, и мне кажется я прав:

большинство методов объектов типа tempChanged или statusChanged и т.п.
имеют у себя в коде функцию записи значения свойства изменение которого как раз и вызвало этот метод,

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

...
$this->setProperty('temp',$t);
...
но большая часть внутренних регистров (ячеек данных) элементов 1-wire являются READ ONLY
а назначение свойству объекта значения "насильно" приводит к попытке модулей PHP отвечающих за связку,
также "насильно" "вдолбить" это значение в 1-wire
результат=
мы имеем постоянные ошибки типа этой:

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

Notice: Read only value set#1 [/28.1DF3B9040000/temperature10] in C:\_majordomo\htdocs\modules\onewire\ownet.php on line 606    
а также "двойной проход" выполнения этих методов!

Из этой глобальной ошибки, уже и вытекают другие мелкие и крупные неприятности типа не обновления выключателей http://smartliving.ru/forum/viewtopic.php?f=4&t=1911 в меню и т.п. (лишние значения в истории например еще).

Если я прав, это надо решать на уровне именно модулей связи с устройствами 1-wire
либо вручную вычищать такие баги (для 1-wire) во всех методах!
Сергей, это видимо просьба к Вам!
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: общая ошибка в методах объектов связанных с 1-wire ?

Сообщение sergejey » Пт ноя 28, 2014 10:23 am

Если на обновление свойства status стоит вызов statusChanged, а в самом statusChanged так же стоит установка свойства status, то statusChanged будет вызван два раза. Собственно, это легко избежать -- просто убрать из кода метода установку этого же свойства.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

Re: общая ошибка в методах объектов связанных с 1-wire ?

Сообщение Vovix » Пт ноя 28, 2014 1:08 pm

sergejey писал(а):Если на обновление свойства status стоит вызов statusChanged, а в самом statusChanged так же стоит установка свойства status, то statusChanged будет вызван два раза. Собственно, это легко избежать -- просто убрать из кода метода установку этого же свойства.
Сергей, спасибо!
практически все предлагаемые на форуме примеры методов statusChanged имеют эту особенность

1) есть новички которые могут наступить на эти "грабли". Думаю им это будет полезно!
2) это напрямую связанно с ошибками обновления элементов меню!!!


З.Ы. Сергей, мне всё еще, очень, нужна Ваша помощь в теме - http://smartliving.ru/forum/viewtopic.p ... 1&start=20
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Ответить