Основные команды.
Необходимо создать класс устроства (можно импортировать мой https://yadi.sk/d/v7V9cRNYP3lveQ)
Пылесос должен быть добавлен в модуле xiaomimiio, прописан токен. Свойства импортированного объекта MiVacuumCleaner должны быть привязаны к свойствам модуля xiaomimiio пылесоса.
Команды:
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
// $option[] = $telegram_module->buildInlineKeyboardButton($text=$state." ".$obj,"","Callback_fm_".$dir."/".$obj,"");
$option = array(
$telegram_module->buildInlineKeyboardButton($text="Запустить уборку","", "Callback_uborka_start",""),
$telegram_module->buildInlineKeyboardButton($text="Закончить уборку","", "Callback_uborka_stop",""),
$telegram_module->buildInlineKeyboardButton($text="На базу","", "Callback_uborka_home",""),
$telegram_module->buildInlineKeyboardButton($text="Остановить уборку","","Callback_uborka_pause",""),
$telegram_module->buildInlineKeyboardButton($text="Найти","", "Callback_uborka_findme",""),
$telegram_module->buildInlineKeyboardButton($text="Убрать зону рядом","","Callback_uborka_spot",""),
$telegram_module->buildInlineKeyboardButton($text="Текущее состояние","","Callback_uborka_now","")
) ;
$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $telegram_module->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Выберите папку: ".$dir, 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
$telegram_module->sendContent($content);
Callback:
//$telegram_module->sendMessageToAll($callback);
//$telegram_module->sendMessageToAll(substr($callback,9,6));
//$telegram_module->sendMessageToAll(substr($callback,16));
if (substr($callback,9,6) == 'uborka')
{
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
if (substr($callback,16) == 'start'){sg('MiVacuumCleaner.command','app_start');}
if (substr($callback,16) == 'stop') {sg('MiVacuumCleaner.command','app_stop');;}
if (substr($callback,16) == 'home') {sg('MiVacuumCleaner.command','app_charge');;}
if (substr($callback,16) == 'findme') {sg('MiVacuumCleaner.command','find_me');;}
if (substr($callback,16) == 'spot') {sg('MiVacuumCleaner.command','app_spot');;}
if (substr($callback,16) == 'pause') {sg('MiVacuumCleaner.command','app_pause');;}
if (substr($callback,16) == 'now') {rs("vacuumtelega");
}
}
Сценарий vacuumtelega:
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$luts=gg("MiVacuumCleaner.timestamp");
$diff=(gmdate('i',trim(time()-$luts)));
$pattern = "|\b[0]+([1-9][\d]*)|is";
$diff2= preg_replace($pattern, "\\1", $diff);
$status .= "Информация о пылесосе была обновлена " .$diff2 . " минут назад.";
if (gg('MiVacuumCleaner.online')=='1') {$status =$status." Пылесос на связи, "; }
else {$status=$status." Связь с пылесосом отсутсвует,";}
if (gg("MiVacuumCleaner.state_text")=='Charging') {$status =$status." заряжается, установлен на базе, "; }
if (gg("MiVacuumCleaner.state_text")=='Cleaning') {$status =$status." производит уборку, "; }
if (gg("MiVacuumCleaner.state_text")=='Back to home') {$status =$status." едет на базу, "; }
if (gg("MiVacuumCleaner.state_text")=='Sleeping') {$status =$status." отдыхает от трудовых будней, "; }
if (gg("MiVacuumCleaner.state_text")=='Pause') {$status =$status." установлен на паузу, "; }
//$status .= " температура двигателя ".round(gg("kia ceed.etemp"))." градусов, температура в салоне ".round(gg("kia ceed.ctemp"))." градусов.";
$status .= " Заряд аккумуляторной батареи ".gg("MiVacuumCleaner.battery")." процентов. ";
if (gg("MiVacuumCleaner.battery")<10) {$status = $status." Внимание, аккумулятор сильно разряжен, рекомендуется зарядить как можно скорее!";}
$status .= " Последняя уборка заняла ".round(gg("MiVacuumCleaner.clean_time")/60)." минут, ";
$status .= " убрано ".round(gg("MiVacuumCleaner.clean_area")/1000000,1)." метров. ";
if (gg("MiVacuumCleaner.error_text")=='No error') {$status =$status." Ошибок не зафиксировано. "; }
if (gg("MiVacuumCleaner.error_text")=='Clean main brush') {$status =$status." Необходимо очистить нижнюю щетку."; }
//////////////////////////////////
$resurs=1800;
$resursp=100-round((gg("MiVacuumCleaner.sensor_dirty_time")/60*100)/$resurs);
$resursh=round(($resurs-(gg("MiVacuumCleaner.sensor_dirty_time")/60))/60);
$status .= " Очистка боковых сенсоров необходима через $resursh часов.";
$resurs=18000;
$resursp=100-round((gg("MiVacuumCleaner.main_brush_work_time")/60*100)/$resurs);
$resursh=round(($resurs-((gg("MiVacuumCleaner.main_brush_work_time")/60)))/60);
if ($resursp<30) {$replacemain=1; }else{ $replacemain=0;}
$status .= " Ресурс нижней щетки ".$resursp." процентов ($resursh часов).";
$resurs=12000;
//$resurs=120;
$resursp=100-round((gg("MiVacuumCleaner.side_brush_work_time")/60*100)/$resurs);
$resursh=round(($resurs-((gg("MiVacuumCleaner.side_brush_work_time")/60)))/60);
if ($resursp<30){ $replaceside=1;} else {$replaceside=0;}
$status .= " Ресурс боковой щетки ".$resursp." процентов ($resursh часов).";
$resurs=9000;
//$resurs=90;
$resursp=100-round((gg("MiVacuumCleaner.filter_work_time")/60*100)/$resurs);
$resursh=round(($resurs-((gg("MiVacuumCleaner.filter_work_time")/60)))/60);
if ($resursp<30) {$replacefilter=1;} else {$replacefilter=0;}
$status .= " Ресурс фильтра ".$resursp." процентов ($resursh часов).";
if (($replacefiler=='1')or
($replaceside=='1') or
($replacemian=='1'))
{$status .= " Необходимо преобрести расходники: ";
if ($replaceside==1) $status .= "боковую щетку " ;
if ($replacefiler==1) $status .= "фильтр ";
if ($replacemain==1) $status .= "главную щетку " ;
$status .= ".";
}
$telegram_module->sendMessageToAll($status);
Екатеринбург, Россия
На форуме: directman66