Tabla de contenido
Aktualisiert – marzo 10, 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.
Provider SMS-Einstellungen
Je nach Provider muss ggf. noch die im Router eingesetzte SIM-Karte für SMS freigeschaltet werden. Dies geschieht i.d.R. in den zugehörigen Einstellungen nach Einloggen auf der Provider-Webseite.
Während sog. Multi-Card-Angebote das Klingeln und Telefonieren auf allen mit einer solchen SIM-Karte ausgestatteten Geräten umsetzbar ist, wird SMS nur wahlweise auf EINER der SIM-Karten unterstützt!
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.