Будете в Питере с меня Пиво. Уж часто мне помогаете.olehs писал(а):Как часто Вы собираетесь создавать 250 датчиков? Если часто, создайте сценарий.
А так, забейте имена классов в массив и по нему создайте объекты.Как-то так. Потом лишние проще удалить.Код: Выделить всё
$classes = array("Door", "InPir", "OutPir", "Window"); $rooms = getObjectsByClass("Rooms"); for($k=0; $k<count($rooms); $k++) { $room = $rooms[$k]; for($j=0; $j<count($classes); $j++) { $class = $classes[$j]; $objName = $room.$class; addClassObject($class, $objName); sg($objName.".LinkedRoom", $room); } }
Как лучше? Сенсоры по категориям или в каждую комнату?
Модератор: immortal
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Как лучше? Сенсоры по категориям или в каждую комнату?
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
-
- Сообщения: 1115
- Зарегистрирован: Вс июн 14, 2015 11:08 am
- Благодарил (а): 85 раз
- Поблагодарили: 342 раза
Re: Как лучше? Сенсоры по категориям или в каждую комнату?
Все верно. LinkedRoom должно спускаться еще от Sensors. Но если бы и не было, setGlobal создало бы его у экземпляра объекта.
))
Да это не сложно вовсе, помощью даже тяжело назвать. Скорее подсказываю, или делюсь опытомУж часто мне помогаете.

- Рейтинг: 1.16%
-
- Сообщения: 41
- Зарегистрирован: Чт дек 03, 2015 4:19 pm
- Откуда: Калуга
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Как лучше? Сенсоры по категориям или в каждую комнату?
1. Ответ на вопрос темы - как я понял из обсуждений останавливаемся на варианте датчики к датчикам, комнаты к комнатам.
2. Класс датчики.
Из приведенных выше примеров название датчика, как правило состоит из типа датчика (выключателя) и места установки TempHall, а также описание. На Вашем сайте я много датчиков не увидел, поэтому пример Relay ->Ligth -> KitchenChandelier - Люстра на Кухни, а можно R1 - Люстра на Кухни, R2 - Разделочный стол на кухне и тд. Мое мнение описание дает больше информации чем замысловатое название. Имена должны быть уникальные. Можно клонировать (свойства наследуются)
Определяемся со свойствами. Результатом работы датчика (а также и выключателя) могут быть значения вкл/выкл (или 1/0) или конкретные значения (для аналоговых и цифровых датчиков, теоретически для диммеров).
В систему заложена функция опроса объектов и запись значений в таблицу history. (Наверное значения состояния датчика правильнее считывать из таблицы???) Как точно это работает пока не разобрался, но думаю эта функция позволяет свойства объекта например кухня укрупнять (например свойства охрана, пожар, протечка, газ объединить в свойство тревога. Опрашиваем состояние датчиков, сравниваем с предыдущим состоянием и выдаем сообщение например на кухне тревога, протечка воды, в квартире никого нет, квартира находится под охраной, стояк на кухне перекрыт) Также некоторые датчики в связке с исполнительным устройством работают "самостоятельно" без МЖД. Те МЖД опрашивая систему получает информацию датчик сработал устройство включилось.
Это я к тому, что свойства датчиков жив, мертв, предыдущее состояние и тд наверное избыточно.
Хотя возможно все работает не так.
По автоматизации ввода. 500 -1000 объектов это не цифра для автоматизации. Если большие объекты - прокладка кабелей, подключение, настройка будут стоить в разы дороже оплаты 2-3 дней работы человека, который введет в МЖД несколько тысяч объектов.
2. Класс датчики.
Из приведенных выше примеров название датчика, как правило состоит из типа датчика (выключателя) и места установки TempHall, а также описание. На Вашем сайте я много датчиков не увидел, поэтому пример Relay ->Ligth -> KitchenChandelier - Люстра на Кухни, а можно R1 - Люстра на Кухни, R2 - Разделочный стол на кухне и тд. Мое мнение описание дает больше информации чем замысловатое название. Имена должны быть уникальные. Можно клонировать (свойства наследуются)
Определяемся со свойствами. Результатом работы датчика (а также и выключателя) могут быть значения вкл/выкл (или 1/0) или конкретные значения (для аналоговых и цифровых датчиков, теоретически для диммеров).
В систему заложена функция опроса объектов и запись значений в таблицу history. (Наверное значения состояния датчика правильнее считывать из таблицы???) Как точно это работает пока не разобрался, но думаю эта функция позволяет свойства объекта например кухня укрупнять (например свойства охрана, пожар, протечка, газ объединить в свойство тревога. Опрашиваем состояние датчиков, сравниваем с предыдущим состоянием и выдаем сообщение например на кухне тревога, протечка воды, в квартире никого нет, квартира находится под охраной, стояк на кухне перекрыт) Также некоторые датчики в связке с исполнительным устройством работают "самостоятельно" без МЖД. Те МЖД опрашивая систему получает информацию датчик сработал устройство включилось.
Это я к тому, что свойства датчиков жив, мертв, предыдущее состояние и тд наверное избыточно.
Хотя возможно все работает не так.
По автоматизации ввода. 500 -1000 объектов это не цифра для автоматизации. Если большие объекты - прокладка кабелей, подключение, настройка будут стоить в разы дороже оплаты 2-3 дней работы человека, который введет в МЖД несколько тысяч объектов.
- Вложения
-
- Таблица history.jpg (17.14 КБ) 6981 просмотр
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Как лучше? Сенсоры по категориям или в каждую комнату?
А мне больше нравится у объекта спальня иметь свойство температура со значением температуры в спальне. Датчик заведен в мегад и связан через модуль со свойством температура объекта спальня.
И да, CMS позволяет не лазить в таблицы, а пользоваться оберткой gg. Это, кстати, есть на сайте, прочитайте.
И да, CMS позволяет не лазить в таблицы, а пользоваться оберткой gg. Это, кстати, есть на сайте, прочитайте.
-
- Сообщения: 1115
- Зарегистрирован: Вс июн 14, 2015 11:08 am
- Благодарил (а): 85 раз
- Поблагодарили: 342 раза
Re: Как лучше? Сенсоры по категориям или в каждую комнату?
У меня по-началу, когда был один датчик температуры в комнате, тоже объект драйвера писал напрямую в свойство объекта комнаты.
Но когда их стало два или больше, появились промежуточные объекты - датчики.
Теперь драйверы (MySensors, BroadLink...) пишут значения в свойства объектов датчиков. Те, в свою очередь, при изменении значения, вызывают метод, который проходится по датчикам комнаты, вычисляет среднее значение и пишет его в темппературу объекта комнаты.
Но когда их стало два или больше, появились промежуточные объекты - датчики.
Теперь драйверы (MySensors, BroadLink...) пишут значения в свойства объектов датчиков. Те, в свою очередь, при изменении значения, вызывают метод, который проходится по датчикам комнаты, вычисляет среднее значение и пишет его в темппературу объекта комнаты.
- За это сообщение автора olehs поблагодарил:
- ErmolenkoM (Пт мар 18, 2016 11:15 am)
- Рейтинг: 1.16%
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Как лучше? Сенсоры по категориям или в каждую комнату?
А как узнать существует объект или нет?
И как добавить описание к объекту?
Из скрипта конечно..
И как добавить описание к объекту?
Из скрипта конечно..
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
-
- Сообщения: 1115
- Зарегистрирован: Вс июн 14, 2015 11:08 am
- Благодарил (а): 85 раз
- Поблагодарили: 342 раза
Re: Как лучше? Сенсоры по категориям или в каждую комнату?
lanket писал(а):А как узнать существует объект или нет?
Код: Выделить всё
!!getObject('ObjectName')
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Как лучше? Сенсоры по категориям или в каждую комнату?
В том же файле функция addClassObject имеет только 2 аргумента Имя обекта и класс к котору принадлежит.
А если посмотреть в majordomo-master\modules\objects\objects_edit.inc.php то там описание добаляется напряму в базу без всяких ооп приблуд
А если посмотреть в majordomo-master\modules\objects\objects_edit.inc.php то там описание добаляется напряму в базу без всяких ооп приблуд
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
-
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
- Благодарил (а): 49 раз
- Поблагодарили: 327 раз
Re: Как лучше? Сенсоры по категориям или в каждую комнату?
оооо. Еле осилил ваш поток сознания. Долго отсутствовал по причине РАБОТА. И тут такая тема.
Надеюсь буду краток.
Мои объекты зашифрованы: "5588245-24bit-P1" наверно вот это имели ввиду. Мне было лень писать скрипт с обработкой ИД датчиков. Потому я просто добавил их как объекты. И делаю поиск класса по названию.
Насчёт датчиков <-> комнатах.
То что вы предлагали в начале не как не улучшает вашу структуру. Только запутывает. В принципе под конец дискуссии вы сами к этому пришли.
Насчёт LinkedRoom.
Сам сейчас решил переделать этот алгоритм из-за проблем агрегированных данных. То есть если датчиков в комнате несколько то что писать в свойство комнаты. Иногда последнее значение, иногда среднее (температуру), иногда OR (открытые окна, по алгоритму хоть одно)
Принцип такой:
В датчике остаётся LinkedRoom - в нём указан объект комната
Сохраняем пришедшее свойство в объект датчика
При изменяется свойство датчика. Скрипт вызывает метод объекта LinkedRoom, например изменение температуры TempChange
Объект комната в методе TempChange реализует сбор данных с датчиков которые на неё указаны, делает расчёт по своему алгоритму и записывает в своё свойство температуры полученный результат (Это избавит от от промежуточных суммирующих объектов)
Чтобы прописывать комнату только в датчике. В методе TempChange поиск указывающих на неё объектов делается так
Как отлажу обновлю Connect
Теперь насчёт автоматизации добавления объектов
Я давно говорил об таком механизме Сергею. Даже пытался писать такой визард. Но т.к. сам не добавлял много объектов сразу, это всё заглохло. (Тогда не было методов ядра для добавления объектов, всё делалось через базу)
Есть предложение сделать примерно по такому алгоритму:
Надеюсь буду краток.
Мои объекты зашифрованы: "5588245-24bit-P1" наверно вот это имели ввиду. Мне было лень писать скрипт с обработкой ИД датчиков. Потому я просто добавил их как объекты. И делаю поиск класса по названию.
Насчёт датчиков <-> комнатах.
То что вы предлагали в начале не как не улучшает вашу структуру. Только запутывает. В принципе под конец дискуссии вы сами к этому пришли.
Насчёт LinkedRoom.
Сам сейчас решил переделать этот алгоритм из-за проблем агрегированных данных. То есть если датчиков в комнате несколько то что писать в свойство комнаты. Иногда последнее значение, иногда среднее (температуру), иногда OR (открытые окна, по алгоритму хоть одно)
Принцип такой:
В датчике остаётся LinkedRoom - в нём указан объект комната
Сохраняем пришедшее свойство в объект датчика
При изменяется свойство датчика. Скрипт вызывает метод объекта LinkedRoom, например изменение температуры TempChange
Объект комната в методе TempChange реализует сбор данных с датчиков которые на неё указаны, делает расчёт по своему алгоритму и записывает в своё свойство температуры полученный результат (Это избавит от от промежуточных суммирующих объектов)
Чтобы прописывать комнату только в датчике. В методе TempChange поиск указывающих на неё объектов делается так
Код: Выделить всё
$room='Room 1';
$objects=SQLSelect("SELECT objects.TITLE FROM pvalues LEFT JOIN objects ON pvalues.OBJECT_ID=objects.ID WHERE pvalues.PROPERTY_NAME LIKE '%.LINKED_ROOM' AND pvalues.VALUE LIKE='".$room."'");
Теперь насчёт автоматизации добавления объектов
Я давно говорил об таком механизме Сергею. Даже пытался писать такой визард. Но т.к. сам не добавлял много объектов сразу, это всё заглохло. (Тогда не было методов ядра для добавления объектов, всё делалось через базу)
Есть предложение сделать примерно по такому алгоритму:
- В системе завести таблицу "Авто создание".
- Модули добавляют в неё появившееся датчики и исполнители, либо добавленные в ручную (которые они обнаружили по своему протоколу). Со статусом: 0-Нужно добавить, 1-Добавлено, 2-Игнор
- После запускаем ВИЗАРД, который берёт в этой таблице записи со статусом 0. И предлагает создать: Объект (по шаблону), привязать к комнате (выбор), создать график, Создать пункт в меню. Создать объект на сцене, ....
- Рейтинг: 1.16%
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
- lanket
- Сообщения: 1168
- Зарегистрирован: Вт окт 14, 2014 11:27 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 260 раз
- Поблагодарили: 163 раза
Re: Как лучше? Сенсоры по категориям или в каждую комнату?
Кстати это на порядок лучше решение чем я предлогал.Ivan писал(а):
Есть предложение сделать примерно по такому алгоритму:В общем приглашаю обсудить (покритиковать), и предложить пути реализации
- В системе завести таблицу "Авто создание".
- Модули добавляют в неё появившееся датчики и исполнители, либо добавленные в ручную (которые они обнаружили по своему протоколу). Со статусом: 0-Нужно добавить, 1-Добавлено, 2-Игнор
- После запускаем ВИЗАРД, который берёт в этой таблице записи со статусом 0. И предлагает создать: Объект (по шаблону), привязать к комнате (выбор), создать график, Создать пункт в меню. Создать объект на сцене, ....
У своего решения мне не давало покоя одно сомнение.
Много датчиков/комнат все-равно они подключаются последовательно. И не исключают ручной работы по привязке их к св-вам объектов. Признаю что это и было слабым звеном в моем предложении об реализации, что и не давало принять сообществом мою идею. А предложенное Иваном. Как раз напоминает приблежонное к коробочному варианту и упрощает процесс добавления сенсоров в систему.
На мой взгляд идеальное решение.
Я например долго ломал голову как правильно реализовать связку сенсоров с системой. И многое не умещалось в голове напримере хотябы температуры. Есть св-во в модуле датчика, есть св-во температуры у комнаты, надо еще что то промежуточное делать. Встовал вопрос у меня зачем. В вики не нашол нормального описания. Вот и дошол до того что поднял эту тему на форуме.
Реализация предложенная Иваном избавило бы меня от изучения кучи тем про принцып работы мд чтобы допереть до того что и так очевидно когда уже профи. Думаю я не один такой, и такое пригодилось бы многим.
Отправлено с моего HM NOTE 1LTEW через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.



gitHub сырого модуля 2й версии

Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.