Простые устройства / Simple Devices

Новые релизы, обновления и т.п.

Модератор: immortal

Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Простые устройства / Simple Devices

Сообщение xor » Ср окт 04, 2017 8:45 pm

to nick7zmail:
А что мешает сделать виртуальный выключатель на группу?
Добавить свойство - Группа для выключателей
у него турнон/еурнофф для его группы -для всех объектов,
а статус - сумма статусов группы?
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Простые устройства / Simple Devices

Сообщение nick7zmail » Ср окт 04, 2017 8:56 pm

Мне то ничего не мешает))) Я как раз и сделал...но для этого вписал код как в методы каждого из объектов, так и в метод группового объекта...надо отследить все зависимости, при этом чтоб ничего не сломалось...так что было бы неплохо, если бы это средствами простых устройств без дополнительного кода делать можно бы было...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Простые устройства / Simple Devices

Сообщение xor » Ср окт 04, 2017 9:04 pm

Устройства уж и так не такие простые...viewtopic.php?f=7&t=1871&p=61184#p61184
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Простые устройства / Simple Devices

Сообщение nick7zmail » Ср окт 04, 2017 9:14 pm

Мне кажется группы реле сделать куда проще, чем запилить, например, камеру в простые устройства))) Тем более у простых устройств есть привязка к помещениям...можно на основе этой привязки и сделать группы...то есть даже дописывать в таблицы ничего не надо. Просто добавить тип устройства - группа реле - в нем выбор помещения, и прописать для него правила. Группа будет врубать/вырубать весь свет в помещении вне зависимости от его количества...
Единственное, что надо хорошо продумать - это кросс-вызов методов...это единственная проблема, способная поставить в ступор новичка, если он начнет делать подобный функционал...

Например: Групповой выключатель должен включать и выключать все группы света...при этом если одна из групп включается - групповой тоже должен включаться. А так как меняется его статус - он подтягивает за собой метод, который вызывает процедуру включения всей группы...
Лично я решил эту проблему просто не привязывая статус к методу, и вызываю методы, которые уже меняют статус. Но это не до каждого новичка дойдет, и это опять же не совсем правильно, как мне кажется. Должно быть всё завязано на свойстве.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
aleksejs
Сообщения: 20
Зарегистрирован: Чт окт 05, 2017 9:22 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Простые устройства / Simple Devices

Сообщение aleksejs » Чт окт 05, 2017 10:19 pm

Подскажите как в Простые устройства интегрировать направление изменения показаний датчиков.
Как в этой теме viewtopic.php?f=18&t=2100
делаю свойство direction в SSensors.
Делаю метод valueUpdated с кодом (не совсем понимая данный код) :
СпойлерПоказать
* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SSensors_valueUpdated.php');
/* end injection of {SDevices} */
// Получение среднего значения из истории
//Получить id свойства
$prop_id=$this->getPropertyByName('status', $this->class_id, $this->id);
//Получаем VALUE_ID для следующей таблицы
$pvalue=SQLSelectOne("SELECT * FROM pvalues WHERE PROPERTY_ID='".$prop_id."' AND OBJECT_ID='".$this->id."'");
//Получаем средние значения температуры за последние 30 минут
$start_time=time()-30*60; // 30 минут
$arr_s = SQLSelectOne("SELECT avg(VALUE) as AVG_V FROM phistory WHERE VALUE_ID='".$pvalue['ID']."' AND ADDED>='".date('Y-m-d H:i:s', $start_time)."'");
$avg_s=round($arr_s[AVG_V], 1);

$s=$params['status'];
if (isset($s)) {
// Если некорректные данные
if (($s > 50) || ($s < -50)) { return; }
// Записать в свойство объекта
$this->setProperty('status',$s);
} else {
// Для слинкованных свойств и запуска этого метода без передачи данных, взять их из свойства.
$s = $this->getProperty('status');
}

$s=round($s, 1);

// Сравнение
if ($s-$avg_s > 0.5) {
$d=1;
} elseif ($s-$avg_s < -0.5) {
$d=-1;
} else {
$d=0;
}

$this->setProperty('direction',$d);
И не работает, не пишет в direction.
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Простые устройства / Simple Devices

Сообщение xor » Пт окт 06, 2017 12:14 am

А зачем вы температуру в свойство статус пишете?
Вроде, валюе содержит значение датчика и там температура должна отражаться?
и посмотрите функции работы с историей
getHistoryAvg($varname, $start_time, $stop_time) Возвращает среднее значений за период
getHistoryValue($varname, $time, $nerest) Возвращает среднее значение за период
и в ключевых местах своего кода напихайте debmes'ов отладочных
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Простые устройства / Simple Devices

Сообщение nightwind » Вс окт 08, 2017 8:43 pm

Господа, то ли баг, то ли я не шарю, гуру - растолкуйте.
1. Есть майсенсорc нода с кнопкой, и есть реле с лампочкой по mqtt.
2. В модуле Mysensors создаю простое устройство "Кнопка".
3. В дереве устройств ( Начало SDevices SButtons ), нахожу эту кнопку, и пишу ,

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

 debmes("Кнопка  gw нажата");
 $lamphalls = gg("lamp-hall.status");
 if ($lamphalls == 1) {
      callMethod('lamp-hall.TurnOff');
 }
 else
      On4time("lamp-hall",5*60);
Все просто, при нажатии кнопки включается свет на 5 минут. Если был уже включен - выключается. Такая логика. И все работает.
НО! Если это устройство-кнопку нарисовать на сцене, (через интерфейс простых устройств) или просто тыкнуть по кнопке в модуле простых устройств - она срабатывает 2 раза!!!

Раскопал - дело в том, что вызом метода pressed вызывает еще и родительский обработчик - SButtons_pressed.php, который вызывает $this->callMethod('statusUpdated');, а его обработчик снова вызывает pressed. бесконечного цикла нет, потому что SButtons_pressed.php, проверяет if (!isset($params['statusUpdated'])) и во второй раз не обновляет статус. Но срабатывает 2 раза.
Пока отключил вызов родительского метода у pressed , но это же говнокостыль и неправильно.
Как быть?
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Простые устройства / Simple Devices

Сообщение xor » Пн окт 09, 2017 2:18 am

Подтверждаю
в родительском SDevices_statusUpdated.php для
SMotions/SButtons снова вызываются их боевые методы

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

if ($this->class_title == 'SMotions' && $params['NEW_VALUE']) {
    $this->callMethodSafe('motionDetected',array('statusUpdated'=>1));
} elseif ($this->class_title == 'SButtons' && $params['NEW_VALUE']) {
    $this->callMethodSafe('pressed',array('statusUpdated'=>1));
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Простые устройства / Simple Devices

Сообщение sergejey » Вт окт 10, 2017 11:42 am

DimSun75 писал(а):Видно, что для это типа предполагалось не связывать свойство status, а вызывать метод motionDetected. Это для большинства железа честно говоря неудобно.
Изначально да, но сейчас работает и через привязку к свойству status без вызова метода motionDetected. Т.е. работает и так и так.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Простые устройства / Simple Devices

Сообщение nick7zmail » Вт окт 10, 2017 1:27 pm

Сергей, глянь предложение viewtopic.php?p=61168#p61168
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить