Активные объекты на сценах

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

Модератор: immortal

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

Re: Активные объекты на сценах

Сообщение Bagir » Пн сен 15, 2014 10:29 pm

Релиз элемента температуры для сцен. Вариант с круговым градиентом.
ИзображениеИзображениеИзображение
Element details:Показать
Тип HTML
Ширина 60
Высота 60
Код

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

<style>
div.element_36 {
  font-size: 12pt;
  font-weight:700;
  text-align: center;
  border-radius: 30px;
  background-image: radial-gradient(%Officeroom.TempHEX% -15px, rgba(0,0,0,0) 65%);
}
.triangle1 {
    width: 0;
    height: 0;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid red;
}
.triangle-1 {
    width: 0;
    height: 0;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-top: 10px solid blue;
}
</style>

<br>
%Officeroom.Temperature% ℃
<div class="triangle%ts_office.direction%"></div> 
Описание:
Цвет градиента меняется в зависимости от значения температуры. Есть индикация направления изменения показаний. В планах индикация статуса объекта датчика - живой/мертвый.
Применены правила перевода градусов в цвет. Значение цвета рассчитывается при изменении температуры, и при желании можно все легко поправить. За основу взяты следующие положения:
1. Будут использованы три цвета и переходы между ними. Голубой->Синий->Красный
2. 18 градусов - синий цвет;
3. 30 градусов - красный цвет;
4. Из этого следует, что голубой цвет это 12 градусов;
5. Все что ниже 12 градусов так и останется голубым;
6. Все что выше 30 градусов так и будет красным.
Для оценки воздуха комнаты это вполне справедливо.
Таблица изменения градиента в зависимости от температурыПоказать
Изображение
Настройка:
  • 1. Сразу поменять номер элемента на свой div.element_36
    2. %Officeroom.Temperature% - это свойство объекта со значением температуры.
    3. %ts_office.direction% - направление изменения: 1 - растет (красный треугольник вверх), -1 - снижается (синий треугольник вниз), 0 (или что другое) - значение не изменилось. Ничего отображаться не будет.
    4. %Officeroom.TempHEX% - цветовое представление температуры.
В классе Rooms создам новое свойство TempHEX. В него будет записываться HEX значение цвета. В свойстве Temperature укажем запускать метод при изменении onTempChanges и создадим этот метод
КодПоказать

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

// получить температуру
$x = $this->getProperty('Temperature');
// не больше и не меньше
if ($x<12) {$x=12;} elseif ($x>30) {$x=30;} 
// расчет величины цветовой шкалы
$x = round( ($x-12)*42,5 );
$hcolor = '#';
// расчет r
$y = $x-255;
if ($y < 0) {$y = 0;} elseif ($y > 255) {$y = 255;}
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}
$hcolor = $hcolor.$y;
// расчет g
$y = 255-$x;
if ($y < 0) {$y = 0;} elseif ($y > 255) {$y = 255;}
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}
$hcolor = $hcolor.$y;
// расчет b
$y = 765-$x;
if ($y < 0) {$y = 0;} elseif ($y > 255) {$y = 255;}
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}
$hcolor = $hcolor.$y;
// установить свойство цвета температуры
$this->setProperty('TempHEX', $hcolor); 
Теперь при каждом изменении свойства температуры будет рассчитываться HEX значение ее цвета для всех объектов комнат.
Последний раз редактировалось Bagir Пн сен 22, 2014 10:14 pm, всего редактировалось 4 раза.
За это сообщение автора Bagir поблагодарили (всего 2):
Vit (Пт сен 19, 2014 1:44 pm) • Supermin (Пт фев 06, 2015 12:57 pm)
Рейтинг: 2.33%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Активные объекты на сценах

Сообщение sergejey » Вт сен 16, 2014 1:26 pm

Bagir писал(а):Но есть и грабли. Цветовой градиент у элемента на сцене не обновляется сам при изменениях значения свойства температуры. Изменения будут видны только если обновить страничку со сценой. Вопрос уже наверное к Сергею. Как заставить полностью обновиться элемент на сцене с кодом SSC?
можно просто CSS это перенести внутрь кода состояния, обрамив в <style></style> и тогда он будет меняться сам собой
За это сообщение автора sergejey поблагодарили (всего 2):
foxvlad (Вс сен 28, 2014 1:25 am) • Bagir (Чт фев 26, 2015 10:23 pm)
Рейтинг: 2.33%

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

Re: Активные объекты на сценах

Сообщение Bagir » Вт сен 16, 2014 3:00 pm

Отлично! Градиент ожил! Получается, что если CSS код у элемента постоянный, и нужен только раз для его оформления, его нужно указать в отдельном блоке. А если CSS код изменяется вместе со значением элемента, то нужно разместить его в коде состояния элемента обрамив <style></style>.
Я поправлю свой предыдущий пост. Спасибо за помощь!
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Активные объекты на сценах

Сообщение Bagir » Вт сен 16, 2014 7:11 pm

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

Re: Активные объекты на сценах

Сообщение Bagir » Вт сен 16, 2014 8:28 pm

И еще запчасть! Такой вот получился у меня простенький, но вполне отличный лог событий для отдельной сцены. Сейчас там просто повторяется прогноз погоды для демонстрации прокрутки. Скоро будет создан объект для этого лога, свойство которого будет содержать весь накопленный текст, который был этому объекту передан. Проверил на разных браузерах. работает везде, разве что IE опять отличился и на винде и на андроиде. Ну да ладно, Хром FF и Опера работают везде нормально. Причем на компе есть полоса прокрутки, а на мобилах нет. Там просто пальцем проматывает. Я доволен, за цените и Вы!
Изображение
Дополнительный код CSS

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

div.element_19 {
  overflow-y: scroll;
  overflow-x: hidden;
  font-size: 10pt;
  font-weight:600;
  padding: .25em .5em;
  border: 2px solid rgb(250,172,17);
  border-radius: 3px;
  background-image: linear-gradient(rgb(250,250,255), rgb(200,220,255));
}
За это сообщение автора Bagir поблагодарил:
Supermin (Пт фев 06, 2015 1:02 pm)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Активные объекты на сценах

Сообщение Vit » Вт сен 16, 2014 8:30 pm

Bagir писал(а):Отпишитесь кто попробовал, как по вашему, выбранные цвета подходят к температуре?
Доберусь до системы обязательно сделаю такие же наглядные элементы. Еще бы для rgb что нибудь такое красивое
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Активные объекты на сценах

Сообщение Bagir » Вт сен 16, 2014 8:32 pm

Так по rgb как раз датчик температуры и меняет свой цвет. Может стоит вытаскать ссылками на первое сообщение все законченные посты с элементами? Моих тут пока что два.
http://smartliving.ru/forum/viewtopic.p ... 595#p13593
http://smartliving.ru/forum/viewtopic.p ... 595#p13557
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Активные объекты на сценах

Сообщение Vit » Вт сен 16, 2014 8:44 pm

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

Re: Активные объекты на сценах

Сообщение Bagir » Вт сен 16, 2014 8:45 pm

Вот как раз пример с датчиком температуры так и работает. Потом попробуйте! А я пока помудрю с трубами, и их заливкой. Возможно тут стоит посмотреть в сторону P Chart, ну или на то, как там рисуются линии. Просто если делать большую схему только с помощью вертикальных и горизонтальных полосок, уйдет не мало времени, чтобы все это красиво состыковать. Да и наверное прорисовываться будет медленно. Надо попробовать, и еще по изучать эту тему. Конечно хотелось бы просто нарисовать например схему отопления, а потом с помощью контрольных точек залить ее градиентом. Но это уже смахивает даже уже на app. Так что пока будем стыковать полоски )) Но покою не дает тема о рисовании линий градиентом.
Последний раз редактировалось Bagir Вт сен 16, 2014 9:15 pm, всего редактировалось 2 раза.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Активные объекты на сценах

Сообщение Bagir » Вт сен 16, 2014 8:46 pm

Только там бы утюгом по коду пройти еще ))) Уверен, что его можно оптимизировать. Метод onTempChanges
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить