стили для элементов сцен

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

Модератор: immortal

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

Re: стили для элементов сцен

Сообщение Bagir » Вт фев 10, 2015 1:30 pm

Задача анализа периода от начала суток оказалась весьма хитрая. Она была бы намного проще, если предположить, что в истории за 0 всегда идет 1, а за 1 всегда 0. Да и что каждый день вообще есть записи в истории. Слишком много если..
Мысль такая: Надо взять из истории все записи от начала суток + одна старая запись прошлого дня. Я пока не уверен до конца, что этот вариант действительно хорош, но попробовать стоит.
Разделим задачу на два этапа.
1. Получить количество записей за текущие сутки
2. Взять это количество записей + 1
Вот вариант запроса к базе данныхПоказать

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

/* Данные истории находятся в таблице phistory. Чтобы их от туда взять, нужно знать VALUE_ID нашего Объект.Свойства
   Получить его можно разными путями в зависимости от ситуации. Приведу общий способ, который будет работать в любом месте. 
   Например из сценария, где нет такого указателя как $this. Еще этот код немного расскажет про связь между таблицами в базе данных.
*/

// Мы знаем имя объекта и имя свойства.
// Для начала нам нужно получить их id нашего объекта и id класса которому принадлежит объект
$obj_title = 'NightMode'; //имя объекта
$arr_s = SQLSelectOne("SELECT * FROM objects WHERE TITLE='".$obj_title."'");
$obj_id = $arr_s['ID'];
$class_id = $arr_s['CLASS_ID'];

// Получим id свойства по его имени. Тут нам нужно знать еще и id класса, который только что получили.
$prop_title = 'status';  //имя свойства
$arr_s = SQLSelectOne("SELECT * FROM properties WHERE TITLE='".$prop_title."' AND CLASS_ID='".$class_id."'");
$prop_id = $arr_s['ID'];

// Теперь нам нужен id из таблицы pvalues.
$arr_s = SQLSelectOne("SELECT * FROM pvalues WHERE OBJECT_ID='".$obj_id."' AND PROPERTY_ID='".$prop_id."'");
$pvalue = $arr_s['ID'];

// Зная $pvalue можно слазать за данными истории в таблицу phistory
// Для нашей задачи нужно получить все записи по времени >= началу суток + 1 запись
$start_time=date("Y-m-d").' 00:00:00';
//$start_time='2015-02-09 00:00:00';
$tmr_start = strtotime($start_time);
// Получить количество записей за нужный период времени
$arr_s = SQLSelectOne("SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID=".$pvalue." AND ADDED>='".date('Y-m-d H:i:s', $tmr_start)."'");
// Взять это количество записей +1
$arr_s = SQLSelect("SELECT * FROM phistory WHERE VALUE_ID=".$pvalue." ORDER BY ADDED DESC LIMIT 0 , ".(1+$arr_s['COUNT_ID']));

echo 'obj='.$obj_id.' class='.$class_id.' prop='.$prop_id.' pvalue='.$pvalue.'<br />';

// Переберем весь массив
foreach($arr_s as $s) {
 echo $s['ADDED'].' ';
 echo strtotime($s['ADDED']) .' ';
 echo $s['VALUE'].'<br />';
}
Вторую половинку кода с расчетом процента вместе с элементом выложит Vit. Только протестируем как следует.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: стили для элементов сцен

Сообщение ErmolenkoM » Вт фев 10, 2015 2:43 pm

Забавную задачку обсуждаете :-)
Наверное тема не совсем та, ну раз начали...
Варианты:
1. На событие ОнНьюМинут вешаем условие увеличивающее переменную на 1 если режим активен, итого загрузка = var/(24*60)*100%
в 23:59:59 сбрасываем накопленное в другую переменную, но с историей, т.о. можно будет по ней построить график.
2. То же самое, только не на ОнНьюМинут. А на событие входа в режим запоминаем время, а на событие выхода из режима увеличиваем переменную на то время сколько были в режиме.
ну и в полночь сохраняем результат.
3. Пытаться написать запрос из phistory, но сразу у меня не получилось - сложновато выходит.
aka msh555
Cubian на Cubietruck, Connect
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: стили для элементов сцен

Сообщение Bagir » Вт фев 10, 2015 3:01 pm

Да, очень интересный вариант накапливать таким способом данные. И базу данных меньше беспокоим. Мой вариант предполагает делать сложные запросы к базе каждый час. Пока что я не вижу в этом беды, но оптимизация дело хорошее! Вариант с phistory готов и работает. Только надо его как следует проверить. А именно переход на новые сутки. Сегодня вечером Vit его выложит вместе с кодом элемента.

Тема с решением перенесена в ветку Библиотека решений. Программирование.
http://smartliving.ru/forum/viewtopic.php?f=18&t=2105
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: стили для элементов сцен

Сообщение Bagir » Чт фев 12, 2015 1:30 am

Я всеш таки добрался до изучения элементов - Индикаторов. Все волшебно, но всегда хочется разобраться и привесить свои фенички :D

В стилях есть картинка light файл которой лежит по адресу \cms\scenes\styles\mode\i_light.png Мне хотелось, чтобы лучи у лампочки пропадали при выключенном режиме. Я притащил туда файлы
i_light_off.png
i_light_on.png
И действительно индикатор стал показывать разные картинки в разных состояниях on и off.

Я подумал, что состояний может быть и не два, а больше. В style.css я еще вижу еще и
cms/scenes/styles/mode/[#HAS_SLEEP#]
И еще вижу три файла режима nobodyhome
Изображение
но в настройке элемента я вижу, что состояние sleep вылезает отдельно.
Изображение
Да и если выбрать просто nobodyhome, то у него будут только состояния on и off. А sleep нету. Если его самому создать, то картинка i_nobodyhome_sleep.png не прицепляется.
Может быть тут что то не так?
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: стили для элементов сцен

Сообщение Bagir » Чт фев 12, 2015 1:50 am

Еще было бы неплохо получить файлик с динамиком, но не с крестиком как есть i_volume_mute.png, а со скобками, символизирующими, что звук включен. Гугл выдал весьма странные результаты поиска по картинке. Конечно можно в фотошопе наколдовать, но я не силен. Разве что в паинте по пикселям натыкаю ))
А вообще, раз пошла такая пьянка, то может быть есть коллекция картинок, схожих по стилю?
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: стили для элементов сцен

Сообщение Amarok » Чт фев 12, 2015 5:19 am

Можно тут глянуть - http://www.iconsearch.ru/
Моя Алиска живёт на Proxmox в Debian 12
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: стили для элементов сцен

Сообщение Bagir » Чт фев 12, 2015 3:43 pm

Да, тут похоже полно всего. Но хочется все в одном стиле сделать. Конечно может чего и накопаю.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: стили для элементов сцен

Сообщение Amarok » Чт фев 12, 2015 4:04 pm

i_volume.png
i_volume.png (804 байт) 13950 просмотров
За это сообщение автора Amarok поблагодарил:
Bagir (Чт фев 12, 2015 5:50 pm)
Рейтинг: 1.16%
Моя Алиска живёт на Proxmox в Debian 12
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: стили для элементов сцен

Сообщение Bagir » Чт фев 12, 2015 5:51 pm

То что нужно! Спасибо!
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
layet
Сообщения: 78
Зарегистрирован: Чт янв 16, 2014 2:47 pm
Благодарил (а): 4 раза
Поблагодарили: 31 раз

Re: стили для элементов сцен

Сообщение layet » Пт фев 13, 2015 4:16 am

Я тоже решил попробовать с Сережиным интерфейсом и сделать "свои" кнопки:
pic1.jpg
pic1.jpg (34.55 КБ) 13881 просмотр
Кнопки с пользователями показывают дома ли человек, если нет - когда уехал.
Вдохновился этим роликом --> http://www.youtube.com/watch?v=BjflZ2TwTlo&list=WL
Если кому интересно - реализация:Показать
1) В GPS к телефону привязываем пользователя natasha
2) В GPS создаем местоположение Дом и события входа и выхода из него, изменяющие свойство natasha.atHome
3) Создаем кнопку Индикатор режима с состояниями IN и OUT
pic2.jpg
pic2.jpg (64.19 КБ) 13880 просмотров
4) Состояние OUT
pic3.jpg
pic3.jpg (107.49 КБ) 13880 просмотров
Код:

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

<img src='/cms/avatars/3_natasha.png' style='width: 38px; height: 42px; margin-top: -36px; opacity: 0.2; border-left: 4px solid magenta;' />
Наташа
<p id='natasha_time' style='font-size: 9px;'></p>
<script language='javascript'>
var secs = Math.round(Date.now()/1000) - %natasha.coordinatesUpdatedTimestamp%;
var hours = Math.round(secs / 3600);
var mins = Math.floor((secs - hours*3600) / 60);
if (hours == 0) $('#natasha_time').html(mins + ' мин назад'); else $('#natasha_time').html(hours + ' ч назад');
</script>
5) Состояние IN
pic4.jpg
pic4.jpg (106.59 КБ) 13880 просмотров
Код:

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

<img src='/cms/avatars/3_natasha.png' style='width: 38px; height: 42px; margin-top: -36px; border-left: 4px solid magenta;' />
Наташа
дома
На данный момент тестирую кнопки, т.к. идея мне очень понравилась)
За это сообщение автора layet поблагодарили (всего 2):
kas5858 (Пт апр 07, 2017 1:13 pm) • ~220v (Вт май 26, 2020 1:57 am)
Рейтинг: 2.33%
Ответить