Проблемы с OWFS

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

shurlin
Сообщения: 39
Зарегистрирован: Вс апр 22, 2012 3:18 pm
Благодарил (а): 0
Поблагодарили: 4 раза

Re: Проблемы с OWFS

Сообщение shurlin » Вт июн 19, 2012 10:47 am

Сергей,

тут вскрылилсь еще некоторые моменты. В паралельной ветке человек жалуется на то что объекты не сохраняют историю. У меня такая же тема касательно объектов для датчиков OneWire. То есть те объекты которые обновляются через Ардуину работают нормально, потому как идет вызов метода tempChanged. В объектах же 1-wire похоже что метод не вызывается, те инфа на них обновляется, но в историю она не попадает. Графики соотв. тоже не строятся.

Если вызвать метод из командной строки для конкретного датчика, то история сохранится.

Вопрос. Как правильно сделать вызов метода tempChanged в скриптах для конкретного дачтика, после обновления инфы на нем (тут даже не важно было изменение параметра или нет, просто после каждого обновления инфа должна попасть в историю)

И еще вопрос. На каком языке пишутся скрипты в объектах, где список функций можно глянуть и синтаксис.

Спасибо
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Проблемы с OWFS

Сообщение sergejey » Вт июн 19, 2012 2:46 pm

shurlin писал(а):Сергей,

тут вскрылилсь еще некоторые моменты. В паралельной ветке человек жалуется на то что объекты не сохраняют историю. У меня такая же тема касательно объектов для датчиков OneWire. То есть те объекты которые обновляются через Ардуину работают нормально, потому как идет вызов метода tempChanged. В объектах же 1-wire похоже что метод не вызывается, те инфа на них обновляется, но в историю она не попадает. Графики соотв. тоже не строятся.

Если вызвать метод из командной строки для конкретного датчика, то история сохранится.
Я обнаружил ещё одну проблему в самой последней версии кода -- как раз связанную с сохранением истории в 1wire. Обновил в исходниках один файл (./modules/objects/objects.class.php) -- можно только его заменить.
Вопрос. Как правильно сделать вызов метода tempChanged в скриптах для конкретного дачтика, после обновления инфы на нем (тут даже не важно было изменение параметра или нет, просто после каждого обновления инфа должна попасть в историю)
функция callMethod (или cm можно использовать)

вот пример
callMethod('mySensor1.tempChanged');

если нужно вызвать метод с параметрами, то так:
callMethod('mySensor1.tempChanged',array('myParam'=>'paramValue'));
в самом коде метода можно получить значение параметра обратившись к нему так: $params['myParam']

Но сейчас я думаю будет сохраняться история нормально и просто установкой значения. Кстати, в историю записывается каждое обновление, НО свойство должно быть задано на уровне родительского класса и в нём должна стоять галочка о том, чтобы хранить историю. Вот как здесь:

Изображение

свойство класса:

Изображение
И еще вопрос. На каком языке пишутся скрипты в объектах, где список функций можно глянуть и синтаксис.
Спасибо
Скрипты пишутся на PHP -- список функций можно найти в интернете. Кроме встроенных ещё есть добавленные мной в систему, про них можно прочитать здесь: http://smartliving.ru/Main/ProgrammingFunctions

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
shurlin
Сообщения: 39
Зарегистрирован: Вс апр 22, 2012 3:18 pm
Благодарил (а): 0
Поблагодарили: 4 раза

Re: Проблемы с OWFS

Сообщение shurlin » Вт июн 19, 2012 9:45 pm

Сергей, спасибо за развернутый ответ, но "не выходит у меня каменный цветок".

Файлы обновил, installed для верности стер, но то что хотел не получилось.

В общем, как я это понимаю.

Система после обновления данных с датчика OneWire должна обновить свойство объекта SensorOne, которое мы связали с температурой датчика (temperature). Пусть будет SensorOne.temp

локальная история самого датчика обновляется (это та что log), но история объекта (object history) SensorOne, который мы связали с датчиком не появлется, потому что мы не вызывали метод tempChanged.
В итоге если в разделе script мы пытаемся вызвать tempChanged для связаного объекта, получаем что метод стирает данные из свойства объекта, но хистори появляется (смотрим на график с нулевой температурой). То же происходит если мы делаем локальный метод tempChanged для данного объекта, в котором нет перезаписи свойства температуры вообще (только апдейтим свойства updated и updatedTime ). Получается что работа с объектом SensorOne как то влияет на свойства датчика к которому он привязан.

На выходе получаю что либо у связанного объекта нет хистори, и непонятно вообще, правильно ли строится график.

Либо получаю хистори у объекта, но свойтво temp в нем обнуляется.

В общем я либо запутался либо оно как то странно работает.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Проблемы с OWFS

Сообщение sergejey » Ср июн 20, 2012 12:34 am

object history отражает историю вызова методов класса. на самом деле эта история по сути ни к чему и ни на что не влияет. графики строятся исходя из изменений значений свойства, независимо от вызова методов класса и того, что находится в object history. так что по идее связи 1-wire свойства со свойством объекта уже достаточно.

в базе есть таблица phistory -- можно попробовать проследить какие записи появляются в ней при изменении 1wire параметра. если там изменения появляются, то система работает правильно и графики должны адекватно строиться.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
shurlin
Сообщения: 39
Зарегистрирован: Вс апр 22, 2012 3:18 pm
Благодарил (а): 0
Поблагодарили: 4 раза

Re: Проблемы с OWFS

Сообщение shurlin » Ср июн 20, 2012 10:52 am

Спасибо, за объяснения.

Я просто думал что график строиться именно исходя из object history.

Да, графики строятся и так. В принципе, больше от дачтиков температуры пока и не надо.
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 29 раз
Поблагодарили: 28 раз

Re: Проблемы с OWFS

Сообщение denis » Вс дек 09, 2012 10:14 am

Напишу здесь, вроде наибоее близко.
При работе под Windows выяснилась такая проблема - если отключить адаптер ds9490 (вынуть из USB) а потом вернуть его на место, то сервер owfs его обрано не "подхватывает". Т.е. приходится убивать процесс в дичспетчер задач, а затем заново запускать owserver. Не знаю как в Linux отрабатывается такая ситуация, но может есть кто знает? или есть какое-то другое решение проблемы? Также почему-то не более суток почему-то работает сервер owserver, а потом "теряет" адаптер. Или лучше заменить на адаптер с COM портом? может там таких пробелм нет?
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 29 раз
Поблагодарили: 28 раз

Re: Проблемы с OWFS

Сообщение denis » Ср дек 26, 2012 8:11 am

Продолжаю изучение 1wire. Под Ubuntu все вроде стоит хорошо, но не могу что-то настроить обновление параметров ключа ds2408 (управление через веб-интерфейс получилось, при изменении состояния ключей все работает) в двух ситуациях:
1. Датчик по каким-либо причинам отключался, а в это время в веб-интерфейсе нажимались кнопки "вкл-выкл"?
2. Как настроить уведомление о том, что из сети 1wire исчезло устройство (т.е. оно не отвечает)?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Проблемы с OWFS

Сообщение sergejey » Вт янв 08, 2013 8:43 pm

2. Как настроить уведомление о том, что из сети 1wire исчезло устройство (т.е. оно не отвечает)?
Не помню точно в какой теме спрашивалось, но отвечу тут )
В общем, в 1-wire можно задавать скрипт, который вызывается при изменении значений свойств 1-wire устройства. Сейчас я сделал так, что б этот же скрипт вызывался и при изменении статуса устройства в целом -- т.е. когда система не смогла до него вовсе достучаться. При вызове передаётся параметр $params['STATUS_CHANGED']

Т.е. в скрипт обработки события можно добавить вот такую логику:

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

if ($params['STATUS_CHANGED']) {
 if ($params['STATUS']) {
  say("Устройство в сети");
 } else {
  say("Устройство недоступно");
 }
}

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Проблемы с OWFS

Сообщение Alex » Ср янв 09, 2013 12:18 am

При работе под Windows выяснилась такая проблема - если отключить адаптер ds9490 (вынуть из USB) а потом вернуть его на место...
Зачем??? Зачем его отключать (вообще трогать)?
...почему-то не более суток почему-то работает сервер owserver, а потом "теряет" адаптер.
У меня такое наблюдалось с ключём —debug, а без ключа работает и не виснет.

Интересно как у других работает 1-Wire под Windows?
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 29 раз
Поблагодарили: 28 раз

Re: Проблемы с OWFS

Сообщение denis » Ср янв 09, 2013 8:56 am

Зачем его отключать? )) - чтобы понять надежность системы, её способность к восстановлению. Я для эксперимента поставил Ubuntu - там все ОК - отключил-подключил - owfs нормально находит адаптер. Вообще проблема заклчается именно в том, что под Виндами адаптер "отваливался". Как я вижу решение проблемы в использовании Java из примеров Dallas/Maxim там вроде железно все работает в отличие от "костылей" owfs. Нужно только найти того кто прикрутит 1wire+Java к проекту. Готов помочь энтузиасту материально в разумных пределах ;)

Сергей, спасибо! - попробую.
Ответить