Плагин 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' });
      }
    })
    
    
    

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

    /** 
    * @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

    Далее это устройство можно обрабатывать через сценарий или блок-схему
    Снимок экрана от 2019-04-12 17-41-11.png



  • А как получить значение userid? Можно ли из блок-схемы?

    Ждем еще функционал кнопок для полного фарша) пока кнопок нет - создал команды
    tc1.JPG



  • Чтобы команда выполнялась несколько раз подряд, значение датчика, привязанного к телеграму нужно обнулять или менять, иначе startOnChange не запустится повторно. Хотел после выполнения писать туда "Done" , но оказалось, аналоговому датчику из блок-схемы нельзя присвоить тестовое значение)



  • @dev:

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

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

    Можно более подробно расписать по snapshot. Я вот реально не понял - кто его делает - плагин CCTV или в нем специально надо добавлять канал камеры, который делает snapshot? По this.snap("10","onSnap10") - еле догадался, что "10" - это id канала в cctv-плагине…

    Смог вручную стартануть сценарий, вот что у меня вышло:

    17.04 12:18:30.223 Started
    17.04 12:18:30.225 snap:"312"
    17.04 12:18:30.226 plugincommand {"unit":"cctv","uuid":"snap_1555478310225","command":"snap","id":"312","camid":"312"}
    17.04 12:18:30.227 info telegram: { txt: 'Тест', dest: 'OWNER' }
    17.04 12:18:30.283 plugincommand result {"message":"no snapshot option for camera 312"}
    17.04 12:18:30.284 exec function onSnap10
    17.04 12:18:30.284 info telegram: { dest: 'OWNER', img: undefined, txt: 'Hello world!' }
    17.04 12:18:30.288 Stopped
    
    

    Upd: добавил новый канал HTTP/JPEG с адресом http://192.168.11.12/web/tmpfs/auto.jpg. В отладчике почти то же самое:

    17.04 12:26:25.981 Started
    17.04 12:26:25.982 snap:"319"
    17.04 12:26:25.983 plugincommand {"unit":"cctv","uuid":"snap_1555478785982","command":"snap","id":"319","camid":"319"}
    17.04 12:26:25.987 plugincommand result {"message":"no snapshot option for camera 319"}
    17.04 12:26:25.987 exec function onSnap10
    17.04 12:26:25.988 info telegram: { dest: 'OWNER', img: undefined, txt: 'Hello world!' }
    17.04 12:26:26.027 Stopped
    
    

    Все же как этим пользоваться?

    И добавляя новый канал, увидел что в последней версии cctv убрали возможность добавлять подканалы…я считаю что зря! Мне кажется целесообразнее завести 5-10 камер и у каждой добавить нужный канал/каналы. Такая иерархичная структура удобнее как минимум пользователям.



  • @Alex_Jet:

    @dev:

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

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

    Можно более подробно расписать по snapshot. Я вот реально не понял - кто его делает - плагин CCTV или в нем специально надо добавлять канал камеры, который делает snapshot? По this.snap("10","onSnap10") - еле догадался, что "10" - это id канала в cctv-плагине…

    Смог вручную стартануть сценарий, вот что у меня вышло:

    > 17.04 12:18:30.223 Started
    > 17.04 12:18:30.225 snap:"312"
    > 17.04 12:18:30.226 plugincommand {"unit":"cctv","uuid":"snap_1555478310225","command":"snap","id":"312","camid":"312"}
    > 17.04 12:18:30.227 info telegram: { txt: 'Тест', dest: 'OWNER' }
    > 17.04 12:18:30.283 plugincommand result {"message":"no snapshot option for camera 312"}
    > 17.04 12:18:30.284 exec function onSnap10
    > 17.04 12:18:30.284 info telegram: { dest: 'OWNER', img: undefined, txt: 'Hello world!' }
    > 17.04 12:18:30.288 Stopped
    > 
    

    Добрый день, удалите старый канал в плагине cctv, создайте новый, на вкладке камера заполните все как и было, на вкладке дополнительно заполните строку со снапшотом. Снапшот делает плагин CCTV, через команду this.snap. У Вас в плагине CCTV для канала 312 не заполненна строка со снапшотом во вкладке дополнительно



  • @dev:

    Добрый день, удалите старый канал в плагине cctv, создайте новый, на вкладке камера заполните все как и было, на вкладке дополнительно заполните строку со снапшотом. Снапшот делает плагин CCTV, через команду this.snap. У Вас в плагине CCTV для канала 312 не заполненна строка со снапшотом во вкладке дополнительно

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

    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
    
    


  • @Alex_Jet:

    @dev:

    Добрый день, удалите старый канал в плагине cctv, создайте новый, на вкладке камера заполните все как и было, на вкладке дополнительно заполните строку со снапшотом. Снапшот делает плагин CCTV, через команду this.snap. У Вас в плагине CCTV для канала 312 не заполненна строка со снапшотом во вкладке дополнительно

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

    > 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
    > 
    

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



  • @dev:

    @Alex_Jet:

    @dev:

    Добрый день, удалите старый канал в плагине cctv, создайте новый, на вкладке камера заполните все как и было, на вкладке дополнительно заполните строку со снапшотом. Снапшот делает плагин CCTV, через команду this.snap. У Вас в плагине CCTV для канала 312 не заполненна строка со снапшотом во вкладке дополнительно

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

    > > 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 каналов?



  • @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 😉


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