Узнать имя класса

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

Модератор: immortal

Ответить
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Узнать имя класса

Сообщение Bagir » Вс авг 24, 2014 6:47 pm

Веду опрос всех объектов класса keySensors. В нем есть подкласс inhouseMovementSensors. Подскажите как узнать имя класса, объект которого я опрашиваю. То есть нужно понять, объект принадлежит подклассу inhouseMovementSensors, классу keySensors, или же какому то другому подклассу класса keySensors.

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

$objects=getObjectsByClass("keySensors");
foreach($objects as $obj) {
$obj=getObject($obj['TITLE']);
echo '<br />';
echo $obj->id.'  ';
echo $obj->object_title.'  ';
echo $obj->getProperty('status').'  ';
echo $obj->description.'  ';
} 
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: Узнать имя класса

Сообщение Ivan » Пн авг 25, 2014 8:03 am

Зачем такие трудности. Выбирай сразу getObjectsByClass('inhouseMovementSensors')
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Узнать имя класса

Сообщение Bagir » Пн авг 25, 2014 11:05 am

Но если с этим трудности, то конечно решу по другому. Для определенных классов я уже написал отдельные проверки. А эта проверка общая. Вот и выбираю общий класс getObjectsByClass("keySensors"); Но для составления сообщения, я использую текст из "описания" датчиков. И для разных классов нужно добавить вперед или назад разные слова. Вот мне и хотелось узнать, датчик какого подкласса я сейчас опрашиваю.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Узнать имя класса

Сообщение sergejey » Пн авг 25, 2014 12:45 pm

после getObject доступно поле $obj->class_id и можно выполнить запрос

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

$class=SQLSelectOne("SELECT * FROM classes WHERE ID='".(int)$obj->class_id."'"); 
затем в $class['TITLE'] будет имя класса. не очень оптимально, но вполне будет работать.
За это сообщение автора sergejey поблагодарил:
Bagir (Пн авг 25, 2014 1:23 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Узнать имя класса

Сообщение Bagir » Пн авг 25, 2014 1:24 pm

Большое спасибо!
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Узнать имя класса

Сообщение Bagir » Пт сен 05, 2014 10:25 pm

Сегодня, пока ползал на чердаке с воздуховодами вентиляции, зацепил провод от датчика дыма. Испытание контроля датчика на обрыв прошло успешно! Алиса вскоре доложила о поломке, и перед названием датчика, было добавлено слово "Пожарные". Хоть я и ранее все это протестил, но тут уже реальный обрыв линии а не тесты, где обычно все проходит на ура.
Вернулся в эту тему еще раз поблагодарить за подсказку. Как то так получилось, что я сразу привязался к $obj->description, и использую то, что там написано для идентификации датчика.
А почему предложенный способ не очень оптимальный? Вроде как в этой таблице не так уж много записей, и условие WHERE ID= тут идеально для получения единственной строки. Я немного дружу со скулем, так что похоже надо заняться изучением базы данных. Тут столько интересного можно набрать ))
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить