/** Склонение существительных с числительными
* @param int $n число
* @param string $form1 Единственная форма: 1 секунда
* @param string $form2 Двойственная форма: 2 секунды
* @param string $form5 Множественная форма: 5 секунд
* @return string Правильная форма
*/
if (!function_exists('pluralForm')) {
function pluralForm($n, $form1, $form2, $form5) {
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}
}
$AliceDevice=getObjectsByClass("HomeDevice");
$total=count($AliceDevice);
for($i=0;$i<$total;$i++) {
$AliceDevice[$i]['AliceDev']=gg($AliceDevice[$i]['TITLE'].'.AliceDev');
$AliceDevice[$i]['Online']=gg($AliceDevice[$i]['TITLE'].'.Online');
$AliceDevice[$i]['statusText']=gg($AliceDevice[$i]['TITLE'].'.statusText');
if ($AliceDevice[$i]['Online']!=1 && $AliceDevice[$i]['AliceDev']==1) {
$res_AliceDevice[]=$AliceDevice[$i]['statusText'];
}
}
if ($res_AliceDevice){
$res_AliceDeviceText="Не работает ".implode(", ",$res_AliceDevice);
say($res_AliceDeviceText,0);
}
$tempSensors=getObjectsByClass("tempSensors");
$total=count($tempSensors);
for($i=0;$i<$total;$i++) {
$tempSensors[$i]['LinkedRoom']=gg($tempSensors[$i]['TITLE'].'.LinkedRoom');
$tempSensors[$i]['alive']=gg($tempSensors[$i]['TITLE'].'.alive');
if ($tempSensors[$i]['alive']==0) {
$res_tempSensors[]=gg($tempSensors[$i]['LinkedRoom'].".Title");
}
}
if ($res_tempSensors){
$res_tempSensorsText="Не работает термодатчик в помещении ".implode(", ",$res_tempSensors);
say($res_tempSensorsText,10);
}
$humiditySensors=getObjectsByClass("humiditySensors");
$total=count($humiditySensors);
for($i=0;$i<$total;$i++) {
$humiditySensors[$i]['LinkedRoom']=gg($humiditySensors[$i]['TITLE'].'.LinkedRoom');
$humiditySensors[$i]['alive']=gg($humiditySensors[$i]['TITLE'].'.alive');
if ($humiditySensors[$i]['alive']==0) {
$res_humiditySensors[]=gg($humiditySensors[$i]['LinkedRoom'].".Title");
}
}
if ($res_humiditySensors){
$res_humiditySensorsText="Не работает гигрометр в помещении ".implode(", ",$res_humiditySensors);
say($res_humiditySensorsText,10);
}
$MotionSensor=getObjectsByClass("inhouseMovementSensors");
$total=count($MotionSensor);
for($i=0;$i<$total;$i++) {
$MotionSensor[$i]['LinkedRoom']=gg($MotionSensor[$i]['TITLE'].'.LinkedRoom');
$MotionSensor[$i]['updatedTimestamp']=gg($MotionSensor[$i]['TITLE'].'.updatedTimestamp');
$update=time()-$MotionSensor[$i]['updatedTimestamp'];
if ($update>"86400") {
$res_MotionSensor[]=gg($MotionSensor[$i]['LinkedRoom'].".Title");
}
}
if ($res_MotionSensor){
$res_MotionSensorText="Датчик движения в помещении ".implode(", ",$res_MotionSensor)." давно не отправлял данные";
say($res_MotionSensorText,0);
}
/*
//Проверяем как давно обновилась погода с яндекеса
$ywtimestamp=strtotime(getGlobal("yw_setting.data_update"));
if ( $ywtimestamp === FALSE){
say("Отсутствует информация об обновлении погоды с яндекса",10);
}else{
if ($ywtimestamp<time()){
$ywupdate=time()-$ywtimestamp;
$ywupdate=($ywupdate/60/60);
$ywupdate=round($ywupdate);
say("Прогноз с яндекса обновлялся ".$ywupdate." ".pluralForm($ywupdate, 'час', 'часа', 'часов')." назад",1);
}else{
say("Данные об обновлении погоды с яндекса не корректны",10);
}
}
*/
//Проверяем как давно обновилась погода с Open Weather Map
$owdate=strtotime(getGlobal("ow_fact.data_update"));
if ( $owdate === FALSE){
say("Отсутствует информация об обновлении погоды c Open Weather Map",10);
}else{
if ($owdate<time()){
$owdate=time()-$owdate;
$owdate=($owdate/24/60/60);
$owdate=round($owdate);
if ($owdate==0){
say("Прогноз c Open Weather Map обновился сегодня",1);
}else{
say("Последний раз прогноз c Open Weather Map обновился ".$owdate." ".pluralForm($owdate, 'день', 'дня', 'дней')." назад",1);
}
}else{
say("Данные об обновлении прогноза погоды c Open Weather Map не корректны",10);
}
}