Плагин Telegram



  • @Alex_Jet:

    @dev:

    @Alex_Jet:

    Сделал совсем новый канал. На вкладке дополнительно все заполнил, но:

    > > > 17.04 12:38:47.683 Started
    > > > 17.04 12:38:47.684 snap:"319"
    > > > 17.04 12:38:47.684 plugincommand {"unit":"cctv","uuid":"snap_1555479527684","command":"snap","id":"319","camid":"319"}
    > > > 17.04 12:38:47.685 plugincommand result undefined
    > > > 17.04 12:38:47.685 exec function onSnap10
    > > > 17.04 12:38:47.686 Error function onSnap10:Cannot read property 'filename' of undefined
    > > > 17.04 12:38:47.686 Stopped
    > > > 17.04 12:39:00.179 Started
    > > > 17.04 12:39:00.180 snap:"319"
    > > > 17.04 12:39:00.180 plugincommand {"unit":"cctv","uuid":"snap_1555479540180","command":"snap","id":"319","camid":"319"}
    > > > 17.04 12:39:00.275 plugincommand result {"message":"fail"}
    > > > 17.04 12:39:00.275 exec function onSnap10
    > > > 17.04 12:39:00.275 info telegram: { dest: 'OWNER', img: undefined, txt: 'Hello world!' }
    > > > 17.04 12:39:00.314 Stopped
    > > > 17.04 12:39:56.927 Started
    > > > 17.04 12:39:56.928 snap:"319"
    > > > 17.04 12:39:56.928 plugincommand {"unit":"cctv","uuid":"snap_1555479596928","command":"snap","id":"319","camid":"319"}
    > > > 17.04 12:39:56.964 plugincommand result {"message":"fail"}
    > > > 17.04 12:39:56.964 exec function onSnap10
    > > > 17.04 12:39:56.965 info telegram: { dest: 'OWNER', img: undefined, txt: 'Hello world!' }
    > > > 17.04 12:39:56.998 Stopped
    > > > 
    

    Добрый день, запрос не проходит, надо смотреть почему

    Разобрался. Нужна аутентификация - http://login:password@192.168.11.16/web/tmpfs/auto.jpg

    Нужно сделать какой-то статус кроме fail для отладки таких вещей.

    И все же напрашивается иерархичность каналов в плагине! Почему вы пошли другим путем, зная что в камере может быть 3-5 каналов?

    Добрый день, хорошо мы поправим, снапшот пришел у Вас в телеграм? 😉



  • @dev:

    Добрый день, хорошо мы поправим, снапшот пришел у Вас в телеграм? 😉

    Да, пришел:

    17.04 12:46:38.306 Started
    17.04 12:46:38.307 snap:"319"
    17.04 12:46:38.308 plugincommand {"unit":"cctv","uuid":"snap_1555479998307","command":"snap","id":"319","camid":"319"}
    17.04 12:46:38.417 plugincommand result {"filename":"/var/lib/intrahouse-c/projects/Alex_Jet_Smart_Home/temp/snapshot/snap_1555479998414.jpg"}
    17.04 12:46:38.417 exec function onSnap10
    17.04 12:46:38.418 info telegram: { dest: 'OWNER',
      img: '/var/lib/intrahouse-c/projects/Alex_Jet_Smart_Home/temp/snapshot/snap_1555479998414.jpg',
      txt: 'Hello world!' }
    17.04 12:46:38.452 Stopped
    
    

    Теперь надо какой-то просмоторщик снэпшотов (виджет снэпшотов с камер) делать в системе…раз они сохраняются в temp:) Иначе, какой смысл хранить их в системе?



  • @Alex_Jet:

    @dev:

    Добрый день, хорошо мы поправим, снапшот пришел у Вас в телеграм? 😉

    Да, пришел:

    > 17.04 12:46:38.306 Started
    > 17.04 12:46:38.307 snap:"319"
    > 17.04 12:46:38.308 plugincommand {"unit":"cctv","uuid":"snap_1555479998307","command":"snap","id":"319","camid":"319"}
    > 17.04 12:46:38.417 plugincommand result {"filename":"/var/lib/intrahouse-c/projects/Alex_Jet_Smart_Home/temp/snapshot/snap_1555479998414.jpg"}
    > 17.04 12:46:38.417 exec function onSnap10
    > 17.04 12:46:38.418 info telegram: { dest: 'OWNER',
    >   img: '/var/lib/intrahouse-c/projects/Alex_Jet_Smart_Home/temp/snapshot/snap_1555479998414.jpg',
    >   txt: 'Hello world!' }
    > 17.04 12:46:38.452 Stopped
    > 
    

    Теперь надо какой-то просмоторщик снэпшотов (виджет снэпшотов с камер) делать в системе…раз они сохраняются в temp:) Иначе, какой смысл хранить их в системе?

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



  • @sergeyygr:

    @dev:

    Добрый день, доступно обновление плагина 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' });
    > >   }
    > > })
    > > 
    > > 
    

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

    > > /** 
    > > * @name Script 3
    > > * @desc  
    > > * @version 4 
    > > */
    > > 
    > > const SMOTION_0_1 = Device("SMOTION_0_1");
    > > 
    > > startOnChange([SMOTION_0_1]);
    > > 
    > > script({
    > >   start() { 
    > >     if (SMOTION_0_1.isOn()) {
    > >       this.snap("10","onSnap10");
    > >     }
    > >   },
    > >   onSnap10(result) { 
    > >      let img = result.filename; 
    > >      let txt = `Hello world!`; 
    > >      this.info("telegram","OWNER", { img, txt });
    > >   }
    > > })
    > > 
    > > 
    

    Отправить снапшот (блок-схема):

    Снимок экрана от 2019-04-12 17-01-58.png

    Для того чтобы обрабатывать входящие сообщение от бота, необходимо создать новое устройство типа "Датчик универсальный аналоговый" и привязать в плагине к каналу 'incoming_message'

    Снимок экрана от 2019-04-12 17-08-23.png

    Снимок экрана от 2019-04-12 17-08-54.png

    Далее это устройство можно обрабатывать через сценарий или блок-схему

    А можно подробнее об обработке входящих сообщений? Есть необходимость в особых случаях сделать дистанционную перезагрузку сервера (например пропала связь по р2р) через сообщение боту.

    Добрый день, идея интересная расширим API сценариев 😉



  • @sergeyygr:

    @sergeyygr:

    @dev:

    А можно подробнее об обработке входящих сообщений? Есть необходимость в особых случаях сделать дистанционную перезагрузку сервера (например пропала связь по р2р) через сообщение боту.

    Добрый день, идея интересная расширим API сценариев 😉

    Хмм… А думал это сейчас реализовать можно... Отправляем сообщение, запускается сценарий и команда this.execOS(sudo reboot) 🙂

    Добрый день, действительно так тоже можно 😄



  • @sergeyygr:

    @dev:

    @sergeyygr:

    Хмм… А думал это сейчас реализовать можно... Отправляем сообщение, запускается сценарий и команда this.execOS(sudo reboot) 🙂

    Добрый день, действительно так тоже можно 😄

    Подскажите пожалуйста как это сделать.

    Добрый день, перед тем как приступать обновите версию до 4.6.4, должно быть примерно так:



  • @sergeyygr:

    @dev:

    @sergeyygr:

    Подскажите пожалуйста как это сделать.

    Добрый день, перед тем как приступать обновите версию до 4.6.4, должно быть примерно так:

    Снимок экрана 2019-04-29 в 16.02.33.png

    Вот так ПЕРЕЗАГРУЗИЛСЯ!!! Перезагрузка зациклилась!!! Как Это остановить?????

    Добрый день, напишите боту другую команду, любую



  • @sergeyygr:

    @sergeyygr:

    @dev:

    Добрый день, напишите боту другую команду, любую

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

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

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



  • @dev:

    @sergeyygr:

    @sergeyygr:

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

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

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

    Это к вопросу об отбивке выполненной команды что я писал ранее. зарезервировать бы какое слово, которое встанет в значение датчика после того, как плагин прожует текст. Это на уровне плагина было бы проще сделать, чем в каждом скрипте писать. Может даже поле в плагине, чтобы каждый туда свой флаг завершения прописал, либо обнулять, либо символ дописывать в начало или конец



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

    • добавлено обнуление значения с помощтью символа #


  • @dev:

    @sergeyygr:

    @sergeyygr:

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

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

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

    Добрый день, сценарий для перезагрузки:
    Снимок экрана 2019-05-06 в 12.31.48.png



  • @homa:

    @dev:

    @sergeyygr:

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

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

    Это к вопросу об отбивке выполненной команды что я писал ранее. зарезервировать бы какое слово, которое встанет в значение датчика после того, как плагин прожует текст. Это на уровне плагина было бы проще сделать, чем в каждом скрипте писать. Может даже поле в плагине, чтобы каждый туда свой флаг завершения прописал, либо обнулять, либо символ дописывать в начало или конец

    Добрый день, сделали с помощью символа #, обновите плагин до версии 0.0.15 😉



  • @sergeyygr:

    @dev:

    @sergeyygr:

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

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

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

    Так последнее обновление вроде решает Ваш вопрос



  • @sergeyygr:

    @dev:

    @sergeyygr:

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

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

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

    Добрый день, вот рабочий вариант



  • Добрый день. Использую сценарии для работы с плагином. Команда передается по каналу аналогового устройства.
    И если 1 участник пишет команду то ответ видят все участники. Как можно сделать что бы ответ приходил только тому кто написал команду ?

    /** 
    * @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.info("telegram","OWNER",`С возвращением домой ;-)`);
        }
        if (telegram_comand.value == "#/inwork") {
          InHome.turnOffSaveAuto();
          this.info("telegram","OWNER",`Охрана: Вкл.
    Отопление: Эко-режим.`);
        }
      }
    })
    
    


  • Случайно добавил в устройство, привязанное к плагину 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, где ххх порядковый номер. Спасибо.


Авторизуйтесь, чтобы ответить