PDA

Ver la Versión Completa : [ SOLUCIONADO ] Perfil para trabajo a turnos


rabeliyo
14/06/14, 11:06:42
Pues he estado implementando un perfil que durante la semana de trabajo,a la hora que comience el turno que me toque,entra en modo avion ya que no puedo llevar el movil encima y asi pues ahorro bateria .
Hasta ahi bien,lo he implementado mediante un estado de horas en el cual la variable con la hora va cambiando a el turno siguiente el ultimo dia de trabajo antes del finde.

Para que me entendais.

De lunes a viernes y la variable es "mañana" me establece el perfil de horas de 06 de la mañana a 14:00 de la tarde y si es viernes, me cambia la variable a "tarde" y asi con la noche.

Mi problema es cuando estoy de noche,con lo cual termino la semana el sabado a las 06 de la mañana y luego me cambia a tarde, pero, el mismo sabado ya se me activa el perfil de tarde a la hora de trabajar.

Os pongo como lo he solucionado,pero acudo a vosotros porque seguro que hay alguna forma de simplificarlo.
Estas dos tareas estan metidas en un estado de "horas" con las variables "Empieceturno" y "Finalturno" para cambiar las horas de activacion

Inico Trabajo (62)
A1: Si (if) [ %DAYW ~ lunes ]
A2: Establecer variable [ Nombre:%Finde A:0 Calcular:Apagado Añadir:Apagado ]
A3: Si (if) [ %Turnotrabajo ~ tarde ]
A4: Establecer variable [ Nombre:%Turnotrabajo A:mañana Calcular:Apagado Añadir:Apagado ]
A5: Establecer variable [ Nombre:%Empiceturno A:05.45 Calcular:Apagado Añadir:Apagado ]
A6: Establecer variable [ Nombre:%Finalturno A:14.00 Calcular:Apagado Añadir:Apagado ]
A7: Fin si (End if)
A8: Si (if) [ %Turnotrabajo ~ mañana ]
A9: Establecer variable [ Nombre:%Turnotrabajo A:noche Calcular:Apagado Añadir:Apagado ]
A10: Establecer variable [ Nombre:%Empiceturno A:21.45 Calcular:Apagado Añadir:Apagado ]
A11: Establecer variable [ Nombre:%Finalturno A:06.00 Calcular:Apagado Añadir:Apagado ]
A12: Fin si (End if)
A13: Fin si (End if)
A14: Si (if) [ %Turnotrabajo ~ noche & %DAYW ~ sabado ]
A15: Establecer variable [ Nombre:%Turnotrabajo A:tarde Calcular:Apagado Añadir:Apagado ]
A16: Establecer variable [ Nombre:%Empiceturno A:13.45 Calcular:Apagado Añadir:Apagado ]
A17: Establecer variable [ Nombre:%Finalturno A:22.00 Calcular:Apagado Añadir:Apagado ]
A18: Fin si (End if)
A19: Si (if) [ %Finde = 0 ]
A20: Secure Settings [ Configuración:Airplane Mode Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings Cuenta atrás (segundos):0 ]


Fin De Trabajo (63)
A1: Si (if) [ %Finde = 0 ]
A2: Secure Settings [ Configuración:Airplane Mode Disabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings Cuenta atrás (segundos):0 ]
A3: Bluetooth [ Establecer:Encendido ]
A4: Si (if) [ %DAYW ~ viernes ]
A5: Si (if) [ %Turnotrabajo ~ tarde ]
A6: Establecer variable [ Nombre:%Finde A:1 Calcular:Apagado Añadir:Apagado ]
A7: Establecer variable [ Nombre:%Empiceturno A:00.00 Calcular:Apagado Añadir:Apagado ]
A8: Establecer variable [ Nombre:%Finalturno A:00.05 Calcular:Apagado Añadir:Apagado ]
A9: Fin si (End if)
A10: Si (if) [ %Turnotrabajo ~ mañana ]
A11: Establecer variable [ Nombre:%Finde A:1 Calcular:Apagado Añadir:Apagado ]
A12: Establecer variable [ Nombre:%Empiceturno A:00.00 Calcular:Apagado Añadir:Apagado ]
A13: Establecer variable [ Nombre:%Finalturno A:00.05 Calcular:Apagado Añadir:Apagado ]
A14: Fin si (End if)
A15: Fin si (End if)
A16: Si (if) [ %Turnotrabajo ~ noche & %DAYW ~ sabado ]
A17: Establecer variable [ Nombre:%Finde A:1 Calcular:Apagado Añadir:Apagado ]
A18: Establecer variable [ Nombre:%Empiceturno A:00.00 Calcular:Apagado Añadir:Apagado ]
A19: Establecer variable [ Nombre:%Finalturno A:00.05 Calcular:Apagado Añadir:Apagado ]
A20: Fin si (End if)

Caravantes
15/06/14, 01:55:12
Os pongo como lo he solucionado,pero acudo a vosotros porque seguro que hay alguna forma de simplificarlo.

En la tarea Inico Trabajo (62) tienes el siguiente problema. Si es lunes y además %Turnotrabajo ~ tarde se ejecutarán las acciones A4, A5 y A6. Pero A4 habrá hecho que la variable %Turnotrabajo haya cambiado a mañana, con lo cual también se ejecutarán las acciones A9, A10 y A11... De nuevo, A9 hará que la variable %Turnotrabajo cambie nuevamente a noche... Resumiendo, creo que al terminar esta tarea nunca será posible que %Turnotrabajo sea mañana.
Tienes cinco acciones Si (if) y solo cuatro acciones Fin si (End if). Te falta una más de tipo Fin si (End if).

En la tarea Fin-De-Trabajo (63) las acciones A6, A11 y A17 son idénticas. Para simplificar, podrías quitar las tres y poner una sola acción de ese tipo entre A4 y A5.
En esta tarea también tienes cinco acciones Si (if) y solo cuatro acciones Fin si (End if). Te falta una más de tipo Fin si (End if).

rabeliyo
15/06/14, 07:22:50
Acabo d solucionarlo. Solo me quedaria el problema de el turno de tarde y lunes.
¿Alguna posible solucion?.
Lo he cambiado de posicion para que haga la mañana,tarde,noche, a ver si funciona y quitado el si es turno de noche y sabado que se me ha colado el sabado
Un saludo

Caravantes
15/06/14, 15:28:13
Acabo d solucionarlo. Solo me quedaria el problema de el turno de tarde y lunes.
¿Alguna posible solucion?.

En la introducción has hecho una explicación general, pero has omitido detalles concretos que son necesarios para entender todos los matices del problema. Por ejemplo, por lo que has dicho se deduce que en el fin de semana no trabajas, pero creo que no has concretado bien ese asunto; supongo que nunca trabajas entre las 06:00 del sábado y las 05:45 del lunes. Tampoco has precisado el orden en que cambian los turnos, supongo que sea Tarde -> Mañana -> Noche.

Otra cosa que no entiendo es por qué tienes dos tareas para establecer los turnos y los horarios (creo que eso debe hacerse en un solo sitio).

En mi opinión, el sistema es más simple y más fácil de entender si se hacen un perfil separado SOLO para establecer los turnos y las variables relacionadas con los turnos. Y luego puedes hacerte otras dos tareas para ejecutar en el momento de entrar o salir del trabajo, pero en esas tareas no veo necesidad de volver a mezclar las variables de los turnos.

Voy a intentar hacer el primer perfil; si he cogido mal algún concepto ya podrás ajustarlo tú directamente. Yo utilizaría una sola variable que contuviera el nombre del turno, su hora de inicio y su hora de finalización.
Mañana-05.45-14.00
Tarde-13.45-22.00
Noche-21.45-06.00
Luego se divide esa variable para separar cada uno de esos tres datos. Creo que esto simplifica bastante la tarea.

Perfil EstablecerTurnos.
Contexto horario, todos los días a las 00:01 horas. Eso significa que la tarea se ejecutará todos los días después de la medianoche. La tarea sería la siguiente:

Si (if) %DAYW ~ sabado]
. Establecer variable %Finde a 1
Fin si (End if)
Si (if) %DAYW ~ lunes ]
. Establecer variable %Finde a 0
. Si (if) %Turnotrabajo ~ Noche
. . Establecer variable %datosturno A: Tarde-13.45-22.00
. Else Si (if) %Turnotrabajo ~ Tarde
. . Establecer variable %datosturno A: Mañana-05.45-14.00
. Else
. . Establecer variable %datosturno A: Noche-21.45-06.00
. Fin si (End if)
. Separar variable %datosturno Separador: -
. Establecer variable %Turnotrabajo a %datosturno1
. Establecer variable %Empiceturno a %datosturno2
. Establecer variable %Finalturno a %datosturno3
Fin si (End if)

Creo que con eso queda bien resuelto todo el tema de establecer turnos.

Luego, podrás hacerte un perfil (que yo llamaría TRABAJANDO) que estuviese activo mientras estás en el trabajo. Este perfil tendría dos contextos:
-Contexto horario: comienzo a %Empiceturno ; final a %Finalturno
-Contexto de variable %Finde ~ 0
En la tarea de entrada se ejecutarían las tareas o acciones que deban aplicarse al entrar al curro, como por ejemplo poner el modo avión. En la tarea de salida se ejecutarían las tareas o acciones que deban aplicarse al salir del curro, como por ejemplo quitar el modo avión.
En estas dos tareas no es necesario cambiar los turnos ni nada parecido. De esta forma tienes perfiles/tareas bien separados y organizados, eso simplificará su funcionamiento y posibles cambios en el futuro.

rabeliyo
16/06/14, 08:59:19
Acabo de probarlo y va perfecto,solo he ajustado el "si es sabado" que estaba dentro de la condicion lunes y lo he sacado y en el contexto de establecer turnos lo he puesto de 00:01 a 00:03 por la cosa de que no este constantemente ejecutandose.
Me habia liado mucho ya que intentaba hacerlo todo en un mismo contexto,con lo cual no podia desactivarlo nunca y tenia que hacer apaños para los dias del finde.
Asi esta muchisimo mas claro y simple, hoy mismo lo pongo a funcionar y lo afino si hace falta aunque tiene pinta de estar perfecto.
Como siempre muchas gracias Caravantes!!

Caravantes
16/06/14, 16:22:19
solo he ajustado el "si es sabado" que estaba dentro de la condicion lunes

Sí, eso fue un fleco que dejé mal resuelto. Esa parte del sábado la había puesto inicialmente en el final de la tarea, luego la moví al principio y cometí el error de ponerla dentro del lunes. Ahora la he recolocado bien... y la he puesto en ROJO porque luego me he dado cuenta de otro problema. Según está ahora, el FinDeSemana (%Finde) empieza a computarse al comenzar el sábado (a las 00:01 horas del sábado) y eso es incorrecto porque si estás trabajando de noche sigues trabajando hasta las 06:00 del sábado. En realidad el FinDeSemana comienza al salir del último turno de la semana, cosa que ocurre
A) si estás en turno de mañana, al terminar el turno siendo viernes.
B) si estás en turno de tarde, al terminar el turno siendo viernes.
C) si estás en turno de noche, al terminar el turno siendo sábado.

Por lo tanto, la parte roja (del sábado) hay que quitarla de esa tarea EstablecerTurnos. Y hay que añadir algo equivalente en la tarea de salida del otro perfil, para que se ejecute al terminar el turno de trabajo. Sería algo así:

Si (if) %DAYW ~ viernes]
. Establecer variable %Finde a 1 si %Turnotrabajo ~ Mañana
. Establecer variable %Finde a 1 si %Turnotrabajo ~ Tarde
Else Si (if) %DAYW ~ sábado]
. Establecer variable %Finde a 1
Fin si (End if)

De esta forma la variable %Finde se pone a 1 al terminar el último turno de la semana, que es lo más correcto según interpreto.

lo he puesto de 00:01 a 00:03 por la cosa de que no este constantemente ejecutandose.

Da igual la duración que le pongas, 1 minuto o 23 horas, eso es irrelevante: la tarea (de entrada) solo se ejecuta una vez al comenzar ese periodo.

Como siempre muchas gracias Caravantes!!

Yo no sabía que los contextos de hora se podían establecer utilizando una variable que contuviese la hora, eso lo he aprendido leyendo tu primer post de este hilo. Yo también te estoy agradecido por ello.

rabeliyo
17/06/14, 07:14:47
Justo acabo de salir del turno de noche e iva a postear ya que tambien he caido en ello, precisamente ese problema es el que me llevo a mi primer perfil pero al intentar hacerlo solo con un contexto lo lie demasiado.
Cambiare el %Finde a 1 si %DAYW ~ viernes AND %Turnotrabajo ~ Mañana O Tarde para utilizar asi las nuevas variables boreanas de la ultima version a ver que tal funcionan.
Asi si que esta finiquitado [emoji38]

Caravantes
17/06/14, 14:21:42
Asi si que esta finiquitado

Porfa, edita el primer post (edición avanzada) y cambia el prefijo CONSULTA por SOLUCIONADO.