Saltar al contenido

SmartHome – Determinar datos de GPS

Tabla de contenido

Tiempo de leer 4 minutos

Actualizado - 10 de marzo de 2025

Si desea determinar datos GPS usando SmartHome, por ejemplo para consultar datos meteorológicos locales, puede hacerlo con un enrutador Teltonika RUTX50 sin hardware o software adicional usando Homematic / RaspberryMatic.

Lo esencial

Los routers Teltonika RUTX.. permiten enviar y recibir SMS a través de la tarjeta SIM activada. Asimismo, el envío de datos de posición en respuesta a un SMS con el contenido “Contraseña GPS„.

Se puede utilizar una solicitud HTTP para ver la lista de SMS entrantes y el contenido de los SMS. La información actual de longitud y latitud se puede leer en el SMS recibido en respuesta a la solicitud de SMS.

Estos ahora se pueden procesar mediante un script dentro de la automatización del hogar inteligente utilizando HomeMatic o RaspberryMatic. Al viajar, los datos geográficos en constante cambio se pueden utilizar para una consulta meteorológica constantemente actualizada basada en la ubicación actual, por ejemplo a través del servicio gratuito de openweathermap.org para usar.

Configuración de SMS del proveedor

Dependiendo del proveedor, puede ser necesario activar la tarjeta SIM utilizada en el router para los SMS. Esto suele hacerse en los ajustes pertinentes tras iniciar sesión en el sitio web del proveedor.

Mientras que las llamadas ofertas multitarjeta pueden utilizarse para llamar y hacer llamadas en todos los dispositivos equipados con una tarjeta SIM de este tipo, los SMS sólo se admiten en UNA de las tarjetas SIM.

Configuración – Enrutador Teltonika

Servicios – Utilidades Móviles – SMS Gateway

  • Configuración de publicación/obtención móvil – Activado
  • Nombre de usuario: Nombre de inicio de sesión
  • Contraseña: Iniciar sesiónContraseña

Servicios – Entrada/Salida – Publicar/Obtener

  • Configuración de publicación/obtención de E/S – Activado
  • Nombre de usuario: Nombre de inicio de sesión
  • Contraseña: Iniciar sesiónContraseña

Configuración – RaspberryMatic

Instalar el demonio CUx

El demonio CUx es un complemento que proporciona dispositivos virtuales dentro de HomeMatic/RaspberryMatic, que pueden utilizarse, entre otras cosas, como sustituto menos complicado de las llamadas al sistema, en este caso, por ejemplo, para enviar SMS a través de una solicitud HTTP al enrutador.

El AddOn se instala a través de Configuración - Software adicional, allí, en el área más baja, puede descargar el archivo del AddOn haciendo clic en el botón Seleccionar archivo en la carpeta de descarga correspondiente en el ordenador y haga clic en el botón Instalar cargarse en el centro e instalarse.

Demonio CUx: crear dispositivo

El demonio CUx se llama a través del sistema haciendo clic en el botón demonio CUx.

Haga clic en el botón en la parte superior derecha Dispositivos abre la interfaz. Arriba a la izquierda, en Tipo de dispositivo CUxD, es de la siguiente lista sistema seleccionado.

Como función la función se convierte en ejecutivo seleccionado, un nombre correspondiente en el campo Nombre, por ejemplo GPS, ingresó y luego hizo clic en el botón Crear dispositivo en la CCU, el dispositivo guardado.

El dispositivo creado aparece entonces con su ID en la ventana derecha, p. ej. CUX2801001, y se puede direccionar en scripts utilizando este ID.

Guiones

Enviar SMS para salida de datos GPS

La información entre corchetes debe ser reemplazada por sus propios datos:

URL de cadena = “'http://[IP del enrutador]/cgi-bin/sms_send?nombredeusuario=[Nombre de usuario]&contraseña=[contraseña]&número=[Número de teléfono internacional]&texto=[Contraseña GPS]'“;
dom.GetObject(“CUxD.CUX2801001:1.CMD_EXEC”).State(“wget -q -O – “#url);

Tenga en cuenta que la cadena está encerrada entre comillas dobles (") Y simples (').

Este script estará en el programa a crear. GPS_Loc_Update Se llama y el siguiente script, que a su vez llama al programa GPS_Data, se retrasa 30 segundos para esperar a que se reciba el SMS con los datos PÜS:

var programObj = dom.GetObject(“GPS_Data”);
programObj.ProgramExecute();

programa GPS_Loc_Update Se puede programar una vez al día o en intervalos más cortos según sea necesario.

Lista de SMS de salida

Para leer los datos del GPS, se solicita al enrutador que envíe la lista de SMS a través de una solicitud HTTP.

Este script requiere dos variables de tipo STRING, que deben crearse en Configuración - Variables del sistema a continuación haciendo clic en el botón Nuevo:

  • W_Lat (para almacenar la latitud geográfica)
  • W_Lon (para almacenar la longitud geográfica)

El contenido del guión (líneas con interlineado signo de admiración son comentarios; Línea de escritura-Las instrucciones solo se utilizan para el control de salida y se pueden eliminar.)):

URL var = “http://[IP del enrutador]/cgi-bin/sms_list?nombre de usuario=[Nombre de usuario]&contraseña=[contraseña]“;

! Declaración de la variable
var posValueStart;
var posValueEnd;
pos var;
datos variables;
var posInicio;
var posEnd; cadena estándar; salida estándar de cadena;

! Comando WGET para transmitir la cadena de solicitud HTTP al enrutador
system.Exec(“wget -q -O – ‘“#url#“‚”, &stdout, &stderr);

! Salida del resultado de la consulta para su verificación.
WriteLine(salida estándar);

! Índice: 1
! Fecha: viernes 26 de enero 11:01:02 2024
! Remitente: +49xxxxxxxxxxxxx
! Texto: Hora de fijación: 2024-01-26, 11:01:01 Latitud: 54.834682 Longitud: 12.040196http://maps.google.com/?
! q=54.834682,12.040196&om=1velocidad:0
! Estado: leído

! Leer datos GPS
posición = 0;
! Posición del inicio del valor buscado.
posStart = 'Latitud: ';
! Posición del final del valor buscado
posEnd = 'Longitud:';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! la cadena que buscas es:
cadena Latitud = stdout.Substr(posValueStart, posValueEnd);
! Conversión de la cadena (cadena de caracteres) en un número de coma flotante
var latitud = Latitud.ToFloat();
! Salida de la longitud geográfica para control.
WriteLine(“Latitud”);WriteLine(Latitud);

! Guarde la longitud geográfica en la variable. W_Lat
dom.GetObject('W_Lat').State(lat);

posición = 0;
posStart = 'Longitud: ';
posEnd = 'http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
cadena Longitud = stdout.Substr(posValueStart, posValueEnd);
var lon = Longitud.ToFloat();
WriteLine(“Longitud”);WriteLine(lon);

dom.GetObject('W_Lon').State(lon);

El programa no contiene ninguna condición para la ejecución porque se inicia mediante el programa o script anterior.

Ahora la información geográfica se puede utilizar para consultar los datos meteorológicos de esta ubicación. Para ello se crea otro programa que se inicia periódicamente mediante un temporizador, que mediante un script inserta ambos valores en la cadena de solicitud HTTP del servicio meteorológico mencionado anteriormente y, de este modo, tiene en cuenta los cambios de ubicación en la consulta. .

Programa W_Data_OWM

Componer la URL

! Cargando las variables rellenadas en GPS_Data W_Lat y W_Lon y asignando a las variables URL_1 y URL_2

var url_1 = dom.GetObject(“W_Lat”).Value();
WriteLine(“Lat=");WriteLine(url_1);
var url_2 = dom.GetObject(“W_Lon”).Value();
WriteLine(“Lon=");WriteLine(url_2);

! Componer la URL utilizando los contenidos variables. URL_1 y URL_2
! [xxxxxxxxxxxxxxxxxxxxxxxxx] representa la clave API del servicio meteorológico recibida después del registro
var url = “https://api.openweathermap.org/data/2.5/weather?lat=”#url_1#”&lon=”#url_2#”&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metric”;
! Salida de la cadena completa para su verificación.
WriteLine(url);

A esto le sigue el mismo procedimiento de declarar las variables, el comando WGET, generando los resultados de la consulta para verificar y leer los datos meteorológicos deseados (ver. documentación) según el procedimiento indicado para datos GPS.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESSpanish
We've detected you might be speaking a different language. Do you want to change to:
en_US English
de_DE German
en_US English
fr_FR French
sv_SE Swedish
es_ES Spanish
pt_PT Portuguese
it_IT Italian
nl_NL Dutch
nb_NO Norwegian
fi Finnish
da_DK Danish
cs_CZ Czech
hu_HU Hungarian
el Greek
ru_RU Russian
tr_TR Turkish
ja Japanese
lt_LT Lithuanian
lv Latvian
sl_SI Slovenian
sk_SK Slovak
Close and do not switch language