Foros Domótica Doméstica

Jeedom - mostrar horarios y fechas

Jokin

  • *****
  • 1920
  • Meliorem domum
    • Ver Perfil
Jeedom - mostrar horarios y fechas
« en: Julio 23, 2017, 19:19:35 pm »
Hola,
Es habitual que uno desee enviar mensajes a través de escenarios donde se quiera incluir el dato del horario y la fecha.
En concreto yo me suelo mandar los mensajes añadiendo:

[#heure#:#minute# (#jour#-#mois#-#annee#)]

Sin embargo, si alguno de estos parámetros tiene un solo dígito, no le añade el "0". Es decir, si el mensaje lo envía a las 19:09, el día 23/07/2017, lo que realmente manda es: 19:9, el día 23/7/2017. Alguien sabría cómo añadir los "0" que faltan?

He visto que hay gente que convierte las #timestamp# en un dato completo de hora y día pero esto me parece más complicado aún.
Gracias.

Re:Jeedom - mostrar horarios y fechas
« Respuesta #1 en: Julio 23, 2017, 20:07:42 pm »
Cambia: #heure#:#minute#, por #time#
Creo que era así.....
Edito: la función time te da los 4 dígitos, pero sin separador ":"...
Con timestamp y cálculos se puede sacar, pero ahora mismo no sé como.

Enviado desde mi JY-S3 mediante Tapatalk
« Última modificación: Julio 23, 2017, 20:20:12 pm por dj_janker »

Re:Jeedom - mostrar horarios y fechas
« Respuesta #2 en: Julio 23, 2017, 20:36:34 pm »
No lo he probado, pero creo que debe funcionar:
Imagino que lo que quieres es enviarte la fecha y hora a la que se ejecuta un evento o un comando.
Para ello crea un virtual tipo info /autre utilizando la función collectDate(cmd)
Esto si le das a tester te mostrara la fecha y hora del ultimo evento.
Luego mediante escenarios podrás usar el comando INFO de ese virtual para enviarlo por correo, Telegram, slack, etc

Enviado desde mi JY-S3 mediante Tapatalk


Jokin

  • *****
  • 1920
  • Meliorem domum
    • Ver Perfil
Re:Jeedom - mostrar horarios y fechas
« Respuesta #3 en: Julio 23, 2017, 23:48:00 pm »
Dj_janker, me parece muy buena idea lo de collectDate. Pero ahora mismo no tengo claro dónde añadir esa información en un virtual. Podrías darme por favor algún detalle más del campo donde añadirlo. Gracias.


Sent from my iPhone using Tapatalk Pro

Jokin

  • *****
  • 1920
  • Meliorem domum
    • Ver Perfil
Re:Jeedom - mostrar horarios y fechas
« Respuesta #4 en: Julio 23, 2017, 23:53:40 pm »
Solucionado. Es en 'Valeur'. Resulta que al duplicar un virtual se me había quedado en gris ese campo sin poder modificarlo. Pero cuando lo he creado nuevo, todo ha ido como la seda y he conseguido lo que quería. Ahora tengo la fecha completa como quería. Gracias!


Sent from my iPhone using Tapatalk Pro

Re:Jeedom - mostrar horarios y fechas
« Respuesta #5 en: Julio 24, 2017, 08:41:19 am »
Solucionado. Es en 'Valeur'. Resulta que al duplicar un virtual se me había quedado en gris ese campo sin poder modificarlo. Pero cuando lo he creado nuevo, todo ha ido como la seda y he conseguido lo que quería. Ahora tengo la fecha completa como quería. Gracias!


Sent from my iPhone using Tapatalk Pro
Me alegro que lo consiguieras. Un saludo

Enviado desde mi JY-S3 mediante Tapatalk


David

  • ***
  • 136
    • Ver Perfil
Re:Jeedom - mostrar horarios y fechas
« Respuesta #6 en: Julio 24, 2017, 19:59:22 pm »
He adaptado el codigo del script que hay para eedomus (el autor es Margu) que da el dia, la hora, par o impar...y he añadido los calculos para la estación del año. Si es interesante lo puedo postear.

Un saludo

Jokin

  • *****
  • 1920
  • Meliorem domum
    • Ver Perfil
Re:Jeedom - mostrar horarios y fechas
« Respuesta #7 en: Julio 24, 2017, 20:51:39 pm »
Sí, davidsuarez82 por favor. Puede ser muy útil. Gracias.


Enviado desde mi iPad utilizando Tapatalk Pro

David

  • ***
  • 136
    • Ver Perfil
Re:Jeedom - mostrar horarios y fechas
« Respuesta #8 en: Julio 24, 2017, 23:04:06 pm »
Pues aqui va el codigo, desde el plugin script en comandos hay que llamar al script con el parametro que se quiere visualizar entre "" al final.

Los parametros posibles son:

- Hour_value -- Hora en formato 24H: 01-24
- Minutes_value -- Minutos: 01-59
- Day_value -- Dia del mes: 1-31
- WeekDay_value -- Dia de la semana: Monday, Tuesday ...
- EvenDay_value -- Dia Par/impar
- DayYear_value -- Dias que tiene el año: 365-366
- DayMonth_value -- Dias que tiene el mes: 28-31
- Week_value -- Numero de semana: 1-53
- Month_value -- Numero de mes: 01-12
- Year_value -- Año
- LeapYear_value -- Año bisiesto/no bisisesto

Por cierto, los dias, dia par/impar y año bisiesto lo devuelve en ingles; si alguien lo quiere poner en español y no lo consigue que avise :)

Código: [Seleccionar]
<?php

$argument1 
$argv[1];


// Get the value of the different parameters
$Hour_value date('H'); // Hour in format 24H: 01-24
$Minutes_value date('i'); // Minutes: 01-59
$Day_value date('d'); // Day in the month: 1-31
$WeekDay_value date('l'); // Day of the week: Monday, Tuesday ...
$EvenDay date('d')%2// Calculate if the day is even or odd: 0=Odd 1=Even
$DayYear_value date('z')+1// Day in the year: 1-366
$DayMonth_value date('t'); // Total amount of days in the month: 28-31
$Week_value date('W'); // Week number in the year: 1-53
$Month_value date('m'); // Month number: 01-12
$Year_value date('Y'); // Year
$LeapYear date('L'); // Leap Year: 1=Leap 0=Non leap

// Calculate season; JD = Julian Date
// Spring equinox of year Y: JD = 1721139,2855 + 365,2421376 * Y + 0,067919 * (Y / 1000)2 - 0,0027879 * (Y / 1000)3
// Summer Solstice of the Year Y: JD = 1721233,2486 + 365,2417284 * Y - 0,053018 * (Y / 1000)2 + 0,009332 * (Y / 1000)3
// Autum Equinox of the year Y: JD = 1721325,6978 + 365,2425055 * Y - 0,126689 * (Y / 1000)2 + 0,0019401 * (Y / 1000)3
// Winter solstice of the year Y: JD = 1721414,392 + 365,2428898 * Y - 0,010965 * (Y / 1000)2 - 0,0084885 * (Y / 1000)3


// Winter Solstice previous year
$JD_1 1721414.392 + (365.2428898 * ($Year_value-1)) - (0.010965 pow((($Year_value-1)/1000),2)) - (0.0084885 pow((($Year_value-1)/1000),3));
// Spring Equinox
$JD_2 1721139.2855 + (365.2421376 $Year_value) + (0.067919 pow(($Year_value/1000),2)) - (0.0027879 pow(($Year_value/1000),3));
// Summer Solstice
$JD_3 1721233.2486 + (365.2417284 $Year_value) - (0.053018 pow(($Year_value/1000),2)) + (0.009332 pow(($Year_value/1000),3));
// Autumn Equinox
$JD_4 1721325.6978 + (365.2425055 $Year_value) - (0.126689 pow(($Year_value/1000),2)) + (0.0019401 pow(($Year_value/1000),3));
// Winter Solstice
$JD_5 1721414.392 + (365.2428898 $Year_value) - (0.010965 pow(($Year_value/1000),2)) - (0.0084885 pow(($Year_value/1000),3));
// Spring Equinox next year
$JD_6 1721139.2855 + (365.2421376 * ($Year_value+1)) + (0.067919 pow((($Year_value+1)/1000),2)) - (0.0027879 pow((($Year_value+1)/1000),3));


// Convert Julian day to calendar date


for ($i 1$i <= 6$i++) {
$J_date 'JD_'.$i;


$intgr   floor($$J_date);
$frac    = $$J_date $intgr;
$gregjd  2299161;

if( 
$intgr >= $gregjd ) { //Gregorian calendar correction

$tmp floor((($intgr 1867216) - 0.25) / 36524.25 );
$j1 $intgr $tmp floor(0.25*$tmp);
}
else
$j1 intgr;
 
//correction for half day offset
$dayfrac $frac 0.5;
if( $dayfrac >= 1.0 ) {
$dayfrac -= 1.0;
++$j1;
}

$j2 $j1 1524;
$j3 floor6680.0 + ( ($j2 2439870) - 122.1 )/365.25 );
$j4 floor($j3*365.25);
$j5 floor( ($j2 $j4)/30.6001 );

$d str_pad(floor($j2 $j4 floor($j5*30.6001)),2,"0"STR_PAD_LEFT);
$m str_pad(floor($j5 1),2,"0"STR_PAD_LEFT);
if( $m 12 $m -= 12;
$y floor($j3 4715);
if( $m )   --$y;
if( $y <= )  --$y;

// Get time of day from day fraction

$hr str_pad(floor($dayfrac 24.0),2,"0"STR_PAD_LEFT);
$mn str_pad(floor(($dayfrac*24.0 $hr)*60.0),2,"0"STR_PAD_LEFT);
$f  = (($dayfrac*24.0 $hr)*60.0 $mn)*60.0;
$sc str_pad(floor($f),2,"0"STR_PAD_LEFT);
$f -= $sc;
if( 
$f 0.5 ) ++$sc;

${
'timestamp'.$i} = $d."-".$m."-".$y." ".$hr.":".$mn.":".$sc;

}

$now date('d-m-Y H:i:s');

If ((
strtotime ($timestamp1) <= strtotime ($now) && strtotime ($now) < strtotime ($timestamp2)) || (strtotime ($timestamp5) <= strtotime ($now) && strtotime ($now) < strtotime ($timestamp6))) {
$Season_value "Winter";
}

If ( 
strtotime ($timestamp2) <= strtotime ($now) && strtotime ($now) < strtotime ($timestamp3)) {
$Season_value "Spring";
}

If ( 
strtotime ($timestamp3) <= strtotime ($now) && strtotime ($now) < strtotime ($timestamp4)) {
$Season_value "Summer";
}

If ( 
strtotime ($timestamp4) <= strtotime ($now) && strtotime ($now) < strtotime ($timestamp5)) {
$Season_value "Autumn";
}

// Define Odd/Even day

if ($EvenDay 0) {
  
$EvenDay_value "Odd Day";
}
Else {
  
$EvenDay_value "Even Day";
}

// Define Leap/Non Leap year

if ($LeapYear 0) {
  
$LeapYear_value "Leap Year";
}
Else {
  
$LeapYear_value "Non Leap Year";
}


// Update the value of the peripherials.

echo $$argument1;

?>
« Última modificación: Julio 24, 2017, 23:06:15 pm por davidsuarez82 »