Страница 2 из 9
Re: Проблемы с OWFS
Добавлено: Вт июн 19, 2012 10:47 am
shurlin
Сергей,
тут вскрылилсь еще некоторые моменты. В паралельной ветке человек жалуется на то что объекты не сохраняют историю. У меня такая же тема касательно объектов для датчиков OneWire. То есть те объекты которые обновляются через Ардуину работают нормально, потому как идет вызов метода tempChanged. В объектах же 1-wire похоже что метод не вызывается, те инфа на них обновляется, но в историю она не попадает. Графики соотв. тоже не строятся.
Если вызвать метод из командной строки для конкретного датчика, то история сохранится.
Вопрос. Как правильно сделать вызов метода tempChanged в скриптах для конкретного дачтика, после обновления инфы на нем (тут даже не важно было изменение параметра или нет, просто после каждого обновления инфа должна попасть в историю)
И еще вопрос. На каком языке пишутся скрипты в объектах, где список функций можно глянуть и синтаксис.
Спасибо
Re: Проблемы с OWFS
Добавлено: Вт июн 19, 2012 2:46 pm
sergejey
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
Re: Проблемы с OWFS
Добавлено: Вт июн 19, 2012 9:45 pm
shurlin
Сергей, спасибо за развернутый ответ, но "не выходит у меня каменный цветок".
Файлы обновил, installed для верности стер, но то что хотел не получилось.
В общем, как я это понимаю.
Система после обновления данных с датчика OneWire должна обновить свойство объекта SensorOne, которое мы связали с температурой датчика (temperature). Пусть будет SensorOne.temp
локальная история самого датчика обновляется (это та что log), но история объекта (object history) SensorOne, который мы связали с датчиком не появлется, потому что мы не вызывали метод tempChanged.
В итоге если в разделе script мы пытаемся вызвать tempChanged для связаного объекта, получаем что метод стирает данные из свойства объекта, но хистори появляется (смотрим на график с нулевой температурой). То же происходит если мы делаем локальный метод tempChanged для данного объекта, в котором нет перезаписи свойства температуры вообще (только апдейтим свойства updated и updatedTime ). Получается что работа с объектом SensorOne как то влияет на свойства датчика к которому он привязан.
На выходе получаю что либо у связанного объекта нет хистори, и непонятно вообще, правильно ли строится график.
Либо получаю хистори у объекта, но свойтво temp в нем обнуляется.
В общем я либо запутался либо оно как то странно работает.
Re: Проблемы с OWFS
Добавлено: Ср июн 20, 2012 12:34 am
sergejey
object history отражает историю вызова методов класса. на самом деле эта история по сути ни к чему и ни на что не влияет. графики строятся исходя из изменений значений свойства, независимо от вызова методов класса и того, что находится в object history. так что по идее связи 1-wire свойства со свойством объекта уже достаточно.
в базе есть таблица phistory -- можно попробовать проследить какие записи появляются в ней при изменении 1wire параметра. если там изменения появляются, то система работает правильно и графики должны адекватно строиться.
Re: Проблемы с OWFS
Добавлено: Ср июн 20, 2012 10:52 am
shurlin
Спасибо, за объяснения.
Я просто думал что график строиться именно исходя из object history.
Да, графики строятся и так. В принципе, больше от дачтиков температуры пока и не надо.
Re: Проблемы с OWFS
Добавлено: Вс дек 09, 2012 10:14 am
denis
Напишу здесь, вроде наибоее близко.
При работе под Windows выяснилась такая проблема - если отключить адаптер ds9490 (вынуть из USB) а потом вернуть его на место, то сервер owfs его обрано не "подхватывает". Т.е. приходится убивать процесс в дичспетчер задач, а затем заново запускать owserver. Не знаю как в Linux отрабатывается такая ситуация, но может есть кто знает? или есть какое-то другое решение проблемы? Также почему-то не более суток почему-то работает сервер owserver, а потом "теряет" адаптер. Или лучше заменить на адаптер с COM портом? может там таких пробелм нет?
Re: Проблемы с OWFS
Добавлено: Ср дек 26, 2012 8:11 am
denis
Продолжаю изучение 1wire. Под Ubuntu все вроде стоит хорошо, но не могу что-то настроить обновление параметров ключа ds2408 (управление через веб-интерфейс получилось, при изменении состояния ключей все работает) в двух ситуациях:
1. Датчик по каким-либо причинам отключался, а в это время в веб-интерфейсе нажимались кнопки "вкл-выкл"?
2. Как настроить уведомление о том, что из сети 1wire исчезло устройство (т.е. оно не отвечает)?
Re: Проблемы с OWFS
Добавлено: Вт янв 08, 2013 8:43 pm
sergejey
2. Как настроить уведомление о том, что из сети 1wire исчезло устройство (т.е. оно не отвечает)?
Не помню точно в какой теме спрашивалось, но отвечу тут )
В общем, в 1-wire можно задавать скрипт, который вызывается при изменении значений свойств 1-wire устройства. Сейчас я сделал так, что б этот же скрипт вызывался и при изменении статуса устройства в целом -- т.е. когда система не смогла до него вовсе достучаться. При вызове передаётся параметр $params['STATUS_CHANGED']
Т.е. в скрипт обработки события можно добавить вот такую логику:
Код: Выделить всё
if ($params['STATUS_CHANGED']) {
if ($params['STATUS']) {
say("Устройство в сети");
} else {
say("Устройство недоступно");
}
}
Re: Проблемы с OWFS
Добавлено: Ср янв 09, 2013 12:18 am
Alex
При работе под Windows выяснилась такая проблема - если отключить адаптер ds9490 (вынуть из USB) а потом вернуть его на место...
Зачем??? Зачем его отключать (вообще трогать)?
...почему-то не более суток почему-то работает сервер owserver, а потом "теряет" адаптер.
У меня такое наблюдалось с ключём —debug, а без ключа работает и не виснет.
Интересно как у других работает 1-Wire под Windows?
Re: Проблемы с OWFS
Добавлено: Ср янв 09, 2013 8:56 am
denis
Зачем его отключать? )) - чтобы понять надежность системы, её способность к восстановлению. Я для эксперимента поставил Ubuntu - там все ОК - отключил-подключил - owfs нормально находит адаптер. Вообще проблема заклчается именно в том, что под Виндами адаптер "отваливался". Как я вижу решение проблемы в использовании Java из примеров Dallas/Maxim там вроде железно все работает в отличие от "костылей" owfs. Нужно только найти того кто прикрутит 1wire+Java к проекту. Готов помочь энтузиасту материально в разумных пределах
Сергей, спасибо! - попробую.