Запрос данных в телеграм о состоянии аккумулятора гаджетов УД
Благодаря Руслан Бег, он же @Newz20 имеем его трудами возможность простым нажатием клавиши в телеграм получать информативные красочные данные об состоянии
//команда в телеге, если добавить ид чата можно выводить и из сценариев
$classes_to_check = array('STempSensors', // список классов в которых есть датчики с батарейками, добавить свои можно
'SLeak',
'SMotions',
'SOpenClose',
'SVibration',
'SButtons');
$details ='<code>'; //начало форматированного отчета
$res_objects = array(); //перебор всех записанных классов и получение объектов из них
foreach ($classes_to_check as $class_name) {
$objects = getObjectsByClass($class_name);
foreach ($objects as $obj) {
$res_objects[] = $obj;
}
}
$total = count ($res_objects); //перебор объектов полученных и запись их значений в отчет
for ($i = 0; $i < $total; $i++) {
$updated = getGlobal($res_objects[$i]['TITLE'] . '.batteryLevel'); // получение данных из свойства к которому привязана батарейка
if ($updated != '') { //проверка что свойство не пустое, так бывает у если кнопка через ПУ заведена как 2 объекта, а батарейка только к одному привязана
$object_rec = SQLSelectOne("SELECT objects.DESCRIPTION, classes.title FROM `objects` LEFT JOIN classes ON objects.CLASS_ID = classes.id WHERE objects.ID=" . $res_objects[$i]['ID']); //получение описания и класса объекта
$dev=" "; // создадим переменную на всякий
switch ($object_rec['title']) { // проверим класс и присвоим ему картнку, добавить свои можно
case 'SLeak': //класс
$dev="".hex2bin('F09F92A7')." "; //картинка
break;
case 'SMotions':
$dev="".hex2bin('F09F8F83')." ";
break;
case 'SOpenClose':
$dev="".hex2bin('F09F9AAA')." ";
break;
case 'SVibration':
$dev="".hex2bin('F09F93B3')." ";
break;
case 'SButtons':
$dev="".hex2bin('F09F9498')." ";
break;
case 'STempSensors':
$dev="".hex2bin('F09F8CA1')." ";
break;
default: // если класс не найден присвоим картинку воскл. знак
$dev="".hex2bin('e29aa0')." ";
}
//вывод полученных значений. отчет не форматирован, при использовании удалить часть отчета форматированного и строки $details ='<code>'; и $details .='</code>';
//$details .=$dev.' '. $res_objects[$i]['TITLE'] . ' (' . $object_rec['DESCRIPTION'] . ') -> '. $updated. hex2bin('F09F948B')."%".PHP_EOL;
// форматированный отчет
$details .= mb_substr($dev." ",0,2); // картинке отводим 1 знак, второй пробел
// $details .= mb_substr($res_objects[$i]['TITLE']." ",0,15); // у себя убрал название объекта в отчете
$details .= mb_substr($object_rec['DESCRIPTION']." ",0,23); // вывод описания объекта
$details .= mb_substr($updated." ",0,3); //выводим полученное значение при 100 будет без пробела после при 90 появится пробел
$details .= mb_substr(hex2bin('F09F948B')."%"." ",0,2); // выводим значек батарейки и знак %
$details .= ''.PHP_EOL; //умный перевод строки :)
}
}
$details .='</code>'; //конец форматированного отчета
/*echo '<pre>';
print_r($details);
echo '</pre>';*/
include_once(DIR_MODULES . 'telegram/telegram.class.php'); //подключим модуль телеги
$telegram_module = new telegram();
$telegram_module->sendMessageToUser($chat_id, $details); // отправим данные в чат запросившего, если надо в конкретный чат то определите чуть выше переменную $chat_id = ИД; с нужным ид
Отчет2
$classes_to_check = array('SMotions',
'SOpenClose',
);
$details ='<code>';
$res_objects = array();
foreach ($classes_to_check as $class_name) {
$objects = getObjectsByClass($class_name);
foreach ($objects as $obj) {
$res_objects[] = $obj;
}
}
$total = count ($res_objects);
for ($i = 0; $i < $total; $i++) {
$updated = getGlobal($res_objects[$i]['TITLE'] . '.updatedText');
if ($updated != '') {
$object_rec = SQLSelectOne("SELECT objects.DESCRIPTION, classes.title FROM `objects` LEFT JOIN classes ON objects.CLASS_ID = classes.id WHERE objects.ID=" . $res_objects[$i]['ID']);
$dev=" ";
switch ($object_rec['title']) {
case 'SMotions':
$dev="".hex2bin('F09F8F83')." ";
break;
case 'SOpenClose':
$dev="".hex2bin('F09F9AAA')." ";
break;
default:
$dev="".hex2bin('e29aa0')." ";
}
//$details .=$dev.' '. $res_objects[$i]['TITLE'] . ' (' . $object_rec['DESCRIPTION'] . ') -> '. $updated. hex2bin('F09F948B')."%".PHP_EOL;
$details .= mb_substr($dev." ",0,2);
//$details .= mb_substr($res_objects[$i]['TITLE']." ",0,15); // тут основная фишка!
$details .= mb_substr($object_rec['DESCRIPTION']." ",0,23); // тут основная фишка!
$details .= mb_substr($updated." ",0,8);
$details .= mb_substr(hex2bin('e28fb1')." ",0,7);
$details .= ''.PHP_EOL;
}
}
$details .='</code>';
/*echo '<pre>';
print_r($details);
echo '</pre>';*/
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$chat_id = 33776666;
$res = $telegram_module->sendMessage($chat_id, $details);
if ($message_id = $res['result']['message_id']) {
$message_id_old = registeredEventDetails('tlg/events/Sensor3');
$this->deleteMessage($chat_id, $message_id_old);
registerEvent('tlg/events/Sensor3', $message_id, 1);
$this->deleteMessage($chat_id, $data['message']['message_id']);
}
Киев, Украина