Xor

<<< Назад

Форматированный отчет в телеграм - имитация таблицы

Обзорный отчет по комнатам с использованием средств форматирования Телеграма

Очень нравится работать с Мажордомо через Телеграм. Спасибо Eraser'у за чудесный модуль, один из моих любимых, не вызывающий никаких нареканий.
Давно хотелось получать сводную инфу о состоянии всего дома разом, а не продираться через систему многоуровневых меню до нужного элемента.
Тут и статейка Удобный просмотр данных сенсоров через телеграмм от directmann подоспела с нужными решениями.

Но отображение всех датчиков по-строчно в виде клавиатуры как-то не зашло((
Решил сделать лист отчета с выводом инфы по комнатам. Внешний вид - на картинке к блогу.
По-моему, наглядно.
Итак, скрипт:

//SendTeleStatus
//Картинки (как их получить, см Примечание и есть отдельный блог и на форуме )
$drop = hex2bin('F09F92A7'); //капля
$tmp  = hex2bin('F09F8CA1'); //термометр
$walk = json_decode('"'.'\ud83d\ude42'.'"'); //ходют
$nomove = json_decode('"'.'\ud83d\udeb7'.'"'); //не ходют
$green =  json_decode('"'.'\ud83d\udc9a'.'"'); //зеленое сердце
$yellow =  json_decode('"'.'\ud83d\udc9b'.'"');// и т.д.
$red =  json_decode('"'.'\ud83d\udc94'.'"');

$subj = '<b>';
$subj .= gg('timeNow').'</b>'.PHP_EOL.'<code>'.gg('somebodyHomeText').PHP_EOL.'...'.PHP_EOL;
$subj .= gg('lastSayMessage').PHP_EOL;
$subj .='...'.'</code>'.PHP_EOL;
$subj .= '<b>Статусы:</b>'.PHP_EOL;
$subj .='<code>';
$subj .='Система: ';//.gg('system.stateTitle').PHP_EOL;
if(gg('System.stateColor')=='green'){
 $subj .= $green.PHP_EOL;
}else{
 if(gg('System.stateColor')=='yellow') $subj .= $yellow;
 if(gg('System.stateColor')=='red') $subj .= $red;
 $subj .= gg('System.stateDetails').PHP_EOL;
}
$subj .='Связь  : ';//.gg('Communication.stateTitle').PHP_EOL;
if(gg('Communication.stateColor')=='green'){
 $subj .= $green.PHP_EOL;
}else{
 if(gg('Communication.stateColor')=='yellow') $subj .= $yellow;
 if(gg('Communication.stateColor')=='red') $subj .= $red;
 $subj .= gg('Communication.stateDetails').PHP_EOL;
}
$subj .='...'.PHP_EOL.'</code>';
$subj .='<b>комнаты</b><code>    '.$tmp.'°С  '.$drop.'%  '.$walk.PHP_EOL;//заголовок статуса (я подгонял под свой телефон((
$objects = getObjectsByClass("Rooms");
foreach($objects as $obj) {
 $room = mb_substr(gg($obj['TITLE'].".title")."            ",0,12); // тут основная фишка!
 $room .= mb_substr(gg($obj['TITLE'].".Temperature")."       ",0,7);
 $room .= mb_substr(gg($obj['TITLE'].".Humidity")."     ",0,5);
 if(gg($obj['TITLE'].".SomebodyHere")){
   $room .= $walk.gg($obj['TITLE'].".LatestActivityTime");
 }else{
   $room .= $nomove.substr(gg($obj['TITLE'].".LatestActivityTime"),0,5);
 }

 $subj .= $room.PHP_EOL;
}
$subj .= '</code>';
//echo($subj);
runScript('SendTelegram', array("message"=>$subj));

Основная фишка статьи - получение псевдотаблицы ограниченными средствами форматирования телеграма.
Это сделано с помощью имитации табуляции моноширинного шрифта телеграма:

$room = mb_substr(gg($obj['TITLE'].".title")."            ",0,12); 

эта строка делает первую колонку с именами комнат шириной в 12 символов, чтобы следующая колонка выводилась ровненьким столбиком, так же фоматируется температура и влажность.
строка

runScript('SendTelegram', array("message"=>$subj));

отправляет в телегу текст - абсолютно стандартный:

//SendTelegram
//  params
$message = $params['message'];
$img = $params['img'];
$video = $params['video'];
$album = $params['album'];
$descr = $params['description'];

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
//Если текст
if ($message){
 $telegram_module->sendMessageToAll($message);
}
//Если картинка
if ($img) {
 $telegram_module->sendAction($chat_id,"upload_photo");
 $telegram_module->sendImageToAll($img,$descr);
}
//Если кино
if ($video) {
 $telegram_module->sendVideoToAll($video);
}
//Если альбом
if ($album) {
 $telegram_module->sendAlbumToAll($album,$descr);
}

Примечание:

Бот - отправляешь ему смайл, он в ответ его код. @getemojicodebot

Обсуждение (10) (8)

Смотрите так же:
30.04.2019 Используем зомбо-ящик в Мажордомо
24.03.2019 О среднем в Мажордомо
31.10.2018 Об "обделённых" пользователях Win-систем -- с точки зрения кэширования winTTS сообщений
16.09.2018 Перезагрузка Мажордомо в Win-системах

Домодедово, Россия

На форуме: xor