Avançar para o conteúdo

SmartHome – Determine dados de GPS

Tempo de leitura 4 minutos

Atualizado – 29 de janeiro de 2024

Se você deseja determinar dados de GPS usando SmartHome, por exemplo, para consultar dados meteorológicos locais, você pode fazer isso com um roteador Teltonika RUTX50 sem hardware ou software adicional usando Homematic/RaspberryMatic.

Noções básicas

Os roteadores Teltonika RUTX.. permitem enviar e receber SMS através do cartão SIM ativado. Da mesma forma, enviar dados de posição em resposta a um SMS com o conteúdo “Senha do GPS„.

Uma solicitação HTTP pode ser usada para visualizar a lista de entrada de SMS e o conteúdo do SMS. As informações atuais de longitude e latitude podem ser lidas no SMS recebido em resposta à solicitação de SMS.

Agora eles podem ser processados via script na automação residencial inteligente usando HomeMatic ou RaspberryMatic. Ao viajar, os dados geográficos em constante mudança podem ser usados para uma consulta meteorológica constantemente atualizada com base na localização atual, por exemplo, através do serviço gratuito de openweathermap.org usar.

Configuração – Roteador Teltonika

Serviços – Utilitários Móveis – Gateway SMS

  • Postagem móvel/obter configurações – Habilitado
  • Nome de usuário: Nome de login
  • Senha: LoginSenha

Serviços – Entrada/Saída – Postar/Obter

  • Configurações de postagem/obtenção de E/S – Habilitado
  • Nome de usuário: Nome de login
  • Senha: LoginSenha

Configuração – RaspberryMatic

Instale o daemon CUx

O daemon CUx é um complemento que fornece dispositivos virtuais dentro do HomeMatic/RaspberryMatic, que podem ser usados, entre outras coisas, como um substituto menos oneroso para chamadas de sistema, aqui, por exemplo, para enviar SMS por meio de uma solicitação HTTP ao roteador.

O AddOn é instalado via Configurações - Software Adicional, lá na área inferior você pode baixar o arquivo AddOn clicando no botão Selecione o arquivo na pasta de download correspondente no computador e clique no botão Instalar ser carregado no centro e instalado.

Daemon CUx – criar dispositivo

O daemon CUx é chamado através do sistema clicando no botão Daemon CUX.

Clique no botão no canto superior direito Dispositivos abre a interface. No canto superior esquerdo, em Tipo de dispositivo CUxD, está na lista abaixo sistema selecionado.

Como uma função a função se torna Executivo selecionado, um nome correspondente no campo Nome, por exemplo GPS, entrou e clicou no botão Criar dispositivo na CCU, o dispositivo foi salvo.

O dispositivo criado aparece então com seu ID na janela direita, por exemplo, CUX2801001, e pode ser endereçado em scripts usando este ID.

Roteiros

Envie SMS para saída de dados GPS

As informações entre colchetes devem ser substituídas por seus próprios dados:

string url=“'http://[IP do roteador]/cgi-bin/sms_send?username=[Nome de usuário]&senha=[senha]&número=[Número de telefone internacional]&texto=[Senha do GPS]'“;
dom.GetObject(“CUxD.CUX2801001:1.CMD_EXEC”).State(“wget -q -O – “#url);

Observe que a string está entre aspas duplas (“) E simples (‘)!

Este script estará no programa a ser criado GPS_Loc_Update chamado e o seguinte script, que por sua vez chama o programa GPS_Data, é deslocado em 30 segundos para aguardar o recebimento do SMS com os dados do PÜS:

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

programa GPS_Loc_Update pode ser realizado uma vez por dia ou em intervalos mais curtos, conforme necessário, usando o controle de tempo.

Lista de SMS de saída

Para ler os dados GPS, o roteador é solicitado a enviar a lista de SMS por meio de uma solicitação HTTP.

Este script requer duas variáveis do tipo STRING, que devem ser criadas em Configurações - Variáveis de Sistema abaixo clicando no botão Novo:

  • W_Lat (para armazenar a latitude geográfica)
  • W_Lon (para armazenar a longitude geográfica)

O conteúdo do script (linhas com início ponto de exclamação são comentários; WriteLine-As instruções são usadas apenas para controle de saída e podem ser excluídas.)):

var url = “http://[IP do roteador]/cgi-bin/sms_list?username=[Nome de usuário]&senha=[senha]“;

! Declaração da variável
var posValueStart;
var posValueEnd;
var pos;
var dados;
var posStart;
var posEnd; string stderr; string stdout;

! Comando WGET para transmitir a string de solicitação HTTP para o roteador
system.Exec(“wget -q -O – ‘“#url#“‚”, &stdout, &stderr);

! Saída do resultado da consulta para verificação
WriteLine(stdout);

! Índice: 1
! Data: Sexta-feira, 26 de janeiro 11:01:02 2024
! Remetente: +49xxxxxxxxxxxxx
! Texto: Horário de correção: 26/01/2024, 11:01:01 Latitude: 54.834682 Longitude: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1velocidade:0
! Estado: lido

! Leia os dados do GPS
posição = 0;
! Posição de início do valor pesquisado
posStart = 'Latitude: ';
! Posição do final do valor pesquisado
posEnd = ' Longitude: ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! a string que você está procurando é:
string Latitude = stdout.Substr(posValueStart, posValueEnd);
! Conversão da string (string de caracteres) em um número de ponto flutuante
var lat = Latitude.ToFloat();
! Saída da longitude geográfica para controle
WriteLine(“Latitude”);WriteLine(Latitude);

! Salve a longitude geográfica na variável W_Lat
dom.GetObject('W_Lat').State(lat);

posição = 0;
posStart = 'Longitude: ';
posEnd = 'http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
string Longitude = stdout.Substr(posValueStart, posValueEnd);
var lon = Longitude.ToFloat();
WriteLine(“Longitude”);WriteLine(lon);

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

O programa não contém nenhuma condição de execução porque é iniciado através do programa ou script acima.

Agora as informações geográficas podem ser usadas para consultar os dados meteorológicos deste local. Para tanto, é criado outro programa que é iniciado periodicamente por meio de um cronômetro, que utiliza um script para inserir os dois valores na string de solicitação HTTP do serviço meteorológico mencionado acima e, assim, leva em consideração a mudança de localização na consulta. .

Programa W_Data_OWM

Compondo o URL

! Carregando as variáveis preenchidas em GPS_Data W_Lat e W_Lon e atribuindo às variáveis url_1 e 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);

! Compondo a URL usando o conteúdo da variável url_1 e url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxx] representa a chave API do serviço meteorológico recebida após o registro
var url = “https://api.openweathermap.org/data/2.5/weather?lat=”#url_1#”&lon=”#url_2#”&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metric”;
! Saída da string completa para verificação
WriteLine(url);

Isto é seguido pelo mesmo procedimento de declaração das variáveis, o comando WGET, gerando o resultado da consulta para verificação e leitura dos dados meteorológicos desejados (ver. documentação) de acordo com o procedimento indicado para dados GPS.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

pt_PTPortuguês