Xor

 
<<< Back

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

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

Очень нравится работать с Мажордомо через Телеграм. Спасибо 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

Discuss (14) (14)

See also:
2024-02-12 Китайская панель в подрозетник с экраном 480*480
2023-10-29 MQTT в МДМ - способ обработки топика через метод
2023-04-03 Todoer: обмен данными с Яндекс календарём
2023-03-31 Todoer: календарь на год
2023-03-30 Todoer: анонс + программное создание задачи
2022-05-08 Глобальный поиск - добавление своих сущностей. Upd Внедрено
2022-01-05 Яндекс Лампочка в Yandex Devices - добавление сцен
2021-04-18 Переезд на мастер спустя год
2021-03-24 Ещё о старте/остановке МДМ в Винде
2021-02-18 Модуль Todoer
2021-01-06 Для виндузятников - перенос бд на рам-диск
2020-11-22 Календарь-планировщик
2020-08-01 Irbis как терминал
2020-05-18 Китайская камера rtsp + vlc как перекодировщик для html
2020-05-12 Опыт интеграции МДМ с Я.Алисой ещё одним способом - без белого адреса, москита, ПУ.(дополнено)
2020-05-07 Поправим формат даты в Панели управления
2020-04-11 Баловство с шаблонами
2020-03-26 Простые правила - вариант модуля. ч. 2
2020-03-25 Простые правила - вариант модуля
2019-12-20 расширение средств работы с events updated
2019-11-20 По следам наших выступлений - сколько мы наэкономили?
2019-11-04 Группа как объект - экономим на коде - 2
2019-10-26 Прикручиваем Grafana к Мажордому
2019-10-11 Группа как объект - экономим на коде
2019-09-25 Если у вас нет телеги...
2019-09-11 Датчик присутствия из ип камеры
2019-07-30 Win-платформа-замена ffmpeg для получения скриншотов из rstp - потока
2019-04-30 Используем зомбо-ящик в Мажордомо
2019-03-24 О среднем в Мажордомо
2018-10-31 Об "обделённых" пользователях Win-систем -- с точки зрения кэширования winTTS сообщений
2018-09-16 Перезагрузка Мажордомо в Win-системах

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

На форуме: xor