Алиса не озвучивает данные с веб переменных.

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

karsotrade
Сообщения: 113
Зарегистрирован: Пт июн 09, 2017 11:18 pm
Благодарил (а): 17 раз
Поблагодарили: 13 раз

Алиса не озвучивает данные с веб переменных.

Сообщение karsotrade » Чт авг 18, 2022 11:34 pm

Добрый вечер. Неожиданно нарисовалась проблема, пытаюсь сделать озвучивание данных с температурного датчика. Данные забираются с ардуиновского контроллера с помощью веб переменных, и заносятся в свойства созданного обьекта (DHTSens1.temp):
Пишу сценарий:
$v=gg("DHTSens1.temp");
say("Температура $v ",2);
Алиса произносит только "Температура". Если я вручную забиваю число в свойство (temp) обьекта, то Алиса произносит его, тут же в свойство заносится число из веб переменной и Алиса перестаёт число произносить. Показание датчика отлично отображается и в свойствах и на сцене. Получается что Алиса произносит все что вручную забиваю в свойство обьекта, а все что приходит с веб переменных не озвучивается. Стоит WindowsTTS.
Подскажите пожалуйста куда копать, второй день голову ломаю.
Logrus
Сообщения: 1933
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 305 раз
Поблагодарили: 415 раз

Re: Алиса не озвучивает данные с веб переменных.

Сообщение Logrus » Чт авг 18, 2022 11:46 pm

say('Температура ' . $v, 2);

т.к. не показали что в истории свойства, то можно DebMes($v); и посмотреть что выведет в икс рей
с веб переменных вы можете получить стринг (а там и спец.символы и сл. символы и пр.), а не инт
можно перед gg добавить (int)
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
karsotrade
Сообщения: 113
Зарегистрирован: Пт июн 09, 2017 11:18 pm
Благодарил (а): 17 раз
Поблагодарили: 13 раз

Re: Алиса не озвучивает данные с веб переменных.

Сообщение karsotrade » Пт авг 19, 2022 1:17 am

Logrus писал(а):
Чт авг 18, 2022 11:46 pm
say('Температура ' . $v, 2);

т.к. не показали что в истории свойства, то можно DebMes($v); и посмотреть что выведет в икс рей
с веб переменных вы можете получить стринг (а там и спец.символы и сл. символы и пр.), а не инт
можно перед gg добавить (int)
Большое спасибо за ответ. Но я не такой крутой спец в програмировании, к сожалению понял Вас только частично. С веб переменных берется просто число (температура). Поясните пожалуйста что мне нужно сделать в данной ситуации. В свойстве обьекта стоит сохранение истории данных 30 дней.
Logrus
Сообщения: 1933
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 305 раз
Поблагодарили: 415 раз

Re: Алиса не озвучивает данные с веб переменных.

Сообщение Logrus » Пт авг 19, 2022 1:21 am

для начала выше пример с сай поменять у себя
если не поможет разбираться в каком виде получает с веб переменных и не произносит число, а в чате мдм в каком виде оно?
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Bagir
Сообщения: 1601
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 203 раза
Поблагодарили: 367 раз

Re: Алиса не озвучивает данные с веб переменных.

Сообщение Bagir » Пт авг 19, 2022 1:47 am

karsotrade писал(а):
Чт авг 18, 2022 11:34 pm
Пишу сценарий:
$v=gg("DHTSens1.temp");
say("Температура $v ",2)
Алиса произносит только "Температура". Если я вручную забиваю число в свойство (temp) обьекта, то Алиса произносит его
Бывает такое. И как верно сказал Logrus, это из за спец символов, которые прилетают в свойство temp объекта DHTSens1. Например, у меня в некоторых вариантах проблему вызывают даже знак градуса или процент. Спец символы все же... Проблему надо решать не в функции say(), а в данных свойства temp.
записать в свойство руками цифру и открыть админку.
1. Открыть X-Ray (Админка->Система->X-Ray)
откроется лог событий. В нем будем смотреть результат.
2. Открыть консоль (Админка->Система->Консоль)
В консоли выполнить команду DebMes(serialize(gg('DHTSens1.temp'))); Суть её такая: DebMes выводит результат в лог событий. serialize покажет какие данные хранятся в свойстве. Ну с gg уже знакомы. В ответ получим что то наподобие 01:34:55 0.98605700 s:4:"25.6"; Тип текст, 4 символа, всё вроде как хорошо. А если будет что то типа 01:41:27 0.82316900 s:5:" 25.7"; то видим, что есть лишний пробел в начале. И этот пробел может оказаться вовсе не пробелом, а каким нибудь символом, который и портит всю малину.
И если это так, будем думать как его убрать. Вообще в базе всё хранится в текстовом виде, и цифры свойств тоже.
А каким способом передаются данные в свойство temp объекта DHTSens1? Через модуль, по ссылке, или ещё как?

P.S. думал я один не сплю ))
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
karsotrade
Сообщения: 113
Зарегистрирован: Пт июн 09, 2017 11:18 pm
Благодарил (а): 17 раз
Поблагодарили: 13 раз

Re: Алиса не озвучивает данные с веб переменных.

Сообщение karsotrade » Пт авг 19, 2022 11:48 am

День добрый, вот что я проделал:
1 - поменял строку в сценарии на указанную выше - say('Температура ' . $v, 2); Алиса цифры не произносит.
2 - залез в x-ray, там вот такие строки:
11:24:59 0.30885400 After say (2): Температура
26.6
11:24:58 0.98069600 Before say (2): Температура
26.6
3 - В консоли запустил команду DebMes(serialize(gg('DHTSens1.temp'))); и получил такую строку
11:29:36 0.56469400 s:8:"
26.7
";

Данные в свойства вытаскиваю через модуль веб переменные такой строкой: Tемпература1 = (.+?) C
Ардуина разворачивает страницу в локальной сети, с нее я и забираю данные.
karsotrade
Сообщения: 113
Зарегистрирован: Пт июн 09, 2017 11:18 pm
Благодарил (а): 17 раз
Поблагодарили: 13 раз

Re: Алиса не озвучивает данные с веб переменных.

Сообщение karsotrade » Пт авг 19, 2022 12:10 pm

На Ардуине вывожу температуру так:
client.println ("Tемпература1 = ");
client.println (t1,1); //переменная температуры
client.println (" C");

На html странице выглядит так: Tемпература1 = 27.5 C
Пока не нахожу косяка, или не вижу очевидного. :)
Аватара пользователя
Bagir
Сообщения: 1601
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 203 раза
Поблагодарили: 367 раз

Re: Алиса не озвучивает данные с веб переменных.

Сообщение Bagir » Пт авг 19, 2022 12:21 pm

karsotrade писал(а):
Пт авг 19, 2022 11:48 am
3 - В консоли запустил команду DebMes(serialize(gg('DHTSens1.temp'))); и получил такую строку
11:29:36 0.56469400 s:8:"
26.7
";
Вот он и косяк нашелся. Теперь сравните с моим 01:34:55 0.98605700 s:4:"25.6"; У меня s:4 то есть 4 символа и всё в одной строке. У вас 8. Вижу два символа новой строки. Они как раз по два считаются, итого ваши 8
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
karsotrade
Сообщения: 113
Зарегистрирован: Пт июн 09, 2017 11:18 pm
Благодарил (а): 17 раз
Поблагодарили: 13 раз

Re: Алиса не озвучивает данные с веб переменных.

Сообщение karsotrade » Пт авг 19, 2022 2:41 pm

Сейчас проверил что приходит с другой ардуины (замер напряжения и мощности), картина таже, лишних 4 символа (два переноса на новую строку). Ума не приложу что делать.
karsotrade
Сообщения: 113
Зарегистрирован: Пт июн 09, 2017 11:18 pm
Благодарил (а): 17 раз
Поблагодарили: 13 раз

Re: Алиса не озвучивает данные с веб переменных.

Сообщение karsotrade » Пт авг 19, 2022 3:26 pm

Забиваю число в свойства вручную, и в консоле все в порядке, нет ничего лишнего.
Ответить