Плагин Telegram



  • Случайно добавил в устройство, привязанное к плагину Telegramm единицу измерения "щ". Не знаю как удалить. Любое изменение заблокировано:
    af2d6f1b-a819-42ff-89d6-67b2be6a8547-image.png причем, если отвязать устройство от всех сценариев и плагинов ошибка сохраняется.
    Получилось отвязать только следующим алгоритмом:

    1. Убираем единицу измерения, сохраниться возможности нет
    2. Переключаемся на другую вкладку (экраны, виджиты и тд) поле единица измерения очистится
    3. Перезапускам IH, после этого единица измерения не отображается


  • @dimkrasiy Добрый день, пока можно сделать в ручном режиме так:

    /** 
    * @name Telegram InHome  
    * @desc  
    * @version 4 
    */
    
    const telegram_comand = Device("telegram_comand");
    const InHome = Device("InHome");
    
    startOnChange([telegram_comand]);
    
    script({
      start() {
        if (telegram_comand.value == "#/inhome") {
          InHome.turnOnSaveAuto();
          this.mes(telegram_comand.userid, `С возвращением домой ;-)`);
        }
        if (telegram_comand.value == "#/inwork") {
          InHome.turnOffSaveAuto();
          this.mes(telegram_comand.userid, `Охрана: Вкл. Отопление: Эко-режим.`);
        }
      },
      mes(id, txt) {
        const users = {};
    
        users[78945] = 'admin';  // users[tid] = 'ihuser',  сопоставьте telegram id и пользователя в системе
        users[78946] = 'user1';
        users[78947] = 'user2';
        users[78948] = 'user3';
    
        this.info("telegram", users[id] || 'not found', txt);
      }
    })
    

    Вам нужно будет указать telegram user id (можно посмотреть в адресах информирования) и пользователя в системе, тогда ответ придет тому кто написал команду



  • @homa Добрый день, спасибо за баг-репорт 👍



  • Добрый день,

    По согласованию с Генпрокуратурой Роскомнадзор снимает требования по ограничению доступа к Telegram

    Для более стабильной и быстрой работы плагина, настройку Прокси можно отключить.

    Снимок экрана 2020-06-19 в 11.49.09.png



  • Пользователь @dev написал в Плагин Telegram:

    Добрый день, доступно обновление плагина 0.0.12

    • Исправлена логика отправки сообщений

    • Отправка снапшотов видеокамеры в сообщениях.

    • Отправка изображений (файлов) в сообщениях

    • Добавлена обработка входящих сообщений

    Отправить текст:

    /** 
    * @name Script 1
    * @desc  
    * @version 4 
    */
    
    script({
      start() { 
         this.info("telegram","OWNER", { txt: 'Hello world!' });
      }
    })
    
    
    

    Отправить изображение:

    /** 
    * @name Script 2
    * @desc  
    * @version 4 
    */
    
    script({
      start() { 
         this.info("telegram","OWNER", { txt: 'test img', img: '/home/sadm/images/test.jpg' });
      }
    })
    
    
    

    Отправить снапшот:

    Добрый день. Подскажите пожалуйста, можно в примере " получить фото" использовать не имя файла, а диапазон имён? Объясню. У меня есть видео сервер. Он сам делает скриншот, отправляет в файлохранилище. И каждый снимок именуют номер потока и время. Через плагин сств не получается взять снапшот потому что запрос получается вида: 127.0.0.1:56555/video.jpg( и каждый раз рандом число) stream 0s1. Я настроил в снапшотов периодическое удаление фото. Как мне получить фото зная только часть имени. Типа channel1s1xxx, где ххх порядковый номер. Спасибо.



  • @Alex-Kupriyanov
    Ещё раз здравствуйте. Получилось как-то не очень.
    /**

    • @name Script 2
    • @desc
    • @version 4
      */

    const SMOTION_1_1 = Device("SMOTION_1_1");

    startOnChange([SMOTION_1_1]);

    script({
    start() {
    if (SMOTION_1_1.isOn()) {
    this.info("telegram","OWNER", { txt: 'Гостиная', img: '/var/www/dietpi_userdata/snapshot//channel1s1001M.jpg' });
    this.startTimer("T1",10,"onTimerT1");
    }
    },
    onTimerT1() {
    this.execOS(find /var/www/dietpi_userdata/snapshot/ . -name "channel1s100*" -type f -delete \;);
    }
    })



  • Пользователь @sergeyygr написал в Плагин Telegram:

    @dev:

    @sergeyygr:

    @sergeyygr:

    Написал. Вероятно не воспринимает, до загрузки IH дело не доходит, OS до конца не загружается :oops:

    Вылечил! Отсоединил lan, вошел через 127.0.0.1, удалил сценарий, все встало на место. Адреналинчику хватнул 😄

    Добрый день, здорово, что получилось, простите за некорректный пример, завтра предложим рабочий вариант 😉

    А рабочий вариант будет? 😉

    /**

    • @name Перезагрузка_IHPRO
    • @desc перезагружает оболочку ihpro
    • @version 4
      */

    const telegram_bot_1 = Device("telegram_bot_1");

    startOnChange([telegram_bot_1]);

    script({
    start() {
    if (telegram_bot_1.value == "restart") {
    this.startTimer("T1",10,"onTimerT1");
    }
    },
    onTimerT1() {
    this.execOS(systemctl restart intrahouse-c);
    }
    })

    /**

    • @name Перезагрузка
    • @desc перезагружает систему
    • @version 4
      */

    const telegram_bot_1 = Device("telegram_bot_1");

    startOnChange([telegram_bot_1]);

    script({
    start() {
    if (telegram_bot_1.value == "reboot") {
    this.startTimer("T1",10,"onTimerT1");
    }
    },
    onTimerT1() {
    this.execOS(sudo reboot);
    }
    })



  • переписал this.execOS : this.execOS(cd /mnt/dietpi_userdata/snapshot/ && n=1; for f in *.jpg; do mv "$f" "$n.jpg"; n=$((n+++1)); done; cd;);



  • Пользователь @Alex-Kupriyanov написал в Плагин Telegram:

    переписал this.execOS : this.execOS(cd /mnt/dietpi_userdata/snapshot/ && n=1; for f in *.jpg; do mv "$f" "$n.jpg"; n=$((n+++1)); done; cd;);

    this.execOS(cd /mnt/SHINOBI/dietpi_userdata/snapshot/ && find . -name 'channel1s*.jpg' -printf "mv '%p' '%h/%TY-%Tm-%Td+%TH:%TM:%TS_%f'\n" | sh);



  • Здравствуйте.
    Как предать в плагин telegram свое значение не img а video?
    this.info("telegram","OWNER", { txt: 'Движение!!!', img: '/tmp/output.mp4'});



  • Коллеги, в Cherry при старте системы сценарием формируются telegram-уведомления, но они не приходят... Push-сообщения прилетают!
    Plugin_Telegram_No_Message.PNG



  • @Alex_Jet Добрый день, попробуйте отключить прокси, в настройках плагина



  • Добрый день!
    Написал скрипт

    /** 
    * @name Тестовый сценарий телеграмм 
    * @desc  
    * @version 4 
    */
    const inc_msg = Device("Telegram_inc_msg"); 
    
    startOnChange(inc_msg); 
    
    script({
        start() {
            if (inc_msg.value=="123") { this.info("telegram","OWNER", {txt: '321'}); }
            else { this.info("telegram","OWNER", {txt:'не понял :('}); } 
        } 
    });
    

    Если отправляю в Бот "123", то в ответ получаю 2 строки: "321" и "не понял :(".
    Если от отправляю что-то другое, то получаю 2 раза "не понял :(".

    Явно ошибка какая-то глупая.
    Но какая?



  • То, что бот в канале пишет не является для скрипта таким же inc_msg ?

    В этом случае все всегда заканчивается на "не понял". А потом уже inc_msg не меняется (остается "не понял"), поэтому до бесконечности скрипт не продолжается.
    123 - 321
    321 - не понял
    не понял - не понял (а это не изменение предыдущего значения)



  • Пользователь @Erik написал в Плагин Telegram:

    То, что бот в канале пишет не является для скрипта таким же inc_msg ?

    В этом случае все всегда заканчивается на "не понял". А потом уже inc_msg не меняется (остается "не понял"), поэтому до бесконечности скрипт не продолжается.
    123 - 321
    321 - не понял
    не понял - не понял (а это не изменение предыдущего значения)

    Идея хорошая.
    Спасибо!
    Но как тогда обрабатывать такую ситуацию если сообщений от бота может быть достаточно много.

    В самом плагине в incoming_message, в значении с канала, указано именно то что я отправлял боту. т.е. "321" и "не понял" так не появляется...
    Но обработка только по условиям "==" не дублирует сообщения



  • Добрый день!
    Подскажите, пожалуйста, как сделать так что бы если я создаю групповой чат (группу) с Ботом и пишу ему в нем, что бы он в нем и отвечал (сейчас я пишу в группе, а отвечает он мне лично)?

    и второй вопрос, как ограничить пользователей с которыми он может взаимодействовать?



  • Немного подразобрался/вспомнил.
    В "адреса для информирования" внес своего пользователя Telegram и id группы.
    Теперь бот отвечает и в группу и мне лично.
    Хотелось бы что бы отвечал только в группу.


Log in to reply