Простые устройства и цветовая градация датчиков.
Когда я вывел на сцену информеры для датчиков температуры и т.д. я задумался над простым вопросом: "Ну и как определить, это вообще норма или где?!"
Тогда решил сделать цветовую градацию в пределах "Простого датчика": норма это, больше или меньше нормы?!
Идём в Объекты->SDevices->SSensors->Свойства
Добавляем свойства:
color - Цвет индикации
minColor - Цвет при минимуме
maxColor - Цвет при максимуме
normalColor - Цвет при норме
Цвета используем в HEX значениях, типа FFFFFF (RRGGBB)
Идём в Методы SSensor, переписываем код для valueUpdated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SSensors_valueUpdated.php');
/* end injection of {SDevices} */
$minColor = $this->getProperty('minColor');
$maxColor = $this->getProperty('maxColor');
$normColor = $this->getProperty('normalColor');
$Value = $this->getProperty('value');
$minValue = $this->getProperty('minValue');
$maxValue = $this->getProperty('maxValue');
if ($Value<=$minValue)
{
sg($this->object_title.".color",$minColor);
}
elseif ($Value>=$maxValue)
{
sg($this->object_title.".color",$maxColor);
}
else
{
sg($this->object_title.".color",$normColor);
}
Собственно, теперь при изменении значения датчика будет смотреть больше или меньше нормы и запихивать в Color цвет этого диапазона!
Теперь можно вставить вот как-то так...
<font color="%Sensor_temp01.color%">%Sensor_temp01.value%<span class="degree">°</span>C</font>
Или привязать Color от какой-нить CO2 к RGB подсветке Сяоми...
P.S. Чисто служебная фишка, чтобы с матюками не править свойства всем:
В сценариях создаём новый, вписываем код:
// Задаём цвета вообще всем сенсорам
// Раскладка:
// Меньше - синий (низкое, холодное)
// Норма - зеленый (комфорт)
// Больше - красный (высокое, жаркое)
$objects=getObjectsByClass("SSensors");
foreach($objects as $obj) {
setGlobal($obj['TITLE'].".maxColor","ff0000");
setGlobal($obj['TITLE'].".normalColor","00ff00");
setGlobal($obj['TITLE'].".minColor","0000ff");
}
// Задаём цвета для General сенсоров - у меня там CO2 висит
// Раскладка:
// Меньше - зеленый
// Норма - желтый
// Больше - красный
// Просто "норма" тут - это минимум, а в нормальном диапазоне - "Внимание!"
$objects=getObjectsByClass("SGeneralSensors");
foreach($objects as $obj) {
setGlobal($obj['TITLE'].".maxColor","ff0000");
setGlobal($obj['TITLE'].".normalColor","ffff00");
setGlobal($obj['TITLE'].".minColor","00ff00");
}
// Задаём цвета для сенсоров влажности
// Раскладка:
// Меньше - желтый (сухо)
// Норма - зеленый
// Больше - синий (влажно)
$objects=getObjectsByClass("SHumSensors");
foreach($objects as $obj) {
setGlobal($obj['TITLE'].".maxColor","0000ff");
setGlobal($obj['TITLE'].".normalColor","00ff00");
setGlobal($obj['TITLE'].".minColor","ffff00");
}
Значения границ:
Температура - все индивидуально, но я выставил чисто себе нормальный диапазон сейчас от 24 до 28.
Влажность:
40% - низ (сухость во рту при ней)
60% - верх (выше этой точки растет плесень ближе к 70%!)
CO2 (ppm):
600 - низ (400 - минимум для города. До 600 вам будет комфортно дышать)
900 - верх (выше 900 уже воздух хуже. Хреново вообще будет чуть не к паре тысяч)
Давление (мм рт.ст.) - тоже индивидуально и зависит от времени года, высоты над уровнем моря и т.д.
Для меня в Москве:
Низкое - ниже 740
Высокое - выше 760
Москва, Россия