Samir77

 
<<< Назад

Запрос в телегу о состояние аккумулятора устройств

Запрос данных в телеграм о состоянии аккумулятора гаджетов УД

Благодаря Руслан Бег, он же @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']);
}

Обсуждение (6) (9)

Смотрите так же:
09.08.2021 Где мой телефон
27.07.2021 Увлажнитель воздуха Xiaomi SmartMi Air Humidifier 2 (CJXJSQ04ZM) (с OLED экраном) (Международная версия) zhimi.humidifier.ca4
09.04.2021 Запуск и выключение компьютера с помощью Majordomo
24.03.2021 Bad gateway 504
15.02.2021 ИНФОРМЕР ПОГОДЫ НА САЙТ
11.01.2021 Отправка и удаление старых сообщений в телеграмм
15.12.2020 Как сканировать BLE устройства и Bluetooth в модуле Устройства Online

Киев, Украина