directman

<<< Back

Удобный просмотр данных сенсоров через телеграмм

Пример показывает список сенсоров Простых Устройств, имеющих значения и выводит из в удобном виде через телеграмм.

Команды

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$objects=getObjectsByClass("SHumSensors");
foreach($objects as $obj) {

     if (gg($obj['TITLE'].".value") ){
      if (gg($obj['TITLE'].".linkedRoom")) $lr=" (".gg($obj['TITLE'].".linkedRoom").")"; else $lr="";
    $option[] = $telegram_module->buildInlineKeyboardButton($text=$obj['TITLE'].": ".hex2bin('F09F92A7').gg($obj['TITLE'].".value").$lr,"","Callback_sensorhistory_".$obj['TITLE'].".value".":7");

     }
}

$objects=getObjectsByClass("STempSensors");
//print_r($objects);
foreach($objects as $obj) {

 if (gg($obj['TITLE'].".linkedRoom")) $lr=" (".gg($obj['TITLE'].".linkedRoom").")"; else $lr="";
     if (gg($obj['TITLE'].".value") )

    $option[] = $telegram_module->buildInlineKeyboardButton($text=$obj['TITLE'].": ".hex2bin('F09F8CA1').gg($obj['TITLE'].".value").$lr,"","Callback_sensorhistory_".$obj['TITLE'].".value".":7");
}

$objects=getObjectsByClass("STempHumSensors");
//print_r($objects);
foreach($objects as $obj) {
if (gg($obj['TITLE'].".linkedRoom")) $lr=" (".gg($obj['TITLE'].".linkedRoom").")"; else $lr="";    
     if (gg($obj['TITLE'].".value") )

    $option[] = $telegram_module->buildInlineKeyboardButton($text=$obj['TITLE'].": ".hex2bin('F09F8CA1').gg($obj['TITLE'].".value")."°;".hex2bin('F09F92A7').gg($obj['TITLE'].".valueHumidity")."%".$lr,"","Callback_sensorhistory_".$obj['TITLE'].".value".":7");
}

$objects=getObjectsByClass("SGeneralSensors");
//print_r($objects);
foreach($objects as $obj) {

 if (gg($obj['TITLE'].".linkedRoom")) $lr=" (".gg($obj['TITLE'].".linkedRoom").")"; else $lr="";
     if (gg($obj['TITLE'].".value") )

    $option[] = $telegram_module->buildInlineKeyboardButton($text=$obj['TITLE'].": ".hex2bin('F09F92A2').gg($obj['TITLE'].".value").$lr,"","Callback_sensorhistory_".$obj['TITLE'].".value".":7");
}

$objects=getObjectsByClass("SCounters");
//print_r($objects);
foreach($objects as $obj) {

 if (gg($obj['TITLE'].".linkedRoom")) $lr=" (".gg($obj['TITLE'].".linkedRoom").")"; else $lr="";
     if (gg($obj['TITLE'].".value") )

    $option[] = $telegram_module->buildInlineKeyboardButton($text=$obj['TITLE'].": ".hex2bin('F09F939B').gg($obj['TITLE'].".value").$lr,"","Callback_sensorhistory_".$obj['TITLE'].".value".":31");
}

$objects=getObjectsByClass("SPressureSensors");
//print_r($objects);
foreach($objects as $obj) {

 if (gg($obj['TITLE'].".linkedRoom")) $lr=" (".gg($obj['TITLE'].".linkedRoom").")"; else $lr="";
     if (gg($obj['TITLE'].".value") )

    $option[] = $telegram_module->buildInlineKeyboardButton($text=$obj['TITLE'].": ".hex2bin('F09F90A3').gg($obj['TITLE'].".value").$lr,"","Callback_sensorhistory_".$obj['TITLE'].".value".":7");
}

$objects=getObjectsByClass("SLeak");
//print_r($objects);
foreach($objects as $obj) {

 if (gg($obj['TITLE'].".linkedRoom")) $lr=" (".gg($obj['TITLE'].".linkedRoom").")"; else $lr="";
     if (gg($obj['TITLE'].".value") )

    $option[] = $telegram_module->buildInlineKeyboardButton($text=$obj['TITLE'].": ".hex2bin('F09F8EA3').gg($obj['TITLE'].".value").$lr,"","Callback_sensorhistory_".$obj['TITLE'].".value".":7");
}

$count_row = 1;
$option = array_chunk($option, $count_row);
$keyb = $telegram_module->buildInlineKeyBoard($option);

    $content = array('chat_id' => $chat_id, 'text' => "Датчики: ", 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
$telegram_module->sendContent($content); 

И добавляем callback

include_once(DIR_MODULES . 'telegram/telegram.class.php');

if (substr($callback,9,13)== 'sensorhistory') 
{
 $obj=explode(':',substr($callback,23))[0];
 $days=explode(':',substr($callback,23))[1];
//$telegram_module->sendMessageToAll($obj);
$text=$obj.':'.chr(10);
 $ar=getHistoryAvgDay($obj, time()-$days*86400,  time());
foreach ($ar as $key=>$val)
{
 $diff=round($val['VALUE']-$last,2);

 if ($last) $difftxt=' ('.$diff.')';
 $text.=$val['VALUE']."  :  ".$val['ADDED'].$difftxt.chr(10);
 $last=$val['VALUE'];

}

 $telegram_module->sendMessageToAll($text);

}

Discuss (5) (4)

See also:
2019-08-16 Регулирование радиаторов отопления
2019-08-18 Собираем голосовой помощник на базе WM8960 Audio HAT и raspberry pi zero w
2019-08-13 Общедоступная ссылка с закатом, рассветом и текущей погодой
2019-07-24 Самый дешевый вариант видеонаблюдения
2019-07-22 Запуск MajorDroid на одноплатниках, старых планшетах, телефонах.
2019-07-22 Запуск Majordroid на старом железе
2019-07-15 Устанавливаем opencv и необходимые библиотеки на ubuntu 18.04 без использования python
2019-07-05 Решение проблемы Incorrect integer value: '' for column 'ID' at row 1
2019-07-04 О приборах учета и удаленном снятии показаний (вода и газ)
2019-07-04 О приборах учета и удаленном снятии показаний (электричество)
2019-07-03 Конвертируем rs-485 в TCP-IP
2019-06-24 Наблюдение за радиационной обстановкой в регионе
2019-06-06 Меню пылесоса Xiaomi в телеграмм
2019-06-06 Просмотр камер через телеграмм
2019-06-06 Управление светом через телеграмм
2019-06-06 Колор-пикер для телеграм
2019-05-06 Список символов emoji
2019-04-17 Установка z-way на Ubuntu
2019-04-16 Решение проблемы ERROR 1040 (HY000): Too many connections
2018-09-09 Список домофонов с IP интерфейсом
2018-08-29 Список кондиционеров с wifi
2018-08-29 Список доступных к покупке IP колонок
2018-07-15 Интеграция датчика Mi flora plant к системе УД MAJORDOMO
2018-06-13 Полезные команды для работы с git
2018-05-27 преобразование html страниц в картинку и отправка в телеграмм
2018-05-24 Полезные sql запросы
2018-05-23 Создание образа nand памяти orange pi plus2
2018-05-16 Команды для работы с базой данных напрямую
2018-04-13 Индикаторы о заряде батареек без использования картинок
2018-04-06 Установка и настройка python на windows для работы систем распознавания
2018-04-05 Распознавание лиц подходящих к двери людей с помощью ip камеры и открытие двери, если нейросеть признала своего
2018-04-04 Управление таймерами выключения света
2018-04-04 Управление RGB контроллером на базе ESP8266
2018-04-03 Увеличение разрешения китайских камер на чипе hi3516c H264
2018-03-13 Использование колонки google home в качестве терминала Majordomo
2018-03-13 Установка и подключение rtl usb донгла для чтения датчиков температуры и кнопок 433 мгц
2018-03-13 Настройка брокера MQTT
2018-02-17 Проект "умная входная дверь"
2018-02-11 Отправка всех значений свойства объекта в телеграм
2017-12-21 получение адреса по GPS координатам
2017-12-21 получение / передача GPS координат сервису livegps.com
2017-12-21 чтение мгновенных данных U,P, I электросчетчика милур 104
2017-12-21 Получение координат с маяков и gsm сигнализаций starline-online.ru

Екатеринбург, Россия

На форуме: directman66