|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Automatizando un reproductor Multimedia
Bueno pues tras ver un video de
me ha picado aun mas si cabe el tema de tasker. Antes tenia un Nexus S y le costaba un poquillo ahora con el Note2 voy a ver si puedo hacer algo interesante.
He creado este hilo por si hay algún usuario de estos cacharros por aquí al que le interese. Por otro lado y como no, vengo a preguntar a los "GURÙS" de Tasker a ver si me hacen alguna recomendación. Los Dreambox y VU+ son "decodificadores" de TV SAT/TDT y aparte incorporan reproductor multimedia DVD y DivX son un todo en uno FULL bastante interesantes, disponen de una pagina web con la que se puede interactuar con ellos, pero los comandos disponibles en el source son algo basicos, de los cuales yo me quedaría con: [php]116 Key "Power" 412 Key "previous" 407 Key "next 115 Key "volume up" 114 Key "volume down" 358 Key "info" 103 Key "up" 139 Key "menu" 105 Key "left" 352 Key "OK" 106 Key "right" 392 Key "audio" 108 Key "down" 393 Key "video" 398 Key "red" 399 Key "green" 400 Key "yellow" 401 Key "blue" [/php]Que digamos que son las teclas básicas, pero en el navegador aparte de poder usar una especie de interfaz similar a la del mando real para ser mas comodo puedes hacer click en los canales para realizar el cambio de canal. Lo cual me ha llevado a indagar los GET de dicha pagina y obtengo que: Código:
Canal+ 1 es: http://Direccion IP/api/zap?sRef=1%3A0%3A19%3A74D5%3A3F8%3A1%3AC00000%3A0%3A0%3A0%3A Código:
Canal+ 1 30 es: http://Direccion IP/api/zap?sRef=1%3A0%3A1%3A7479%3A3F0%3A1%3AC00000%3A0%3A0%3A0%3A El caso es que para este tipo de tarea si os solicito consejo, ya que no soy programador y de tasker voy justito, la pregunta después de todo este rollo es: ¿Es posible usar 1 perfil con múltiples posibles subtareas?? El perfil seria Mando Deco (accionado por voz, con autovoice) y en función de si digo, Fox, Canalplus1, AXN salte al GET que le corresponde para realizar el cambio de canal? También me acabo de dar cuenta que como el parametro GET contiene bastantes % % % me almacena el chorro como variable. En vez de usar eso creo que podría usar javascript pero tendría que leerme el codigo fuente de la pagina web y aunque no soy programador sigo relativamente bien ciertos sourcecode. Corregidme si me equivoco, pero creo que lo suyo es que haga tantas tareas como me sean necesarias, pero usando al final los IF, de forma que si el comando de voz no coincide vaya saltando hasta que coincida no? Última edición por uNbAs Día 24/07/13 a las 00:34:19. |
|
|
|
#2
|
||||
|
||||
|
Yo diría que no. En realidad un perfil solo puede estar asociado a una única tarea de entrada y/o a una única tarea de salida. Ahora bien, cualquiera de esas tareas puede contener llamadas a una o varias otras tareas (subtareas).
A mayores, te copio un fragmento escrito por nuestro profeta Andreas Ødegård: - "No tenga miedo de usar múltiples tareas y perfiles para lograr algo. Una cosa que me ha sorprendido observando las solicitudes de ayuda para Tasker es como muchas personas sienten la necesidad de meter la máxima funcionalidad en el menor número posible de tareas y perfiles. Parece un deseo de mantener Tasker organizado y funcionando sin problemas, pero a menudo esto perjudica la funcionalidad real." Puedes leer la explicación completa en la lección 5: http://www.htcmania.com/showthread.php?p=9315037 http://www.htcmania.com/showthread.php?t=547994 http://www.htcmania.com/showthread.php?p=8783178 http://www.htcmania.com/showthread.php?t=474631 http://www.htcmania.com/showthread.php?t=569911
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#3
|
||||
|
||||
Cita:Corregidme si me equivoco, pero creo que lo suyo es que haga tantas tareas como me sean necesarias, pero usando al final los IF, de forma que si el comando de voz no coincide vaya saltando hasta que coincida no?
![]() EDITO: si tienes que usarlo. Pero... https://plus.google.com/app/basic/st...tqppw32itzoaa4 Aquí te explica como es posible usar regex en autovoice para que sea indiferente decir un comando por ejemplo "baja brillo 2" o "brillo bajar 2". Igual te resulta útil. Por otro lado puedes hacer una cosa para no tener que utilizar los if. Metes en una variable directamente por ejemplo" axn". En la tarea solo utilizas una acción "realizar tarea" pero en el nombre de la tarea utilizas directamente la variable obtenida de la acción de autovoice. El problema seria que si autovoice entendiese algo equivocado te daría error. Por ejemplo imagina que entiende en vez de axn, asn. Por eso tendrías que utilizar palabras más sencillas. Igual también utilizando el regex quizá se podría solucionar. De manera que au que entienda asn al final lo intérprete como axn. Otra manera seria: Metes en un array todos los posibles canales : Establecer variable %Canal1 A axn Establecer variable %Canal2 A Canalplus Luego con un FOR %Canal( es decir para todos los valores posibles del array %Canal vas comparando con la variable donde metes el comando de voz. Cuando coincida haces lo de realizar tarea, nombre de la tarea : la variable donde se mete el valor actual del for. Bueno estoy pensando que a lo mejor en vez de ayudar te estoy liando. Con los if funcionaria igual de bien.
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
Última edición por mlesir Día 24/07/13 a las 03:46:59. |
| Gracias de parte de: | ||
|
#4
|
||||
|
||||
|
Gracias por responder Caravantes Mañana me miro bien lo que me has comentado.
De todas formas, creo que no me explique bien (cosillas de novato supongo) Me refería a tener un perfil y múltiples tareas Es decir serian multiples tareas (una lista de canales) ỳ las de autovoice de reconocimiento. La foto mas que nada, es por saber si voy bien encaminado (antes de leerme los hilos) por que mas o menos he mirado el de "CHATI" que ya lo vi hace tiempo, pero como no se si no funciona por la MIUI o por que estoy atascado ... aquí la dejo Mañana mas! Última edición por uNbAs Día 26/07/13 a las 12:33:25. |
|
#5
|
||||
|
||||
|
mlesir Mañana me lo miro, que nos "hemos pisado"
De todas formas, en principio las pruebas las estoy haciendo solo con dos canales, pero claro quiero preguntar, por que una vez esos dos funcionen como dios manda, pues va a haber un pifostio de acciones bastante gordo. Además creo que he encontrado uno de los problemas y quizás sea yo, es decir cuando usas AutoVoice recognized, te pide el "Command" pero claro, aquí no hay un comando fijo salvo "Pon | Cambia" que son dos textos que se repetirían en el cambio de cualquier canal. Mañana continuo Última edición por uNbAs Día 24/07/13 a las 07:38:24. |
|
#6
|
||||
|
||||
|
http://www.htcmania.com/showthread.php?p=9017575
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
| Gracias de parte de: | ||
|
#7
|
||||
|
||||
|
Ahora tengo bastante claro que tienes un error la terminología, y eso dificulta que nos entendamos. Creo que estás escribiendo la palabra TAREAS cuando en realidad, en terminología de Tasker, estás pensando en ACCIONES. Si confundes o mezclas esas dos palabras podemos acabar en un diálogo de besugos. Tienes que tener claros esos conceptos y terminologías básicas, que puedes repasar en la lección 1
http://www.htcmania.com/showthread.php?p=9017575 ![]() |
|
#8
|
||||
|
||||
|
Buenos días!
Según estoy viendo en el grupo de google de Joao no soy el único que "tiene problemas" al trabajar con la voz para realizar distintas acciones, seguiré mirando el tema! |
|
#9
|
||||
|
||||
|
Buenos dias chicos,
mlesir Gracias por tu comentario creo que usar regex va a ser lo mejor, pero me quedan ciertas dudas por que no he realizado tareas "complejas" en lenguajes de programación o mas bien en scripting entiendo como funcionan los if/else/elif/then pero aquí me resultan algo extraños (en tasker de forma general). Por lo que antes de continuar pregunto! La tarea quedaria mas o menos asi Accion1 = Autovoice continuous Accion2 = if coincide Canal1 Accion3 = then = lanzo el Http get y repetir como acciones sean necesarias o bien me llega con usar los if incorporados dentro de la accion? |
|
#10
|
||||
|
||||
|
Siento no poder dedicarle todo el tiempo que esto merece pero me ha surgido un contratiempo este finde.
En todo caso yo creo que debes utilizar dos perfiles separados cada uno con sus tareas. El primero lo que hace es activar el autovoice. El como lo dispares depende de como quieras tu hacerlo. En este perfil deberías poner una acción de estado de perfil (subcategoria tasker) que encienda el segundo perfil. Segundo perfil: un perfil de estado/plugin/autovoice recognition, pero marcado el que se comporte como evento! Si no me equivoco (todavía no he podido usar a fondo autovoice) puedes ponerle el comando/s con los que quieres que coincida en la misma interfaz de autovoice. Incluso puedes utilizar el regex en esa misma pantalla sin tener que ha er nada en tasker. Si tienes dudas en el recopilatorio hay una lección de andreas so re autovoice, si no puedes buscarla en la página donde escribe los artículos en pocketables (esa Web si que esta en el recopilatorio). Ya te digo que ahora no puedo dedicarle más tiempo en cuanto pueda te digo algo que a mi también me interesa.
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
|
|
#11
|
||||
|
||||
|
mlesir Gracias por tu respuesta y espero que no sea grave el contratiempo.
En principio esto es como hobby así que no te creas que corre ninguna prisa En cuanto al regex he leído tanto en el foro de google de JOAO como en otros sitios y me queda claro que ese es el camino correcto, aunque por mas que "juego" aun no he conseguido nada. Lo de los dos perfiles no lo veo así, es decir puedo tener un perfil con su tarea y después las acciones de reconocimiento y cambio de canal, lo que aun no doy realizado de forma correcta es que con dos acciones distintas de cambio de canal elija una u la otra en base a lo que yo pronuncie. En cuanto consiga eso lo demás "es pan comido" Última edición por uNbAs Día 28/07/13 a las 16:03:07. |
|
#12
|
||||
|
||||
|
Las expresiones regulares son una pasada por lo potentes que son y lo que se puede conseguir con ellas, pero a veces son un auténtico infierno para trabajar con ellas...
Yo suelo usar la herramienta http://www.regexper.com que lo hace un poco más visual. Lo único que usa la sintaxis de regex javascript y el autovoice usa la de java, en gran parte son iguales, salvo por los grupos con nombre (y alguna cosa más que no creo que vayas a necesitar), con lo que puedes trastear usando grupos sin nombre y cuando lo tengas le añades nombres, me explico: La regex del ejemplo es: Código:
Turn lights to (?<level>.+) in the (?<room>.+) Código:
Turn lights to (.+) in the (.+) Si ponemos esto en regexper nos muestra esto: regexper.PNG Lo que se interpreta como que la regex esa se cumplirá cuando el texto tenga esta estructura: "Turn lights to " (importante ese espacio) luego cualquier carácter una o más veces (pero al menos una) luego " in the " y por ultimo otra vez cualquier carácter una o más veces. Los 2 grupos (en las casillas punteadas) son las partes que se extraerán para usar luego, que en javascript se usan sin nombre, pero para pasar a java solo hay que añadir "?<nombre>" al principio de las paréntesis y así luego estará disponible como una variable con ese nombre. Espero que te ayude, y si sigues con problemas para hacerlo funcionar pon la regex que uses y un ejemplo de la frase capturada y si puedo le echo un vistazo!
|
|
#13
|
||||
|
||||
|
Buenas tio! Muchas gracias por el link, aqui te dejo otro nunca he usado expresiones regulares ya que no soy programador, aunque he hecho mis pinitos en bash script y python pero cosas muy sencillas.
El ejemplo de las expresiones regulares lo entiendo perfectamente, no es complicado de entender. Quizás soy yo que me como la cabeza con cosas básicas, un ejemplo: (esto es de tasker general) en una accion cualquiera casi al final hay un if, si mi cabeza pensante por mis pocos conocimientos piensa correctamente, ese if es una condición que si se cumple ejecutara esa acción no? En definitiva para que usar "if ","then", "elif" antes de una tarea si existe ya un condicional que se puede usar? Por otro lado esto seria una lista de canales que uso o usare: Código:
Canal plus = http://[usuario]:[password]@[Direccion IP]/api/zap?sRef=1%3A0%3A19%3A74D5%3A3F8%3A1%3AC00000%3A0%3A0%3A0%3A Canal plus 30 = http://[usuario]:[password]@[Direccion IP]/api/zap?sRef=1%3A0%3A1%3A7479%3A3F0%3A1%3AC00000%3A0%3A0%3A0%3A Canal plus 2 = http://[usuario]:[password]@[Direccion IP]/api/zap?sRef=1%3A0%3A19%3A78B6%3A3EC%3A1%3AC00000%3A0%3A0%3A0%3A Canal plus Extra = http://[usuario]:[password]@[Direccion IP]/api/zap?sRef=1%3A0%3A19%3A74D4%3A3F8%3A1%3AC00000%3A0%3A0%3A0%3A Acción= http://[usuario]:[password]@[Direccion IP]/api/zap?sRef=1%3A0%3A19%3A7509%3A420%3A1%3AC00000%3A0%3A0%3A0%3A cambia a|pon la (?<canal>.+) donde si no me equivoco %canal seria la variable para los nombres de canal ¿correcto? Pero claro, en la accion del HTTP GET si uso esa regex, suponiendo que este bien, me voy al if de la propia accion y pongo %canal ~ Accion. Otra cosa que me estoy dando cuenta ahora al editar el mensaje es, que por ejemplo en muchos casos despues de la regex también se pronuncia la palabra canal no se liara? Última edición por uNbAs Día 29/07/13 a las 17:37:12. |
|
#14
|
||||
|
||||
|
Buenas, conocía el enlace que has puesto, es una herramienta más completa y potente que que la que he puesto yo, pero también más orientado a gente que ya controla las regex, lo bueno de regexper es que las muestra de una forma muy visual, ideal para gente que no las entiende mucho aún
.Si pones tu regex en regexper (quitando temporalmente el "?<canal>" como expliqué) te muestra que hay un problema: se cumple en caso de encontrar "cambia a" sin capturar nada o bien "pon la xxxxxx" capturando en la variable canal el valor xxxxxx. Con lo que solo funcionará si dices "pon la xxxx", no "cambia a xxxx", la forma correcta de hacer lo que quieres es: Código:
(cambia a|pon la) (?<canal>.+) Código:
1. reconocer la voz y aplicar la regex para capturar el canal 2. mostrar con Alerta -> flash %canal (para ver lo que ha capturado para detectar posibles errores) ----bloque de selección en función del canal capturado 3. establecer variable %codcanal a 1%3A0%3A19%3A74D5%3A3F8%3A1%3AC00000%3A0%3A0%3A0%3A Si %canal ~ plus 4. establecer variable %codcanal a 1%3A0%3A1%3A7479%3A3F0%3A1%3AC00000%3A0%3A0%3A0%3A Si %canal ~ plus 30 5. establecer variable %codcanal a 1%3A0%3A19%3A78B6%3A3EC%3A1%3AC00000%3A0%3A0%3A0%3A Si %canal ~ plus 2 etc... ----- 6. HTTP GET url: http:/[usuario]:[password]@[Direccion IP]/api/zap?sRef=%codcanal Espero te sirva! |
| Gracias de parte de: | ||
|
#15
|
||||
|
||||
|
Lo del link a la pagina te lo puse por si no lo conocías
como bien dices es para gente que conoce las expresiones regulares, yo aprendo rápido pero no las he usado nunca.En cuanto al tema de la estructura yo en principio estoy usando un "say" con un texto para ver si funciona, usando el "SI" interno de la acción por lo que queda de esta manera: Código:
1.- Perfil:
A) Autovoice Recognized = "(cambia | pon) (?<canal>.+)" marcando la casilla regex
2.- Tarea:
A) Autovoice Continuous (Reconocimiento sin cascos)
B) Misc = Decir / Say
B1) Texto = Un texto cualquiera para comprobar que funciona
B2) Si (if) = %canal ~ primera
![]() En cuanto al uso de %codcanal me ha gustado y llevas razón incluso creo que usare otra para la dirección web que me puede servir para otras funciones cuando esto este funcionando. |
|
#16
|
||||
|
||||
|
Lo de si %canal ~ primera en rojo es normal ya que en la pantalla de edición %canal aún no existe (es una variable local, se destruye cuando acaba la tarea)
Prueba lo del alerta -> flash mostrando %canal para ver escrito lo que ha capturado |
| Gracias de parte de: | ||
|
#17
|
||||
|
||||
|
De hecho tu ejemplo de comprobación de funcionamiento es en términos generales igual que el mio pero con acciones distintas. |
|
#18
|
||||
|
||||
|
La forma de depurar estas cosas es poner muchos toasts, casi uno despues de cada acción para ver donde falla.
Por otro lado las regex son muy puñeteras y cada caracter cuenta: en tu ejemplo (cambia | pon) estaría mal, sería (cambia|pon) sin espacios (el espacio entre los 2 grupos de parentesis si es correcto). Además en los grupos con nombre como "?<xxxx>" el "xxxx" es solo el nombr que le va a dar a la variable que contenga lo que capture ese grupo, no forma parte de la frase en si. La regex siguiente: Código:
(cambia|pon) (?<canal>.+) Estoy seguro de que el fallo debe andar por ahí... prueba poner más toasts y pegar aquí el exto EXACTO que reconoce autovoice y la regex EXACTA que usas para parsearlo, a ver si vemos algo raro. |
| Gracias de parte de: | ||
|
#19
|
||||
|
||||
|
Aqui viene una de mis frases favoritas "Esto es GNU/Linux no Windows" los espacios IMPORTAN
Un off-topic que te cagas pero bueno la regex esta bien escrita, esta tal y como la has puesto y no como la puse yo antes (fallo mio al escribir el post) https://dl.dropboxusercontent.com/u/...0-20-19-00.png https://dl.dropboxusercontent.com/u/...0-20-18-06.png En las imagenes he quitado las acciones que no son necesarias para ver el Toast |
| Gracias de parte de: | ||
|
|
|
#20
|
||||
|
||||
|
En efecto... jejeje
Finalmente he estado trasteando con el autovoice (llevaba un tiempo queriendo comprarlo, y con esto me ha picado la curiosidad y el empujoncito necesario :-P) y he llegado a la conclusión de que las regex están bugeadas tras varias pruebas se ve claramente que no se comporta como debiera cuando hay grupos con nombre y sin nombre, seguiré probando para acotar mejor el bug y comentárselo al desarrollador.Por el momento he sacado una regex más flexible y que al usar solo un grupo funciona bien: Código:
pon|cambia a|el|la (?<canal>.*) "pon la sexta" "pon el canal plus" "cambia a acción" basicamente cualquier combinación entre la primera palabra "cambia" o "pon", una segunda "a", "el" o "la" y el resto lo guarda en %canal. A mi así me funciona, puedes ampliar añadiendo más primeras/segundas palabras. Pruebalo y nos cuentas Y OJO CON LOS ESPACIOS! |
| Los siguientes 3 usuarios han agradecido a maid450 su comentario: | ||
![]() |
Estás aquí
|
||||||
|
||||||