Escenas, scripts y plugins => Escenas Domóticas eedomus => Mensaje iniciado por: Margu en Agosto 03, 2015, 18:02:24 pm

Título: EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: Margu en Agosto 03, 2015, 18:02:24 pm
Buenas tardes,

He creado un script php que permite mediante la creación de algunos periféricos virtuales en eedomus tener el día, la semana, el año, saber si es bisiesto, si el día es par o impar entre otros. Me pareció interesante sobre todo a la hora de programar algunas reglas. Por ejemplo que si es día 9 de Enero y además Lunes se desencadene alguna escena. Pongo este ejemplo para que veáis que se pueden generar condiciones algo complejas.

El enlace al manual es el siguiente: https://mega.co.nz/#!Rc8WlALY!wIzbPSisvHQRxm2qa41PMTIaS1iyr585TQHTiMqfr-4

Se incluye en la descarga el manual, script e iconos para asociar a los estados.

También incluyo una plantilla psd para Photoshop. He creado algunos iconos para el número de días del año, pero no todos (serian 366 iconos, uno por día). Poco a poco los iré creando. Cuando tenga todos los iconos actualizare el pack de iconos. He de confesar que crear estos iconos es tarea un poco tediosa, pero poco a poco...

Espero que a alguien le sirva.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: phroc en Agosto 03, 2015, 19:44:46 pm
Genial, muchas gracias!!

En cuanto pueda lo veo. ¿Este va alojado en eedomus o fuera por limitaciones del PHP de eedomus?

Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Margu en Agosto 03, 2015, 20:10:19 pm
Genial, muchas gracias!!

En cuanto pueda lo veo. ¿Este va alojado en eedomus o fuera por limitaciones del PHP de eedomus?

Esta va alojado en eedomus. Al principio le generé para que se ejecutase fuera, pero vi que eedomus si acepta el comando date() de php y modifique todo para que se pudiese alojar en eedomus.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: phroc en Agosto 03, 2015, 23:08:39 pm
Genial, muchas gracias!!

En cuanto pueda lo veo. ¿Este va alojado en eedomus o fuera por limitaciones del PHP de eedomus?

Esta va alojado en eedomus. Al principio le generé para que se ejecutase fuera, pero vi que eedomus si acepta el comando date() de php y modifique todo para que se pudiese alojar en eedomus.

Estupendo, me parece un acierto cuando se puede porque no todo el mundo sabe ni puede montar un servidor. En eedomus es muy sencillo subir un script.

Gracias de nuevo.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Margu en Septiembre 05, 2015, 20:46:03 pm
Actualización del script:

- Se corrige el dato mostrado en el día del año. Al parecer no muestra los días del 1 al 365/366. Muestra los días del 0 al 364/365. Anteriormente por tanto se mostraba un día menos.
- Se añaden las estaciones del año. (Gracias @ltapiama por la idea).

Enlace de descarga del script corregido más las estaciones, junto a los iconos para las estaciones.
https://mega.nz/#!dIMSBRwb!jic1fuMe1RCnOTqoXKqSAHcUQVbpUbxNe_fahmYPiGo

Nota: Este script se puede guardar en eedomus. No hace falta un servidor web externo.
Descarga del manual: https://mega.nz/#!Rc8WlALY!wIzbPSisvHQRxm2qa41PMTIaS1iyr585TQHTiMqfr-4 (El script php de este enlace es obsoleto usar el corregido, no le he eliminado para mantener un historico)
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: jjgz37 en Marzo 04, 2016, 18:27:22 pm
Hola, yo he ido siguiendo todo el proceso sin problemas, pero me he quedado atascado en el último paso: para cargar el fichero .php en eedomus no me deja acceder a http://ip_local eedomus/script/.

Si podéis orientarme sobre lo que no estoy haciendo bien.

Gracias
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: phroc en Marzo 04, 2016, 18:54:45 pm
Te tiene que dejar. Estás seguro de que la IP local de tu eedomus es la que pones?

Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: jjgz37 en Marzo 04, 2016, 19:12:25 pm
Te tiene que dejar. Estás seguro de que la IP local de tu eedomus es la que pones?

Pues me temo que la ip que pongo es la correcta. También he probado con 2 navegadores.¿Igual hay que abrir algún parámetro en eedomus?.
Gracias
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Marzo 04, 2016, 20:15:43 pm
A mí me va muy bien.
Margu eres grande!
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Marzo 04, 2016, 20:55:44 pm
No me había dado cuenta de su utilidad hasta que no lo he pensado un poco. Teníamos una queja siempre que no se podían hacer reglas para que se ejecutasen a partir de un momento concreto. La razón es porque no había forma de meter esa información en Criterios. Ahora en los Criterios podemos añadir esta información. Hay un hilo hablando de esa limitación que no te lo solucionaba los Horarios. Seguro que Phroc se acuerda. El caso es que al poder meter esta información en la parte de Criterios, uno puede hacer una regla fácilmente que diga. Encender una luz a partir de las 19:35 siempre que alguien entre. Antes, esto no se podía hacer pues los horarios comprueba el momento en el que se cumplen los criterios (ver hilo: http://www.domoticadomestica.com/foro/index.php?topic=870.msg8363#msg8363) y si uno entra y se va a las 19:35 10 '', la regla no se activa (creo que en el hilo se explica esta sutil diferencia).
Para ello habrá que refrescar cada minuto en vez de una vez al día el Actualizar Calendario. Y habrá que quitar las # en el script.
Margus, gracias por hacer esto posible.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Aly en Marzo 04, 2016, 21:20:46 pm
Gracias Margu. Ésto será lo próximo que haga. Muchas gracias. Eres un crack.

Enviado desde mi SM-N9005 mediante Tapatalk

Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Marzo 04, 2016, 22:09:06 pm
Margu, en tu script comentas: $Minutos_valor = date('i'); # Minutos: 01-59
Pero no debería ser 00-59?
Todo me funciona a la perfección.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: MirloRojiblanco en Marzo 20, 2016, 17:35:21 pm
Hola a todos,
Consigo recuperar todos los valores, año, dia del mes, par, etc. pero no lo he lorado con la hora y minutos (que creo es lo mejor de todo para poner reglas dependiendo de la hora (como bien dice Jokin).

He quitado la almuhadilla, le he asignado el correspondiente API pero no recupero nada :-(. Adjunto pantallazo del php y periferico virtual para hora y minuto.

Gracias de antemano

Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Marzo 20, 2016, 18:02:32 pm
Je, te falta quitar las dos # de abajo. Debajo de ... Asignamos... Me río porque me pasó lo mismo. ;)
Yo estoy encantado porque ya he creado reglas donde puedo poner la hora que quiero en Criterios. Nada de en Horarios.


Enviado desde mi iPad utilizando Tapatalk
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: MirloRojiblanco en Marzo 20, 2016, 18:04:43 pm
Será posible.Pues mira que lo he dado vueltas.

Gracias :-)
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: MirloRojiblanco en Marzo 20, 2016, 18:14:00 pm
Funcionando.
Me parece interesantísimo poder preguntar por la hora y aplicar reglas  ;D
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: molusco en Marzo 20, 2016, 19:33:36 pm
Una cosa,
Cada cuanto ejecutáis el script? Cada minuto?
Eso no consume muchos recursos de la caja?

Pregunto...


Enviado desde mi iPhone utilizando Tapatalk
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Marzo 20, 2016, 21:15:58 pm
Yo así lo tengo desde hace unas semanas. Cada minuto y no le he observado nada raro. De otra forma, no sería muy útil para ajustar finamente las reglas.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: jose luis en Julio 10, 2016, 09:36:40 am
pues yo me he quedado atascado en lo de par impar todo lo demas va perfecto pero lo de par impar no logro hacer que ponga correcto ese valor alguien me podria guiar o echar un cable  :-\ :-\ :-\
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: jose luis en Julio 18, 2016, 13:36:00 pm
si alguien sabe decirme si hay algo mal en este script todo funciona ok menos el dia par que no cambia lo he revisado pero no encuentro el fallo


<?php
# Asignamos el código api de los perifericos. Sustituir XXXXX con su código.
#$Hora_id = 'XXXXX';
#$Minutos_id = 'XXXXX';
$Dia_id = '426045';
$Diasemana_id = '426530';
$Diapar_id = '435359';
$Diaaño_id = '432954';
$Diasenmes_id = '456048';
$Semana_id = '426552';
$Mes_id = '426550';
$Año_id = '425044';
$Bisiesto_id = '456047';
$Estacion_id = '456244';
# Asignamos el valor de los perifericos
#$Hora_valor = date('H'); # Hora en formato 24H: 01-24
#$Minutos_valor = date('i'); # Minutos: 01-59
$Dia_valor = date('d'); # Día en el mes: 1-31
$Diasemana_valor = date('l'); # Día de la semana en inglés: Monday, Tuesday ...
$Diapar_valor = date('d'%2); # Calculamos si el dia es par o impar: 0=Impar 1=par
$Diaaño_valor = date('z')+1; # Día en el año: 0-365
$Diasenmes_valor = date('t'); # Número total de días del mes: 28-31
$Semana_valor = date('W'); # Número de semana en el año 1-53
$Mes_valor = date('m'); # Número del mes: 01-12
$Año_valor = date('Y'); # Año
$Bisiesto_valor = date('L'); # Año bisiesto: 1=Bisiesto 0=No Bisiesto
# Calculamos la estacion del año
# Comparamos $diaaño con el inicio y fin de estaciones y encajamos
# Por defecto $estacion es Invierno
$Estacion_valor = "Invierno";
if ( $Diaaño_valor >= 79 && $Diaaño_valor <= 170 ) { $Estacion_valor = "Primavera"; }
if ( $Diaaño_valor >= 171 && $Diaaño_valor <= 262 ) { $Estacion_valor = "Verano"; }
if ( $Diaaño_valor >= 263 && $Diaaño_valor <= 353 ) { $Estacion_valor = "Otoño"; }
# Actualizamos los valores de los perifericos.
#setValue($Hora_id,$Hora_valor);
#setValue($Minutos_id,$Minutos_valor);
setValue($Dia_id,$Dia_valor);
setValue($Diasemana_id, $Diasemana_valor);
setValue($Diapar_id,$Diapar_valor);
setValue($Diaaño_id,$Diaaño_valor);
setValue($Diasenmes_id,$Diasenmes_valor);
setValue($Semana_id,$Semana_valor);
setValue($Mes_id,$Mes_valor);
setValue($Año_id,$Año_valor);
setValue($Bisiesto_id,$Bisiesto_valor);
setValue($Estacion_id,$Estacion_valor);
?>
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: enredador en Julio 19, 2016, 12:05:03 pm
Hola:


Prueba a cambiar:

date('d'%2);

por

date('d') %2 ;

Un saludo.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: jose luis en Julio 19, 2016, 13:15:03 pm
me dice:   La función datedate() no está permitido


me tiene liado este calendario vaya hay algo que no cuadra
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: jose luis en Julio 19, 2016, 13:34:14 pm
Vale ya lo he solucionado lo habia copiado mal.
Un millon de gracias eternamente agradecido enrredador ;)
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: jose luis en Agosto 09, 2016, 18:41:14 pm
vuelvo a hacer una pregunta por si alguien le ha pasado y es que hay un icono del calendario que no se ve en la app del telefono a pesar de que funciona todo correctamente y en la web va fantastico pero en la app del telefono no dejo aqui unas imagenes que creo que os ayudaran a ver el problema para los posibles lectores a ver si damos con el fallito  ;)
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Aly en Agosto 11, 2016, 16:47:42 pm
En la linea $Diapar-valor=date('d%2), falta un ' detrás del 2.

Enviado desde mi SM-N9005 mediante Tapatalk

Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Septiembre 21, 2016, 18:29:48 pm
Para aquellos que hayan implementado en sus Eedomus el calendario completo (Hora, min, mes, ...), incluida la estación del año, me podríais decir qué os pone hoy? A mí, Otoño y que yo sepa, el otoño empieza mañana. No lo había visto hasta ahora y parece que lleva en "Otoño" desde hace 3 días según el histórico. A qué se puede deber?
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: beagle en Septiembre 21, 2016, 20:26:12 pm
Otoño me pone a mi tambien
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: enredador en Septiembre 22, 2016, 17:53:41 pm
Hola:

El código asigna las estaciones en días fijos:

Código: [Seleccionar]
$Estacion_valor = "Invierno";
if ( $Diaaño_valor >= 79 && $Diaaño_valor <= 170 ) { $Estacion_valor = "Primavera"; }
if ( $Diaaño_valor >= 171 && $Diaaño_valor <= 262 ) { $Estacion_valor = "Verano"; }
if ( $Diaaño_valor >= 263 && $Diaaño_valor <= 353 ) { $Estacion_valor = "Otoño"; }

El día 79 (comienzo de "primavera") es el 20 de marzo (19 de marzo si el año es bisiesto), el 171 ("verano") es el 20 de junio (19 en bisiestos), el 263 es el 20 de septiembre (este año el 19) y 354 el 20 de diciembre (19 en bisiesto).

Se pueden cambiar "a pelo" los días de comienzo de cada estación en el script, pero como esos días van cambiando, y cada cuatro años suele haber un bisiesto, algún año no acertarán. Sí que es verdad que en los últimos años el otoño ha empezado o el 22 o el 23 de septiembre.

Habría que afinar el script con algún cálculo más fino de los equinoccios y los solsticios (sé que hay algoritmos para ello).

Saludos.

Saludos.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Septiembre 22, 2016, 20:13:16 pm
Gracias enredador. La verdad es que no es muy importante pues, ya estamos en Otoño! Pero lo importante es tener la explicación del por qué ha ocurrido y eso lo has dejado claro. Gracias!
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Eduardo en Octubre 04, 2016, 20:05:21 pm
Muchísimas gracias por el script Margu.

Me estaba volviendo loco para configurar la bajada de las persianas dependiendo de si había que aprovechar el calor de la casa o refrescar por la noche.
Me basé en la temperatura exterior y la interior, pero es mucho más cómodo y fiable así.

Gracias otra vez, y a todos los que habéis escrito en este hilo. Me ha sido de gran ayuda.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Rantonio en Noviembre 22, 2016, 11:21:09 am
Buenas,

Tengo el script cargado y veo en el dispositivo virtual “Calendario” como la hora, día, mes, etc se actualizan.

Ahora quisiera aprovechar para hacer unas macros que consisten en encender una tira led en el baño, la idea es: Si la luminosidad está por debajo de un valor y detecta presencia con un módulo Multisensor 6 in 1 de Aeotec enciende al 100% en blanco.

Pero en la misma circunstancia en horario de 00:30 a 08:00 se encienda en rojo al 10%

Je, que no sé cómo hacer para que las reglas no se peguen entre ellas y tengan conflicto.
 
Es conveniente decir que encendido en blanco en horario todo  el día menos 0:30 a 08:00

Es conveniente decir que encendido en rojo solo de 0:30 a 08:00

Vaya cacao con la intención de hacer tramos en las reglas.

Gracias
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Noviembre 22, 2016, 19:25:40 pm
@Rantonio, yo lo haría así:
Primera regla:
Criterios:
- Luminosidad ...
Y Movimiento...
Y Hora (calendario) = 00
O Hora (calendario) = 01
O Hora (calendario) = 01
...
O Hora (calendario) = 08 (en vez de ir a 8:30, te va a funcionar hasta las 9:00). Si quieres afinar tienes que añadir los Minutos y se complica bastante).
Yo no he encontrado forma de utilizar el Calendario con un "mayor de" y "menor de". No estoy seguro de que con las "horas" funcione.

Segunda regla
Lo mismo que la primera pero con el resto de las horas.

Esta es la forma más segura de que te funcione bien. Es un poco larga de hacer pero no creo que te lleve más de 5 min y la disfrutarás in aeternum... ;)
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Rantonio en Noviembre 23, 2016, 00:02:33 am
Leches Jokin

Casi que no hay aportación tuya que no aprenda, no te pregunto lo de "interrumpir macro" pues creo que los has explicado unas cuantas de veces, hace poco con un ejemplo de luz en pasillo con detector de presencia y apertura de puerta, clarísima.

Con el script pensaba que podía afinar en tramos y minutos, vamos como si hiciese la programación de un video VHS, a que hora-minuto empieza algo y a que hora-minuto termina, implemento tu aportación.

Yo también e intentado hacer con un "mayor que" y "menor que" intentar sacar una horquilla horaria, pero no he sido capaz.

Cachisssssss

Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Noviembre 23, 2016, 06:15:51 am
Tienes razón Rantonio, la única pega en el uso del Calendario es cuando quieres hacer algo FACILMENTE entre una hora concreta y otra hora concreta y alguna o ambas de éstas horas contienen minutos. Aunque se puede hacer pero tienes que alargar la regla añadiendo todos los minutos. Para el resto es genial y preciso porque puedes decir que empiece a una hora concreta afinando los minutos con un simple añadir: Y Minutos (Calendario) = "33" (por ejemplo).
El "entre horas" es el problema. Nada es perfecto.
Para tu regla hay otras formas más sofisticadas (ejm. Desde las 08:33 a las 11:46) si necesitas precisión de minutos y no quieres hacer reglas largas. Se basaría en crear un Estado de Inicio y un Estado de Finalización. En la regla principal le dices que sólo actúe si el Estado de Inicio está activado y el Estado de Finalización desactivado. Luego creas dos reglas para controlar los Estados de Inicio y de Finalización, del estilo: Si Hora del calendario es "08" y Minuto del calendario es "33" > Acción, poner Estado de Inicio = "ON", y lo mismo para el Estado de Finalización. Y las otras dos reglas son para volver a OFF los Estados de Inicio y Finalización.
La capacidad de Eedomus es infinita ;)
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Rantonio en Noviembre 25, 2016, 00:02:56 am
Re-cor-cho-lis,

Te leo con asombro, ahora con todo el cansancio del día no termino de engancharte, espero que esta espesura mental sean mañana espumas en olas marinas.

Jokin, como siempre me quito el sombrero. :)
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: tonixls en Diciembre 16, 2016, 13:46:46 pm
Vale ya lo he solucionado lo habia copiado mal.
Un millon de gracias eternamente agradecido enrredador ;)

Hola Jose Luis, ¿como lo solucionaste?, no consigo que me indique si el día es par o impar, he probado
('d'%2)
('d%2')
('d')%2
y nada...y otra pregunta, para el día del año, ¿hay que crear 365 valores?
Gracias
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: jose luis en Diciembre 16, 2016, 14:37:27 pm
Cuando tenga un momento te pasó el documento un saludo


Enviado desde mi iPhone utilizando Tapatalk
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: enredador en Diciembre 16, 2016, 19:25:17 pm
Hola:


Prueba a cambiar:

date('d'%2);

por

date('d') %2 ;

Un saludo.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: tonixls en Diciembre 16, 2016, 20:31:12 pm
Hola enredador, no funciona
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: tonixls en Diciembre 16, 2016, 20:42:02 pm
Y sobre  el día del año, no me digais que tengo que crear 365 valores
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: tonixls en Diciembre 16, 2016, 21:18:52 pm
Bueeenoooo, ya he conseguido que me diga si el día es par o impar, no tenía bien puesto el valor "bruto"
Nota: las instrucciones están al reves, 0 es par y 1 es impar.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Diciembre 16, 2016, 22:05:28 pm
Y sobre  el día del año, no me digais que tengo que crear 365 valores

Me temo que sí...
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: jose luis en Diciembre 27, 2016, 00:46:06 am
Vale ya lo he solucionado lo habia copiado mal.
Un millon de gracias eternamente agradecido enrredador ;)

Hola Jose Luis, ¿como lo solucionaste?, no consigo que me indique si el día es par o impar, he probado
('d'%2)
('d%2')
('d')%2
y nada...y otra pregunta, para el día del año, ¿hay que crear 365 valores?
Gracias


Esta es la linea que tienes que copiar un saludo espero haberte ayudado.

$Diapar_valor = date('d') %2 ; # Calculamos si el dia es par o impar: 0=Impar 1=par
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: jose luis en Diciembre 27, 2016, 00:48:05 am
copia la linea entera y pegala ok y ya me cuentas  ;)
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Eduardo en Marzo 29, 2017, 19:36:56 pm
@Rantonio, yo lo haría así:
Primera regla:
Criterios:
- Luminosidad ...
Y Movimiento...
Y Hora (calendario) = 00
O Hora (calendario) = 01
O Hora (calendario) = 01
...
O Hora (calendario) = 08 (en vez de ir a 8:30, te va a funcionar hasta las 9:00). Si quieres afinar tienes que añadir los Minutos y se complica bastante).
Yo no he encontrado forma de utilizar el Calendario con un "mayor de" y "menor de". No estoy seguro de que con las "horas" funcione.

Segunda regla
Lo mismo que la primera pero con el resto de las horas.

Esta es la forma más segura de que te funcione bien. Es un poco larga de hacer pero no creo que te lleve más de 5 min y la disfrutarás in aeternum... ;)

Por si hay alguien interesado, he conseguido hacer funcionar las horas con la condición "mayor que".
Para no ejecutar un script tan largo como el calendario.php cada minuto, creé otro llamado reloj.php que es igual pero reducido, así puedo activar o desactivar la regla que lo actualiza sin que afecte al calendario:

<?php
#Eduardo;
$Hora_id = '607908';
$Minutos_id = '607915';
$Time_id = '607992';
$Hora_valor = date('H'); # Hora en formato 24H: 00-23
$Minutos_valor = date('i'); # Minutos: 00-59
setValue($Hora_id,$Hora_valor);
setValue($Minutos_id,$Minutos_valor);
setValue($Time_id,$Hora_valor*100+$Minutos_valor);
?>

La última línea crea el valor "Time" en formato HHMM todo seguido, es un valor numérico que funciona a la perfección con las reglas "mayor que" y "menor que".

A la hora de crear las reglas, para que aparezcan los valores con los que queremos comparar "Time", tenemos que crearlos previamente en el dispositivo de estado "Time", de forma que al valor bruto "1800" corresponda la descripción "18:00". Así no es necesario crear valores cada minuto, a no ser que se requiera mucha precisión para una franja horaria concreta.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Aly en Marzo 29, 2017, 19:40:15 pm
Muchísimas gracias. Muy útil.
Fenomenal.

Enviado desde mi SM-N9005 mediante Tapatalk

Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: intermauta en Marzo 29, 2017, 22:23:35 pm
¿se puede almacenar en eedomus?

Enviado desde mi Nexus 5X mediante Tapatalk

Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Eduardo en Marzo 29, 2017, 22:57:47 pm
¿se puede almacenar en eedomus?
Enviado desde mi Nexus 5X mediante Tapatalk

Sí, todo en eedomus sin problemas. Es un script muy pequeño.
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: intermauta en Marzo 29, 2017, 23:30:29 pm
Genial, muchas gracias por el aporte

Enviado desde mi Nexus 5X mediante Tapatalk

Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Jokin en Marzo 30, 2017, 05:57:50 am
Grandísimo aporte Eduardo. Todos echábamos en falta esa posibilidad. Gracias


Sent from my iPhone using Tapatalk Pro
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: phroc en Marzo 30, 2017, 09:24:12 am
¡¡¡Fantástico aporte Eduardo!!!

Y tu eras el que decía que eso de la Raspberry Pi y los scripts eran palabras mayores... Madre mía...  ;)
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: richi en Abril 15, 2017, 01:42:01 am
Qué buenos los scripts. Mil gracias por compartir !!!


Enviado desde mi iPhone utilizando Tapatalk
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: intermauta en Abril 23, 2017, 19:43:28 pm
@eduardo esoy intentando imolementar el reloj y me surge una duda

$Hora_id = '607908';
$Minutos_id = '607915';
$Time_id = '607992';

en esas lineas lo que esta entre comillas simples ¿es el numero de la api del periferico virtual? yo solo he creado uno llamado reloj con lo que solo tengo una API

He seguido el manual del calendario pero solo para el reloj
Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: Aly en Abril 23, 2017, 22:20:32 pm
Hola tienes que crear 3 sensores, uno para la hora, otro para los minutos y otro para los segundos. Esos números entre comillas simples son las api de esos 3 sensores.

Enviado desde mi SM-N9005 mediante Tapatalk

Título: Re:Periféricos virtuales con días, semanas, meses y años
Publicado por: intermauta en Abril 24, 2017, 00:41:13 am
Gracias Aly, esa es la parte que no entendía, solo habia creado uno llamado "reloj"
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: jalvarezprz en Mayo 31, 2019, 01:15:00 am
Quiero dar las gracias a Margu  por este excelente trabajo y por acompañarlo con esa estupenda documentación. Gracias a este hilo, por fin he conseguido entender cómo se usa un script en eedomus y también he podido aclarar bastante mis ideas.

También quiero daros las gracias a quienes habéis participado en las demás aportaciones porque me habéis aclarado aún más el tema de los scripts y los periféricos virtuales.

Muchas gracias a tod@s por compartir vuestros muchos conocimientos.
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: Nax en Octubre 13, 2019, 16:49:06 pm
Primero daros las gracias a todos los que habéis colaborado en este script, que yo considero necesario por el tema de las horas.
Estoy intentándolo pero al meterlo en el eedomus siempre me salta este error:

Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /var/www/secure.eedomus/script/validatePhp_include.php on line 31
Scrip inválido:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in calendario.php on line 21


He repasado tanto la linea 31 buscando el error en el símbolo ' (correspondiente al ASCII 39) así como la linea 21 buscando alguna diferencia de formato con las anteriores y posteriores lineas, pero no veo nada tampoco.

Para mis usos, no necesito ni el día del año, ni el numero de la semana, así como tampoco las estaciones del año. De manera que simplemente estos campos los he ignorado. Otras opciones que he probado han sido eliminarlos del script y también lo he intentado poniendo una # delante de la lineas que no necesito, pero en ninguno de los tres caso he conseguido meter el script dentro del eedomus.

Os pongo también como me queda el script:

<?php
# Asignamos el código api de los perifericos. Sustituir XXXXX con su código.
$Hora_id = '1657193';
$Minutos_id = '1657193';
$Dia_id = '1657029';
$Diasemana_id = '1651550';
$Diapar_id = '1657137';
$Diaaño_id = 'XXXXX';
$Diasenmes_id = '1659181';
$Semana_id = 'XXXXX';
$Mes_id = '1657119';
$Año_id = '1657107';
$Bisiesto_id = '1657139';
$Estacion_id = 'XXXXX';
# Asignamos el valor de los perifericos
$Hora_valor = date('H'); # Hora en formato 24H: 01-24
$Minutos_valor = date('i'); # Minutos: 01-59
$Dia_valor = date('d'); # Día en el mes: 1-31
$Diasemana_valor = date('l'); # Día de la semana en inglés: Monday, Tuesday ...
$Diapar_valor = date('d'%2'); # Calculamos si el dia es par o impar: 0=Impar 1=par
$Diaaño_valor = date('z')+1; # Día en el año: 0-365
$Diasenmes_valor = date('t'); # Número total de días del mes: 28-31
$Semana_valor = date('W'); # Número de semana en el año 1-53
$Mes_valor = date('m'); # Número del mes: 01-12
$Año_valor = date('Y'); # Año
$Bisiesto_valor = date('L'); # Año bisiesto: 1=Bisiesto 0=No Bisiesto
# Calculamos la estacion del año
# Comparamos $diaaño con el inicio y fin de estaciones y encajamos
# Por defecto $estacion es Invierno
$Estacion_valor = "Invierno";
if ( $Diaaño_valor >= 79 && $Diaaño_valor <= 170 ) { $Estacion_valor = "Primavera"; }
if ( $Diaaño_valor >= 171 && $Diaaño_valor <= 262 ) { $Estacion_valor = "Verano"; }
if ( $Diaaño_valor >= 263 && $Diaaño_valor <= 353 ) { $Estacion_valor = "Otoño"; }
# Actualizamos los valores de los perifericos.
setValue($Hora_id,$Hora_valor);
setValue($Minutos_id,$Minutos_valor);
setValue($Dia_id,$Dia_valor);
setValue($Diasemana_id, $Diasemana_valor);
setValue($Diapar_id,$Diapar_valor);
setValue($Diaaño_id,$Diaaño_valor);
setValue($Diasenmes_id,$Diasenmes_valor);
setValue($Semana_id,$Semana_valor);
setValue($Mes_id,$Mes_valor);
setValue($Año_id,$Año_valor);
setValue($Bisiesto_id,$Bisiesto_valor);
setValue($Estacion_id,$Estacion_valor);
?>

Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: MindTwist en Octubre 15, 2019, 20:37:26 pm
Me suscribo solo para poder reportar a la que pruebe esto!
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: bomdos en Octubre 18, 2019, 19:07:22 pm
Una vez más estoy encantado con este foro, he conseguido (sin tener ni idea de programación) incluir perfectamente este script y poderle dar un buen uso en las reglas.
Mil gracias por compartir y hacer que podamos disfrutar tanto de Eedomus.
(Del tiempo que le echado no digo nada  :P jejeje)
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: Nax en Octubre 18, 2019, 23:32:02 pm
@bomdos has utilizado todos los campos?  A ver di el fallo que me da a mi va a ser eso?

Enviado desde mi Redmi Note 4X mediante Tapatalk

Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: MindTwist en Octubre 19, 2019, 17:05:52 pm
Instalado el script y funcionando perfectamente, gracias!!
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: Nax en Octubre 19, 2019, 18:26:52 pm
@MindTwist has modificado algo del script o lo has puesto tal cual? cambiando las "x" por las API's, borrando las "#" y añadiendo la ' que faltaba en la linea de los dias, no?

Enviado desde mi Redmi Note 4X mediante Tapatalk

Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: MindTwist en Octubre 19, 2019, 19:02:55 pm
He cambiado cosas, para dejar solo lo que voy a usar, que hay cosas que de entrada no me interesan, ni creo que me vayan a interesar.

Código: [Seleccionar]
<?php
# Asignamos el código API de los perifericos. Sustituir XXXXX con su código.
$Horas_id '1660676';
$Minutos_id '1660661';
$Hora_id '1660684';
$Dia_id '1660379';
$Diasemana_id '1660333';
#$Diapar_id = 'XXXXX';
#$Diaaño_id = 'XXXXX';
#$Diasenmes_id = 'XXXXX';
#$Semana_id = 'XXXXX';
$Mes_id '1660420';
$Año_id '1660524';
#$Bisiesto_id = 'XXXXX';
$Estacion_id '1660535';

# Asignamos el valor de los perifericos
$Horas_valor date('H'); # Hora en formato 24H: 00-23
$Minutos_valor date('i'); # Minutos: 00-59
$Dia_valor date('d'); # Día en el mes: 1-31
$Diasemana_valor date('l'); # Día de la semana en inglés: Monday, Tuesday ...
#$Diapar_valor = date('d'%2); # Calculamos si el dia es par o impar: 0=Impar 1=par
#$Diaaño_valor = date('z')+1; # Día en el año: 0-365
#$Diasenmes_valor = date('t'); # Número total de días del mes: 28-31
#$Semana_valor = date('W'); # Número de semana en el año 1-53
$Mes_valor date('m'); # Número del mes: 01-12
$Año_valor date('Y'); # Año
#$Bisiesto_valor = date('L'); # Año bisiesto: 1=Bisiesto 0=No Bisiesto

# Calculamos la estacion del año
# Comparamos $diaaño con el inicio y fin de estaciones y encajamos
# Por defecto $estacion es Invierno
$Estacion_valor "Invierno";
if ( 
$Diaaño_valor >= 79 && $Diaaño_valor <= 170 ) { $Estacion_valor "Primavera"; }
if ( 
$Diaaño_valor >= 171 && $Diaaño_valor <= 262 ) { $Estacion_valor "Verano"; }
if ( 
$Diaaño_valor >= 263 && $Diaaño_valor <= 353 ) { $Estacion_valor "Otoño"; }

# Actualizamos los valores de los perifericos.
setValue($Horas_id,$Horas_valor);
setValue($Minutos_id,$Minutos_valor);
setValue($Hora_id$Horas_valor*100+$Minutos_valor );
setValue($Dia_id,$Dia_valor);
setValue($Diasemana_id$Diasemana_valor);
#setValue($Diapar_id,$Diapar_valor);
#setValue($Diaaño_id,$Diaaño_valor);
#setValue($Diasenmes_id,$Diasenmes_valor);
#setValue($Semana_id,$Semana_valor);
setValue($Mes_id,$Mes_valor);
setValue($Año_id,$Año_valor);
#setValue($Bisiesto_id,$Bisiesto_valor);
setValue($Estacion_id,$Estacion_valor);
?>
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: bomdos en Octubre 19, 2019, 19:27:46 pm
@bomdos has utilizado todos los campos?  A ver di el fallo que me da a mi va a ser eso?

Enviado desde mi Redmi Note 4X mediante Tapatalk

No, solo he utilizado los campos de días, mes, día del mes, año, horas y minutos los ademas de momento prescindiré de ellos.
No puedo ayudarte mucho porque no tengo ni idea de programación para conocer donde puede estar el error, yo solo he seguido los pasos y me ha salido perfecto con algún pequeño error que he ido solventando a base de prueba/error…
Me descargé el manual que hay en este hilo y lo seguí al dedillo con las correcciones que en este hilo también están y ha salido perfecto, eso siii unas cuantas horas me ha costado conseguirlo.

Si sigues el tutorial paso por paso debe salir, y teniendo en cuenta las correcciones que se nombran en este hilo.

Había pensado en hacer un video para ayudar a realizar este fabuloso tuto pero después de lo que me ha costado solo integrarlo no sé si seria capaz de hacerlo jejeje…
Siento no poder ayudarte pero repito que yo solo me he limitado a seguir el tuto y salio.
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: Nax en Octubre 19, 2019, 19:40:22 pm
@bomdos @MindTwist gracias a los dos por vuestras respuestas. Voy a borrarlo todo y a empezar de nuevo a ver si hay algun error tonto que se me ha pasado por alto. Al igual que vosotros dejare sin rellenar lo que no me interesa.
Voy al lio y os cuento.

Enviado desde mi Redmi Note 4X mediante Tapatalk

Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: Nax en Octubre 20, 2019, 22:23:52 pm
Bueno por fin lo he conseguido!! Ya lo tengo funcionando al 100%. Ahora solo me falta cambiar los iconos de los valores y corregir algun error absurdo.

Exactamente no se porque no me funcionaba. Lo único que hecho ha sido borrarlo todo, hacerle un reset al eedomus y empezar de nuevo otra vez.

Enviado desde mi Redmi Note 4X mediante Tapatalk

Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: bomdos en Octubre 20, 2019, 22:53:29 pm
Bueno por fin lo he conseguido!! Ya lo tengo funcionando al 100%. Ahora solo me falta cambiar los iconos de los valores y corregir algun error absurdo.

Exactamente no se porque no me funcionaba. Lo único que hecho ha sido borrarlo todo, hacerle un reset al eedomus y empezar de nuevo otra vez.

Enviado desde mi Redmi Note 4X mediante Tapatalk
Perfecto, ahora a disfrutarlo  ;)
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: alexisns en Marzo 31, 2020, 17:34:36 pm
Muchísimas gracias Margu, me ha sido de gran ayuda.

Llevaba varios días pensando cómo automatizar la depuradora de la piscina por meses, ya que no me acaba de convencer las automatizaciones disponibles en eedomus porque no puedes aprovechar la tarifa eléctrica reducida, y tras los años tengo bastante claro las necesidades de filtración de mi piscina.

Voy a compartir de una forma básica lo que he hecho por si a alguien le pudiera interesar.

Siguiendo las instrucciones de Margu he creado una habitación 'Calendario' un periférico 'Mes' y el recolector de objetos que actualizo el 'Calendario' todos los días mediante una regla a las 0 horas y 1 minuto.

Por otra parte he creado 6 planificaciones con el asistente:

- De Diciembre a Marzo, ON a las 10:30, OFF a las 12:00 (tarifa reducida hasta las 12:00)
- De Abril a Junio y Octubre-Noviembre, ON a las 9:30, OFF a las 12:00
- Junio y Octubre por las tardes, ON a las 16:00, OFF a las 18:00
- De Julio a Septiembre por las mañanas, ON a las 9:00, OFF a las 13:00 (tarifa reducida hasta las 13:00)
- De Julio a Septiembre por las tardes, ON a las 16:00, OFF a las 19:00
- De Julio a Septiembre por las noches, ON a las 23:00, OFF a las 00:00

Como criterios adicionales tanto de principio como de fin en las planificaciones utilizo expresiones como:

- 'Mes Calendario' 'esta' 'igual a' Junio'
o 'Mes Calendario' 'esta' 'igual a' Octubre'
o 'Mes....

De esta forma queda todo automatizado a perpetuidad y no requiere que tenga que estar activando o desactivando programaciones, salvo los lógicos ajustes que iré introduciendo.

Para la instalación he utilizado un contactor Legrand 4125 44 y un Qubino Dimmer de carril DIN.

Lo próximo que tengo en la lista es que el riego también esté planificado por meses e introduciré un pluviómetro POPP.

Si alguien quiere más info no dudéis en preguntarme.

Saludos.
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: phroc en Marzo 31, 2020, 19:22:34 pm
¡Gracias por compartirlo!

Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: Nax en Enero 06, 2021, 23:55:29 pm
Hola a tod@s. Ya estamos en el 2021 y por ese motivo ha dejado de funcionarme este pedazo de script que me soluciona muchos problemas.
Alguien me podría indicar que he de modificar y como hacerlo para poder seguir usandolo, por favor?
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: MindTwist en Enero 07, 2021, 06:36:44 am
Hola a tod@s. Ya estamos en el 2021 y por ese motivo ha dejado de funcionarme este pedazo de script que me soluciona muchos problemas.
Alguien me podría indicar que he de modificar y como hacerlo para poder seguir usandolo, por favor?

A mi me sigue funcionando correctamente.
Título: Re:EEDOMUS: Periféricos virtuales con días, semanas, meses y años
Publicado por: Nax en Enero 09, 2021, 20:28:04 pm
Bueno, pues en vista de que estaba claro que era algún fallo mío, le he hecho un reset al eedomus y otro al rooter y ha vuelto a funcionar todo otra vez, sin mas... La verdad que  desde que me cambiaron el rooter antiguo de ONO,  por el nuevo de Vodafone, todo son problemas en casa con las ip's de los dispositivos.