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

Обсуждение (14) (14)

Смотрите так же:
12.02.2024 Китайская панель в подрозетник с экраном 480*480
29.10.2023 MQTT в МДМ - способ обработки топика через метод
03.04.2023 Todoer: обмен данными с Яндекс календарём
31.03.2023 Todoer: календарь на год
30.03.2023 Todoer: анонс + программное создание задачи
08.05.2022 Глобальный поиск - добавление своих сущностей. Upd Внедрено
05.01.2022 Яндекс Лампочка в Yandex Devices - добавление сцен
18.04.2021 Переезд на мастер спустя год
24.03.2021 Ещё о старте/остановке МДМ в Винде
18.02.2021 Модуль Todoer
06.01.2021 Для виндузятников - перенос бд на рам-диск
22.11.2020 Календарь-планировщик
01.08.2020 Irbis как терминал
18.05.2020 Китайская камера rtsp + vlc как перекодировщик для html
12.05.2020 Опыт интеграции МДМ с Я.Алисой ещё одним способом - без белого адреса, москита, ПУ.(дополнено)
07.05.2020 Поправим формат даты в Панели управления
11.04.2020 Баловство с шаблонами
26.03.2020 Простые правила - вариант модуля. ч. 2
25.03.2020 Простые правила - вариант модуля
20.12.2019 расширение средств работы с events updated
20.11.2019 По следам наших выступлений - сколько мы наэкономили?
04.11.2019 Группа как объект - экономим на коде - 2
26.10.2019 Прикручиваем Grafana к Мажордому
11.10.2019 Группа как объект - экономим на коде
25.09.2019 Если у вас нет телеги...
11.09.2019 Датчик присутствия из ип камеры
30.07.2019 Win-платформа-замена ffmpeg для получения скриншотов из rstp - потока
30.04.2019 Используем зомбо-ящик в Мажордомо
24.03.2019 О среднем в Мажордомо
31.10.2018 Об "обделённых" пользователях Win-систем -- с точки зрения кэширования winTTS сообщений
16.09.2018 Перезагрузка Мажордомо в Win-системах

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

На форуме: xor