pion365 писал(а):
...
У меня сразу попутный вопрос, даже два:
1. Как подкорректировать значение температуры погодного датчика? В самом датчике это сделать невозможно.
это можно сделать разными путями, например у меня (т.к. яндекс.погода практически умерла я перешел на использование данных
OpenWeatherMap)
есть класс
Weather в котором есть объект
Izhevsk у которого есть метод
10days
который запускается в свою очередь из метода
onNewHour
Код метода (это далеко не лучшая реализация):
Код: Выделить всё
for ($i=0; $i<10; $i++) {
sg(("Izhevsk.mcD".$i."_Temp_0"),round(gg("ow_day".$i.".temp_day")));
sg(("Izhevsk.mcD".$i."_Temp_1"),round(gg("ow_day".$i.".temp_night")));
sg(("Izhevsk.mcD".$i."_Image_0"),gg("ow_day".$i.".image"));
sg(("Izhevsk.mcD".$i."_Pressure_0"),round(gg("ow_day".$i.".pressure_mmhg")));
sg(("Izhevsk.mcD".$i."_Humidity_0"),round(gg("ow_day".$i.".humidity")));
sg(("Izhevsk.mcD".$i."_WindSpeed_0"),round(gg("ow_day".$i.".wind_speed")));
sg(("Izhevsk.mcD".$i."_WindDir_0"),round(gg("ow_day".$i.".wind_direction")));
sg(("Izhevsk.mcD".$i."_Weather_type_0"),gg("ow_day".$i.".weather_type"));
sg(("Izhevsk.mcD".$i."_Day"),getDayDate(gg("ow_day".$i.".date")));
}
// Проговариваем, при необходимости
$sayMetUSD = gg ("Sets.sayMetUSD");
if ($sayMetUSD) {
say("Читаю прогноз погоды на 10 дней с Yandex",($sayMetUSD-2));
}
как видите тут я провожу округление значений (но лучше поищите исправление проблемы с двумя значениями после запятой в
OpenWeatherMap
pion365 писал(а):
2. Как сделать анимацию элемента на сцене, который отображает температуру, чтобы этот элемент мигал в определённом диапазоне температур? Например, для отображения температуры термостата (в котле), чтобы при выходе за границу температуры сам элемент начинал мигать для привлечения внимания?
вот я так, на скорую руку, сделал на сцене вывод температуры с датчика в бане:
Код: Выделить всё
<div class="panel-showing2">
<ul>
<li>
<div class="title">Температура в бане:</div>
<div class="sense_snowing_%TempSensor4.code_color%">%TempSensor4.temp1% °C</div>
</li>
</ul>
</div>
при этом, естественно в
general_CSS (only CSS) этой сцены у меня прописаны варианты отображения для получившихся из этого:
sense_snowing_%TempSensor4.code_color%
классов, например так, это часть моего кода в
Дополнительный код CSS:
Код: Выделить всё
.panel-showing1 ul li .sense_snowing_1,
.panel-showing1 ul li .title,
.panel-showing1 ul li .sense_snowing_0,
.panel-showing1 ul li .sense_snowing_2,
.panel-showing1 ul li .sense_snowing_3,
.panel-showing2 ul li .sense_snowing_1,
.panel-showing2 ul li .title,
.panel-showing2 ul li .sense_snowing_0,
.panel-showing2 ul li .sense_snowing_2,
.panel-showing2 ul li .sense_snowing_3,
.panel-showing3 ul li .sense_snowing_1,
.panel-showing3 ul li .title,
.panel-showing3 ul li .sense_snowing_0,
.panel-showing3 ul li .sense_snowing_2,
.panel-showing3 ul li .sense_snowing_3,
.panel-showing4 ul li .sense_snowing_1,
.panel-showing4 ul li .title,
.panel-showing4 ul li .sense_snowing_0,
.panel-showing4 ul li .sense_snowing_2,
.panel-showing4 ul li .sense_snowing_3 {
display: inline-block;
font-size: 20px;
line-height: 1.6;
padding: 3px 8px;
font-family: monospace;
font-weight: lighter;
}
.panel-showing1 ul li .sense_snowing_1,
.panel-showing2 ul li .sense_snowing_1,
.panel-showing3 ul li .sense_snowing_1,
.panel-showing4 ul li .sense_snowing_1 {
float: right;
width: 180px;
text-align: center;
font-family: monospace;
font-weight: lighter;
background-color: rgba(0, 233, 233, 0.6);
color: white;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
}
.panel-showing1 ul li .sense_snowing_0,
.panel-showing2 ul li .sense_snowing_0,
.panel-showing3 ul li .sense_snowing_0,
.panel-showing4 ul li .sense_snowing_0 {
float: right;
width: 180px;
text-align: center;
font-family: monospace;
font-weight: lighter;
background-color: rgba(0, 40, 40, 0.6);
color: rgba(190, 190, 190, 1);
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
}
/* -------- разными цветами --------*/
.panel-showing1 ul li .sense_snowing_2,
.panel-showing2 ul li .sense_snowing_2,
.panel-showing3 ul li .sense_snowing_2,
.panel-showing4 ul li .sense_snowing_2 {
float: right;
width: 180px;
text-align: center;
font-family: monospace;
font-weight: lighter;
background-color: rgba(0, 233, 0, 0.6);
color: white;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
}
.panel-showing1 ul li .sense_snowing_3,
.panel-showing2 ul li .sense_snowing_3,
.panel-showing3 ul li .sense_snowing_3,
.panel-showing4 ul li .sense_snowing_3 {
float: right;
width: 180px;
text-align: center;
font-family: monospace;
font-weight: lighter;
background-color: rgba(233, 0, 0, 0.6);
color: white;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
animation: blink 1s ease-out infinite;
}
естественно, чтобы это работало у меня есть объект
TempSensor4.code_color который меняет свое значение в зависимости от значения температуры, например так (это из
espdata):
Код: Выделить всё
if ($dsw1!="") {sg(("TempSensor4.temp"),$dsw1);
if ($dsw1 < gg("Sets.TempBanyAlarm")) {
sg(("TempSensor4.code_color"),3);
} else {
sg(("TempSensor4.code_color"),2);
}
}// в бане
но этот код как видно тоже зависит от значения
Sets.TempBanyAlarm
...
вот поэтому чтобы, например эти сцены, выглядели как они задуманы у меня, нужно много взаимозависимых объектов переделать на свои.
вот варианты вывода значения температуры в бане для вариантов с
TempSensor4.code_color = 3 (красный и он еще мигает), 2(зелёный это норма), и 0 (если этот элемент не используется)
- Скриншот 2017-02-04 23.47.19.png (160.53 КБ) 8825 просмотров
TempSensor4.code_color = 2(зелёный - это норма)
- Скриншот 2017-02-04 23.45.28.png (164.86 КБ) 8825 просмотров
TempSensor4.code_color = 0 (если этот элемент не используется, не нужен)
- Скриншот 2017-02-04 23.54.22.png (165.55 КБ) 8825 просмотров