[Модуль] Терминалы2 (Terminals2)

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

Модератор: immortal

Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Модуль] Терминалы2 (Terminals2)

Сообщение Chainik » Чт июл 23, 2020 2:47 pm

Работоспособность еще от типа кавычек может зависеть
https://mjdm.ru/forum/viewtopic.php?f=5 ... &start=114
homester
Сообщения: 194
Зарегистрирован: Вт дек 24, 2019 2:09 pm
Благодарил (а): 112 раз
Поблагодарили: 34 раза

Re: [Модуль] Терминалы2 (Terminals2)

Сообщение homester » Чт июл 23, 2020 4:13 pm

Поднял сервер под Win для проверки, функция playMedia() не работает, три бубна сменил, бесполезно. Буду разбираться. Да и с моей проблемой наверно не в этой ветке.
Raspberry Pi3 B+, v4.44, внешняя з/к
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Модуль] Терминалы2 (Terminals2)

Сообщение tarasfrompir » Чт июл 23, 2020 4:27 pm

tarasfrompir писал(а):
Чт июл 23, 2020 2:08 pm
yden писал(а):
Чт июл 23, 2020 1:20 pm
Сенк.
Пробую:

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

$path = "/var/www/cms/sounds/03731.mp3";
playMedia($path, $host = 'googleHomeMini', $safe_play = FALSE)
Получаю: гуглоколонка тиликнула и тишина:

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

http://10.12.10.10/admin.php?pd=cGFuZWw6e2FjdGlvbj1zY3JpcHRzfQ%3D%3Dpz_&md=scripts&inst=adm&
Maximum execution time of 90 seconds exceeded

#0 /var/www/lib/errors.class.php(116): custom_error->__construct('Maximum executi...')
#1 [internal function]: phpShutDownFunction()
#2 {main}
МДМ стоит на ubuntu server, файл по указанному пути имеется.
Хреново пробуеш - а так ?
$path = "/var/www/cms/sounds/03731.mp3";
playMedia($path, 'googleHomeMini');
ВОТ ТАК ПРОБОВАЛ??? только ж путь свой к файлу и название терминала соответственно
Спасибо нам ПОМОЖЕТ..!
homester
Сообщения: 194
Зарегистрирован: Вт дек 24, 2019 2:09 pm
Благодарил (а): 112 раз
Поблагодарили: 34 раза

Re: [Модуль] Терминалы2 (Terminals2)

Сообщение homester » Чт июл 23, 2020 4:37 pm

Если ко мне вопрос, то нет вариантов, которые я не испробовал.
Raspberry Pi3 B+, v4.44, внешняя з/к
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Модуль] Терминалы2 (Terminals2)

Сообщение tarasfrompir » Чт июл 23, 2020 4:38 pm

homester писал(а):
Чт июл 23, 2020 4:37 pm
Если ко мне вопрос, то нет вариантов, которые я не испробовал.
ну странно - ...
Спасибо нам ПОМОЖЕТ..!
yden
Сообщения: 141
Зарегистрирован: Пн авг 22, 2016 10:03 am
Благодарил (а): 28 раз
Поблагодарили: 5 раз

Re: [Модуль] Терминалы2 (Terminals2)

Сообщение yden » Чт июл 23, 2020 5:38 pm

tarasfrompir писал(а):
Чт июл 23, 2020 2:08 pm
yden писал(а):
Чт июл 23, 2020 1:20 pm
Сенк.
Пробую:

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

$path = "/var/www/cms/sounds/03731.mp3";
playMedia($path, $host = 'googleHomeMini', $safe_play = FALSE)
Получаю: гуглоколонка тиликнула и тишина:

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

http://10.12.10.10/admin.php?pd=cGFuZWw6e2FjdGlvbj1zY3JpcHRzfQ%3D%3Dpz_&md=scripts&inst=adm&
Maximum execution time of 90 seconds exceeded

#0 /var/www/lib/errors.class.php(116): custom_error->__construct('Maximum executi...')
#1 [internal function]: phpShutDownFunction()
#2 {main}
МДМ стоит на ubuntu server, файл по указанному пути имеется.
Хреново пробуеш - а так ?
$path = "/var/www/cms/sounds/03731.mp3";
playMedia($path, 'googleHomeMini');
И так та же ошибка.
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Модуль] Терминалы2 (Terminals2)

Сообщение tarasfrompir » Чт июл 23, 2020 10:42 pm

Так по поводу тех кто ходил на мастер а потом на альфу - а потом опять обратно , а потом вообще хз куда...
НО Если у вас есть ошибка связанная с функцией евентс... чтото типа каннот редекларе евентс ....
ТО при удалении терминалов2 ОБЯЗАТЕЛЬНО УДАЛИТЬ ЕЩЕ И ФАЙЛ ЕВЕНТС.КЛАСС.ПХП.....
Єто для тех кто на мастере...
И вообще придерживайтесь рекомендаций - ставьте єтот модуль только на АЛЬФУ... МДМ....
Спасибо нам ПОМОЖЕТ..!
Slavik398
Сообщения: 78
Зарегистрирован: Чт июл 27, 2017 1:47 pm
Благодарил (а): 38 раз
Поблагодарили: 2 раза

Re: [Модуль] Терминалы2 (Terminals2)

Сообщение Slavik398 » Вс авг 02, 2020 6:46 am

Тарас приветствую.
У яндекса имеется ограничение в 100 символов, но вчера Xor выложил обход этой проблемы.
https://connect.smartliving.ru/profile/ ... minal.html
У себя поправил yandexcloud_tts.addon.php, проверил, работает.
СпойлерПоказать

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

<?php

class yandexcloud_tts extends tts_addon
{
    
    function __construct($terminal)
    {
        
        $this->title       = "Yandex smart device cloud";
        $this->description = '<b>Описание:</b>&nbsp;Для работы использует &nbsp;<a href="https://mjdm.ru/forum/viewtopic.php?f=5&t=6922">модуль Яндекс девайс</a>. Без этого модуля ничего работать не будет.<br>';
        //$this->description .= '<b>Проверка доступности:</b>&nbsp;service_ping (пингование проводится проверкой состояния сервиса).<br>';
        $this->description .= '<b>Поддерживаемые возможности:</b>&nbsp;say(), sayTo(), sayReply().';
        
        $this->terminal = $terminal;
        if (!$this->terminal['HOST']) return false;
        
        unsubscribeFromEvent('yadevices', 'SAY');
        unsubscribeFromEvent('yadevices', 'SAYTO');
        unsubscribeFromEvent('yadevices', 'ASK');
        unsubscribeFromEvent('yadevices', 'SAYREPLY');
    }
    
    // Say
    function say_message($message, $terminal) {
        if (file_exists(DIR_MODULES . 'yadevices/yadevices.class.php')) {
            include(DIR_MODULES . 'yadevices/yadevices.class.php');
            $yandex_cloud = new yadevices();
            $station = SQLSelectOne("SELECT * FROM yastations WHERE TTS=2 AND IOT_ID!='' AND IP='".$this->terminal['HOST']."'");
			
    if($message['MESSAGE'] == '') return;
    if(strlen($message['MESSAGE'])>100){ //если фраза > 100 букв, поделим на предложения
      $phs = explode('.',$message['MESSAGE']);
      foreach($phs as $ph){ //переберем предложения
        if(strlen($ph)<100){
           $yandex_cloud->sendCloudTTS($station['IOT_ID'],$ph);
        }else{
           $ph = mb_strimwidth($ph, 0,99, "..."); //не получилось( обрежем
		   $yandex_cloud->sendCloudTTS($station['IOT_ID'],$ph); 
        }
     //  sleep(2);// на всякий случай
      }
    }else{ //скажем, как есть
      $yandex_cloud->sendCloudTTS($station['IOT_ID'],$message['MESSAGE']);
	     }
        }
        $this->success = TRUE;
        usleep(500000);
        return $this->success;
    
 }
}

?>

Я не уверен что тут все правильно, так что лучше перепроверить.
yandex_tts.addon.php не правил т.к. не пользуюсь, но думаю тоже будет актуально.
Добавь пожалуйста в терминалы2.
И конечно спасибо Xor за решение проблемы и то что делится со всеми))
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Модуль] Терминалы2 (Terminals2)

Сообщение tarasfrompir » Вс авг 02, 2020 8:42 am

Slavik398 писал(а):
Вс авг 02, 2020 6:46 am
Тарас приветствую.
У яндекса имеется ограничение в 100 символов, но вчера Xor выложил обход этой проблемы.
https://connect.smartliving.ru/profile/ ... minal.html
У себя поправил yandexcloud_tts.addon.php, проверил, работает.
СпойлерПоказать

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

<?php

class yandexcloud_tts extends tts_addon
{
    
    function __construct($terminal)
    {
        
        $this->title       = "Yandex smart device cloud";
        $this->description = '<b>Описание:</b>&nbsp;Для работы использует &nbsp;<a href="https://mjdm.ru/forum/viewtopic.php?f=5&t=6922">модуль Яндекс девайс</a>. Без этого модуля ничего работать не будет.<br>';
        //$this->description .= '<b>Проверка доступности:</b>&nbsp;service_ping (пингование проводится проверкой состояния сервиса).<br>';
        $this->description .= '<b>Поддерживаемые возможности:</b>&nbsp;say(), sayTo(), sayReply().';
        
        $this->terminal = $terminal;
        if (!$this->terminal['HOST']) return false;
        
        unsubscribeFromEvent('yadevices', 'SAY');
        unsubscribeFromEvent('yadevices', 'SAYTO');
        unsubscribeFromEvent('yadevices', 'ASK');
        unsubscribeFromEvent('yadevices', 'SAYREPLY');
    }
    
    // Say
    function say_message($message, $terminal) {
        if (file_exists(DIR_MODULES . 'yadevices/yadevices.class.php')) {
            include(DIR_MODULES . 'yadevices/yadevices.class.php');
            $yandex_cloud = new yadevices();
            $station = SQLSelectOne("SELECT * FROM yastations WHERE TTS=2 AND IOT_ID!='' AND IP='".$this->terminal['HOST']."'");
			
    if($message['MESSAGE'] == '') return;
    if(strlen($message['MESSAGE'])>100){ //если фраза > 100 букв, поделим на предложения
      $phs = explode('.',$message['MESSAGE']);
      foreach($phs as $ph){ //переберем предложения
        if(strlen($ph)<100){
           $yandex_cloud->sendCloudTTS($station['IOT_ID'],$ph);
        }else{
           $ph = mb_strimwidth($ph, 0,99, "..."); //не получилось( обрежем
		   $yandex_cloud->sendCloudTTS($station['IOT_ID'],$ph); 
        }
     //  sleep(2);// на всякий случай
      }
    }else{ //скажем, как есть
      $yandex_cloud->sendCloudTTS($station['IOT_ID'],$message['MESSAGE']);
	     }
        }
        $this->success = TRUE;
        usleep(500000);
        return $this->success;
    
 }
}

?>

Я не уверен что тут все правильно, так что лучше перепроверить.
yandex_tts.addon.php не правил т.к. не пользуюсь, но думаю тоже будет актуально.
Добавь пожалуйста в терминалы2.
И конечно спасибо Xor за решение проблемы и то что делится со всеми))
ну это вообщето проблема модуля уадевайс - но как заплатку - сделать можно
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
Alexander Znamensky
Сообщения: 160
Зарегистрирован: Ср дек 18, 2019 11:13 am
Откуда: Москва
Благодарил (а): 87 раз
Поблагодарили: 25 раз

Re: [Модуль] Терминалы2 (Terminals2)

Сообщение Alexander Znamensky » Вт авг 11, 2020 1:11 pm

tarasfrompir писал(а):
Чт июл 23, 2020 2:08 pm
yden писал(а):
Чт июл 23, 2020 1:20 pm
Сенк.
Пробую:

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

$path = "/var/www/cms/sounds/03731.mp3";
playMedia($path, $host = 'googleHomeMini', $safe_play = FALSE)
Получаю: гуглоколонка тиликнула и тишина:

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

http://10.12.10.10/admin.php?pd=cGFuZWw6e2FjdGlvbj1zY3JpcHRzfQ%3D%3Dpz_&md=scripts&inst=adm&
Maximum execution time of 90 seconds exceeded

#0 /var/www/lib/errors.class.php(116): custom_error->__construct('Maximum executi...')
#1 [internal function]: phpShutDownFunction()
#2 {main}
МДМ стоит на ubuntu server, файл по указанному пути имеется.
Хреново пробуеш - а так ?
$path = "/var/www/cms/sounds/03731.mp3";
playMedia($path, 'googleHomeMini');
Всем привет!

У меня тоже в какой-то момент Google Mini колонка перестала воспроизводить mp3 - файлы из МЖДМ.
Попробовал, как предложил Тарас, playSound('2cellos-despacito.mp3', 'Googlemini'); - отправился файл на воспроизведение на терминал MAIN.
UPD: а так не правильно!
Правильно так: playSound('http://172.16.1.252/cms/sounds/2cellos-despacito.mp3', 'Googlemini');
*** естественно IP - указываем свой.
Так все работает.

Как всегда, спасибо кому? - Тарасу )))
Последний раз редактировалось Alexander Znamensky Вт авг 11, 2020 4:46 pm, всего редактировалось 1 раз.
Raspberry Pi4 B+, образ v4_44 -> Alpha, PHP 7.3, Xiaomi Gateway 2, Tuya, Blynk, ESP8266
Ответить