Mensajes recientes

Páginas: [1] 2 3 ... 10
1
Saludos, amigos y vecinos...

He llegado a este hilo buscando lo que este script de Python hacía. He probado la integración directamente en Home Assistant, pero como lo tengo en docker, no puedo usarla, de modo que como ya tengo un servidor web montado en mi NAS Synology, no necesitaba el servidor flask del script de Python, así que he convertido el script a php (Más bien lo ha hecho ChatGPT).

Puedo confirmar que los datos los envía correctamente a Home Assistant y ahora estoy esperando a ver si los valida el servidor de Meteoclimatic.

El script php es este:

Código: [Seleccionar]
<?php

// CONFIGURACIÓN
$TOKEN_SEGURO "token_para_ecowitt";  // CAMBIA ESTO

$HOME_ASSISTANT_WEBHOOK "http://192.168.1.100:8123/api/webhook/long_live_token_de_HA";
$METEOCLIMATIC_API "http://api.m11c.net/v2/ew/{station_code}/{api_key}";
$STATION_CODE "ESAND29XXXXXXXXXXXX";
$API_KEY "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";

$LOG_FILE "weather_data.log";
$DEBUG_FILE "debug.log";

date_default_timezone_set("Europe/Madrid");

// FUNCIÓN PARA ESCRIBIR EN DEBUG
function write_debug($file$msg) {
    
$time date("Y-m-d H:i:s");
    
file_put_contents($file"[$time$msg\n"FILE_APPEND);
}

// ------------------------
// COMPROBAR TOKEN EN LA URL
// ------------------------

if (!isset($_GET["token"]) || $_GET["token"] !== $TOKEN_SEGURO) {
    
write_debug($DEBUG_FILE"Acceso denegado: token inválido o ausente.");
    
http_response_code(403);
    echo 
"Forbidden";
    exit;
}

// El token no debe enviarse a otros servicios
unset($_GET["token"]);

// ------------------------
// RECEPCIÓN DE DATOS ECOwitt
// ------------------------

$data $_POST;
if (empty(
$data)) {
    
$data $_GET// por si algo viene en GET
}

file_put_contents($LOG_FILEjson_encode($data) . "\n"FILE_APPEND);

// ------------------------
// ENVÍO A HOME ASSISTANT
// ------------------------
try {
    
$ch curl_init($HOME_ASSISTANT_WEBHOOK);
    
curl_setopt($chCURLOPT_POSTtrue);
    
curl_setopt($chCURLOPT_POSTFIELDS$data);
    
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    
curl_exec($ch);
    
$http_status curl_getinfo($chCURLINFO_HTTP_CODE);
    
curl_close($ch);

    
write_debug($DEBUG_FILE"Enviado a HA. Estado: $http_status");
} catch (
Exception $e) {
    
write_debug($DEBUG_FILE"Error enviando a HA: " $e->getMessage());
}

// ------------------------
// ENVÍO A METEOCLIMATIC
// ------------------------
try {
    
$url str_replace(
        [
"{station_code}""{api_key}"],
        [
$STATION_CODE$API_KEY],
        
$METEOCLIMATIC_API
    
);

    
$ch curl_init($url);
    
curl_setopt($chCURLOPT_POSTtrue);
    
curl_setopt($chCURLOPT_POSTFIELDS$data);
    
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    
curl_exec($ch);
    
$http_status curl_getinfo($chCURLINFO_HTTP_CODE);
    
curl_close($ch);

    
write_debug($DEBUG_FILE"Enviado a Meteoclimatic. Estado: $http_status");
} catch (
Exception $e) {
    
write_debug($DEBUG_FILE"Error enviando a Meteoclimatic: " $e->getMessage());
}

// ------------------------
// RESPUESTA A ECOWITT
// ------------------------
http_response_code(200);
echo 
"OK";


Luego queda configurar ecowitt para que envíe los datos a la ip de tu servidor, en mi caso: 192.168.1.100 y el path a la ruta donde hayas puesto el archivo, en mi caso /weather/api_data.php?token=token_para_ecowitt (El mismo token que pusiste en la configuración del script php)

Ajolá funcione!!! :D

——Edito——
Pues parece que sí funciona. Al menos sí aparecen datos en ecowitt
2
Tu Tiempo / Re:El tiempo
« Último mensaje por meteopalau en 01 de Noviembre de 2025, 12:04:14 »
Buenos dias. Resumen meteo en Palau del mes de Octubre. Terminó el mes de Octubre de 2025 con sol y temperaturas suaves, especialmente durante el día, aunque por las noches refrescó bastante. A destacar la baja  precipitación registrada, de solo 38,6 mm...

www.canaltiempo21.com/palau

3
Envío de datos a Meteoclimatic / Re:Incidencia con estacion ESMAD2800000028935A
« Último mensaje por jantoni en 31 de Octubre de 2025, 14:22:25 »
Vamos a ver si se entiende con un ejemplo personalizado.....

El último envío de tu estación a api.m11c.net es el siguiente:

Citar
Oct 31 13:12:24 /var/www/api.m11c.net/lib/inc_updateDB.php:371: debug-- REQUEST QUERY = /v2/ew/ESMAD2800000028935A/xxxxxxxxxxxxxxxxxxxxxxxxxx
Query: Array
(
    [PASSKEY] => xxxxxxxxxxxxxxxxxxxxxxxxxx
    [stationtype] => GW2000A_V3.2.6
    [runtime] => 82988
    [heap] => 90320
    [dateutc] => 2025-10-31 13:12:24
    [tempinf] => 71.06
    [humidityin] => 55
    [baromrelin] => 30.047
    [baromabsin] => 27.953
    [tempf] => 59.72
    [humidity] => 83
    [vpd] => 0.088
    [winddir] => 41
    [winddir_avg10m] => 41
    [windspeedmph] => 1.79
    [windgustmph] => 2.01
    [maxdailygust] => 4.92
    [solarradiation] => 74.51
    [uv] => 0
    [rrain_piezo] => 0.000
    [erain_piezo] => 0.000
    [hrain_piezo] => 0.000
    [last24hrain_piezo] => 0.000
    [drain_piezo] => 0.000
    [wrain_piezo] => 1.008
    [mrain_piezo] => 1.606
    [yrain_piezo] => 11.843
    [srain_piezo] => 0
    [ws90cap_volt] => 3.2
    [ws90_ver] => 156
    [temp1f] => 66.74
    [humidity1] => 63
    [batt1] => 0
    [wh90batt] => 3.18
    [freq] => 868M
    [model] => GW2000A
    [interval] => 60
)

Primera observación:

Las Ecowitt, con el protocolo Ecowitt SIEMPRE ENVÍAN LOS DATOS CON HORA UTC, HAGAS LO QUE HAGAS EN LA CONSOLA O EN ECOWITT.NET

Y ahora nos fijamos en la precipitación, en tu caso drain_piezo al ser una WS90. Imagínate que han caído hasta ahora 25.4mm, por lo que indicaría drain_piezo = 10 (porque siempre se envían los datos en medidas imperiales.

Tu estación está enviando datos cada 60 segundos, por lo que hoy, a las 0:00 CET (23:00 UTC para Meteoclimatic), dirá drain_piezo = 0

Como Meteoclimatic sigue en el día anterior al funcionar internamente en UTC, tu consola le da instrucciones a Meteoclimatic diciendo que la precipitación de hoy es cero, cuando era de 25.4 mm

Espero haber explicado bien como funciona y que se haya entendido.

Y, teniendo dos dispositivos, puedes poner uno en UTC y el otro en la hora de la India si quieres.
4
Envío de datos a Meteoclimatic / Re:Incidencia con estacion ESMAD2800000028935A
« Último mensaje por jantoni en 31 de Octubre de 2025, 13:32:10 »
Citar
Tengo también una consola enganchada a la estación y sale en pantalla la hora

me puedes decir qué tiene que ver la gw2000 con la consola??? El WS90 es un bloque de sensores, NO ES LA ESTACIÓN. La estación son las consolas y gateways y son independientes entre sí. El bloque de sensores solo mide y envía datos......a quien los reciba. Si los recibe una consola y un GW2000 cada uno puede hacer cosas distintas con los datos.

Esto está repetido hasta la saciedad.......los sensores no controlan a las consolas/gateway. Las consolas/gateways no controlan a los sensores. Los sensores envían datos. Las consolas/gateways son receptores. Son dispositivos totalmente independientes y cada uno hace lo que se supone que tiene que hacer y en el ecosistema Ecowitt no interactúan las consolas/gateway con los sensores. Al menos de momento

Y puedes tener, si te da la gana, la hora peninsular en la consola y la hora UTC en la gateway. No se molestan una a la otra. Es como si me dices que no cambias el canal de la TV del cuarto de estar, porque le cambias el canal a la TV del salón.

Citar
no me parece bien tener la consola con una hora errónea

Que digas que la hora UTC es una hora errónea, es una afirmación muy poco acertada.

Citar
Ahora mismo esta actualizando bien con la hora peninsular

Por otro lado, si has puesto la hora peninsular en la consola, CLARO QUE FUNCIONA, porque mientras no pongas hora peninsular en Meteoclimatic funcionará, pero cuando lleguen las lluvias vendrán los lamentos, porque tu consola a las 0 horas CET/CEST pondrá el contador a cero y Meteoclimatic hará caso a lo que dice tu estación......"Lluvia del día=0", pero para Meteoclimatic son las 23 UTC o 22 UTC en función de la fecha y toda la precipitación de ese día, hasta esa hora, se volatiliza.

Date una vuelta por los diferentes subforos, esto está explicado muchas veces




5
Envío de datos a Meteoclimatic / Re:Incidencia con estacion ESMAD2800000028935A
« Último mensaje por mostoles en 31 de Octubre de 2025, 10:00:58 »
Tengo también una consola enganchada a la estación y sale en pantalla la hora, no me parece bien tener la consola con una hora errónea. Ahora mismo esta actualizando bien con la hora peninsular.
6
Envío de datos a Meteoclimatic / Re:Incidencia con estacion ESMAD2800000028935A
« Último mensaje por jantoni en 30 de Octubre de 2025, 19:45:35 »
El software lo he hecho yo, es un programa en java que analiza la situación actual que hay, intenta predecir lo que va a pasar y sube los datos a mi base de datos en la nube, allí tengo una plantilla de meteotemplate con alguna personalización. El problema es que al resetear la lluvia 1 hora mas tarde de la realidad, me suben datos de lluvia incorrectos y  el dia siguiente me aparecen 22 lts (Como ayer) de la nada que tengo que borrar manualmente.

Pues ese software debería funcionar, aunque sea DIY, si el servidor donde funciona lo tuvieras en UTC.

Yo tengo el mío en UTC desde hace 15 años y me olvido de rollos de horarios. En mi web ya aviso que todo está en UTC

Y el que venga a ver la web y no entienda que es UTC,  pues lo siento *+* *+* Bueno, si la visita alguien que tampoco me preocupa mucho *-* *-*

https://meteorivas.es

Verás que todo en utc
7
Envío de datos a Meteoclimatic / Re:Incidencia con estacion ESMAD2800000028935A
« Último mensaje por mostoles en 30 de Octubre de 2025, 18:51:27 »
Ha vuelto a aparecer poniendo la configuración de meteoclimatic a UTC, se queda así. Gracias de nuevo por la ayuda.
8
Envío de datos a Meteoclimatic / Re:Incidencia con estacion ESMAD2800000028935A
« Último mensaje por mostoles en 30 de Octubre de 2025, 18:34:07 »
De todas formas muchas gracias por la ayuda. De momento he puesto la hora UTC en meteoclimatic a ver que pasa.
9
Envío de datos a Meteoclimatic / Re:Incidencia con estacion ESMAD2800000028935A
« Último mensaje por mostoles en 30 de Octubre de 2025, 18:30:09 »
El software lo he hecho yo, es un programa en java que analiza la situación actual que hay, intenta predecir lo que va a pasar y sube los datos a mi base de datos en la nube, allí tengo una plantilla de meteotemplate con alguna personalización. El problema es que al resetear la lluvia 1 hora mas tarde de la realidad, me suben datos de lluvia incorrectos y  el dia siguiente me aparecen 22 lts (Como ayer) de la nada que tengo que borrar manualmente.
10
Envío de datos a Meteoclimatic / Re:Incidencia con estacion ESMAD2800000028935A
« Último mensaje por jantoni en 30 de Octubre de 2025, 18:16:50 »
Aquí somos mucha gente con las web en UTC desde hace décadas

Puedes pedir ayuda en el foro de cada software de gestión, que no has dicho cual usas, o en el de creación de webs.

Saludos.
Páginas: [1] 2 3 ... 10