Контексты в шаблонах поведения

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Контексты в шаблонах поведения

Сообщение xor » Пт май 11, 2018 11:48 am

Включи канал->
-->Мульт
-->1
-->22

Так, что ли?
С возможностью задать канал предопределённым именем или любым номером?
Можно.
Или я что-то не понял?
Я думал, что для вас главное-преобразовать многозначный номер канала в последовательность передачи команд по цифрам


Отправлено с моего Redmi 4X через Tapatalk

За это сообщение автора xor поблагодарил:
Samir77 (Сб апр 25, 2020 10:16 pm)
Рейтинг: 1.16%
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Контексты в шаблонах поведения

Сообщение nick7zmail » Пт май 11, 2018 11:57 am

Свет в нескольких местах не проблема - просто убираем галочку "не искать совпадения в других шаблонах", или как там она называлась - и всё...отрабатывает 1 шаблон, возвращает контекст, отрабатывает второй шаблон. То есть отрабатываются команды в порядке указанного приоритета. В случае с каналами же надо ещё и порядок контроллировать. Тут вам гораздо проще создать отдельный скрипт обработки и вызывать его передавая номер канала параметром. А в скрипте через array_slice разделять номер на цифры, и по порядку через foreach вызывать команды ответственные за цифры.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
newz20
Сообщения: 172
Зарегистрирован: Пт апр 06, 2018 9:40 am
Благодарил (а): 93 раза
Поблагодарили: 93 раза

Re: Контексты в шаблонах поведения

Сообщение newz20 » Пт май 11, 2018 12:39 pm

Если я буду, как вы вызвать шаблон включить "свет", но вместо света будет активироваться код кнопки, а потом возвращаться в контекст и вызывать шаблон другого "света" и другой код кнопки посылать, то это не отработает как положено? Я думал что после выполнения команды идет возврат в контекст и можно будет перебирать кнопки. Приоритет если одинаковый поставить не поможет? Просто с моими познаниями в скриптах я такой код явно не осилю.
За это сообщение автора newz20 поблагодарил:
Samir77 (Сб апр 25, 2020 1:47 pm)
Рейтинг: 1.16%
newz20
Сообщения: 172
Зарегистрирован: Пт апр 06, 2018 9:40 am
Благодарил (а): 93 раза
Поблагодарили: 93 раза

Re: Контексты в шаблонах поведения

Сообщение newz20 » Пт май 11, 2018 2:38 pm

newz20 писал(а):
Пт май 11, 2018 12:39 pm
Если я буду, как вы вызвать шаблон включить "свет", но вместо света будет активироваться код кнопки, а потом возвращаться в контекст и вызывать шаблон другого "света" и другой код кнопки посылать, то это не отработает как положено? Я думал что после выполнения команды идет возврат в контекст и можно будет перебирать кнопки. Приоритет если одинаковый поставить не поможет? Просто с моими познаниями в скриптах я такой код явно не осилю.
Вообщем команды из строки ввода понимает Алиса на ура, Пишем Включи 1- (идет возврат к включи), потом 2(), потом 3() и Алиса шлет все три команды и телек смиренно выполняет набирая на экране канал 123, а вот с командой голосом этот фокус не проходит, мажордроид оправляет команду целиком и фраза "включи 1 2 3" выполняет включение 1. Как разделить голосовую команду не знаю, приходится тыкать быстро в рупор и говорить Включи 1, затем снова быстро тыкаем и надеемся что гугл успеет распознать и отправить команду до выхода из контекста (5 сек-время которое телек ждет ввода следующего кода до переключения на канал).
Может кто знает как разделить голосом команды?
Ну красиво же получается, осталось только дотащить до конечного результата команды голосом.
За это сообщение автора newz20 поблагодарил:
Samir77 (Сб апр 25, 2020 9:56 pm)
Рейтинг: 1.16%
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Контексты в шаблонах поведения

Сообщение fandaymon » Пт май 11, 2018 2:58 pm

newz20 писал(а):
Пт май 11, 2018 9:41 am
xor писал(а):
Пт май 11, 2018 9:30 am
Всегда завидовал людям, которые помнят, что у них на 123 каналах настроено!))
Я бы делал шаблон по типу:
Включи Карусель
(ну, по человеческому названию).
Но, возвращаясь к теме:
Вы как номер канала хотите проговаривать: сто двадцать три или сто двадцать третий или один два три?
Посмотрите, как Гугл номер канала распознает. Идеально, если числом 123, тогда шаблон можно сделать
Включи канал номер (+d.) //Ну, шаблон для выбора чисел

И полученное значение я бы в цикле обрабатывал, отщипывая по символу слева и передавая на пульт последовательно

Отправлено с моего Redmi 4X через Tapatalk
А можно это реализовать через возврат к контексту включи канал? Примерно так
Включи канал далее 1, возврат к контексту включи канал далее 2 и т.д.? Или у меня не получится?
Просто тогда я смогу при настройке 10 кнопок бегать по любым числовым каналам. А Включи Мульт у меня работает нормально, там код зашит сразу.
Просто видел что ранее в ветке люди включают свет в нескольких местах.
А зачем это реализовывать через контексты-то?! Со светом там понятно - свет можно включать в разных местах одновременно и контекст тут имеет смысл, а канал всё равно включается только один.


Делается шаблон, как выше указали

Включи канал (+d.)

И пишется код
$chanel=(int)matches[1];
if ($chanel>99) {
$pult_num=floor($chanel/100);
отправлем на пульт кнопку $pult_num
$chanel=$chanel - 100*$pult_num;
$pult_num=floor($chanel/10);
отправляем на пульт $pult_num
$pult_num=$chanel - 10*$pult_num;
отправляем на пульт $pult_num
}
elseif ($chanel>9) {
$pult_num=floor($chanel/10);
отправляем $pult_num
$pult_num=$chanel - 10*$pult_num;
отправляем $pult_num
}
else {
отправляем $chanel
}

блоки elseif и else нужны если вы собираетесь проговаривать двузначные и однозначные числа... Если числа всегда будут трёхзначные, то тогда эти блоки не нужны
Последний раз редактировалось fandaymon Пт май 11, 2018 3:23 pm, всего редактировалось 1 раз.
За это сообщение автора fandaymon поблагодарил:
newz20 (Пт май 11, 2018 3:40 pm)
Рейтинг: 1.16%
newz20
Сообщения: 172
Зарегистрирован: Пт апр 06, 2018 9:40 am
Благодарил (а): 93 раза
Поблагодарили: 93 раза

Re: Контексты в шаблонах поведения

Сообщение newz20 » Пт май 11, 2018 3:17 pm

fandaymon писал(а):
Пт май 11, 2018 2:58 pm
newz20 писал(а):
Пт май 11, 2018 9:41 am
xor писал(а):
Пт май 11, 2018 9:30 am
Всегда завидовал людям, которые помнят, что у них на 123 каналах настроено!))
Я бы делал шаблон по типу:
Включи Карусель
(ну, по человеческому названию).
Но, возвращаясь к теме:
Вы как номер канала хотите проговаривать: сто двадцать три или сто двадцать третий или один два три?
Посмотрите, как Гугл номер канала распознает. Идеально, если числом 123, тогда шаблон можно сделать
Включи канал номер (+d.) //Ну, шаблон для выбора чисел

И полученное значение я бы в цикле обрабатывал, отщипывая по символу слева и передавая на пульт последовательно

Отправлено с моего Redmi 4X через Tapatalk
А можно это реализовать через возврат к контексту включи канал? Примерно так
Включи канал далее 1, возврат к контексту включи канал далее 2 и т.д.? Или у меня не получится?
Просто тогда я смогу при настройке 10 кнопок бегать по любым числовым каналам. А Включи Мульт у меня работает нормально, там код зашит сразу.
Просто видел что ранее в ветке люди включают свет в нескольких местах.
А зачем это реализовывать через контексты-то?! Со светом там понятно - свет можно включать в разных местах одновременно и контекст тут имеет смысл, а канал всё равно включается только один.
Смысл набрать канал по своему желанию, а не заранее запрограммированный, кнопки тоже можно нажимать на пульте разные, а пультов может быть много. Сказал "Телевизор - 1,2,3" и телек переключился на 123 канал, сказал "билайн - 1,2" и приставка билайн включила 12 канал.
Может я не верно излагаю задумку? Но примерно в моем понимании это так.
За это сообщение автора newz20 поблагодарил:
Samir77 (Сб апр 25, 2020 1:47 pm)
Рейтинг: 1.16%
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Контексты в шаблонах поведения

Сообщение fandaymon » Пт май 11, 2018 3:30 pm

newz20 писал(а):
Пт май 11, 2018 3:17 pm
fandaymon писал(а):
Пт май 11, 2018 2:58 pm
newz20 писал(а):
Пт май 11, 2018 9:41 am
xor писал(а):
Пт май 11, 2018 9:30 am
Всегда завидовал людям, которые помнят, что у них на 123 каналах настроено!))
Я бы делал шаблон по типу:
Включи Карусель
(ну, по человеческому названию).
Но, возвращаясь к теме:
Вы как номер канала хотите проговаривать: сто двадцать три или сто двадцать третий или один два три?
Посмотрите, как Гугл номер канала распознает. Идеально, если числом 123, тогда шаблон можно сделать
Включи канал номер (+d.) //Ну, шаблон для выбора чисел

И полученное значение я бы в цикле обрабатывал, отщипывая по символу слева и передавая на пульт последовательно

Отправлено с моего Redmi 4X через Tapatalk
А можно это реализовать через возврат к контексту включи канал? Примерно так
Включи канал далее 1, возврат к контексту включи канал далее 2 и т.д.? Или у меня не получится?
Просто тогда я смогу при настройке 10 кнопок бегать по любым числовым каналам. А Включи Мульт у меня работает нормально, там код зашит сразу.
Просто видел что ранее в ветке люди включают свет в нескольких местах.
А зачем это реализовывать через контексты-то?! Со светом там понятно - свет можно включать в разных местах одновременно и контекст тут имеет смысл, а канал всё равно включается только один.
Смысл набрать канал по своему желанию, а не заранее запрограммированный, кнопки тоже можно нажимать на пульте разные, а пультов может быть много. Сказал "Телевизор - 1,2,3" и телек переключился на 123 канал, сказал "билайн - 1,2" и приставка билайн включила 12 канал.
Может я не верно излагаю задумку? Но примерно в моем понимании это так.
Всё равно придётся делать проверку билайн это или телевизор - коды-то пультов у них разные ... А канал и набирается по желанию при помощи кода который остался в моём предыдущем сообщении.
За это сообщение автора fandaymon поблагодарил:
newz20 (Пт май 11, 2018 4:15 pm)
Рейтинг: 1.16%
newz20
Сообщения: 172
Зарегистрирован: Пт апр 06, 2018 9:40 am
Благодарил (а): 93 раза
Поблагодарили: 93 раза

Re: Контексты в шаблонах поведения

Сообщение newz20 » Пт май 11, 2018 4:04 pm

fandaymon писал(а):
Пт май 11, 2018 3:30 pm
Всё равно придётся делать проверку билайн это или телевизор - коды-то пультов у них разные ... А канал и набирается по желанию при помощи кода который остался в моём предыдущем сообщении.
Хорошо, теперь для тех кто совсем плохо понимает.
Я сразу писал что слаб в коде, помогите разобрать.

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

$chanel=(int)matches[1];                                            // присваиваем переменной "канал" найденное из команды и делает его целым
if ($chanel>99) {                                                         //Если число больше 99 то
$pult_num=floor($chanel/100);                                  //переменная "пульт" =  делить "канал" на 100 и взять первую цифру.
отправлем на пульт кнопку $pult_num                      //как отправить код?
$chanel=$chanel - 100*$pult_num;      // тут переназначаем "канал" на первое значение "канал" -  то что получили в пульт умноженное на 100
$pult_num=floor($chanel/10);              //тут переназначаем "пульт"  и делим "канал" на 10 и берем первую цифру
отправляем на пульт $pult_num  //как отправить код?
$pult_num=$chanel - 10*$pult_num; // тут берем уже отнимаем десятки оставшиеся и оставляем единицы
отправляем на пульт $pult_num //как отправить код?
}
elseif ($chanel>9) {
$pult_num=floor($chanel/10);
отправляем $pult_num
$pult_num=$chanel - 10*$pult_num;
отправляем $pult_num
}
else {
отправляем $chanel
}
Я разобрался вроде с математической стороной вопроса
Я только не могу понять где мне прописать коды этих 10 кнопок что бы $pult_num получая значение 8 отправлял код этой кнопки в свойство объекта а именно sg('ir.ir-code',код)?
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Контексты в шаблонах поведения

Сообщение fandaymon » Пт май 11, 2018 4:12 pm

newz20 писал(а):
Пт май 11, 2018 4:04 pm
fandaymon писал(а):
Пт май 11, 2018 3:30 pm
Всё равно придётся делать проверку билайн это или телевизор - коды-то пультов у них разные ... А канал и набирается по желанию при помощи кода который остался в моём предыдущем сообщении.
Хорошо, теперь для тех кто совсем плохо понимает.
Я сразу писал что слаб в коде, помогите разобрать.

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

$chanel=(int)matches[1];                                            // присваиваем переменной "канал" найденное из команды и делает его целым
if ($chanel>99) {                                                         //Если число больше 99 то
$pult_num=floor($chanel/100);                                  //переменная "пульт" =  делить "канал" на 100 и взять первую цифру.
отправлем на пульт кнопку $pult_num                      //как отправить код?
$chanel=$chanel - 100*$pult_num;      // тут переназначаем "канал" на первое значение "канал" -  то что получили в пульт умноженное на 100
$pult_num=floor($chanel/10);              //тут переназначаем "пульт"  и делим "канал" на 10 и берем первую цифру
отправляем на пульт $pult_num  //как отправить код?
$pult_num=$chanel - 10*$pult_num; // тут берем уже отнимаем десятки оставшиеся и оставляем единицы
отправляем на пульт $pult_num //как отправить код?
}
elseif ($chanel>9) {
$pult_num=floor($chanel/10);
отправляем $pult_num
$pult_num=$chanel - 10*$pult_num;
отправляем $pult_num
}
else {
отправляем $chanel
}
Я разобрался вроде с математической стороной вопроса
Я только не могу понять где мне прописать коды этих 10 кнопок что бы $pult_num получая значение 8 отправлял код этой кнопки в свойство объекта а именно sg('ir.ir-code',код)?
Сделать вначале массив с кодами кнопок.

$pult_code=array('код нуля','код единицы','код двойки',....);

А там где написано отправляем код

sg('ir.ir-code',$pult_code[$pult_num]);

Эта команда достаёт из массива код соотвествующий нашему номеру и заносит его в наше свойство
За это сообщение автора fandaymon поблагодарил:
newz20 (Пт май 11, 2018 4:14 pm)
Рейтинг: 1.16%
newz20
Сообщения: 172
Зарегистрирован: Пт апр 06, 2018 9:40 am
Благодарил (а): 93 раза
Поблагодарили: 93 раза

Re: Контексты в шаблонах поведения

Сообщение newz20 » Пт май 11, 2018 4:21 pm

fandaymon писал(а):
Пт май 11, 2018 4:12 pm
newz20 писал(а):
Пт май 11, 2018 4:04 pm
fandaymon писал(а):
Пт май 11, 2018 3:30 pm
Всё равно придётся делать проверку билайн это или телевизор - коды-то пультов у них разные ... А канал и набирается по желанию при помощи кода который остался в моём предыдущем сообщении.
Хорошо, теперь для тех кто совсем плохо понимает.
Я сразу писал что слаб в коде, помогите разобрать.

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

$chanel=(int)matches[1];                                            // присваиваем переменной "канал" найденное из команды и делает его целым
if ($chanel>99) {                                                         //Если число больше 99 то
$pult_num=floor($chanel/100);                                  //переменная "пульт" =  делить "канал" на 100 и взять первую цифру.
отправлем на пульт кнопку $pult_num                      //как отправить код?
$chanel=$chanel - 100*$pult_num;      // тут переназначаем "канал" на первое значение "канал" -  то что получили в пульт умноженное на 100
$pult_num=floor($chanel/10);              //тут переназначаем "пульт"  и делим "канал" на 10 и берем первую цифру
отправляем на пульт $pult_num  //как отправить код?
$pult_num=$chanel - 10*$pult_num; // тут берем уже отнимаем десятки оставшиеся и оставляем единицы
отправляем на пульт $pult_num //как отправить код?
}
elseif ($chanel>9) {
$pult_num=floor($chanel/10);
отправляем $pult_num
$pult_num=$chanel - 10*$pult_num;
отправляем $pult_num
}
else {
отправляем $chanel
}
Я разобрался вроде с математической стороной вопроса
Я только не могу понять где мне прописать коды этих 10 кнопок что бы $pult_num получая значение 8 отправлял код этой кнопки в свойство объекта а именно sg('ir.ir-code',код)?
Сделать вначале массив с кодами кнопок.

$pult_code=array('код нуля','код единицы','код двойки',....);

А там где написано отправляем код

sg('ir.ir-code',$pult_code[$pult_num]);

Эта команда достаёт из массива код соотвествующий нашему номеру и заносит его в наше свойство
Тогда тут
else {
отправляем $chanel
}
Надо переписать на
else {
$pult_num=$chanel;
sg('ir.ir-code',$pult_code[$pult_num]);
}
Правильно?
За это сообщение автора newz20 поблагодарил:
Samir77 (Сб апр 25, 2020 1:47 pm)
Рейтинг: 1.16%
Ответить