31
Envío de datos a Meteoclimatic / Re:Envío de datos con Windows 10 y Windows 11
« Último mensaje por jezuleon en 21 de Septiembre de 2025, 23:29:57 »Pues ni idea, yo estoy usando el script este:
@echo off
rem #########################################################
REM ## CONFIGURA TU APIKEY AQUÍ ##
REM #########################################################
set apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
rem #########################################################
REM ######## NO MODIFICAR NADA A PARTIR DE AQUI #########
rem #########################################################
rem Obtiene la ruta del directorio actual del script
for %%I in (%0) do set "script_dir=%%~dpI"
rem Define la ruta del archivo meteoclimatic.htm
set "datafile=%script_dir%meteoclimatic.html"
rem Define el archivo de log
set "logfile=%script_dir%envios.log"
:loop
rem Comprueba si el archivo meteoclimatic.htm existe
if not exist "%datafile%" (
echo [%date% %time%] El archivo meteoclimatic.html no existe en "%script_dir%". >> "%logfile%"
echo El archivo meteoclimatic.html no existe en "%script_dir%".
goto wait
)
rem Lee el archivo meteoclimatic.html y extrae el codigo de la estacion
for /F "tokens=2 delims==" %%A in ('type "%datafile%" ^| findstr /C:"*COD="') do set "stationCode=%%A"
rem Comprueba si se ha encontrado el codigo de la estacion
if "%stationCode%"=="" (
echo [%date% %time%] No se ha encontrado el codigo de la estacion en el archivo. >> "%logfile%"
echo No se ha encontrado el codigo de la estacion en el archivo.
goto wait
)
rem Define la URL de envio
set "url=https://api.m11c.net/v2/rainbow/weather.txt"
set "resposta=%script_dir%resposta.txt"
rem Intentos de envio
set retries=0
:setcurl
curl --data-urlencode "stationCode=%stationCode%" --data-urlencode "rawData2@%datafile%" -H "APIkey: %apikey%" -X POST -k -o "%resposta%" "%url%"
set err=%errorlevel%
rem Analiza la respuesta del servidor
set "status="
for /f "tokens=2 delims=:" %%S in ('findstr /i "status" "%resposta%"') do set status=%%S
if %err% neq 0 (
echo [%date% %time%] ERROR: Fallo en la ejecucion de la solicitud. Codigo: %err% >> "%logfile%"
echo Fallo en la ejecucion de la solicitud. Reintentando en 30 segundos...
set /a retries+=1
if %retries% leq 2 (
timeout /t 30 /nobreak >nul
goto setcurl
)
goto wait
)
if /i "%status: =%"=="fail" (
echo [%date% %time%] ERROR en envio: >> "%logfile%"
type "%resposta%" >> "%logfile%"
set /a retries+=1
if %retries% leq 2 (
echo Reintentando en 30 segundos...
timeout /t 30 /nobreak >nul
goto setcurl
)
goto wait
)
rem Si todo correcto, muestra respuesta
echo ===============================
echo Respuesta del servidor:
type "%resposta%"
echo ===============================
:wait
rem Espera 5 minutos antes del siguiente envio
timeout /t 300 /nobreak >nul
goto loop
y a mí me funciona perfectamente, y cuando no envía, hace los reintentos para volver a conectar e intentar enviar el archivo de nuevo. Fíjate bien en el script si el archivo que te crea weather link es meteoclimatic.html que en el script es el que va a buscar, aunque creo que es ese el que veo
@echo off
rem #########################################################
REM ## CONFIGURA TU APIKEY AQUÍ ##
REM #########################################################
set apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
rem #########################################################
REM ######## NO MODIFICAR NADA A PARTIR DE AQUI #########
rem #########################################################
rem Obtiene la ruta del directorio actual del script
for %%I in (%0) do set "script_dir=%%~dpI"
rem Define la ruta del archivo meteoclimatic.htm
set "datafile=%script_dir%meteoclimatic.html"
rem Define el archivo de log
set "logfile=%script_dir%envios.log"
:loop
rem Comprueba si el archivo meteoclimatic.htm existe
if not exist "%datafile%" (
echo [%date% %time%] El archivo meteoclimatic.html no existe en "%script_dir%". >> "%logfile%"
echo El archivo meteoclimatic.html no existe en "%script_dir%".
goto wait
)
rem Lee el archivo meteoclimatic.html y extrae el codigo de la estacion
for /F "tokens=2 delims==" %%A in ('type "%datafile%" ^| findstr /C:"*COD="') do set "stationCode=%%A"
rem Comprueba si se ha encontrado el codigo de la estacion
if "%stationCode%"=="" (
echo [%date% %time%] No se ha encontrado el codigo de la estacion en el archivo. >> "%logfile%"
echo No se ha encontrado el codigo de la estacion en el archivo.
goto wait
)
rem Define la URL de envio
set "url=https://api.m11c.net/v2/rainbow/weather.txt"
set "resposta=%script_dir%resposta.txt"
rem Intentos de envio
set retries=0
:setcurl
curl --data-urlencode "stationCode=%stationCode%" --data-urlencode "rawData2@%datafile%" -H "APIkey: %apikey%" -X POST -k -o "%resposta%" "%url%"
set err=%errorlevel%
rem Analiza la respuesta del servidor
set "status="
for /f "tokens=2 delims=:" %%S in ('findstr /i "status" "%resposta%"') do set status=%%S
if %err% neq 0 (
echo [%date% %time%] ERROR: Fallo en la ejecucion de la solicitud. Codigo: %err% >> "%logfile%"
echo Fallo en la ejecucion de la solicitud. Reintentando en 30 segundos...
set /a retries+=1
if %retries% leq 2 (
timeout /t 30 /nobreak >nul
goto setcurl
)
goto wait
)
if /i "%status: =%"=="fail" (
echo [%date% %time%] ERROR en envio: >> "%logfile%"
type "%resposta%" >> "%logfile%"
set /a retries+=1
if %retries% leq 2 (
echo Reintentando en 30 segundos...
timeout /t 30 /nobreak >nul
goto setcurl
)
goto wait
)
rem Si todo correcto, muestra respuesta
echo ===============================
echo Respuesta del servidor:
type "%resposta%"
echo ===============================
:wait
rem Espera 5 minutos antes del siguiente envio
timeout /t 300 /nobreak >nul
goto loop
y a mí me funciona perfectamente, y cuando no envía, hace los reintentos para volver a conectar e intentar enviar el archivo de nuevo. Fíjate bien en el script si el archivo que te crea weather link es meteoclimatic.html que en el script es el que va a buscar, aunque creo que es ese el que veo

Mensajes recientes