[Модуль] Telegram (telegram)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Модуль "Telegram"

Сообщение Jager » Ср ноя 29, 2017 2:28 pm

Eraser писал(а):добавлены функции отправки видео
Для отправки видео
Отлично! Все работает как задумано. Надо дописать что это короткое видео можно сграбить с rtsp потока и приходит оно в виде GIF, что очень удобно.
Пример кода для отправки GIF
для windows

Код: Выделить всё

exec('C:\_majordomo\apps\ffmpeg\ffmpeg.exe -y -i rtsp://192.168.2.89:554/12 -t 5 -f mp4 -vcodec libx264 -pix_fmt yuv420p -an -vf scale=w=640:h=480:force_original_aspect_ratio=decrease -r 15 C:/_majordomo/htdocs/cached/img/out.mp4'); 
$chat_id=$params['id'];
$img='C:/_majordomo/htdocs/cached/img/out.mp4';
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendVideoToUser($chat_id,$img); 
для linux в командах:

Код: Выделить всё

exec('ffmpeg -y -i "rtsp://192.168.1.10:554/user=immortal&password=123525654&channel=1&stream=0.sdp?" -t 5 -f mp4 -vcodec libx264 -pix_fmt yuv420p -an -r 15 /var/www/cached/out.mp4'); 
$img='/var/www/cached/out.mp4';
$this->sendVideoToUser($chat_id,$img); 
За это сообщение автора Jager поблагодарили (всего 6):
kostya4000 (Чт ноя 30, 2017 7:31 am) • crontab (Пт авг 31, 2018 4:16 pm) • Osorkon (Ср фев 06, 2019 3:20 pm) • AAU (Сб фев 23, 2019 8:02 pm) • savenko_egor (Ср авг 14, 2019 9:06 pm) • Keen Lizard (Ср мар 18, 2020 5:12 pm)
Рейтинг: 6.98%
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение immortal » Ср ноя 29, 2017 10:12 pm

Отправка изображения с ip камер или графики pChart

СпойлерПоказать
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$url = 'http://192.168.1.13/pChart/?p=ow_fact.t ... &width=300';
$path = './files/chart.jpg';
file_put_contents($path, file_get_contents($url));
$telegram_module->sendImageToUser(202343323 ,'/var/www/files/chart.jpg');
За это сообщение автора immortal поблагодарили (всего 5):
Denis_k (Ср ноя 29, 2017 11:32 pm) • cabat (Чт ноя 30, 2017 10:00 am) • Pacific (Сб дек 02, 2017 9:19 pm) • Logrus (Вт июл 17, 2018 11:39 pm) • savenko_egor (Ср авг 14, 2019 9:06 pm)
Рейтинг: 5.81%
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение immortal » Ср ноя 29, 2017 10:26 pm

sigment писал(а):Привет. Бота создал, после /start подтверждение не приходит, как и у многих тут. Кому как в итоге удалось решить? Кто-то писал, пришло на следующий день... Есть вероятность, что уведомление мне тоже придёт или обычно сразу приходит?
тоже была такая проблема, решилась после того как прописал токен в МД и перезагрузил систему.
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение immortal » Чт ноя 30, 2017 12:11 pm

как в командах вместе с return использовать sendMessageToUser получив $chat_id ?
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 868 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Чт ноя 30, 2017 1:12 pm

immortal писал(а):как в командах вместе с return использовать sendMessageToUser получив $chat_id ?
$this->sendMessageToUser($chat_id,"message");
За это сообщение автора Eraser поблагодарили (всего 2):
cabat (Чт ноя 30, 2017 1:22 pm) • savenko_egor (Ср авг 14, 2019 9:05 pm)
Рейтинг: 2.33%
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение immortal » Пт дек 01, 2017 10:28 am

получение изображения с rtsp потока с камеры в linux

устанавливаем ffmpeg

Код: Выделить всё

apt-get install ffmpeg
в модуле telegramm добавляем команду со следующим кодом:

Код: Выделить всё

// получаем картинку 
$url="rtsp://192.168.1.10:554/user=admin&password=password&channel=1&stream=0.sdp?";  
$jpg="/var/www/cached/snapshot.jpg";
exec('ffmpeg -y -i "'.$url.'" -f image2 -vframes 1 '.$jpg.'');
// отправляем картинку в телеграмм
$this->sendImageToUser($chat_id,$jpg); 
соответственно заменив путь к rtsp потоку, у меня этот путь к ВР Jassun
За это сообщение автора immortal поблагодарили (всего 2):
DenisChaplin (Пн июл 30, 2018 1:33 pm) • savenko_egor (Ср авг 14, 2019 9:14 pm)
Рейтинг: 2.33%
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение immortal » Пт дек 01, 2017 1:51 pm

нашел ещё как отправлять смайлы, в код куда надо вставить смайл вставляем
hex2bin('F09F8D83')
где код смайла отсюда из столбца Bytes (UTF-8) убрав все \x или отсюда

ну и код для погоды OpenWeatherMap используемый в командах

Код: Выделить всё

$sm1 = json_decode('"'.'\ud83c\udf11'.'"');
$weather="Сейчас ".gg('ow_fact.temperature')."°C, ".gg('ow_fact.weather_type').", ".hex2bin('F09F92A8').gg('ow_fact.wind_direction_my')." ".gg('ow_fact.wind_speed')."км/ч, ".hex2bin('F09F92A6').gg('ow_fact.humidity')."%, ".hex2bin('F09F92AA').gg('ow_fact.pressure_mmhg');
$weather.="\r\nЗавтра ".gg('ow_day1.temperature')."°C, ".gg('ow_day1.weather_type').", ".hex2bin('F09F92A8').gg('ow_day1.wind_direction_my')." ".gg('ow_day1.wind_speed')."км/ч, ".hex2bin('F09F92A6').gg('ow_day1.humidity')."%, ".hex2bin('F09F92AA').gg('ow_day1.pressure_mmhg');
$weather.="\r\n".substr(gg('ow_day2.date'),0,6)." ".gg('ow_day2.temperature')."°C, ".gg('ow_day2.weather_type').", ".hex2bin('F09F92A8').gg('ow_day2.wind_direction_my')." ".gg('ow_day2.wind_speed')."км/ч, ".hex2bin('F09F92A6').gg('ow_day2.humidity')."%, ".hex2bin('F09F92AA').gg('ow_day2.pressure_mmhg');
$weather.="\r\n".substr(gg('ow_day3.date'),0,6)." ".gg('ow_day3.temperature')."°C, ".gg('ow_day3.weather_type').", ".hex2bin('F09F92A8').gg('ow_day3.wind_direction_my')." ".gg('ow_day3.wind_speed')."км/ч, ".hex2bin('F09F92A6').gg('ow_day3.humidity')."%, ".hex2bin('F09F92AA').gg('ow_day3.pressure_mmhg');
return $weather;
telegramm_weather.jpg
telegramm_weather.jpg (111.13 КБ) 10027 просмотров
За это сообщение автора immortal поблагодарили (всего 4):
Amarok (Чт дек 07, 2017 8:54 am) • dengi.76 (Пт апр 06, 2018 8:14 pm) • Samir77 (Пт авг 24, 2018 11:29 pm) • pasha413 (Вт дек 25, 2018 2:01 pm)
Рейтинг: 4.65%
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
Dellanik
Сообщения: 3
Зарегистрирован: Ср фев 22, 2017 5:20 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль "Telegram"

Сообщение Dellanik » Сб дек 02, 2017 6:59 pm

immortal писал(а):
sigment писал(а):Привет. Бота создал, после /start подтверждение не приходит, как и у многих тут. Кому как в итоге удалось решить? Кто-то писал, пришло на следующий день... Есть вероятность, что уведомление мне тоже придёт или обычно сразу приходит?
тоже была такая проблема, решилась после того как прописал токен в МД и перезагрузил систему.
Как в итоге решилась данная проблема?
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение immortal » Сб дек 02, 2017 7:30 pm

Dellanik писал(а):
immortal писал(а):
sigment писал(а):Привет. Бота создал, после /start подтверждение не приходит, как и у многих тут. Кому как в итоге удалось решить? Кто-то писал, пришло на следующий день... Есть вероятность, что уведомление мне тоже придёт или обычно сразу приходит?
тоже была такая проблема, решилась после того как прописал токен в МД и перезагрузил систему.
Как в итоге решилась данная проблема?
завел бота, Папа-бот дал токен и ссылку на бота, открыл чат с ботом, прописал токен в модуль, в чате написал /start - реакции нет, перезагрузил апельсинку, опять в чат дал /start и получил ответ, обновил пользователя в модуле и получил данные пользователя в модуле.
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение immortal » Сб дек 02, 2017 8:23 pm

Вариант меню:
В командах делаем 2 записи:
меню - пустое
Назад - скрытое с кодом

Код: Выделить всё

return "Выберите действие:";
СпойлерПоказать
Выделение_065.png
Выделение_065.png (33.72 КБ) 9991 просмотр
В события создаем событие
messageHook
СпойлерПоказать
Выделение_066.png
Выделение_066.png (56.71 КБ) 9991 просмотр
со следующим кодом
messageHookПоказать

Код: Выделить всё

//коды смайлов в кодировке utf-8  
$off = hex2bin('F09F8C91');
$on  = hex2bin('F09F8C95');
$cam = hex2bin('F09F8EA5');    
$pog = hex2bin('E29B85');
$sta = hex2bin('F09F92AC');
$st1 = $off;
$st2 = $off;
if(gg("security")){$st1=$on;}
if(gg("Econom")){$st2=$on;}
//меню камер
$option1 = array(array($cam."Камеры", $pog."Погода", $sta."Статус"),array($st1."Охрана", $st2."Эконом"),array("Назад"));
//основное меню
$option2 = array(array($cam."Камера1", $cam."Камера2", $cam."Камера3", $cam."Камера4"),array($cam."Камера5", $cam."Камера6", $cam."Камера7"),array("меню"));
//режим экономии
$pos = strripos($text , "Эконом");
if ($pos > -1) {
     if (gg("Econom")){
     sg("Econom",0);
    $status="отключен";
    $st2=$off;
    }else{
     sg("Econom",1);
    $status="включен";
    $st2=$on;
    }
     $option1 = array(array($cam."Камеры", $pog."Погода", $sta."Статус"),array($st1."Охрана", $st2."Эконом"),array("Назад"));
     $this->sendMessageToUser($chat_id,"Режим экономии ".$status,$option1);
       $skip = true;
}
//режим охраны
$pos = strripos($text , "Охрана");
if ($pos > -1) {
     if (gg("security")){
     sg("security",0);
    $status="выключена";
    $st1=$off;
    }else{
     sg("security",1);
    $status="включена";
    $st1=$on;
    }
     $option1 = array(array($cam."Камеры", $pog."Погода", $sta."Статус"),array($st1."Охрана", $st2."Эконом"),array("Назад"));
     $this->sendMessageToUser($chat_id,"Охрана ".$status,$option1);
       $skip = true;
}


//вызов меню камер
$pos = strripos($text , "Камеры");
if ($pos > -1) {
     $this->sendMessageToUser($chat_id,"Выберите камеру:",$option2);
       $skip = true;
}
//отправка изображения с камер
$pos = strripos($text , "Камера");
if ($pos > -1) {
     $channel=substr($text, -1);
    $url="rtsp://192.168.1.10:554/user=admin&password=&channel=".$channel."&stream=0.sdp?";  
    $jpg="/var/www/cached/snapshot.jpg";
    exec('ffmpeg -y -i "'.$url.'" -f image2 -vframes 1 '.$jpg);
    $this->sendImageToUser($chat_id,$jpg,"Камера ".$channel,$option2);
   $skip = true;
}
//показать погоду
$pos = strripos($text , "Погода");
if ($pos > -1) {
    $weather=     "Сейчас".hex2bin('F09F8CA1').gg('ow_fact.temperature')."°C,".gg('ow_fact.weather_type').",".hex2bin('F09F92A8').gg('ow_fact.wind_direction_my')." ".gg('ow_fact.wind_speed')."км/ч, ".hex2bin('F09F92A7').gg('ow_fact.humidity')."%, ".hex2bin('F09F92AA').round(gg('ow_fact.pressure_mmhg'),0);
    $weather.="\r\nЗавтра".hex2bin('F09F8CA1').gg('ow_day1.temperature')."°C,".gg('ow_day1.weather_type').",".hex2bin('F09F92A8').gg('ow_day1.wind_direction_my')." ".gg('ow_day1.wind_speed')."км/ч, ".hex2bin('F09F92A7').gg('ow_day1.humidity')."%, ".hex2bin('F09F92AA').gg('ow_day1.pressure_mmhg');
    $weather.="\r\n".substr(gg('ow_day2.date'),0,6).hex2bin('F09F8CA1').gg('ow_day2.temperature')."°C,".gg('ow_day2.weather_type').",".hex2bin('F09F92A8').gg('ow_day2.wind_direction_my')." ".gg('ow_day2.wind_speed')."км/ч, ".hex2bin('F09F92A7').gg('ow_day2.humidity')."%, ".hex2bin('F09F92AA').round(gg('ow_day2.pressure_mmhg'),0);
    $weather.="\r\n".substr(gg('ow_day3.date'),0,6).hex2bin('F09F8CA1').gg('ow_day3.temperature')."°C,".gg('ow_day3.weather_type').",".hex2bin('F09F92A8').gg('ow_day3.wind_direction_my')." ".gg('ow_day3.wind_speed')."км/ч, ".hex2bin('F09F92A7').gg('ow_day3.humidity')."%, ".hex2bin('F09F92AA').round(gg('ow_day3.pressure_mmhg'),0);
    $this->sendMessageToUser($chat_id, $weather, $option1);
    $skip = true;
}
//показать статус
$pos = strripos($text , "Статус");
if ($pos > -1) {
    $weather=         "1.Зал:".hex2bin('F09F8CA1').gg('tempD1.temp')."°C,".hex2bin('F09F92A6').gg('vlD1.temp')."%,".hex2bin('F09F948B').gg('bat1')/1000;
    $weather.="\r\n2.Комната:".hex2bin('F09F8CA1').gg('tempD2.temp')."°C,".hex2bin('F09F92A6').gg('vlD2.temp')."%,".hex2bin('F09F948B').gg('bat2')/1000;
    $weather.="\r\n3.Веранда:".hex2bin('F09F8CA1').gg('tempD3.temp')."°C,".hex2bin('F09F92A6').gg('vlD3.temp')."%,".hex2bin('F09F948B').gg('bat3')/1000;
    $weather.= "\r\n4.Туалет:".hex2bin('F09F8CA1').gg('tempD4.temp')."°C,".hex2bin('F09F92A6').gg('vlD4.temp')."%,".hex2bin('F09F948B').gg('bat4')/1000;
    $weather.=    "\r\n5.Душ:".hex2bin('F09F8CA1').gg('tempD5.temp')."°C,".hex2bin('F09F92A6').gg('vlD5.temp')."%,".hex2bin('F09F948B').gg('bat5')/1000;
    $weather.= "\r\n6.Парная:".hex2bin('F09F8CA1').gg('tempD6.temp')."°C,".hex2bin('F09F92A6').gg('vlD6.temp')."%";
    $this->sendMessageToUser($chat_id, $weather, $option1);
    $skip = true;
}
//показать меню
echo $text;
$pos = strripos($text , "меню");
if ($pos > -1) {
     $this->sendMessageToUser($chat_id,"Выберите действие:",$option1);
     $skip = true;
}
менюПоказать
menu1.jpg
menu1.jpg (27.72 КБ) 9991 просмотр
menu2.jpg
menu2.jpg (37.5 КБ) 9991 просмотр
За это сообщение автора immortal поблагодарили (всего 5):
savenko_egor (Чт янв 25, 2018 5:02 pm) • Albert (Пн июн 04, 2018 11:08 am) • buba911 (Пн май 20, 2019 8:13 am) • Andy111 (Вс сен 15, 2019 8:30 pm) • Svetлая (Чт июн 02, 2022 4:35 pm)
Рейтинг: 5.81%
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
Ответить